Milvus

RAG & Memory 💻 Go ⚖️ Apache-2.0 🟢 Actively maintained
46.0k stars

Milvus is a high-performance, open-source vector database built for scale, written in Go and C++. It efficiently organizes and searches vast amounts of unstructured data (text, images, multi-modal) for AI applications, supporting distributed and standalone deployments. It is designed for developers building AI applications that require vector search, such as RAG, semantic search, and recommendation systems.

Milvus vector database in 150 Seconds

🎬 Milvus vector database in 150 Seconds · Zilliz

Milvus demo
🎞️ Demo from the project README

✨ Key features

  • Fully-distributed, K8s-native architecture for horizontal scaling
  • Supports multiple vector index types (HNSW, IVF, FLAT, SCANN, DiskANN)
  • Hardware acceleration for CPU/GPU, including NVIDIA CAGRA
  • Native support for sparse vectors and full-text search (BM25)
  • Multi-tenancy with isolation at database, collection, partition levels
  • Data security with authentication, TLS, and RBAC

🎯 Use cases

  • Build Retrieval-Augmented Generation (RAG) pipelines
  • Implement semantic image or text search
  • Create hybrid search combining dense and sparse vectors
  • Develop recommendation systems
  • Power question answering and graph RAG applications

📦 Installation

🧰 Requirements: Requires Python 3.8+ for the SDK; for building from source, Linux (Ubuntu 20.04+), macOS (Big Sur 11.5+), Go 1.21+, CMake 3.26.4+, GCC/llvm, and Python 3.8-3.11 are needed. No API keys required for local use.

pip install -U pymilvus

For Milvus Lite (local vector database):

pip install pymilvus[milvus-lite]

To build Milvus from source:

git clone https://github.com/milvus-io/milvus.git
cd milvus/
./scripts/install_deps.sh
make

🚀 Usage

from pymilvus import MilvusClient

# Create a client (local file for Milvus Lite)
client = MilvusClient("milvus_demo.db")

# Create a collection
client.create_collection(
    collection_name="demo_collection",
    dimension=768
)

# Insert data (data is a list of dicts with 'id' and 'vector')
res = client.insert(collection_name="demo_collection", data=data)

# Search
query_vectors = embedding_fn.encode_queries(["Who is Alan Turing?"])
res = client.search(
    collection_name="demo_collection",
    data=query_vectors,
    limit=2,
    output_fields=["vector", "text", "subject"]
)

❓ FAQ

How do I install Milvus?

Install the Python SDK with pip install -U pymilvus. For a lightweight local version, use pip install pymilvus[milvus-lite] and create a client with a local file name.

Can I use Milvus for full-text search?

Yes, Milvus natively supports full-text search with BM25 and learned sparse embeddings like SPLADE and BGE-M3, and you can combine dense and sparse vectors in hybrid search.

What are the system requirements for building from source?

For Linux, you need Go 1.21+, CMake 3.26.4+ (but <4), GCC 11+, and Python 3.8-3.11. For macOS, similar requirements with llvm 15+.

Is Milvus available as a managed service?

Yes, Zilliz Cloud offers Milvus as a fully managed service with Serverless, Dedicated, and BYOC options.

📊 Repository

Stars★ 45,983
Forks🍴 4,226
Open issues🐛 1,335
Last commit🕒 Sep 4, 2026
Created📅 Sep 2019
Language💻 Go
License⚖️ Apache-2.0
Websitemilvus.io

🤖 Overview, features, install steps and FAQ were generated from the project's README on Sep 4, 2026. Always check the original source before running commands.