文章目录
- 1. Milvus 是什么:一句话说清它的定位
- 2. 为什么是 Milvus:五大硬核能力
- 2.1 规模化的高性能与高可用
- 2.2 丰富的索引类型与硬件加速
- 2.3 灵活的多租户与冷热存储
- 2.4 稀疏向量:全文检索与混合检索
- 2.5 数据安全与细粒度访问控制
- 3. 三行代码跑起来:从 Milvus Lite 到云原生集群
- 4. 架构总览:两张图看懂全貌
- 5. 从 1.x 到 2.x:一次「脱胎换骨」的架构革命
- 6. 内核核心(一):WAL——整个系统的单一事实来源
- 6.1 WAL 的三个角色
- 6.2 数据怎么流
- 7. 内核核心(二):三层通道模型与消息生命周期
- 7.1 三层通道:PChannel / VChannel / CChannel
- 7.2 Message:流经 WAL 的最小数据单元
- 7.3 「header 还是 body」——一个高频的工程决策
- 8. 内核核心(三):写入链路与拦截器链
- 9. 内核核心(四):分片、锁与本地 Flush
- 9.1 分片管理(Shard Management)
- 9.2 锁:独占与共享
- 9.3 本地 Flush 控制
- 10. 内核核心(五):TimeTick 与事务——一致性的基石
- 10.1 TimeTick:PChannel 级的总序
- 10.2 背压:WAB 如何「优雅地扛不住」
- 10.3 事务:一个 VChannel 内的多消息协调
- 10.4 LastConfirmedMessageID:让「读到完整数据」可被保证
- 11. 内核核心(六):一次检索请求经历了什么
- 12. 内核核心(七):DDL 广播、资源锁与幂等
- 12.1 广播的六步流程
- 12.2 资源锁
- 12.3 幂等:`_ik` 键如何避免「重复建表」
- 12.4 墓碑 GC:既要回收,又怕「复活的 ACK」
- 13. 内核核心(八):崩溃恢复——不丢数据是怎么被证明的
- 13.1 它持久化了什么
- 13.2 恢复流程
- 14. 内核核心(九):跨集群复制 CDC 的星型拓扑
- 14.1 配置与映射
- 14.2 角色与「不可复制」标记
- 14.3 数据流与检查点
- 14.4 拓扑变更
- 15. 存储底座:可插拔的 WAL Backend
- 16. 生态与周边:它如何融入你的技术栈
- 17. 从源码构建:动手前的环境清单
- 18. 结语:为什么「内核」才是向量数据库真正的护城河
当大模型把「非结构化数据」变成企业最贵的资产,向量数据库就成了这波浪潮里最硬的地基。而在这块地基上,Milvus 是绕不开的名字——但它真正难的地方,从来不是「能存向量」,而是「在万亿规模下依然又快又稳」。这篇长文,我们把它的分布式内核从头拆到脚。
1. Milvus 是什么:一句话说清它的定位
Milvus 是一个为规模化(scale)而生的高性能向量数据库。
它做的事很聚焦:把文本、图像、多模态等非结构化数据转成向量(也就是「学习到的表示」),然后高效地组织与检索。它不止存向量,还同时支持整数、字符串、JSON 等标量类型,因此可以做带元数据过滤的向量检索,也可以做混合检索(Hybrid Search)。
几个关键事实:
- 用 Go 与 C++ 编写,针对 CPU/GPU 做了硬件加速,追求「同类最佳」的向量检索性能。
- 全分布式、K8s 原生架构:可水平扩展,能在数十亿向量上处理数万级搜索查询,并通过实时流式更新保持数据新鲜。
- 同时支持单机:Standalone 模式用于单机部署;Milvus Lite 是轻量版,一条
pip install就能在 Python 里快速起步。 - 开源与治理: