向量检索引擎:Milvus · Segcore · Knowhere · Qdrant · Lance · pgvector
数据库研究前沿 把 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、pgvector 对照,以及接到 RAG 时的选型地图。
系列状态:已完成(2026-07-12);讲解加深(2026-07-13);S 档源码钉点 + reproduce(2026-07-25);A 档 pgvector 对照 + storage/39 收束(2026-07-25)。全 19 篇;第 3/5/7/8/11 篇钉 milvus v2.6.21 / knowhere v2.6.18;第 19 篇钉 pgvector v0.8.0。规划见 PLAN.md。
版本锚定:Milvus v2.6.21;Knowhere v2.6.18;pgvector v0.8.0;Qdrant、Lance 在对照篇标注当时文档版本。本机实验以 hnswlib / 页装箱公式微基准为主;不伪造十亿级集群吞吐,也不假装本机跑过 Docker Milvus / 本机 Postgres+pgvector(无则脚本显式 BOUNDARY)。
适合谁看
- 聪明的学生 / 研究生:能跟公式与系统图,要建立「一条 insert/search 怎么走」的生产直觉,而不是只背产品名。
- 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、19 篇:专用引擎 vs pgvector Index AM / 8KB 页模型。
一条 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 篇;对读 db-frontier/09;pgvector 默认 post-filter 见第 19 篇。
十亿级时该上 Milvus、Qdrant、Lance,还是先留在 pgvector? → 第 15–19 篇:对照与决策树。
二、篇目依赖关系与推荐阅读路径
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
R --> S["19 pgvector 对照"]
| 路径 | 篇目 | 适合 |
|---|---|---|
| 从 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 → 19 | 架构决策(含同进程 SQL) |
| 已有 Postgres | 1 → 18 → 19 → PG 页面 | sqlGate 读者 |
| 完整通读 | 1 → … → 19 | 系统掌握 |
三、目录与每篇价值点
第一部分:生态与数据模型
- 向量引擎全景:算法、RAG
与专用引擎之间的一层
- 四类「向量库」反例 + 四层 SVG/时序图;SIGMOD 2021→2.6 同一条 insert 怎么走。
- ANN
算法工程接口:Knowhere 插件契约
- Train/Build/Load/Search 生命周期图;构建期 vs 查询期旋钮;算法细节外链 frontier/08。
- Collection ·
Partition · Segment · Channel
- Growing/Sealed 状态机与 flush/handoff 时序;纠正「一个 Collection 一张大图」。
第二部分:写路径与持久化
- Proxy
与 Coordinator:DDL、TSO 与拓扑
- DDL/DML/DQL 三岔路图;TSO 分配时序;与 Spanner/TiDB 时间戳对照。
- Streaming
Node 与 Woodpecker WAL:实时可搜
- Streaming 三件套 + Message→WAL→Growing 时序;MemoryBuffer vs QuorumBuffer。
- 对象存储上的
Segment 布局
- 对象路径树与读路径寻址;V1 小文件 vs V2 pruning。
第三部分:读路径与索引内核
- Query
Node 与 Segcore:段级 search
- Segcore↔︎Knowhere 分层;Growing+Sealed 并行 search 时序。
- Knowhere:索引构建、加载与硬件后端
- 插件注册/加载、CPU/GPU 分发、bitset 进入 Query。
- 分布式
search 归并:Delegator 与 Proxy reduce
- 多级 reduce 拓扑 SVG;GuaranteeTs 等待如何变成延迟。
- Data
Node:compaction 与 index build
- 建索/合并/handoff 流水线;队列堆积如何拖垮新鲜度。
第四部分:过滤、一致性与变更
- 混合检索与标量过滤
- 表达式→bitset→Knowhere;选择度打穿 Top-\(k\) 归并的教学演算。
- 一致性模型与
guarantee timestamp
- 四级 vs ServiceTime;强一致等待时序;「刚写入就能搜到」的精确含义。
- Delete ·
Upsert · TTL
- 软删 bitset 生命周期;upsert override vs delete+insert。
- 副本、负载与故障恢复
- 多副本拓扑;WAL 迁移与 Wait for Ready。
第五部分:对照、运维与收束
- Qdrant
对照:单库路径与 payload 过滤
- 单进程栈 vs Milvus 四层对照图;何时不必上分布式。
- Lance /
LanceDB 对照:格式还是服务
- 湖格式 vs 在线引擎边界;版本/snapshot 对齐。
- 生产排障:召回、延迟、堆积、OOM
- 症状→机制决策树;从最小故事反推检查清单。
- 选型与阅读地图
- 选型决策树与 bake-off 方法;回链 RAG;开放问题收束。
- pgvector
内核对照:同进程 SQL 与专用引擎
- Index AM、8KB 页上 HNSW element/neighbor、iterative_scan;与 Growing/Sealed 差分。
四、与相邻系列的分工
| 话题 | 本系列 | 相邻系列 |
|---|---|---|
| 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 / PG 页与扩展 | 第 19 篇内核对照 | postgresql-kernel/02、20 |
参考
- 系列规划(PLAN.md)(写作执行文档,非发布页)
- 数据库内核索引
- 全部系列索引
- 数据库研究前沿
- 大模型基础设施
返回 数据库索引 · db-frontier · llm-infra
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【向量检索引擎】向量引擎全景:算法、RAG 与专用引擎之间的一层
定位专用向量检索引擎相对 ANN 算法、RAG 应用与湖仓格式的分工;以 Milvus 2.6.x 四层架构与 insert/search 最小故事建立坐标系,并交代从 SIGMOD 2021 到 Streaming 演进的谱系与常见误解。
【向量检索引擎】选型与阅读地图:决策树、RAG 回链与开放问题
扩展选型决策树:从单机原型到十亿级多租户,逐层加入湖上格式、SQL 同进程、存算分离运维、多一致性级别四个判断轴;用一个团队规模演进的最小故事串起决策点,并回链 llm-infra RAG 与本系列全部核心论文谱系。
【向量检索引擎】ANN 算法工程接口:从 HNSW/IVF 到 Knowhere 契约
把 HNSW、IVF、DiskANN、Flat 收成引擎侧 Train/Build/Load/Search 契约与构建期/查询期参数面;用生命周期图与召回–QPS–内存三角说明索引如何贴着 Segment,并与 db-frontier/08、第 8 篇 Knowhere 分工。
【向量检索引擎】Knowhere:向量索引执行引擎与插件契约
按官方 Knowhere 文档说明其在 Milvus 中的位置、相对 Faiss 的扩展(bitset、SIMD 选择、二进制度量)、VecIndex 类层次与 IDMAP/IVF/HNSW 等类型,用插件注册、CPU/GPU 分发与 bitset 进查询三张图钉住工程契约,并与 db-frontier/08 的算法细节分工。