GitHub Explorer

Milvus 深度分析报告

GitHub: https://github.com/milvus-io/milvus

一句话总结

开源向量数据库赛道的领导者,以存算分离的分布式架构和最丰富的索引类型,为十亿级向量的 AI 应用提供生产级搜索和管理能力。

值得关注的理由

  1. AI 基础设施核心组件:43k+ Star,向量数据库赛道 Star 数第一,RAG/语义搜索/推荐系统的底层支撑,NVIDIA/Salesforce/eBay 等 10,000+ 企业在生产环境使用
  2. 工程与学术双重深度:SIGMOD 2021 和 VLDB 2022 顶会论文背书,134 万行代码的大型分布式系统,存算分离 + 微服务 + 流式架构的教科书级实现
  3. 赛道竞争白热化中的差异化护城河:面对 Qdrant(Rust)、ChromaDB(轻量)、pgvector(SQL 原生) 的多维竞争,Milvus 在扩展性、索引丰富度和企业级特性上建立了明确护城河

项目展示

Milvus Banner Milvus — 为 AI 应用构建的高性能向量数据库

Image Search Demo 图像相似性搜索 Demo

RAG QA Demo RAG 问答系统 Demo

项目画像

维度数据
GitHubhttps://github.com/milvus-io/milvus
Star / Fork43,442 / 3,910
代码行数1,338,535(Go 66.1%, Python 13.2%, C++ 10.4%)
项目年龄84 个月(首次提交 2019-03-18)
开发阶段密集开发(近 30 天 171 commits,近 90 天 543 commits)
贡献模式企业级社区驱动(Zilliz 主导,432 位贡献者)
热度定位大众热门(向量数据库赛道 Star 数第一)
质量评级代码[优秀] 文档[优秀] 测试[良好]

作者视角:为什么存在这个项目

创始人/作者背景

Milvus 由 Zilliz 公司创建并主导开发(融资 ~$132M,总部旧金山)。创始团队有深厚的数据库与向量检索学术背景,核心论文发表于 SIGMOD 2021(“Milvus: A Purpose-Built Vector Data Management System”)和 VLDB 2022(“Manu: A Cloud Native Vector Database Management System”)。项目归属 LF AI & Data Foundation,拥有中立治理框架。432 位贡献者中,前 10 名贡献者提交次数在 700-1,684 之间,分布相对均匀,表明有健康的团队协作模式。

问题判断

Zilliz 在 2019 年就意识到,深度学习将非结构化数据转化为向量嵌入(Embedding)正成为主流,但现有技术栈存在根本性缺口:FAISS 等库提供了算法但缺乏数据管理能力(事务、持久化、分布式);传统数据库的 B-tree 索引不适用于高维空间;Elasticsearch 的向量搜索是后加功能。2023-2025 年 RAG/LLM 爆发完美验证了这个判断——向量数据库成为 AI 应用的必备基础设施。

解法哲学

“存算分离 + 微服务 + 流式架构”:

  • 选择做:将向量数据库当作分布式流处理系统来构建,存储和计算完全分离(MinIO/S3 + 无状态计算节点),通过 WAL 实现流式数据同步
  • 选择不做:不追求”简单上手”(对标 ChromaDB),不走单体路线(对标 Qdrant),不做数据库扩展(对标 pgvector)
  • 双语言策略:Go 负责分布式协调(并发模型优势),C++ 负责核心向量搜索(计算性能优势),各取所长

战略意图

开源核心引擎 → LF AI 基金会托管建立信任 → Zilliz Cloud 提供全托管商业服务(Serverless/Dedicated/BYOC)。这是经典的”开源核心 + 云服务”商业模式。2.6+ 版本引入 Woodpecker(自研 WAL,替代 Pulsar/Kafka)和 MixCoord(协调器合并),标志着从依赖外部组件向自包含架构演进,降低部署复杂度的同时巩固技术护城河。

核心价值提炼

创新之处

  1. Woodpecker 自研 WAL(新颖度 4/5,实用性 5/5,可迁移性 3/5) 基于对象存储(S3/MinIO)的写前日志,消除了对 Pulsar/Kafka 的强依赖,大幅简化部署

  2. 流式时间同步机制(新颖度 4/5,实用性 4/5,可迁移性 3/5) 通过 Guarantee Timestamp 实现 WAL、binlog、索引三种数据形态的一致性快照,支持”在时间 T 执行搜索”的语义

  3. 混合搜索(Dense + Sparse + Full-text)(新颖度 3/5,实用性 5/5,可迁移性 4/5) 同一 Collection 中同时存储稠密向量、稀疏向量和 BM25 全文索引,支持多路召回 + 重排

  4. GPU 加速索引(CAGRA 集成)(新颖度 3/5,实用性 4/5,可迁移性 2/5) 通过 NVIDIA cuVS 库支持 GPU 索引构建和搜索,面向超大规模场景

  5. Partition Key 多租户(新颖度 3/5,实用性 5/5,可迁移性 4/5) 数据库/Collection/Partition/Partition Key 四级隔离,单集群可处理百万级租户

可复用的模式与技巧

  1. Coordinator-Worker 分离模式:Coordinator 管元数据和调度,Worker 无状态执行——适用于任何需要水平扩展的分布式系统
  2. MQ 抽象层 + 多后端模式:统一消息队列接口支持 Pulsar/Kafka/RocksMQ/Woodpecker——降低基础设施锁定
  3. CGO 双语言桥接模式:Go 处理分布式逻辑 + C++ 处理计算密集内核——适用于兼顾分布式和极致性能的系统
  4. 微服务先拆后合(MixCoord):先按职责拆分保持清晰边界,成熟后合并减少通信开销——经典架构演进模式
  5. Segment 不可变 + Compaction:数据以不可变 Segment 写入,后台异步合并压缩——类似 LSM-Tree 思路
  6. 元数据存储抽象(etcd/tikv):MetaKv 接口抽象,etcd 适合小规模,tikv 适合大规模

