一句话定义
向量库选型可以收敛为五问一树:数据量级 → 已有基础设施 → 过滤复杂度 → 混合检索刚需 → 团队运维能力,沿决策树走到底得到的是"方案 + 索引配置 + 重新评估触发条件"的完整 prescription(处方)。
为什么重要
这是全库的"实践汇合点":前面的原理(02 模块)、谱系(kp-018)、误区(kp-023)最终都要落成一个可辩护的选型结论。决策树的价值在于把"资深工程师的直觉"显式化——让新手按同样路径得出同样结论,也让结论可以被复核与挑战。
前置知识
kp-018(谱系)、kp-023(误区——防止决策树被错误输入污染);建议先完成 MVP 路径前 8 篇。
核心概念
- 五问:Q1 数据量级(决定谱系起点);Q2 已有设施(PG/ES 复用优先);Q3 过滤复杂度(选择率与基数);Q4 混合检索刚需(决定是否要原生 BM25/稀疏);Q5 运维能力(K8s/DBA/预算)。
- 处方三元组:引擎 + 索引与参数 + 再评估触发条件(数据量/QPS/延迟预算阈值)。
- 可辩护性:每个分支结论都能用 kp-025 的评测数字支撑。
原理与机制
决策树全图(自上而下,命中即停):
Q1 数据量级?
├─ <10万 且 无过滤/更新需求
│ └► FAISS/hnswlib/Flat 进程内; 无持久化需求直接 Flat [kp-006]
├─ <1000万
│ ├─ Q2 数据/业务已在 PostgreSQL
│ │ └► pgvector: HNSW(m=16, efC=64~200) + ef_search 按评测 [kp-020]
│ ├─ Q4 需要一站式混合检索/rerank 编排
│ │ └► Weaviate 单机 或 pgvector+外接BM25+RRF [kp-016]
│ └─ 原型/Notebook/小工具
│ └► Chroma [kp-021]
├─ 1000万~1亿
│ ├─ Q3 过滤复杂(低选择率高基数)?
│ │ └► 是: Qdrant(filterable HNSW) / Milvus分区 + 评测分桶 [kp-014/017]
│ ├─ Q5 无 K8s 运维或不想运维
│ │ └► 托管(Qdrant Cloud/Zilliz/Pinecone) 或 Qdrant 单机 [kp-023]
│ └─ 默认: Qdrant/Weaviate 单机起步, 预留集群路径 [kp-021]
└─ >1亿
├─ 延迟预算 <5ms 且 预算充足 ─► 内存型: Milvus/Qdrant集群 + int8 [kp-011]
├─ 预算敏感 + 延迟宽松(>10ms) ─► DiskANN/SPANN 路线 [kp-013]
└─ 多租户强隔离+高可用硬SLA ─► Milvus Distributed/托管+评审 [kp-019]
每张处方附带:
索引与参数(M/ef/nlist 按kp-009流程定) + 再评估触发条件
(数据量×3 / p99超预算 / 写入速率×5 即回到本树)使用纪律:1)Q1 必须用两年后的预估量而非当前量;2)Q2 分支进入后仍要用 kp-025 评测验证过滤场景;3)到达任何叶子都要写出"再评估触发条件"——决策树是循环的,不是一锤子买卖。
公式或模型
本节不适用:决策框架篇;各分支的量化依据见对应 kp 的公式区(内存账 kp-026、召回 kp-024)。
图示
见上方决策树;配套"反模式红线"(出现即推翻分支结论):
- 选了分布式却无人负责 on-call;
- 过滤字段选择率从未测过就定引擎;
- 用厂商跑分替代 kp-025 评测;
- 处方里没有再评估触发条件。
实例或案例
三份真实形态的处方:
- 内部知识库(40 万 chunk、已有 RDS PG、单检索场景)→ pgvector + HNSW(m=16, efC=100)+ ef_search=100;触发条件:chunk 超 800 万或 p99 > 150 毫秒即重评。
- 多租户 SaaS(8000 万向量、权限过滤选择率 0.001)→ Qdrant 集群 + filterable HNSW + 租户 partition;评测强制含 0.001 选择率桶(kp-017)。
- 全网图片库(12 亿、延迟预算 20 毫秒、成本敏感)→ Milvus DiskANN 索引 + NVMe 本地盘;内存按 kp-026 账本控在 200 GB 内。
直观类比
决策树像分诊台:先量体温(数据量级)分诊到不同科室(谱系),再问病史(已有设施/过滤/运维)细化方案,最后给你处方并注明"复诊条件"(再评估触发)。跳过分诊直接点名要专家号("我要 Milvus"),就是 kp-023 误区 1 的现场。
常见误区
- "从引擎开始选"——正确顺序是从负载特征开始:先填五问的数字,引擎是推导结果不是前提。
- "决策树走到叶子就结束"——缺"再评估触发条件"的处方是半成品;负载变化后必须回树重走。
- "Q3 过滤问一句'有没有过滤'就够"——必须量化选择率分布与字段基数,"有过滤"与"选择率 0.001 的过滤"是两个物种(kp-017)。
自测题
- 五问中哪一问最常被跳过且后果最重?为什么?
- 为什么 Q1 要用两年后的预估量?
- 写一份合格处方必须包含哪三要素?
答:Q3 过滤复杂度——它决定执行策略与分片设计(kp-014/017),且其后果(影子故障)最隐蔽;数据量级错了通常还知道慢,过滤选错了是"静默的错"。
答:迁移成本(重灌+评测+改应用)以季度计;按当前量选轻方案、爆发后仓促迁库的 TCO 往往高于一步到位;但预估需注明假设,避免为幻想规模过度建设。
答:引擎与部署形态、索引与参数(按调参流程得出)、再评估触发条件(量级/QPS/延迟预算阈值)。
与其他知识点的关系
kp-023 提供决策纪律防误用;kp-028 决定树上所有方案的 embedding 输入端;kp-029/030 是处方落地后的扩容与运维续篇。
延伸阅读
本节不适用:本篇为工程决策框架,无单一经典文献对应;分支依据见各被引 kp 的延伸阅读。