\n\n\n\n How to Create A Multi-Agent System with Milvus (Step by Step) - AgntWork How to Create A Multi-Agent System with Milvus (Step by Step) - AgntWork \n

How to Create A Multi-Agent System with Milvus (Step by Step)

📖 7 min read1,281 wordsUpdated Mar 21, 2026

Create a Multi-Agent System with Milvus: A Practical Step-by-Step Guide

We’re building a multi-agent system with Milvus that will help us tackle complex data problems in AI applications. If you think this sounds trivial, think again—multi-agent systems (MAS) could be the key to smarter, more efficient software that scales. We’re talking about systems where agents can communicate, negotiate, and collaborate like humans do, all while managing vast amounts of data efficiently. Here’s everything you need to know about how to create a multi-agent system with Milvus.

Prerequisites

  • Python 3.11+
  • Milvus server installed (v2.2.9 or higher)
  • Docker (latest version)
  • pymilvus library (install via pip: pip install pymilvus)
  • Requests library for API testing (pip install requests)

Step 1: Setting Up Your Environment

Before we start coding, you need to have specific tools and libraries installed. If you’ve done this before with other projects, this section might feel trivial. But trust me, getting these right will save you hours of debugging later!


# Installing necessary libraries
!pip install pymilvus requests

Here’s the deal: Milvus works best within a Docker environment. Make sure you pull the Milvus Docker image by running the following:


docker pull milvusdb/milvus:v2.2.9

Now, start the Milvus server by running:


docker run -d --name milvus \
 -p 19530:19530 \
 -p 19121:19121 \
 milvusdb/milvus:v2.2.9 \
 milvus run

If you want to check if everything is running smoothly, use:


docker ps

Errors to look for? If Docker throws a port-in-use error, check if there is another service running on the same ports as Milvus. You can change the ports in the Docker run command if necessary.

Step 2: Connecting to Milvus

With Milvus up and running, let’s connect to it using Python. This part is straightforward, but it’s also where many tutorials fail to mention the importance of configuration settings. Misconfigurations often lead to errors when you’re actually trying to run your agents.


from pymilvus import Milvus, DataType

milvus = Milvus("localhost", 19530) # Connect to the Milvus server

If you receive connection refused errors, double-check if the Milvus server is actually running. You can also adjust your network settings if you are using Docker on Windows, as they often have isolated networks.

Step 3: Creating a Collection

Now let’s create a collection where our agents will store their data. Each agent in our multi-agent system will contribute their data to the same central collection, making it easier for them to communicate and share information.


collection_name = "agent_collection"

# Define schema
milvus.create_collection({
 "name": collection_name,
 "schema": {
 "fields": [
 {
 "name": "vector",
 "type": DataType.FLOAT_VECTOR,
 "params": {"dim": 128}
 },
 {
 "name": "agent_id",
 "type": DataType.INT64
 },
 {
 "name": "timestamp",
 "type": DataType.INT64
 }
 ]
 }
})

Why do we include a timestamp? That’s essential for tracking updates and data freshness, especially in a dynamic system with multiple agents. If you encounter fields missing errors, make sure that your schema fields are correctly defined and that they match the types you declared.

Step 4: Inserting Data

With our collection ready, it’s time to insert some data into it. Here’s where your multi-agent system will start to show its potential. Each agent will push their unique data into the collection. Remember to be meticulous about the data types you’re adding; it’s too easy to overlook that.


import numpy as np
from datetime import datetime

# Generate some mock data for agents
def generate_data(agent_id, num_vectors=10):
 vectors = np.random.rand(num_vectors, 128).tolist()
 timestamps = [int(datetime.now().timestamp())] * num_vectors
 return [{"vector": vec, "agent_id": agent_id, "timestamp": ts}
 for vec, ts in zip(vectors, timestamps)]

data_to_insert = []
for i in range(5): # Simulate 5 agents
 data_to_insert.extend(generate_data(i+1, 10)) 

# Insert data into Milvus
milvus.insert(collection_name, data_to_insert)

If you’re running this in an environment with low memory, you might hit memory errors. Keep an eye on your system’s resources; Milvus does require a fair amount of RAM when dealing with numerous data points.