关键设计决策

决策Trade-off
存算分离架构架构复杂度高(多组件依赖),换来独立扩缩容和故障隔离
Go + C++ 双语言CGO 调用有开销且调试困难,但各取所长(并发 + 性能)
MixCoord 协调器合并单点风险增加,但简化部署和降低跨服务延迟
可插拔索引引擎 Knowhere通用抽象难以极致优化每种索引,但获得了灵活性(11+ 索引类型)
列式 Segment 存储不利于行级操作,但利于 SIMD 和压缩,Segment 不可变简化并发

竞品格局与定位

竞品对比矩阵

维度MilvusQdrantChromaDBWeaviatepgvector
Star43,44229,75926,75715,849~12,000
语言Go + C++RustPython + RustGoC
架构存算分离/微服务单体/Raft 集群嵌入式/单机分片复制PG 扩展
向量规模十亿级百万~十亿级百万级亿级百万级
索引类型11+ 种HNSW 为主HNSWHNSWIVFFlat/HNSW
运维复杂度高低极低中极低
商业化Zilliz Cloud ($132M)Qdrant CloudChroma CloudWeaviate Cloud各 PG 云

差异化护城河

  • 扩展性护城河:存算分离架构是唯一真正支持十亿级向量独立弹性扩缩的开源方案
  • 索引深度护城河:Knowhere C++ 引擎集成 11+ 种索引(含 GPU 加速),竞品难以短期追平
  • 生态护城河:LangChain/LlamaIndex/OpenAI 等深度集成 + LF AI 基金会中立治理
  • 商业化护城河:Zilliz 融资 $132M,NVIDIA/Salesforce/eBay 等企业客户基础

竞争风险

  • Qdrant 以 Rust 高性能 + 简洁运维蚕食中高端市场,增速最快
  • pgvector 以零迁移成本切入已有 PostgreSQL 用户,Elastic CEO 公开称”向量数据库不是独立业务”
  • Pinecone 虽闭源但纯托管零运维体验好,不过正面临收购传闻($750M 估值)
  • 长期看,大型云厂商(AWS/GCP/Azure)可能推出原生向量数据库服务

生态定位

在 AI 基础设施栈中,Milvus 占据”生产级向量存储与检索”核心位置。与 LLM 框架(LangChain/LlamaIndex)、Embedding 服务(OpenAI/HuggingFace)、数据管道(Spark/Kafka)形成上下游互补关系。Milvus Lite 模式是对 ChromaDB 轻量市场的直接回应,试图覆盖从开发到生产的全链路。

套利机会分析

  • 信息差: 无,项目已被充分发现(43k Star),赛道本身是 VC 热点
  • 技术借鉴: 存算分离架构设计、Coordinator-Worker 模式、MQ 抽象层、CGO 双语言桥接、Segment 管理模式——每一项都是分布式系统设计的优质教材
  • 生态位: 向量数据库赛道的”重量级冠军”——功能最全、规模最大、但也最复杂
  • 趋势判断: 持续增长,RAG/AI Agent 趋势推动向量数据库成为必备基础设施。Milvus 正从”纯向量数据库”向”全能型 AI 数据库”演进(全文搜索 BM25、聚合查询、RESTful API)

风险与不足

  1. 部署复杂度高:多组件依赖(etcd + MinIO + MQ),运维门槛远高于 Qdrant/ChromaDB
  2. 开发者上手门槛:相比 ChromaDB 的 pip install 体验,Milvus 的学习曲线陡峭(Milvus Lite 在缓解但功能受限)
  3. CGO 双语言代价:Go-C++ 桥接增加调试难度和构建复杂度,新贡献者门槛高
  4. 注释偏少:134 万行代码,代码/注释比 9.6:1,对于这种复杂度的系统偏低
  5. 赛道整合风险:如果传统数据库(PostgreSQL、Elasticsearch)的向量能力持续提升,专用向量数据库的市场空间可能被压缩
  6. Woodpecker 成熟度:自研 WAL 仍有性能问题(Issue #46067),需要时间验证生产可靠性

行动建议

  • 如果你要用它: 十亿级向量 + 需要弹性扩缩 + 企业级特性(RBAC/多租户/CDC)→ 选 Milvus;百万级 + 快速上手 → 选 Qdrant 或 ChromaDB;已有 PostgreSQL → 先试 pgvector。建议从 Milvus Lite 开始原型,生产环境用 K8s 部署或直接上 Zilliz Cloud
  • 如果你要学它: 重点关注 internal/proxy/(API 层)、internal/datacoord/(数据调度)、internal/core/src/segcore/(C++ 核心引擎)、pkg/mq/(MQ 抽象层)、docs/ 目录下的系统设计文档(9 章 + 附录)
  • 如果你要 fork 它: 可改进方向:(1) 进一步简化单机部署体验;(2) 提升 Woodpecker 性能和稳定性;(3) 增加更多索引算法的 GPU 加速;(4) 改善代码注释覆盖率

知识入口

资源链接
DeepWikideepwiki.com/milvus-io/milvus
Zread.aizread.ai/repo/milvus-io/milvus
关联论文Milvus: A Purpose-Built Vector Data Management System(SIGMOD 2021)
关联论文Manu: A Cloud Native Vector Database Management System(VLDB 2022)
综述论文Survey of Vector Database Management Systems(arXiv)
官方文档milvus.io/docs
在线 Demomilvus.io/milvus-demos
Bootcampgithub.com/milvus-io/bootcamp(2,397 Star)

相关报告