一句话定义
向量检索的评估三件套:recall@k(找得全不全)、QPS 与 p99 延迟(找得快不快、稳不稳)、内存/成本(付得起付不起)——三者必须在同一张图上联合读,任何单指标结论都是误导。
为什么重要
"快 40%"“召回 95%"这类宣传数字单独看都无意义:快 40% 是在什么召回下?95% 是 top 几、什么数据集?指标体系是调参(kp-009)、选型(kp-023/027)、排错(kp-030)共同的度量衡——没有它,一切优化都在盲飞。
前置知识
kp-004(ANN 与召回的基本定义);统计学常识(分位数)。
核心概念
- recall@k:ANN top-k 与真实 top-k 的重合比例,向量检索的第一指标。
- nDCG / MRR:考虑位置权重的排序质量指标,当"排前更重要"时使用(检索相关性场景)。
- QPS:每秒查询数,吞吐指标;必须在目标延迟约束内测("不限延迟的 QPS"没有意义)。
- p50/p95/p99:延迟分位数。长尾(p99)由 GC、磁盘抖动、合并窗口、大查询造成——线上事故几乎都发生在 p99 而非平均值。
- 权衡曲线:固定其他参数,扫某个参数(如 efSearch),画 recall-延迟曲线;索引的真实画像是曲线不是点。
原理与机制
recall@k 的严格测法:
对每个查询 q:
GT = Flat 精确检索的 top-k (ground truth)
ANN = 被测系统返回的 top-k
recall@k(q) = |GT ∩ ANN| / k
总体 recall@k = mean over 查询集三个测量纪律:
- 同口径:比较两个配置时,除被测参数外全部相同(硬件、并发、预热、数据量)。
- 先预热:冷缓存(页缓存/连接池/JIT)的首批查询会严重拉高延迟,必须丢弃预热样本。
- 并发爬坡:QPS 不是单线程延迟的倒数——从低并发逐步加压,记录每档的 p99,找到 p99 逼近业务预算的拐点,那才是"可承诺 QPS"。
延迟与吞吐的联动:单次查询 2 毫秒 ≠ QPS 500(还有合并、锁、内存带宽竞争);生产承诺必须来自爬坡曲线。
公式或模型
recall@k = |GT_k ∩ result_k| / k
nDCG@k = DCG@k / IDCG@k, DCG@k = Σ_{i=1..k} rel_i / log2(i+1)
可承诺QPS = max{ 并发c : p99(并发c) ≤ 延迟预算 }图示
延迟(ms)
8 ┤ × ← p99(长尾,事故区)
4 ┤ ×
2 ┤ ▲ ▲ = p50
1 ┤ ▲
└──┬────┬────┬────┬───► 并发数
16 32 64 128
拐点后 p99 陡增 → 该并发档就是可承诺QPS的上界实例或案例
两个配置的"数字陷阱":A 配置 p50 = 1.2 毫秒、p99 = 45 毫秒;B 配置 p50 = 2.0 毫秒、p99 = 3.5 毫秒。按平均/中位数 A 更快,按 p99 B 完胜——若业务 SLA 写的是"99% 请求 < 10 毫秒",A 是不可用的。结论形态取决于你读哪个分位数,这就是必须三件套联读的原因。
直观类比
评估像体检:recall 是"视力"、QPS 是"耐力"、p99 是"心电图应激反应"。只报一项("视力 5.2!")不能说明健康;三张单联读,且要和"上一年的自己"比(同口径),而不是和别人的体检单比。
常见误区
- "用 top-1 命中率代表检索质量"——top-1 对排序噪声极敏感且与业务(要 top-10)脱节;指标 k 必须与业务消费的 k 一致。
- "平均值够用"——长尾才是事故源;任何延迟承诺只看 p95/p99。
- "召回率在过滤场景不变"——叠加过滤后局部召回可能骤降(kp-017),必须按选择率分桶分别测 recall。
- "拿最佳单点参数对比两个索引"——每个索引有自己的最优工作点,正确比法是"曲线对曲线"(ann-benchmarks 的方法论)。
自测题
- recall@10 = 0.93,某配置 p99 = 12 毫秒——这两个数字能直接比较优劣吗?
- 为什么"不限延迟的 QPS"没有意义?
- 测压时为什么必须丢弃预热阶段样本?
答:不能。召回与延迟是权衡两端,只有放进"同数据集、同口径"的权衡曲线,按业务约束(先定延迟预算或先定召回下限)选工作点后才有可比性。
答:把延迟放到秒级任何人都能刷出高吞吐;吞吐指标必须绑定延迟约束,工程上以"p99 达标前提下的最大 QPS"为准。
答:冷页缓存、连接建立、JIT 编译等一次性成本集中在首批请求,混入统计会系统性高估延迟、误判配置优劣。
与其他知识点的关系
kp-025 把本篇指标装配成完整评测工作流;kp-009 的调参每一步都在消费这里的测量纪律;kp-030 的排错依赖 p99 与分桶召回的监控。
延伸阅读
Aumüller, Bernhardsson, Faithfull, "ANN-Benchmarks"(SISAP 2017)——"以召回-延迟曲线评价索引"的标准化框架,本篇方法论的行业出处。