Milvus: A Complete Guide
Milvus

What is Milvus?

High-performance cloud-native vector database built for scalable similarity search and AI applications

6-min readUpdated Aug 2026

Milvus in 60 seconds

WHAT IT IS

An open-source vector database that stores embeddings and runs fast approximate nearest-neighbor search at scale.

WHY IT'S USED

It powers semantic search, recommendations, and RAG by finding the closest vectors to a query across billions of records.

STRENGTHS
  • +Scales vector search into the billions with DiskANN and GPU indexes
  • +Multiple ANN indexes (HNSW, IVF, DiskANN, ScaNN) to tune recall vs speed
  • +Hybrid search fuses dense vectors with sparse BM25 keyword scoring
LIMITATIONS
  • Not a system of record: no ACID transactions or relational joins
  • Distributed mode has many parts (etcd, object store, message queue)
  • Running a full cluster is heavier than an embedded single-file store
BEST KNOWN FOR
RAG pipelinesSemantic searchRecommendationsImage searchAI agent memory
Jump to at a glance, how it works, or quick start for the full picture on Milvus.

At a glance

CategoryVector
PronunciationPronounced "MIL-vus". The name comes from the Latin genus for kites, a bird of prey.
First released2019
Latest release3.0
LicenseApache-2.0
Written inGo, C++
Runs onLinux, Macos
DeploymentSelf-hosted, Managed
Wire protocolgrpc, http
Query dialectmilvus-query
Consistencytunable
ACID supportno
JSON supportnative
Full-text searchnative
Vector supportnative
HA modelraft
Managed byzilliz-cloud

What is Milvus?

Milvus is an open-source vector database built to store and search embeddings, the numeric vectors that models produce for text, images, audio, and other unstructured data. Instead of matching exact values, it finds the nearest vectors to a query using approximate nearest-neighbor (ANN) search, the retrieval step behind semantic search, recommendations, and retrieval-augmented generation. It also filters on metadata alongside the vector search, so you can combine "similar to this" with ordinary predicates like category or date.

Milvus was created by Zilliz, a company founded in 2017 by Charles Xie, and open-sourced under the Apache 2.0 license in 2019. It graduated from the LF AI & Data Foundation in 2021, and a full architectural rewrite arrived with Milvus 2.0 in 2022. The project reached its largest redesign yet with Milvus 3.0 in 2026, which moved to a lake-native design that can index vectors sitting in object storage instead of copying them into the engine first.

Milvus is one of the most widely deployed open-source vector databases, with tens of thousands of adopters. Nvidia and Roblox run it in production, Bosch searches billions of driving scenarios with it, and Shell and Cisco use it behind internal RAG systems. Zilliz offers a managed version, Zilliz Cloud, for teams that would rather not operate the cluster themselves.

How Milvus works

Milvus separates compute from storage instead of packing everything into one process. A cluster splits into access, coordinator, worker, and storage layers, so query nodes, data nodes, and index nodes each scale on their own. Metadata lives in etcd, the write log flows through a message queue like Pulsar or Kafka, and the vectors themselves sit in object storage such as S3 or MinIO. That layout lets a deployment grow one bottleneck at a time.

When you insert data, Milvus appends it to the log, and index nodes build an ANN index in the background while the new data stays searchable in a growing segment. A search request fans out to query nodes that scan both sealed and growing segments, apply any metadata filters, and merge the top results. The actual vector math runs in Knowhere, the C++ engine that implements the index algorithms and distance functions.

Milvus ships in three forms. Milvus Lite is an embedded Python build for prototyping, Standalone runs the whole system in a single process for small workloads, and Distributed runs the full disaggregated cluster on Kubernetes for scale. The same API works across all three, so you can start on Lite and move up to a cluster without rewriting your application code.

Key concepts

Collections and schema

A collection is Milvus's table: a set of entities that share a schema. The schema defines a primary key, one or more vector fields, and scalar fields for metadata like tags, prices, or timestamps. A collection can also enable dynamic fields, so you attach extra JSON keys without redefining the schema when your data changes.

Embeddings and vector fields

Milvus stores embeddings as vector fields, and one collection can hold several of them. It supports dense float vectors from models, binary vectors, and sparse vectors for keyword-style signals. You pick a similarity metric per field, usually cosine, inner product, or L2, and searches on that field use the metric set at creation.

ANN indexes

An index makes vector search fast by trading a little recall for a large speed gain. Milvus supports several: HNSW builds a navigable graph in memory, IVF clusters vectors into lists, DiskANN keeps most of the index on SSD for huge datasets, and GPU indexes push the work onto the card. You tune each one to balance recall, latency, and memory.

Metrics and search

