Milvus
A distributed vector database for indexing, filtering, and searching large embedding collections across supported storage architectures.
Why consider Milvus?
Milvus is an open-source, distributed vector database built for high-performance approximate nearest neighbor search and multi-modal AI retrieval. It empowers developers to store, index, and query billions of vector embeddings efficiently across local and cloud environments.
Learn Milvus by building
Practical setup notes, real use cases, and copy-ready examples in one focused guide.
In this guide5 sections
Understanding Milvus and Scalable Vector Architecture
Modern artificial intelligence systems rely heavily on vector embeddings to represent dense semantic meaning extracted from text, images, and audio. To analyze unstructured data, numerical embeddings are stored in a vector database to power high-speed semantic search and retrieval operations (Architecture Reference). Milvus is an open-source, highly scalable vector database designed to run across diverse environments ranging from local developer machines to large-scale distributed infrastructure (System Overview).
Originally developed by Zilliz, Milvus was donated to the LF AI & Data Foundation under the Linux Foundation as an open-source project (Project History). The project provides high-throughput similarity search engines that support generative AI applications, enterprise retrieval-augmented generation (RAG) pipelines, and recommendation platforms. The database supports diverse data types for attribute modeling, such as numerical fields, strings, vector arrays, sets, and JSON structures (Data Modeling Details).
High-Performance Search and Storage Engines
Vector search databases face demanding performance requirements when querying millions or billions of multi-dimensional vectors. The core search engine of Milvus is implemented in C++ to achieve low-level resource management and hardware-level optimizations (Performance Design). By leveraging SIMD vectorization and hardware-aware tuning, the system accelerates nearest neighbor calculations significantly over generic implementations.
Milvus integrates multiple indexing algorithms such as IVF, HNSW, and DiskANN for in-memory and on-disk approximate nearest neighbor search (Index Architecture). This variety of indexing strategies allows teams to balance index build latency, memory footprints, and recall accuracy according to specific workload constraints. Furthermore, as a column-oriented vector database, queries read only the requested fields rather than full rows to minimize data access overhead (Storage Structure).
Deployment Strategies Across Environments
Milvus provides three primary deployment models to support different scales: Milvus Lite, Milvus Standalone, and Milvus Distributed (Deployment Options). For rapid experimentation and local development, Milvus Lite operates embedded directly within Python client applications without requiring external services or background infrastructure.
Milvus Standalone bundles all core database components into a single container image for streamlined single-host deployments (Standalone Overview). For enterprise systems handling high concurrency and massive vector scale, Milvus Distributed separates data ingestion workloads and search query paths into isolated nodes running on Kubernetes clusters (Distributed Architecture). Client-side code written against Milvus Lite can seamlessly connect to standalone or distributed Milvus deployments without major architectural rewrites (Client Compatibility).
Getting Started with Python and Milvus Lite
To begin building vector search workflows, install the pymilvus package in your Python environment. To create a local Milvus vector database, developers instantiate a client by specifying a local file path to store and persist data (Quickstart Guide).
from pymilvus import MilvusClientclient = MilvusClient("milvus_demo.db")In Milvus, entities and their metadata are organized inside collections, which function analogously to tables in relational databases (Quickstart Guide). You can initialize a new collection by specifying the vector dimensionality and distance metric:
if client.has_collection(collection_name="demo_collection"): client.drop_collection(collection_name="demo_collection")client.create_collection( collection_name="demo_collection", dimension=768, # The vectors we will use in this demo has 768 dimensions)Connecting Applications to Remote Milvus Instances
Once your local development is complete and you transition to a shared testing or production server, you switch target endpoints using connection parameters. All Milvus deployment options expose a unified API, enabling applications to target local files or remote servers with minimal configuration adjustments (Client Reference). Search responses provide match details including primary keys, distance metrics, and the requested entity payload fields (Search Query Protocol).
client = MilvusClient(uri="http://localhost:19530", token="root:Milvus")Related tools
More options with a similar category or technology profile.
marimo
A reactive Python notebook that is reproducible, git-friendly, and executable as a script.
JupyterLab
The next-generation web-based user interface for Project Jupyter computational notebooks.
Trafilatura
Python package and command-line tool designed to gather text and metadata on the Web.
ScrapeGraphAI
Python scraper library that uses LLMs and direct graph logic to extract website data.