选型与基准评测

本节目标

学完本节,你应能把“选哪个向量库”改写成一组可验证的问题,并用自己的数据完成小型 bake-off(候选方案实测),而不是依据厂商排行榜或流行度拍板。最终产出应是:需求清单、测试协议、结果表和一份有退出条件的架构决策记录(Architecture Decision Record,ADR)。

先判断是否真的需要向量数据库

“需要语义搜索”不等于“必须立即部署专用向量数据库”。先回答:

  1. 有多少可检索 point,未来 6~12 个月如何增长?
  2. 是否需要 tenant、ACL、时间、状态或复杂业务条件过滤?
  3. 写入、更新和删除多频繁,写后多久必须可搜?
  4. 允许 exact 线性扫描吗,还是必须用 ANN 换取延迟和吞吐?
  5. 团队已有 PostgreSQL 等数据库吗,能否复用其事务、备份和监控?
  6. 数据是否受地域、合规或私有部署约束?

只有几万条静态向量、单用户且可接受秒级查询时,一个进程内 exact baseline 可能已经够用;若需要百万级增长、低尾延迟、频繁更新、严格过滤、复制和灾备,就要系统评估数据库扩展、专用数据库或托管服务。

硬约束清单

选型前把以下约束写成数字或明确语义;“快”“规模大”“高可用”不足以验收。

维度要记录的问题示例形式
数据point 数、增长率、维度、dtype、payload 大小2,000,000 × 768 float32,每日增量 1%
查询QPS、并发、top-k、混合检索、批量查询稳态 30 QPS,峰值 100 QPS
过滤字段、组合方式、选择率、ACL 群组规模50% / 5% / 0.1% 三档选择率
写入upsert、update、delete、批量大小、可搜索延迟p95 写后 30 秒内可搜
质量ANN recall 与业务 relevance 下限以 exact top-k 和人工 gold 分别评估
SLOp50/p95/p99、错误率、可用性不只报告平均延迟
故障RPO、RTO、区域/节点故障范围允许丢 5 分钟,2 小时内恢复
安全tenant、ACL、加密、审计、数据驻留越权查询必须 fail-closed
运维部署、升级、监控、备份、值班能力谁在周末处理索引/复制告警
成本计算、存储、副本、快照、网络和人力按月及按百万次查询估算

这些数字只是模板,不是推荐默认值。它们必须来自你的产品流量、法规和预算。

四类候选方案的责任边界

1. Exact 扫描或 ANN library

Faiss 这类 library 提供向量索引与搜索原语,适合离线实验、单机服务或作为 exact/ANN 基线。它不自动提供业务 API、鉴权、tenant 隔离、事务、备份、复制和在线 schema 演进;这些责任仍在应用团队。

2. 现有数据库的向量扩展

pgvector 将向量类型和距离查询放进 PostgreSQL,便于复用 SQL、关系字段、事务和现有运维体系。它并不免除基准测试:ANN 索引、过滤选择率、索引构建、写放大、删除膨胀、vacuum 和升级仍要用实际负载验证。

3. 自托管专用向量数据库

专用系统通常把 collection、payload filter、shard、replica、snapshot 等能力组合起来,适合检索成为独立基础设施的场景。代价是多一个需要容量规划、升级、监控、恢复和安全加固的分布式系统。以 Qdrant 文档 为例核验概念时,要把当前产品行为与通用数据库原理分开记录。

4. 托管服务

托管服务可能减少节点、补丁和部分备份工作,但不会替你定义 embedding space、数据质量、ACL、评测、成本上限、供应商退出路线或事故响应。还要验证数据驻留、导入导出、备份可见性、网络费用和限额。

建立可复现的 bake-off

第一步:冻结测试资产

  • 从生产分布抽取代表性的向量、payload、租户与删除状态,并脱敏;
  • 固定 query 集、人工/行为 gold relevance 和权限身份;
  • 为每个 query 记录过滤条件与选择率;
  • 保留高频、长尾、无答案、跨语言、近重复和权限边界样本;
  • 用 exact 全量搜索生成 ANN ground truth,但不要把 exact 邻居误当成人工相关性真值。

数据、查询、gold、生成脚本和 checksum 要版本化。候选系统必须使用同一份输入。

第二步:锁定实验条件

记录硬件/实例、CPU/GPU、内存、磁盘、区域、客户端和服务端版本、索引类型与参数、复制因子、shard 数、批量大小、并发、预热方式和测试时长。分别测冷启动、预热后稳态和长时间压力,不能把不同硬件或不同缓存状态的结果并排当作公平比较。

第三步:同时测质量与系统指标

