设置
请按照 MongoDB 设置指南 中的说明获取连接字符串。 安装 MongoDB 包pip install "pymongo[srv]"
示例
agent_with_knowledge.py
from agno.agent import Agent
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase
from agno.vectordb.mongodb import MongoDb
# MongoDB Atlas 连接字符串
"""
示例连接字符串:
"mongodb+srv://<username>:<password>@cluster0.mongodb.net/?retryWrites=true&w=majority"
"mongodb://localhost/?directConnection=true"
"""
mdb_connection_string = ""
knowledge_base = PDFUrlKnowledgeBase(
urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
vector_db=MongoDb(
collection_name="recipes",
db_url=mdb_connection_string,
wait_until_index_ready=60,
wait_after_insert=300
),
) # 请根据您的需求调整 wait_after_insert 和 wait_until_index_ready
# knowledge_base.load(recreate=True) # 首次运行后注释掉此行
agent = Agent(knowledge=knowledge_base, show_tool_calls=True)
agent.print_response("How to make Thai curry?", markdown=True)
异步支持 ⚡
MongoDB 也支持异步操作,可实现并发处理,从而提高性能。
async_mongodb.py
import asyncio
from agno.agent import Agent
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase
from agno.vectordb.mongodb import MongoDb
# MongoDB Atlas 连接字符串
"""
示例连接字符串:
"mongodb+srv://<username>:<password>@cluster0.mongodb.net/?retryWrites=true&w=majority"
"mongodb://localhost:27017/agno?authSource=admin"
"""
mdb_connection_string = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/?retryWrites=true&w=majority"
knowledge_base = PDFUrlKnowledgeBase(
urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
vector_db=MongoDb(
collection_name="recipes",
db_url=mdb_connection_string,
),
)
# 创建并使用 Agent
agent = Agent(knowledge=knowledge_base, show_tool_calls=True)
if __name__ == "__main__":
# 首次运行后注释掉此行
asyncio.run(knowledge_base.aload(recreate=False))
asyncio.run(agent.aprint_response("How to make Thai curry?", markdown=True))
在对吞吐量要求较高的应用中,请使用
aload() 和 aprint_response() 方法配合 asyncio.run() 来实现非阻塞操作。MongoDB 参数
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
collection_name | str | MongoDB 集合的名称 | Required |
db_url | Optional[str] | MongoDB 连接字符串 | "mongodb://localhost:27017/" |
database | str | 数据库名称 | "agno" |
embedder | Optional[Embedder] | 用于生成 embedding 的 embedder 实例 | OpenAIEmbedder() |
distance_metric | str | 用于相似度计算的距离度量 | Distance.cosine |
overwrite | bool | 如果为 True,则覆盖现有集合和索引 | False |
wait_until_index_ready | Optional[float] | 等待索引就绪的秒数 | None |
wait_after_insert | Optional[float] | 插入文档后等待的秒数 | None |
max_pool_size | int | 连接池中的最大连接数 | 100 |
retry_writes | bool | 是否重试写入操作 | True |
client | Optional[MongoClient] | 一个已存在的 MongoClient 实例 | None |
开发者资源
- 查看 Cookbook (同步)
- 查看 Cookbook (异步)