向量数据库

选型决策树:从五个问题到一套方案

进阶工程实践约 25 分钟kp-027

前置知识

一句话定义

向量库选型可以收敛为五问一树:数据量级 → 已有基础设施 → 过滤复杂度 → 混合检索刚需 → 团队运维能力,沿决策树走到底得到的是"方案 + 索引配置 + 重新评估触发条件"的完整 prescription(处方)。

为什么重要

这是全库的"实践汇合点":前面的原理(02 模块)、谱系(kp-018)、误区(kp-023)最终都要落成一个可辩护的选型结论。决策树的价值在于把"资深工程师的直觉"显式化——让新手按同样路径得出同样结论,也让结论可以被复核与挑战。

前置知识

kp-018(谱系)、kp-023(误区——防止决策树被错误输入污染);建议先完成 MVP 路径前 8 篇。

核心概念

原理与机制

决策树全图(自上而下,命中即停):

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)。

图示

见上方决策树;配套"反模式红线"(出现即推翻分支结论):

实例或案例

三份真实形态的处方:

  1. 内部知识库(40 万 chunk、已有 RDS PG、单检索场景)→ pgvector + HNSW(m=16, efC=100)+ ef_search=100;触发条件:chunk 超 800 万或 p99 > 150 毫秒即重评。
  2. 多租户 SaaS(8000 万向量、权限过滤选择率 0.001)→ Qdrant 集群 + filterable HNSW + 租户 partition;评测强制含 0.001 选择率桶(kp-017)。
  3. 全网图片库(12 亿、延迟预算 20 毫秒、成本敏感)→ Milvus DiskANN 索引 + NVMe 本地盘;内存按 kp-026 账本控在 200 GB 内。

直观类比

决策树像分诊台:先量体温(数据量级)分诊到不同科室(谱系),再问病史(已有设施/过滤/运维)细化方案,最后给你处方并注明"复诊条件"(再评估触发)。跳过分诊直接点名要专家号("我要 Milvus"),就是 kp-023 误区 1 的现场。

常见误区

  1. "从引擎开始选"——正确顺序是从负载特征开始:先填五问的数字,引擎是推导结果不是前提。
  2. "决策树走到叶子就结束"——缺"再评估触发条件"的处方是半成品;负载变化后必须回树重走。
  3. "Q3 过滤问一句'有没有过滤'就够"——必须量化选择率分布与字段基数,"有过滤"与"选择率 0.001 的过滤"是两个物种(kp-017)。

自测题

  1. 五问中哪一问最常被跳过且后果最重?为什么?
  2. 答:Q3 过滤复杂度——它决定执行策略与分片设计(kp-014/017),且其后果(影子故障)最隐蔽;数据量级错了通常还知道慢,过滤选错了是"静默的错"。

  3. 为什么 Q1 要用两年后的预估量?
  4. 答:迁移成本(重灌+评测+改应用)以季度计;按当前量选轻方案、爆发后仓促迁库的 TCO 往往高于一步到位;但预估需注明假设,避免为幻想规模过度建设。

  5. 写一份合格处方必须包含哪三要素?
  6. 答:引擎与部署形态、索引与参数(按调参流程得出)、再评估触发条件(量级/QPS/延迟预算阈值)。

与其他知识点的关系

kp-023 提供决策纪律防误用;kp-028 决定树上所有方案的 embedding 输入端;kp-029/030 是处方落地后的扩容与运维续篇。

延伸阅读

本节不适用:本篇为工程决策框架,无单一经典文献对应;分支依据见各被引 kp 的延伸阅读。

相关知识点