土法炼钢兴趣小组的算法知识备份

【向量检索引擎】Milvus · Segcore · Knowhere · Qdrant · Lance

文章导航

分类入口
databasestorage
标签入口
#vector-search#milvus#knowhere#segcore#qdrant#lance#hnsw#ann#rag#hybrid-search

目录

向量检索引擎: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 为内核主线,写:

系列状态:已完成(2026-07-12)。全 18 篇正文均已发布,可点进阅读。规划见 PLAN.md

版本锚定:Milvus 2.6.x(Architecture / Streaming / Data Processing);Knowhere 与对应 release 对齐;Qdrant、Lance 在对照篇标注当时文档版本。本机实验以 Docker 单机为主,见 PLAN 实验台账;不伪造十亿级集群吞吐。

适合谁看

在知识栈中的位置

系列 本系列关系
ANN 算法 db-frontier/08–09 外链,不重写
向量引擎内核 本系列 Segcore / Knowhere / 集群路径
湖侧向量格式 lakehouse/21 第 16 篇对照
RAG 应用 llm-infra/17–18 第 18 篇回链
存储入门 storage/39 第 1 篇一句分工

一、这个领域最值得关注的 5 个问题

  1. 向量库和「带向量列的数据库」差在哪一层? → 第 1、2、18 篇:专用引擎解决的是近似检索、索引生命周期与过滤路径,不是把 float 数组塞进行存那么简单。

  2. 一条 insert 如何从 Proxy 落到 Growing Segment,再变成可检索的 Sealed + Index? → 第 3–6、10 篇:WAL、Flush、Handoff、Data Node 建索引。

  3. 一次 search 如何同时扫 Growing 与 Sealed,并在 Proxy 归并?Knowhere 在哪一层? → 第 7–9 篇:Segcore 执行、Knowhere 插件、Delegator / reduce。

  4. 标量过滤为何会毁掉召回或延迟? → 第 11 篇:pre-filter / post-filter 与引擎实现;对读 db-frontier/09

  5. 十亿级时该上 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 系统掌握

三、目录与每篇价值点

第一部分:生态与数据模型

  1. 向量引擎全景:算法、RAG 与专用引擎之间的一层
    • 画出 frontier / llm-infra / lakehouse 与本系列的分工;给出 Milvus 四层地图。
  2. ANN 算法工程接口:Knowhere 插件契约
    • 把 HNSW/IVF/DiskANN 收成 build/load/search 接口;算法细节外链 frontier/08。
  3. Collection · Partition · Segment · Channel
    • Growing / Sealed / Flush / Handoff 状态机,是后续读写路径的共同词汇。

第二部分:写路径与持久化

  1. Proxy 与 Coordinator:DDL、TSO 与拓扑
    • 控制面如何持有时间戳与 query view,Worker 为何可以无状态扩缩。
  2. Streaming Node 与 Woodpecker WAL:实时可搜
    • 增量数据如何立即参与检索,以及自研 WAL 相对 Kafka/Pulsar 的取舍。
  3. 对象存储上的 Segment 布局
    • 快照与索引如何落在 MinIO/S3;小文件与 StorageV2 寻址代价。

第三部分:读路径与索引内核

  1. Query Node 与 Segcore:段级 search
    • Sealed 段如何加载并执行;与 Growing 路径如何并行。
  2. Knowhere:索引构建、加载与硬件后端
    • CPU/GPU 抽象落在哪一层;VecIndex 插件契约与 bitset 软删。
  3. 分布式 search 归并:Delegator 与 Proxy reduce
    • 多级 reduce 树;GuaranteeTs 如何把一致性变成等待。
  4. Data Node:compaction 与 index build
    • 离线建索与段合并如何接回 handoff;队列堆积如何拖垮新鲜度。

第四部分:过滤、一致性与变更

  1. 混合检索与标量过滤
    • 表达式→bitset→Knowhere;选择度如何打穿 Top-\(k\) 归并;对读 frontier/09。
  2. 一致性模型与 guarantee timestamp
    • Strong 到 Eventually;等待 ServiceTime;「刚写入就能搜到」的精确含义。
  3. Delete · Upsert · TTL
    • 软删 bitset、upsert override、TTL 异步回收与 compaction。
  4. 副本、负载与故障恢复
    • 内存多副本、Proxy 缓存 failover、WAL Wait for Ready、handoff。

第五部分:对照、运维与收束

  1. Qdrant 对照:单库路径与 payload 过滤
    • 何时单进程栈与分片副本;payload index 与 Milvus Channel 差异。
  2. Lance / LanceDB 对照:格式还是服务
    • 承接 lakehouse/21;何时向量应留在湖上而非专用集群。
  3. 生产排障:召回、延迟、堆积、OOM
    • 从症状反推到 Segment / 索引 / 过滤 / 对象存储的检查清单。
  4. 选型与阅读地图
    • 决策树收束;回链 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 不扩向量专章

参考


返回 数据库索引 · db-frontier · llm-infra

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。


By .