Setup

Follow the instructions in the MongoDB Setup Guide to get connection string Install MongoDB packages
pip install "pymongo[srv]"

Example

agent_with_knowledge.py
from agno.agent import Agent
from agno.knowledge.knowledge import Knowledge
from agno.vectordb.mongodb import MongoDb

# MongoDB Atlas connection string
"""
Example connection strings:
"mongodb+srv://<username>:<password>@cluster0.mongodb.net/?retryWrites=true&w=majority"
"mongodb://localhost/?directConnection=true"
"""
mdb_connection_string = ""

knowledge_base = Knowledge(
    vector_db=MongoDb(
        collection_name="recipes",
        db_url=mdb_connection_string,
        wait_until_index_ready=60,
        wait_after_insert=300
    ),
)  # adjust wait_after_insert and wait_until_index_ready to your needs

if __name__ == "__main__":
    knowledge_base.add_content(
        url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"
    )

    agent = Agent(knowledge=knowledge_base)
    agent.print_response("How to make Thai curry?", markdown=True)

Async Support ⚡

MongoDB also supports asynchronous operations, enabling concurrency and leading to better performance.

async_mongodb.py
import asyncio

from agno.agent import Agent
from agno.knowledge.knowledge import Knowledge
from agno.vectordb.mongodb import MongoDb

# MongoDB Atlas connection string
"""
Example connection strings:
"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 = Knowledge(
    vector_db=MongoDb(
        collection_name="recipes",
        db_url=mdb_connection_string,
    ),
)

# Create and use the agent
agent = Agent(knowledge=knowledge_base)

if __name__ == "__main__":
    # Load knowledge base asynchronously
    asyncio.run(knowledge_base.add_content_async(
            url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"
        )
    )

    # Create and use the agent asynchronously
    asyncio.run(agent.aprint_response("How to make Thai curry?", markdown=True))
Use aload() and aprint_response() methods with asyncio.run() for non-blocking operations in high-throughput applications.

MongoDB Params

ParameterTypeDescriptionDefault
collection_namestrName of the MongoDB collectionRequired
db_urlOptional[str]MongoDB connection string"mongodb://localhost:27017/"
databasestrDatabase name"agno"
embedderOptional[Embedder]Embedder instance for generating embeddingsOpenAIEmbedder()
distance_metricstrDistance metric for similarityDistance.cosine
overwriteboolOverwrite existing collection and index if TrueFalse
wait_until_index_readyOptional[float]Time in seconds to wait until the index is readyNone
wait_after_insertOptional[float]Time in seconds to wait after inserting documentsNone
max_pool_sizeintMaximum number of connections in the connection pool100
retry_writesboolWhether to retry write operationsTrue
clientOptional[MongoClient]An existing MongoClient instanceNone

Developer Resources