设置

请按照 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_namestrMongoDB 集合的名称Required
db_urlOptional[str]MongoDB 连接字符串"mongodb://localhost:27017/"
databasestr数据库名称"agno"
embedderOptional[Embedder]用于生成 embedding 的 embedder 实例OpenAIEmbedder()
distance_metricstr用于相似度计算的距离度量Distance.cosine
overwritebool如果为 True,则覆盖现有集合和索引False
wait_until_index_readyOptional[float]等待索引就绪的秒数None
wait_after_insertOptional[float]插入文档后等待的秒数None
max_pool_sizeint连接池中的最大连接数100
retry_writesbool是否重试写入操作True
clientOptional[MongoClient]一个已存在的 MongoClient 实例None

开发者资源