Step 5: Querying Data

Our agents can produce data, but they also need to retrieve it for analysis or further actions. This is a two-way street in a multi-agent system. Querying is essential for agents to react and adapt based on their interactions with other agents.


query_vector = np.random.rand(1, 128).tolist()
search_params = {"nprobe": 10} # Number of probes for searching
results = milvus.search(collection_name, query_vector, search_params=search_params)

You might find that the results aren’t what you expected. This could be due to an insufficient number of vectors in your collection or an issue with your search parameters. Tweak the parameters as needed and increase the number of vectors for more accurate results.

The Gotchas

No one likes to be bitten by production bugs, especially in multi-agent systems where one wrong move can halt the entire show. Here are a few things you should double-check before you hit production:

  • Data Types Matter: Any mismatched types between your code and your schema can cause failure. Be meticulous about this.
  • Concurrency Issues: If you have multiple agents writing to the database at the same time, you might run into issues. Implementing locks or using a transaction model may help.
  • Resource Management: Keep an eye on your CPU and memory usage. If it spikes too high due to too many agents, you may need to scale up.
  • Versioning: Different versions of Milvus or your libraries can lead to unexpected behavior. Keeping everything up-to-date is crucial.

Full Code: Working Example

Here’s a compilation of the complete code to create a multi-agent system using Milvus:


from pymilvus import Milvus, DataType
import numpy as np
from datetime import datetime

# Connect to Milvus
milvus = Milvus("localhost", 19530)

# Create a collection
collection_name = "agent_collection"
milvus.create_collection({
 "name": collection_name,
 "schema": {
 "fields": [
 {
 "name": "vector",
 "type": DataType.FLOAT_VECTOR,
 "params": {"dim": 128}
 },
 {
 "name": "agent_id",
 "type": DataType.INT64
 },
 {
 "name": "timestamp",
 "type": DataType.INT64
 }
 ]
 }
})

# Generate and insert data
def generate_data(agent_id, num_vectors=10):
 vectors = np.random.rand(num_vectors, 128).tolist()
 timestamps = [int(datetime.now().timestamp())] * num_vectors
 return [{"vector": vec, "agent_id": agent_id, "timestamp": ts}
 for vec, ts in zip(vectors, timestamps)]

data_to_insert = []
for i in range(5):
 data_to_insert.extend(generate_data(i+1, 10)) 

milvus.insert(collection_name, data_to_insert)

# Querying data
query_vector = np.random.rand(1, 128).tolist()
search_params = {"nprobe": 10}
results = milvus.search(collection_name, query_vector, search_params=search_params)
print(results)

What’s Next?

Your next step should be to implement a messaging protocol between agents. This is crucial for them to collaborate effectively. One solid option would be to use RabbitMQ for message queuing. This enables agents to react to new data in real-time, extending the capabilities of your multi-agent system dramatically.

FAQ

Q: How many agents can I have in a Milvus multi-agent system?

A: There isn’t a strict limit on the number of agents in Milvus. However, the performance will depend on your server specs, the size of your data, and how well you’ve optimized your environment.

Q: Can we use Milvus with other databases?

A: Yes, you can integrate Milvus with other databases for a hybrid solution. Check out this page for more information on how to connect them.

Q: Is Milvus suitable for real-time applications?

A: Absolutely. With the right setup and optimizations, Milvus is capable of handling real-time data due to its high-speed search capabilities. Just make sure to optimize your queries and indexing strategies.

Data Sources

For more information on the topics covered, refer to the official documentation at:

Data as of March 21, 2026. Sources: milvus-io/milvus GitHub repository – 43,421 stars, 3,909 forks, 1098 open issues, license: Apache-2.0.

Related Articles

🕒 Published:

Written by Jake Chen

Workflow automation consultant who has helped 100+ teams integrate AI agents. Certified in Zapier, Make, and n8n.

Learn more →
Browse Topics: Automation Guides | Best Practices | Content & Social | Getting Started | Integration

Recommended Resources

AgntkitAgntboxClawgoAgntmax
Scroll to Top