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 also supports asynchronous operations, enabling concurrency and leading to better performance.

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

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 also supports asynchronous operations, enabling concurrency and leading to better performance.

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