Setup

pip install pymilvus

Initialize Milvus

Set the uri and token for your Milvus server.

  • If you only need a local vector database for small scale data or prototyping, setting the uri as a local file, e.g../milvus.db, is the most convenient method, as it automatically utilizes Milvus Lite to store all data in this file.
  • If you have large scale data, say more than a million vectors, you can set up a more performant Milvus server on Docker or Kubernetes. In this setup, please use the server address and port as your uri, e.g.http://localhost:19530. If you enable the authentication feature on Milvus, use your_username:your_password as the token, otherwise don’t set the token.
  • If you use Zilliz Cloud, the fully managed cloud service for Milvus, adjust the uri and token, which correspond to the Public Endpoint and API key in Zilliz Cloud.

Example

agent_with_knowledge.py
from agno.agent import Agent
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase
from agno.vectordb.milvus import Milvus

vector_db = Milvus(
    collection="recipes",
    uri="./milvus.db",
)
# Create knowledge base
knowledge_base = PDFUrlKnowledgeBase(
    urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
    vector_db=vector_db,
)

knowledge_base.load(recreate=False)  # Comment out after first run

# Create and use the agent
agent = Agent(knowledge=knowledge_base, use_tools=True, show_tool_calls=True)
agent.print_response("How to make Tom Kha Gai", markdown=True)
agent.print_response("What was my last question?", stream=True)

Async Support ⚡

Milvus now supports asynchronous operations for improved performance in production environments.

async_milvus_db.py
# install pymilvus - `pip install pymilvus`
import asyncio

from agno.agent import Agent
from agno.knowledge.pdf_url import PDFUrlKnowledgeBase
from agno.vectordb.milvus import Milvus

# Initialize Milvus with local file
vector_db = Milvus(
    collection="recipes",
    uri="tmp/milvus.db",  # For local file-based storage
)

# Create knowledge base
knowledge_base = PDFUrlKnowledgeBase(
    urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
    vector_db=vector_db,
)

# Create agent with knowledge base
agent = Agent(knowledge=knowledge_base)

if __name__ == "__main__":
    # Load knowledge base asynchronously
    asyncio.run(knowledge_base.aload(recreate=False))  # Comment out after first run

    # Query the agent asynchronously
    asyncio.run(agent.aprint_response("How to make Tom Kha Gai", markdown=True))

Use aload() and aprint_response() methods with asyncio.run() for non-blocking operations in high-throughput applications.

Milvus Params

ParameterTypeDescriptionDefault
collectionstrName of the Milvus collectionRequired
embedderOptional[Embedder]Embedder to use for embedding documentsOpenAIEmbedder()
distanceDistanceDistance metric to use for vector similarityDistance.cosine
uristrURI of the Milvus server or path to local file"http://localhost:19530"
tokenOptional[str]Token for authentication with the Milvus serverNone

Advanced options can be passed as additional keyword arguments to the MilvusClient constructor.

Developer Resources