类别至少报告为什么
ANN 质量Recall@k 相对 exact top-k判断近似索引漏掉了多少 exact 邻居
业务质量Recall@k、MRR、nDCG 或任务成功率exact 邻居本身也可能不相关
延迟p50、p95、p99,按查询类型/选择率分层平均数会掩盖尾部拥塞
吞吐与稳定性QPS、并发、错误/超时率防止只优化单请求延迟
资源内存、磁盘、CPU/GPU、网络质量提升可能来自更高资源消耗
生命周期build、load、upsert、delete、写后可搜延迟在线数据不是只读快照
运维扩容、重建、备份、恢复和故障切换时间正常查询只是系统生命周期的一部分

对每个冻结的数据快照、可信身份与 filter,令 ,则 ANN Recall@k = |ANN top-K ∩ exact top-K| / K。K=0 记为 empty_eligible/不适用,不能把安全空结果记成 0;若 ANN 少返回本可得到的 个结果,缺口仍是质量或可用性问题。它只衡量近似算法对 exact 排名的保持程度;业务 gold 也必须限定为该主体、时间和策略 revision 下本应可访问的项,再由 [[Knowledge/AI Agent Engineer/docs-CN/评测体系/00-目录|评测体系]]中的 gold 和线上指标另行判断。

第四步:把过滤作为一等场景

同一索引在“无过滤”“保留一半候选”“只保留千分之一候选”时可能表现完全不同。对每档选择率测试:

  • 过滤发生在候选生成前、生成中还是 top-k 之后;
  • 是否能返回足量授权结果;
  • p99 和 ANN recall 如何变化;
  • tenant/ACL 边界是否始终 fail-closed;
  • payload index 的存储和写入成本。

只测无过滤随机向量,不能证明 RAG 生产查询可用。

第五步:测更新、故障与恢复

混合运行查询、upsert、delete 和索引维护;制造客户端超时重试、进程重启、节点不可用和磁盘压力。按 [[Knowledge/AI Agent Engineer/docs-CN/向量数据库/06-备份恢复与迁移|备份、恢复与迁移]]在隔离环境恢复,并核对 space contract、point/tombstone 数、ACL 与 gold queries。若候选方案无法满足 RPO/RTO,应在决策中直接记录,而不是留给上线后补救。

成本不能只看单价

总成本至少包括:

  • 向量、payload、索引、WAL/日志、replica 和快照存储;
  • 持续服务、批处理重建、备份恢复和跨区域网络;
  • 监控、升级、容量规划、安全审计与值班人力;
  • 数据迁移、双写/双读和退出供应商的工程成本。

用相同可靠性与数据保留条件比较,不要拿“单副本无备份”的自托管成本与“多副本含备份”的托管价格直接比较。

决策矩阵与 ADR

先设“必须满足”的淘汰门槛,再对剩余候选评分。权重应来自业务,不应为了让预选产品胜出而倒推。

条件类型候选 A候选 B证据位置
ACL 越权为 0必须通过/失败通过/失败安全测试报告
p99 延迟达标必须数值数值冷/热分层结果
恢复满足 RTO必须时长时长恢复演练记录
业务 nDCG加权数值数值gold-query 评测
三年总成本加权数值数值成本模型

ADR 至少写清:问题与约束、候选、实验版本、选择、未选择理由、已知风险、迁移/退出条件、复评日期与负责人。例如“达到多少 point、p99 或过滤失败阈值时复评”比“以后规模大了再换”可执行。

常见错误

  • 用随机向量和单线程平均延迟代表真实业务;
  • 只报告 QPS,不报告 ANN/业务质量;
  • 调到不同 recall 的索引参数后直接比较延迟;
  • 忽略过滤选择率、更新、删除和写后可搜延迟;
  • 把厂商公开 benchmark 当作自身工作负载结论;
  • 未做恢复演练就把“有 snapshot”写成“已验证灾备”;
  • 把 prototype library 包装成数据库,却没有鉴权、并发、备份与审计。

练习

为“200 万 chunk、每日更新 2%、部门 ACL、峰值 80 QPS、数据必须留在自有网络”的内部 RAG 写一页选型协议:

  1. 明确至少 5 个必须门槛与 5 个加权条件;
  2. 比较 exact/library、pgvector、专用向量库三类候选;
  3. 设计 50 个权限边界 query 和三档过滤选择率;
  4. 说明 exact ground truth 与业务 gold 的区别;
  5. 给出故障注入、隔离恢复和退出条件;
  6. 不填写未经实测的性能数字。

掌握检查

  • 我能先判断“是否需要新系统”,再比较产品。
  • 所有门槛都有可执行测试和通过条件。
  • 候选使用同一数据、硬件、版本、缓存和并发条件。
  • 我同时报告 ANN recall、业务质量、尾延迟、吞吐与资源。
  • 我覆盖过滤、租户、写入、删除、故障和恢复。
  • ADR 写明证据、风险、退出条件和复评日期。

完成后进入 [[Knowledge/AI Agent Engineer/docs-CN/向量数据库/08-项目-玩具向量存储|项目:玩具向量存储]]。

参考资料

来源获取日期:2026-07-22。产品功能、默认参数、托管条款与性能均应按锁定版本和自身环境复测。