Milvus 是 Zilliz 主导开源的高性能云原生向量数据库,Apache-2.0 许可,LF AI & Data Foundation 毕业项目。专为大规模高维向量数据集的相似性搜索设计,在万亿向量数据集上实现毫秒级平均延迟 。
Milvus 2.0 起采用存算分离、全组件无状态的云原生架构,可根据负载类型按需弹性伸缩 。核心能力:丰富的 API、元数据过滤、混合搜索、多向量、实时流式更新、内置复制与故障转移 。
官方定位:”High-Performance Vector Database Built for Scale” ——它是向量数据库分类中“企业级分布式”的代表作,与 Qdrant(Rust 高性能过滤)、Weaviate(AI-native 混合检索)、Vespa(搜索+向量+排序一体化)、Pinecone(全托管 SaaS)形成清晰的差异化。
产品概述
Milvus 于 2019 年 10 月以 Apache-2.0 许可开源 ,目前是 LF AI & Data Foundation 的毕业项目(Graduate Project) ,由 Zilliz 公司作为主要贡献者维护 。
核心定位哲学:
官方首页开宗明义——”高性能向量数据库,为规模而构建” 。三个不可妥协的设计原则:
- 为规模而生:在万亿向量数据集上保持毫秒级平均延迟
- 云原生架构:存算分离、全组件无状态,按需弹性伸缩
- 开发者友好:写一次代码,一行命令部署到生产
它做什么 / 不做什么(关键归类):
- ✅ 做:作为向量数据库服务运行 → 接收 Embedding 向量写入 → 构建全局索引(HNSW/IVF/DISKANN/GPU-CAGRA 等)→ 接收 ANN 相似度查询 → 元数据过滤 + 混合搜索 + 多向量检索 → 毫秒级返回 Top-K 结果
- ❌ 不做:不生成 Embeddings(需外接嵌入模型或服务)、不做业务级 RAG 编排(是 RAG 的向量底座)、不提供全文检索与排序一体化(这是 Vespa 的能力)
- 本质是向量数据库引擎:它是向量数据库分类中“企业级分布式”的代表——在万亿级向量规模上做毫秒级 ANN 检索,K8s 原生存算分离架构让资源调度极为高效 。
技术架构 :
- 实现语言:Go + C++(硬件加速 CPU/GPU)
- 架构模式:云原生,存算分离,所有组件无状态
- 部署拓扑:
- Milvus Lite:轻量级版本,
pip install pymilvus[milvus-lite],适合快速原型
- Standalone:单机部署模式
- Distributed:完全分布式模式,K8s 原生,处理十亿级向量上的数万查询
- Zilliz Cloud:全托管服务,提供 Serverless / Dedicated / BYOC 三种选项
- 索引算法:全局索引(HNSW 等),硬件加速 CPU/GPU
- 能力矩阵:元数据过滤、混合搜索、多向量、实时流式更新、内置复制与故障转移/故障回退
许可策略:Apache-2.0 许可证 ,允许商用、修改、分发,无 copyleft 限制,是最干净许可阵营。
社区与生态 :
- 45.4K GitHub Stars、4.1K Forks(持续增长的企业级向量数据库标杆)
- LF AI & Data Foundation 毕业项目
- PyPI 包
pymilvus,pip install -U pymilvus 安装
- 丰富资源:文档、示例代码、Discord 社区、Contributing 指南
💡 与同层向量数据库的关键差异:
- vs Qdrant:Qdrant 是 Rust 编写的高性能向量库,过滤检索极强、量化降内存;Milvus 是 Go/C++ 云原生分布式,万亿级规模毫秒检索
- vs Weaviate:Weaviate 是 AI-native 数据库,BM25+向量混合检索原生、模块化 ML;Milvus 是纯粹的向量数据库引擎,规模与性能极致
- vs Vespa:Vespa 是搜索+向量+排序+ML 推理一体化引擎;Milvus 专注向量 ANN 检索,万亿级规模优势明显
- vs Pinecone:Pinecone 是全托管 SaaS(闭源);Milvus 是开源 Apache-2.0,可自托管可上 Zilliz Cloud
- vs VikingDB(已收录):VikingDB 是火山/BytePlus 云原生全托管向量数据库,百亿级、多模态、稠密+稀疏混合检索;Milvus 是开源等价物,分布式规模可达万亿级
核心能力
-大规模向量检索(核心差异化)
- 万亿向量毫秒检索:在万亿向量数据集上实现毫秒级平均延迟
- 十亿级高并发:分布式模式下处理十亿级向量上的数万次搜索查询
- 全局索引:使用全局索引快速准确检索数据,无论规模如何
- 硬件加速:CPU/GPU 硬件加速实现最佳向量搜索性能
-丰富检索能力
- 元数据过滤:功能丰富的元数据过滤
- 混合搜索:稠密向量 + 稀疏向量混合检索
- 多向量:支持多向量表示
- 距离度量:余弦、点积、欧氏距离(根据上下文推断的标准 ANN 度量)
-云原生弹性架构
- 存算分离:Milvus 2.0 起采用存储与计算分离的云原生设计
- 组件无状态:所有组件无状态,提升弹性与灵活性
- 组件级伸缩:可根据负载类型按需组件级自动伸缩,资源调度高效
- K8s 原生:完全分布式架构,K8s 原生部署
-生产级可靠性
- 内置复制:确保数据高可用
- 故障转移/回退:业务连续性保障
- 实时流式更新:保持数据新鲜度
- 始终在线:内置复制和故障转移/故障回退确保业务连续性
-多形态部署
- Milvus Lite:
pip install pymilvus[milvus-lite],轻量单机,快速原型
- Standalone:单机服务模式
- Distributed:K8s 分布式集群,十亿级规模生产
- Zilliz Cloud:全托管 Serverless / Dedicated / BYOC
-开发者体验
- PyMilvus SDK:
from pymilvus import MilvusClient
- 一行代码部署生产:写一次代码,一行命令部署到生产环境
- 一致体验:笔记本、本地集群、云端一致的用户体验
- 丰富 API:为数据科学工作流设计的丰富 API
优势亮点
- Apache-2.0 最干净许可:与 Qdrant/Vespa 同属最宽松许可阵营,商用、修改、分发无限制
- 万亿级规模毫秒检索:官方明确定位”Trillion-scale vector datasets with millisecond search”
- LF AI & Data Foundation 毕业项目:开源治理规范,企业采用风险低
- 云原生存算分离:Milvus 2.0 全组件无状态,弹性伸缩极致
- 45.4K GitHub Stars:向量数据库社区规模最高之一
- 多形态部署:Lite / Standalone / Distributed / Zilliz Cloud 覆盖从原型到万亿级生产
- 硬件加速:Go/C++ 实现 + CPU/GPU 硬件加速,性能极致
- K8s 原生:完全分布式,处理十亿级向量上的数万查询
- 生产级可靠性:内置复制、故障转移/回退、实时流式更新
- 丰富检索能力:元数据过滤、混合搜索、多向量
- Zilliz Cloud 全托管选项:Serverless / Dedicated / BYOC 三种形态
局限
- 自己不生成 Embeddings:Milvus 只存储和检索向量,需外接嵌入模型(OpenAI、Hugging Face 等)或服务
- 深度运维能力要求:Distributed 模式需要 K8s 集群管理经验,运维复杂度高于 Pinecone 全托管
- 无原生全文检索与排序一体化:混合检索需应用层配合,不像 Vespa 那样搜索+向量+ML 推理+排序统一引擎
- BM25 混合检索不如 Weaviate 原生:Weaviate 在数据库内核层原生融合 BM25+向量,Milvus 的混合搜索能力相对应用层
- 无内置重排(Rerank):不像 Vespa 那样内置分布式 ML 模型推理做 relevance ranking
- 学习曲线:分布式部署、索引选型、参数调优需要向量数据库专业知识
- 资源消耗:十亿级规模生产部署需要显著的 CPU/GPU/内存资源
- 与 VikingDB 对比:VikingDB 是火山/BytePlus 云原生全托管(存算分离、百亿级、多模态、稠密+稀疏混合检索);Milvus 是开源等价物,自托管需自己运维,但可达万亿级规模
- 与 Qdrant 对比:Qdrant 在过滤检索与量化降内存方面更强,Milvus 在分布式规模与生态完整性方面更强
- 与 Pinecone 对比:Pinecone 全托管零运维但闭源+供应商锁定;Milvus 开源可控但需自运维(或用 Zilliz Cloud)
适用人群
- 企业级大规模向量检索:十亿至万亿级向量规模的 RAG、推荐系统、图像检索、语义搜索
- 需要数据主权的团队:金融、医疗、政企等受监管行业,必须自托管且数据不出私网
- K8s 云原生团队:已有 K8s 基础设施,希望向量数据库融入云原生技术栈
- 多模态检索系统:图像检索、视频检索、跨模态检索(RAG、图像搜索、多模态搜索场景官方提及)
- GraphRAG 应用:Milvus 官方文档明确支持 Graph RAG 场景
- 高并发实时检索:需要每秒数万次查询的大规模生产系统
- AI 应用开发者:基于 PyMilvus SDK 快速构建向量检索能力
- Zilliz Cloud 用户:希望以全托管形态使用 Milvus 能力,Serverless / Dedicated / BYOC 三选项
安装与部署
1. 环境要求
- Milvus Lite:Python 3.8+,
pip install pymilvus[milvus-lite]
- Standalone/Distributed:Linux x86_64 / ARM64,Docker / K8s
- 生产推荐:K8s 集群 + 对象存储(S3/MinIO)+ 消息队列(Pulsar/NATS)
2. Milvus Lite 快速起步
# 安装
pip install -U pymilvus
# 使用 MilvusClient 创建客户端
from pymilvus import MilvusClient
# 本地文件持久化
client = MilvusClient("milvus_demo.db")
# 或使用 Zilliz Cloud / 自托管 Milvus
# client = MilvusClient(
# uri="<endpoint_of_self_hosted_milvus_or_zilliz_cloud>",
# token="<username_and_password_or_zilliz_cloud_api_key>"
# )
# 创建集合(768 维向量)
client.create_collection(
collection_name="demo_collection",
dimension=768
)
# 插入数据
# res = client.insert(collection_name="demo_collection", data=data)
# 向量搜索
# query_vectors = embedding_fn.encode_queries(["Who is Alan Turing?", "What is AI?"])
# res = client.search(
# collection_name="demo_collection",
# data=query_vectors,
# limit=2,
# output_fields=["vector", "text", "subject"]
# )
3. Docker Compose 部署 Standalone
# 下载 docker-compose.yml
wget https://github.com/milvus-io/milvus/releases/download/v2.4.13/milvus-standalone-docker-compose.yml -O docker-compose.yml
# 启动服务
docker compose up -d
# 验证
docker ps # 应看到 milvus-etcd, milvus-minio, milvus-standalone 三个容器
# 连接
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
4. K8s 分布式部署
# 使用 Milvus Operator 或 Helm Chart
helm repo add milvus https://milvus-io.github.io/milvus-helm/
helm install my-release milvus/milvus --set cluster.enabled=true
# 或使用 Milvus Operator
# 参考官方 K8s 部署文档
5. Zilliz Cloud 全托管
from pymilvus import MilvusClient
# Serverless / Dedicated / BYOC 任一形态
client = MilvusClient(
uri="https://your-instance.zillizcloud.com",
token="your-api-key"
)
# 后续 API 与自托管完全一致
6. 部署前必检清单
- 确认仓库位于
github.com/milvus-io/milvus(官方)
- 许可:Apache-2.0 ,商用自托管无限制
- 严格属于向量数据库分类,“企业级分布式”子类
- 官方定位:”High-Performance Vector Database Built for Scale”
- 开发方:Zilliz(主要贡献者),LF AI & Data Foundation 毕业项目
- 实现语言:Go + C++,硬件加速 CPU/GPU
- 架构:云原生存算分离,Milvus 2.0 起所有组件无状态
- 规模能力:万亿向量数据集毫秒级平均延迟
- 部署形态:Milvus Lite / Standalone / Distributed(K8s)/ Zilliz Cloud(Serverless/Dedicated/BYOC)
- 核心能力:元数据过滤、混合搜索、多向量、实时流式更新、内置复制与故障转移
- 社区规模:45.4K GitHub Stars、4.1K Forks
- 自己不生成 Embeddings,需外接嵌入模型/服务
- 与 Qdrant(Rust 高性能过滤)、Weaviate(AI-native 混合检索)、Vespa(搜索+向量+排序一体化)、Pinecone(全托管 SaaS)差异化明确
- 与 VikingDB(已收录)互补:VikingDB 是火山/BytePlus 云原生全托管,Milvus 是开源等价物且可达万亿级规模