本系列以 Milvus 2.6.x 钉住专用向量引擎内核(01–14),用 Qdrant 与 Lance 做对照(15–16),并用排障清单(17)把机制接到症状。本文给出 选型决策树、站内阅读地图 与 仍开放的问题——不代替官方容量规划,不排名「谁全局最快」。
本文是「向量检索引擎」系列第 18 篇(共 18 篇)。→ 系列目录
一、决策树(默认问法)
flowchart TD
start["需要向量近邻?"]
start -->|否| stop["别上向量栈"]
start -->|是| online["在线低延迟 + 持续写入?"]
online -->|否| lake["数据已在湖且要 snapshot/随机 take?"]
lake -->|是| lance["Lance ± LanceDB<br/>见 16 与 lakehouse/21"]
lake -->|否| batch["批处理/小流量"]
batch --> qdrantLite["单节点 Qdrant 或嵌入式"]
online -->|是| sql["必须强 SQL 事务同进程?"]
sql -->|是| pg["pgvector 起步<br/>规模上去再迁出"]
sql -->|否| ops["能否运维存算分离多组件?"]
ops -->|否| qdrant["Qdrant 单机或分片集群<br/>见 15"]
ops -->|是| milvus["Milvus 集群<br/>本系列 01-14"]
1.1 边界说明
| 选项 | 选它时你在买什么 | 主要代价 |
|---|---|---|
| Milvus | Growing/Sealed、一致性级别、离线建索隔离、对象存储弹性 | 组件多;对象 API 与协调者运维 |
| Qdrant | 少组件、payload 过滤、分片副本对称集群 | 超大规模时垂直/分片运维模型不同 |
| Lance | 湖侧随机访问与版本化向量子集 | 不是完整在线多租户引擎 |
| pgvector | 与 PostgreSQL 事务/SQL 同进程 | 与 OLTP 争资源;大规模常需迁出 |
二、回到五个关键问题
| 问题 | 本系列落点 |
|---|---|
| 向量库 vs 带向量列的库差在哪层? | 01、02、18 |
| insert → Growing → Sealed + Index? | 03–06、10 |
| search 如何拼 Growing/Sealed 并归并?Knowhere 在哪? | 07–09 |
| 过滤为何毁掉召回/延迟? | 11(+ frontier/09) |
| 十亿级选谁? | 15–18 |
三、站内阅读地图
flowchart LR
frontier["db-frontier 08/09<br/>ANN 与混合过滤算法"]
engine["本系列<br/>向量引擎内核"]
lake["lakehouse/21<br/>Lance 湖侧"]
rag["llm-infra 17/18<br/>RAG 应用"]
frontier --> engine
lake --> engine
engine --> rag
| 目标 | 路径 |
|---|---|
| 只搞懂算法 | frontier/08 → 本系列 02、08 |
| 从 RAG 下沉 | llm-infra/17–18 → 01 → 03 → 07 → 11 → 12 → 18 |
| 湖上向量 | lakehouse/21 → 16 →(若要在线)15 或 Milvus 01 |
| 排障 | 17 → 按症状回链各篇 |
| 写路径深挖 | 03 → 05 → 06 → 10 → 13 |
| 读路径深挖 | 07 → 08 → 09 → 11 → 12 → 14 |
四、与 llm-infra RAG 的接线
llm-infra/17 管 chunking、召回、rerank;18 管产品选型直觉。本系列补上:
- 入库后 多久、在何种一致性下 可搜(12);
- 权限/属性过滤如何进引擎(11);
- 撤回文档如何 delete 并回收(13);
- 延迟尖刺看水位还是看建索(17)。
RAG 效果差时,先分清是 检索工程 还是 生成/Prompt——向量引擎只对前者负责。
五、开放问题(系列收束)
- GPU 索引工业化:Knowhere 支持 GPU 路径(第 8 篇),多租户下设备内存碎片与抢占仍缺标准答案。
- 多向量 / 多模态字段:单实体多 embedding 时的索引生命周期与混合评分。
- 稀疏 + 稠密融合:学习稀疏与稠密 ANN 的统一执行与过滤(与 ColBERT 等应用层分工)。
- 湖表与在线引擎的版本原子性:Iceberg snapshot ↔︎ Milvus 可见集(16、lakehouse/21)。
- 过滤自适应:按选择度自动切换 pre/post/in-filter 与候选倍数(11、frontier/09)。
六、系列完成状态
| 部分 | 篇目 | 状态 |
|---|---|---|
| 生态与模型 | 01–03 | 已发布 |
| 写路径 | 04–06 | 已发布 |
| 读路径与索引 | 07–10 | 已发布 |
| 过滤/一致性/变更 | 11–14 | 已发布 |
| 对照与收束 | 15–18 | 已发布 |
实验台账中的 Docker 小规模实测仍可按 PLAN.md 后续补强;正文机制不依赖未跑数字。
七、小结
专用向量引擎解决的是 持续写入、近似检索、过滤、分布式生命周期;湖格式解决 版本与随机访问;pgvector 解决 同进程 SQL。按负载选层,而不是按热词选库。感谢读完 18 篇——从 系列目录 可按角色路径回看。
参考资料
- 本系列 index 与第 1–17 篇。
- db-frontier/08–09、llm-infra/17–18、lakehouse/21。
- Milvus / Qdrant / Lance 官方文档(各篇已列)。
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【向量检索引擎】Milvus · Segcore · Knowhere · Qdrant · Lance
补齐 ANN 算法与 RAG 应用之间的生产级向量引擎层:以 Milvus 2.6.x 为主线拆解 Segment、WAL、Segcore、Knowhere、混合过滤与一致性,并用 Qdrant、LanceDB 对照选型。
【向量检索引擎】向量引擎全景:算法、RAG 与专用引擎之间的一层
定位专用向量检索引擎相对 ANN 算法、RAG 应用与湖仓格式的分工;以 Milvus 2.6.x 四层架构给出本系列 18 篇地图,并交代从 SIGMOD 2021 系统论文到存算分离演进的谱系。
【向量检索引擎】Qdrant 对照:单库路径、payload 过滤与分片副本
对照 Qdrant 与本系列 Milvus 主线:Rust 段式存储与 payload 索引、分布式下 Raft 管元数据与分片复制;说明何时单进程/小集群更合适,以及分片语义与 Milvus Channel 的差异。
【向量检索引擎】Lance / LanceDB 对照:格式还是服务
承接 lakehouse/21 的 Lance vs Parquet 实测口径,划清湖原生向量格式与 Milvus 专用引擎的边界:随机 take、ANN 随数据集管理、版本化,以及何时不必上向量集群。