GitHub: milvus-io/milvus
Stars: 44,800+ | Language: Go (59.3%), Python (19.7%), C++ (19.4%) | License: Apache 2.0
官网: milvus.io | 最新版本: v2.6.18 (2026-06-05)
目录
项目速览
Milvus 由 Zilliz 公司于 2019 年开源,是 LF AI & Data 基金会旗下的顶级毕业项目,也是全球 Star 数最高的向量数据库。截至 2026 年 6 月,项目在 GitHub 上已累计获得超过 44,800 颗 Star、164 个 Release 和近 25,000 次 Commit。Zilliz 同时提供基于 Milvus 的全托管云服务 Zilliz Cloud。
Milvus 采用”存算分离”的云原生架构,将向量数据库拆分为接入层、协调服务、工作节点和对象存储四个独立组件,每个组件均可独立弹性伸缩。这种架构天然适配 Kubernetes 环境,支持从单机开发到跨数百节点的大规模集群部署。Milvus 在向量 ANN 检索的性能方面进行了大量深度优化,支持 HNSW、IVF、FLAT、SCANN、DiskANN 以及 GPU 加速(NVIDIA CAGRA)等多种索引类型,可满足不同场景下的精度和性能权衡需求。
Milvus 2.6 版本进一步强化了全文检索与混合搜索能力,内置 BM25、SPLADE 和 BGE-M3 等稀疏向量模型支持,实现了稠密向量语义检索与稀疏向量关键词检索的一体化融合。
功能概述
存算分离的云原生架构
Milvus 的核心架构设计遵循”存算分离”原则,由四层组成:
- 接入层(Proxy):负载均衡、请求路由、协议转换
- 协调服务(Coordinator):集群拓扑管理、数据分配、DDL 执行
- 工作节点(Worker Node):执行查询、构建索引、数据持久化
- 对象存储(Object Storage):MinIO / S3 / Azure Blob,存储日志快照和索引文件
这种架构带来的直接好处是各组件的独立水平扩展——当查询负载上升时只需扩容工作节点,存储需求增加时只需扩展对象存储,各层互不影响。
多种向量索引与 GPU 加速
Milvus 提供业界最丰富的向量索引选择:
| 索引类型 | 适用场景 | 特点 |
|---|---|---|
| FLAT | 追求 100% 召回 | 暴力搜索,不压缩 |
| IVF_FLAT | 中等规模(百万级) | 倒排索引 + 原始向量 |
| IVF_PQ | 大规模(亿级) | 倒排索引 + 乘积量化 |
| IVF_SQ8 | 中等规模 | 倒排索引 + 标量量化 |
| HNSW | 高精度、低延迟 | 层级可导航小世界图 |
| SCANN | Google 出品 | 各向异性向量量化 |
| DiskANN | 超大规模(十亿级) | Vamana 图 + SSD 存储 |
| GPU CAGRA | GPU 加速 | NVIDIA RAFT 库 |
稀疏向量与全文检索
Milvus 2.4+ 原生支持稀疏向量,可将 BM25、SPLADE 和 BGE-M3 等稀疏编码模型产生的向量直接存入 Milvus,与稠密向量在同一查询中进行混合检索。查询时可以指定 anns_field(向量检索字段)和 sparse_anns_field(稀疏检索字段),通过加权融合两路召回结果。
多租户与安全
Milvus 提供数据库级(Database)、集合级(Collection)、分区级(Partition)和分区键级(Partition Key)四种粒度的多租户隔离方案。安全方面,从 Milvus 2.4 起强制用户认证,支持 TLS 传输加密和基于角色的访问控制(RBAC),满足企业级安全合规要求。
实时流式更新与高可用
Milvus 支持数据的实时插入和更新(Upsert),通过 Write-Ahead Log 机制保证数据可靠性和一致性。主从复制(Replica)确保查询节点的高可用,单节点故障不影响整体服务。
适用场景
大规模 RAG 知识库(亿级文档)
当企业知识库的文档量达到数千万甚至上亿级别时,Milvus 的分布式架构和多索引策略可以完美支撑。结合 DiskANN 索引将热数据置内存、冷数据落 SSD,在成本和性能间取得最优平衡。
推荐系统与相似商品搜索
电商、短视频和社交平台的核心场景。Milvus 的实时更新能力支持用户行为向量(点击、购买、观看时长)的毫秒级写入和检索,GPU 加速进一步降低在线推理延迟。
图像与视频以图搜图
利用 CLIP、DINOv2 等模型将图像映射为向量存入 Milvus,通过向量 ANN 检索实现以图搜图、相似版权检测、视频去重等应用。Milvus 的标量过滤能力可以在向量检索的同时对图片标签、上传时间等结构化字段进行筛选。
生物信息学与药物发现
蛋白质序列、分子指纹和基因表达数据均可向量化后在 Milvus 中进行近似搜索。Milvus 对十亿级向量的大规模检索能力使其在蛋白质结构预测、分子相似性搜索等场景中广泛应用。
网络安全与异常检测
将网络流量日志、系统调用序列和用户行为轨迹向量化后存入 Milvus,通过向量相似度检索快速发现与已知攻击模式相似的异常行为。
快速上手
环境要求
- Python 3.8+
安装
Milvus 提供多种部署模式:
Lite 模式(推荐用于开发/测试,零依赖):
pip install -U pymilvus |
Lite 模式下 Milvus 直接嵌入 Python 进程,数据存储在本地文件中,无需 Docker 或 K8s。
Docker 单机模式:
wget https://github.com/milvus-io/milvus/releases/download/v2.6.18/milvus-standalone-docker-compose.yml -O docker-compose.yml |
最简示例:Lite 模式
from pymilvus import MilvusClient |
使用 HNSW 索引
from pymilvus import MilvusClient, DataType |
源码架构
Milvus 仓库采用 Go 为主的 monorepo 结构,核心代码位于 internal/ 目录:
milvus/ |
- internal/proxy:作为整个系统的唯一入口,负责鉴权、请求验证、协议转换(gRPC/REST),并将请求路由到对应的协调器。
- internal/querynode:查询执行的核心,运行在 C++ 级别的向量索引之上,支持多索引类型切换、标量过滤下推和结果融合。
- internal/datanode/datacoord:数据写入路径。数据经 Proxy 验证后写入消息队列(Pulsar/Kafka),DataNode 消费消息并生成 segment,DataCoord 负责 segment 的生命周期管理。
- internal/indexnode/indexcoord:索引构建与查询使用分离,IndexNode 异步构建索引,构建完成的通知由 IndexCoord 广播至所有 QueryNode。
- internal/rootcoord:DDL 操作(创建/删除 Collection、Partition、Index)、时间戳分配和全局元数据持久化。
- internal/storage:对象存储抽象层,支持 MinIO、AWS S3、Azure Blob Storage 和本地磁盘。
实操 Demo
以下是使用 Milvus Lite 构建一个完整的电影搜索 RAG Demo:
""" |
同类对比
| 特性 | Milvus | Qdrant | Weaviate | Chroma |
|---|---|---|---|---|
| Stars | 44,800+ | 32,300+ | 16,300+ | 28,400+ |
| 核心语言 | Go + C++ | Rust | Go | Rust |
| 架构模型 | 存算分离 + 云原生 | 嵌入式 / 分布式 | 嵌入式 / 分布式 | 嵌入式 / Client-Server |
| 分布式扩展 | 水平分片 + K8s 原生 | 水平分片 + Raft 共识 | 水平扩展 + 复制 | Chroma Cloud |
| 向量索引 | FLAT/IVF/HNSW/SCANN/DiskANN/GPU | HNSW | HNSW/Flat/PQ/BQ | HNSW |
| 稀疏向量 | 原生支持(BM25/SPLADE/BGE-M3) | 支持 | BM25 混合检索 | Chroma Cloud 支持 |
| GPU 加速 | NVIDIA CAGRA | NVIDIA/AMD | 无 | 无 |
| 多租户 | Database/Collection/Partition/Key | Collection/Payload | Collection/Tenant | Collection |
| 安全认证 | 强制认证 + TLS + RBAC | API Key + TLS | API Key + OIDC + RBAC | API Key(Cloud) |
| 部署复杂度 | 中高 | 低 | 中等 | 极低 |
| 适用规模 | 千万~千亿级 | 百万~亿级 | 万~亿级 | 万~百万级 |
分析:Milvus 在向量数据库领域处于绝对的头部位置,无论是社区规模、功能完整度还是性能优化深度,都达到了业界最高水平。它的存算分离架构和 GPU 加速能力面对十亿级乃至千亿级向量场景时优势显著。但高能力意味着高复杂度——K8s 部署、组件协调、资源规划都需要专业的运维知识。对于大规模生产系统,Milvus 是目前最成熟的选择;对于中小型项目,可优先使用 Milvus Lite 或 Chroma 等更轻量的方案。Milvus 2.6 引入的全新 Python SDK(MilvusClient)显著降低了使用门槛,Lite 模式让开发者在本地也能享受 Milvus 的全功能体验。
参考资源
- GitHub 仓库: https://github.com/milvus-io/milvus
- 官方文档: https://milvus.io/docs
- PyMilvus SDK 文档: https://milvus.io/api-reference/pymilvus/v2.6.x/About.md
- Zilliz Cloud: https://zilliz.com/cloud
- Milvus Lite 指南: https://milvus.io/docs/milvus_lite.md
- 社区 Discord: https://discord.gg/milvus


