向量检索引擎:Milvus · Segcore · Knowhere · Qdrant · Lance
数据库研究前沿 把 HNSW、DiskANN、IVF-PQ 讲清了;大模型基础设施 把 RAG 召回与向量库选型讲清了;湖仓末篇 则把 Lance 留在「湖侧格式」边界。中间仍缺一层:生产向量引擎里,一条 insert / search 如何穿过 Proxy、Streaming Node、Query Node,Segment 如何从 Growing 变成带索引的 Sealed。
本系列以 Milvus 2.6.x 为内核主线,写:
- Collection / Partition / Segment / Channel 与 Growing → Sealed → Indexed 状态机。
- Woodpecker WAL 与 Streaming Node 的实时可搜路径;对象存储上的 Segment 布局。
- Segcore 段级执行与 Knowhere 索引插件(不重讲 ANN 论文)。
- 标量过滤、一致性级别、Delete/Upsert、副本与排障。
- Qdrant、Lance/LanceDB 对照,以及接到 RAG 时的选型地图。
系列状态:已完成(2026-07-12)。全 18 篇正文均已发布,可点进阅读。规划见 PLAN.md。
版本锚定:Milvus 2.6.x(Architecture / Streaming / Data Processing);Knowhere 与对应 release 对齐;Qdrant、Lance 在对照篇标注当时文档版本。本机实验以 Docker 单机为主,见 PLAN 实验台账;不伪造十亿级集群吞吐。
适合谁看
- RAG / AI 平台工程师:维护向量库,要能从延迟与召回反推到 Segment / 索引 / 过滤路径。
- 从 frontier 或 llm-infra 下沉的读者:算法与产品两端已有直觉,缺引擎层。
- 数据平台工程师:在专用向量库与湖上 Lance 之间做边界划分。
- 先修:向量索引深度 或 向量库与图 RAG;湖上 AI 与向量 可选。
在知识栈中的位置
| 层 | 系列 | 本系列关系 |
|---|---|---|
| ANN 算法 | db-frontier/08–09 | 外链,不重写 |
| 向量引擎内核 | 本系列 | Segcore / Knowhere / 集群路径 |
| 湖侧向量格式 | lakehouse/21 | 第 16 篇对照 |
| RAG 应用 | llm-infra/17–18 | 第 18 篇回链 |
| 存储入门 | storage/39 | 第 1 篇一句分工 |
一、这个领域最值得关注的 5 个问题
向量库和「带向量列的数据库」差在哪一层? → 第 1、2、18 篇:专用引擎解决的是近似检索、索引生命周期与过滤路径,不是把 float 数组塞进行存那么简单。
一条 insert 如何从 Proxy 落到 Growing Segment,再变成可检索的 Sealed + Index? → 第 3–6、10 篇:WAL、Flush、Handoff、Data Node 建索引。
一次 search 如何同时扫 Growing 与 Sealed,并在 Proxy 归并?Knowhere 在哪一层? → 第 7–9 篇:Segcore 执行、Knowhere 插件、Delegator / reduce。
标量过滤为何会毁掉召回或延迟? → 第 11 篇:pre-filter / post-filter 与引擎实现;对读 db-frontier/09。
十亿级时该上 Milvus 集群、Qdrant 分片,还是湖上 Lance? → 第 15–18 篇:对照与决策树;大数字只引用可核对来源。
二、篇目依赖关系与推荐阅读路径
flowchart TD
A["01 向量引擎全景"] --> B["02 ANN 工程接口"]
A --> C["03 Segment 状态机"]
C --> D["04 Proxy Coord"]
C --> E["05 Streaming WAL"]
E --> F["06 对象存储布局"]
C --> G["07 Segcore"]
G --> H["08 Knowhere"]
G --> I["09 分布式归并"]
F --> J["10 DataNode compaction"]
H --> J
I --> K["11 混合过滤"]
I --> L["12 一致性"]
J --> M["13 Delete Upsert"]
L --> N["14 副本故障"]
K --> O["15 Qdrant 对照"]
F --> P["16 Lance 对照"]
N --> Q["17 排障"]
O --> R["18 选型地图"]
P --> R
Q --> R
| 路径 | 篇目 | 适合 |
|---|---|---|
| 从 RAG 下沉 | 1 → 3 → 7 → 8 → 11 → 18 | llm-infra 读者补引擎 |
| 从 ANN 算法来 | 2 → 8 → 11 → 17 | frontier/08 读者补工程 |
| 写路径优先 | 1 → 3 → 5 → 6 → 10 → 13 | 平台 / 运维 |
| 读路径优先 | 1 → 3 → 7 → 8 → 9 → 12 | 延迟与召回排查 |
| 选型对照 | 1 → 15 → 16 → 18 | 架构决策 |
| 完整通读 | 1 → … → 18 | 系统掌握 |
三、目录与每篇价值点
第一部分:生态与数据模型
- 向量引擎全景:算法、RAG
与专用引擎之间的一层
- 画出 frontier / llm-infra / lakehouse 与本系列的分工;给出 Milvus 四层地图。
- ANN
算法工程接口:Knowhere 插件契约
- 把 HNSW/IVF/DiskANN 收成 build/load/search 接口;算法细节外链 frontier/08。
- Collection ·
Partition · Segment · Channel
- Growing / Sealed / Flush / Handoff 状态机,是后续读写路径的共同词汇。
第二部分:写路径与持久化
- Proxy
与 Coordinator:DDL、TSO 与拓扑
- 控制面如何持有时间戳与 query view,Worker 为何可以无状态扩缩。
- Streaming
Node 与 Woodpecker WAL:实时可搜
- 增量数据如何立即参与检索,以及自研 WAL 相对 Kafka/Pulsar 的取舍。
- 对象存储上的
Segment 布局
- 快照与索引如何落在 MinIO/S3;小文件与 StorageV2 寻址代价。
第三部分:读路径与索引内核
- Query
Node 与 Segcore:段级 search
- Sealed 段如何加载并执行;与 Growing 路径如何并行。
- Knowhere:索引构建、加载与硬件后端
- CPU/GPU 抽象落在哪一层;
VecIndex插件契约与 bitset 软删。
- CPU/GPU 抽象落在哪一层;
- 分布式
search 归并:Delegator 与 Proxy reduce
- 多级 reduce 树;GuaranteeTs 如何把一致性变成等待。
- Data
Node:compaction 与 index build
- 离线建索与段合并如何接回 handoff;队列堆积如何拖垮新鲜度。
第四部分:过滤、一致性与变更
- 混合检索与标量过滤
- 表达式→bitset→Knowhere;选择度如何打穿 Top-\(k\) 归并;对读 frontier/09。
- 一致性模型与
guarantee timestamp
- Strong 到 Eventually;等待 ServiceTime;「刚写入就能搜到」的精确含义。
- Delete ·
Upsert · TTL
- 软删 bitset、upsert override、TTL 异步回收与 compaction。
- 副本、负载与故障恢复
- 内存多副本、Proxy 缓存 failover、WAL Wait for Ready、handoff。
第五部分:对照、运维与收束
- Qdrant
对照:单库路径与 payload 过滤
- 何时单进程栈与分片副本;payload index 与 Milvus Channel 差异。
- Lance /
LanceDB 对照:格式还是服务
- 承接 lakehouse/21;何时向量应留在湖上而非专用集群。
- 生产排障:召回、延迟、堆积、OOM
- 从症状反推到 Segment / 索引 / 过滤 / 对象存储的检查清单。
- 选型与阅读地图
- 决策树收束;回链 RAG;GPU 索引、多向量、稀疏+稠密等开放问题。
四、与相邻系列的分工
| 话题 | 本系列 | 相邻系列 |
|---|---|---|
| HNSW / DiskANN 原理 | 第 2/8 篇只谈接口 | db-frontier/08 |
| ACORN / 混合过滤算法 | 第 11 篇工程落点 | db-frontier/09 |
| RAG 流水线与 GraphRAG | 第 18 篇回链 | llm-infra/17–18 |
| Lance vs Parquet 随机访问 | 第 16 篇对照 | lakehouse/21 |
| 向量存储入门 | 第 1 篇一句 | storage/39 |
| pgvector | 第 18 篇选型点到 | postgresql-kernel 不扩向量专章 |
参考
- 系列规划(PLAN.md)(写作执行文档,非发布页)
- 数据库内核索引
- 全部系列索引
- 数据库研究前沿
- 大模型基础设施
返回 数据库索引 · db-frontier · llm-infra
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【向量检索引擎】向量引擎全景:算法、RAG 与专用引擎之间的一层
定位专用向量检索引擎相对 ANN 算法、RAG 应用与湖仓格式的分工;以 Milvus 2.6.x 四层架构给出本系列 18 篇地图,并交代从 SIGMOD 2021 系统论文到存算分离演进的谱系。
【向量检索引擎】ANN 算法工程接口:从 HNSW/IVF 到 Knowhere 契约
把 HNSW、IVF、DiskANN、Flat 收成引擎侧的索引类型与参数面;说明 Train/Build/Search 生命周期如何贴着 Segment,并与 db-frontier/08 的算法细节、第 8 篇 Knowhere 实现分层分工。
【向量检索引擎】选型与阅读地图:决策树、RAG 回链与开放问题
用决策树收束 Milvus、Qdrant、Lance/pgvector 的适用边界;回链 llm-infra RAG 与 db-frontier ANN;列出 GPU 索引、多向量、稀疏+稠密等开放问题,完成本系列阅读地图。
【向量检索引擎】Knowhere:向量索引执行引擎与插件契约
按官方 Knowhere 文档说明其在 Milvus 中的位置、相对 Faiss 的扩展(bitset、SIMD 选择、二进制度量)、VecIndex 类层次与 IDMAP/IVF/HNSW 等类型,并与 db-frontier/08 的算法细节分工。