A search takes a query vector and returns its nearest neighbors under the collection's metric. Milvus supports top-k retrieval, range search within a distance threshold, and grouping search that dedupes results by a scalar field. Query-time parameters like nprobe or ef trade accuracy for speed, separate from the index you built up front.

Filtering and hybrid search

Milvus applies boolean filters on scalar fields during the vector search, so you constrain by category, date, or owner without a second query. Hybrid search goes further: it runs several vector fields together, often a dense embedding plus a sparse BM25 field, and fuses their rankings with a reranker to cover semantic and keyword relevance.

Consistency and partitions

Milvus offers tunable consistency, from strong to eventual, so you decide whether a search must see the latest writes or can trade freshness for lower latency. Partitions split a collection into segments you can target directly, such as one per tenant or per day, which prunes the search space and keeps large collections responsive.

Milvus by the numbers

Live GitHub adoption, updated daily

#1 of 11 open-source vector databases by GitHub stars
GitHub stars
45.7k
+399 in 30d
Forks
4.2k
Weekly growth
+90
stars in the last 7 days
Last commit
today
Aug 2026

Who uses Milvus

A handful of the companies running it in production

NvidiaRobloxBoschShellCiscoSalesforceIBM

When to use Milvus

Best for

RAG and agent memory

Retrieval for RAG and agent memory, where a model pulls the most relevant chunks from a large corpus. Milvus returns nearest-neighbor matches in milliseconds and filters them by source or recency in one query.

Billion-scale similarity search

Datasets too large to hold in memory, where DiskANN and GPU indexes keep search fast without paying for RAM to fit every vector. Milvus is built to scale the vector count into the billions across a cluster.

Recommendation and personalization

Recommender systems that match users to items by embedding similarity. Milvus sustains high query throughput and combines the vector match with metadata filters for inventory, region, or price in one call.

Multimodal search

Image, audio, and video search where content is embedded into vectors instead of tagged by hand. Milvus indexes any embedding the same way, so text-to-image and reverse-image lookups run on the same engine.

Not ideal for

Transactional system of record

Milvus indexes vectors, it is not your primary datastore. With no ACID transactions or foreign keys, your canonical records should stay in Postgres or similar, with embeddings synced into Milvus for search.

Small projects with few vectors

For a few thousand vectors, a full cluster is overkill. Milvus Lite or pgvector inside your existing database is simpler to run, and the overhead of a distributed cluster is hard to justify at that size.

Relational and analytical queries

Milvus has no SQL, no joins, and no group-by aggregation over columns. For reporting, rollups, and multi-table analytics, a relational or OLAP engine such as Postgres or ClickHouse fits that work far better.

Exact keyword-only search

When you need only exact lexical matching without embeddings, a full-text engine like Elasticsearch or Typesense is a closer fit. Milvus adds sparse keyword search, but dedicated engines cover pure text better.

Milvus vs alternatives

Head-to-head specs against the top 5 alternatives

Milvus vs Qdrant
Milvus
Qdrant
Identity
License
Apache-2.0
Apache-2.0
First released
2019
2021
Capabilities
ANN algo
hnsw, ivf, diskann, scann
hnsw
Hybrid search
Native
Native
Vector
Native
Native
Ecosystem
Managed providers
1
1
Integrations
7
11
Use cases
Best for
Large-scale vector similarity search, RAG applications, and AI-powered recommendations
Semantic search, RAG pipelines, recommendation engines, image similarity, and AI agent memory with advanced filtering
Not ideal for
Traditional relational data, OLTP workloads, or applications not using embeddings
Traditional relational queries, OLTP workloads, time-series data, or use cases not involving vector embeddings
Milvus vs Pinecone
Milvus
Pinecone
Identity
License
Apache-2.0
Proprietary
First released
2019
2021
Capabilities
ANN algo
hnsw, ivf, diskann, scann
proprietary
Hybrid search
Native
Native
Vector
Native
Native
Ecosystem
Managed providers
1
1
Integrations
7
4
Use cases
Best for
Large-scale vector similarity search, RAG applications, and AI-powered recommendations
Production-scale vector search with zero infrastructure management and enterprise security requirements
Not ideal for
Traditional relational data, OLTP workloads, or applications not using embeddings
Self-hosted deployments, on-premise requirements, cost-sensitive prototyping, or workloads needing open-source flexibility
Milvus vs Chroma
Milvus
Chroma
Identity
License
Apache-2.0
Apache-2.0
First released
2019
2022
Capabilities
ANN algo
hnsw, ivf, diskann, scann
hnsw
Hybrid search
Native
Native
Vector
Native
Native
Ecosystem
Managed providers
1
1
Integrations
7
4
Use cases
Best for
Large-scale vector similarity search, RAG applications, and AI-powered recommendations
AI/LLM applications, RAG pipelines, semantic search, and rapid prototyping of embedding-based apps
Not ideal for
Traditional relational data, OLTP workloads, or applications not using embeddings
General-purpose data storage, OLTP, analytics, or production workloads requiring high availability
Milvus vs Weaviate
Milvus
Weaviate
Identity
License
Apache-2.0
BSD-3-Clause
First released
2019
2019
Capabilities
ANN algo
hnsw, ivf, diskann, scann
HNSW
Hybrid search
Native
Native
Vector
Native
Native
Ecosystem
Managed providers
1
1
Integrations
7
4
Use cases
Best for
Large-scale vector similarity search, RAG applications, and AI-powered recommendations
Semantic search, RAG pipelines, and AI-native applications requiring hybrid vector and keyword search
Not ideal for
Traditional relational data, OLTP workloads, or applications not using embeddings
Traditional relational workloads, complex transactions, or use cases requiring strong ACID guarantees
Milvus vs Elasticsearch
Milvus
Elasticsearch
Identity
License
Apache-2.0
Elastic-2.0
First released
2019
2010
Capabilities
ANN algo
hnsw, ivf, diskann, scann
HNSW
Hybrid search
Native
Native
Vector
Native
Native
Ecosystem
Managed providers
1
3
Integrations
7
6
Use cases
Best for
Large-scale vector similarity search, RAG applications, and AI-powered recommendations
Full-text search, log analytics, observability, security analytics, and real-time data exploration at scale
Not ideal for
Traditional relational data, OLTP workloads, or applications not using embeddings
Primary data storage for transactional workloads, strong-consistency requirements, or simple key-value use cases

Quick start

Run Milvus Standalone with Docker, connect with the Python client, create a collection, and run your first vector search. A few minutes end to end.

Start Milvus with Docker (fastest)
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh
bash standalone_embed.sh start
Install the Python client
pip install pymilvus
Create a collection and insert a vector
from pymilvus import MilvusClient

client = MilvusClient("http://localhost:19530")
client.create_collection(collection_name="demo", dimension=8)

client.insert(
    collection_name="demo",
    data=[{"id": 1, "vector": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]}],
)
Run a similarity search
results = client.search(
    collection_name="demo",
    data=[[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]],
    limit=3,
)

print(results)

That is a working vector store. Point any official client at the same endpoint, or browse collections visually with Attu, the Milvus admin UI.

Frequently asked questions

What is Milvus used for?
Milvus is used to store embeddings and run similarity search over them, which is the retrieval layer behind a lot of modern AI. Common uses are retrieval-augmented generation (RAG), semantic search, recommendation systems, image and video search, and long-term memory for AI agents. You convert data into vectors with an embedding model, load those vectors into Milvus, and query for the nearest ones to a new input. It handles metadata filtering in the same query, so you can combine vector similarity with normal conditions like category, price, or date.
Is Milvus free and open source?
Yes. Milvus is open-source software under the permissive Apache 2.0 license, free to self-host, modify, and run in production with no license fees. It is a graduate project of the LF AI & Data Foundation, so no single vendor controls it. Zilliz, the company behind Milvus, also offers Zilliz Cloud, a managed service that runs the same engine and charges for hosting rather than for the software. You can self-host the open-source build and move to the managed service later, or the other way around.
Who created Milvus?
Milvus was created by Zilliz, a company founded in 2017 by Charles Xie. The team open-sourced Milvus in 2019 under the Apache 2.0 license, and it later joined the LF AI & Data Foundation, graduating in 2021. Zilliz still leads development along with a broad open-source community, and it funds the work through Zilliz Cloud, its managed hosting service. The engine is written in Go and C++, with the core vector search running in a C++ library called Knowhere.
Is Milvus a vector database?
Yes. Milvus is a purpose-built vector database, meaning its main job is storing high-dimensional vectors and finding the nearest ones to a query using approximate nearest-neighbor search. That sets it apart from a general database with a bolt-on vector index, like pgvector in Postgres. Milvus is designed around the vector workload, with multiple index types (HNSW, IVF, DiskANN, GPU), tunable consistency, and a distributed architecture that scales to billions of vectors. It also stores scalar metadata so you can filter results, but it is not a relational or document database.
What is the difference between Milvus and Zilliz?
Milvus is the open-source vector database; Zilliz is the company that created and maintains it. Zilliz also sells Zilliz Cloud, a fully managed version of Milvus that runs the same engine so you do not have to operate the cluster yourself. In short, Milvus is the software you can download and self-host for free, while Zilliz Cloud is the paid hosted service. Both use the same APIs and index types, so code written against self-hosted Milvus works against Zilliz Cloud with a connection change.

Skip the config files

Connect to Milvus in 30 seconds. Browse tables, run queries, and edit rows visually, on localhost, self-hosted, or cloud.

Open Milvus in 1bench