1. 问题与动机
向量搜索(Vector Search)已成为现代信息检索系统的核心组件,但其质量评估长期依赖传统 recall 指标——即 ANN 算法检索到的 top-k 结果与精确最近邻搜索结果的重合度。本文指出这一指标存在根本性缺陷:传统 recall 会惩罚 ANN 算法未能检索到数学距离最近但语义无关的向量。在实际 embedding 数据集中,查询的精确最近邻中经常包含大量语义无关的结果("数学噪声"),导致传统 recall 低估了检索质量。例如,在 MSMARCO 数据集上,40% 的查询在 top-100 精确近邻中仅有 0-15 个语义相关结果,这意味着即使 ANN 算法完美检索了所有语义相关的结果,传统 recall 仍可能很低。这一问题源于 embedding 模型的局限性——语义相似度和向量距离并非完全对齐——但传统 recall 将模型的缺陷错误归因于 ANN 算法。随着 embedding 检索在搜索、推荐等系统中的广泛应用,开发者迫切需要能真正反映检索语义质量的评估指标,而非仅衡量数学精度。
2. 方法详解
Semantic Recall 定义:给定查询 q 的 top-k 精确最近邻集合 Gk,通过 LLM 或人工标注将 Gk 中的语义相关子集标记为 SN(Semantic Neighbors)。ANN 算法检索到的结果集为 Rk。Semantic Recall 定义为:srecall = |Rk ∩ SN| / |SN|,即语义相关近邻中被成功检索的比例。当所有近邻都语义相关时(|SN| = |Gk|),Semantic Recall 退化为传统 recall。当无语义相关结果时(|SN| = 0),该指标未定义。
语义相关性判定:采用两阶段方法:(1) 通过精确搜索获取 top-k 真实近邻;(2) 对每个近邻使用 LLM(如 Gemini 2.5)判断与查询的语义相关性。相比构建全量标注数据集(需判断数百万个 query-document 对),此方法只需验证每个查询的少量近邻(如 top-100),效率显著更高。交叉验证显示 Gemini 2.5 与 Claude Haiku 4.5 的判断一致率达 91.1%(Cohen's κ = 0.82),其中「相关」类 89.5% 一致,「不相关」类 93.3% 一致。
Tolerant Recall:当无法直接获取语义标注时的实用近似指标。核心思想是:如果 ANN 返回的结果 ti 的分数与精确近邻 gi 的分数在容忍阈值 x% 之内(ti_score ≥ gi_score × (1-x%)),则认为 ti 是 gi 的合理替代。Tolerant Recall 找到最大匹配子集 T,计算 trecall@k = |T| / |Gk|。该方法特别适合处理量化(如 8-bit scalar quantization)引入的微小分数扰动,以及频繁更新的数据集中重新计算精确近邻不可行的场景。
实验配置:使用 Google ScaNN 作为 ANN 算法,Gemini Embedding 模型生成 3072 维 embedding。通过 Google Vizier 进行超参数优化。数据集包括 MSMARCO(883 万文档、250 查询)和 MIRACL-Thai(54.2 万文档、100 泰语查询)。
3. 核心技术贡献
贡献一:揭示传统 recall 的系统性偏差。通过对 MSMARCO 和 MIRACL 的分析发现,embedding 数据集中存在显著的双峰分布:大量查询的精确近邻中语义相关结果极少。在 MSMARCO 上,语义近邻和非语义近邻的平均分数差仅 0.04(0.77 vs 0.73),说明两类结果在向量空间中高度混杂。这一发现从根本上质疑了以传统 recall 作为向量搜索优化目标的合理性。
贡献二:提出可落地的替代指标 Tolerant Recall。不需要语义标注即可使用,通过分数容忍窗口近似 Semantic Recall,在 MSMARCO 上与 Semantic Recall 的相关性强(传统 recall 0.863 vs Semantic 0.932 vs Tolerant 0.920)。对低语义近邻查询的改进最为显著(传统 0.762 vs Semantic 0.903 vs Tolerant 0.859)。
贡献三:证明优化 Semantic/Tolerant Recall 可降低检索成本。在 MSMARCO 上,以 Semantic Recall 替代传统 recall 作为调优目标,可在保持相同语义检索质量的情况下降低 14% 的检索成本(bytes read)。在 BigANN(10亿向量)上成本降低约 25%,MSMARCO 上高达 35%。
4. 实验结果分析
主实验(MSMARCO, ScaNN + 8-bit 量化, top-100):
| 查询类别 | 传统 Recall | Semantic Recall | Tolerant Recall |
|---|---|---|---|
| 全部 250 查询 | 0.863 ± 0.177 | 0.932 ± 0.144 | 0.920 ± 0.125 |
| <20 语义近邻 (102) | 0.762 ± 0.204 | 0.903 ± 0.183 | 0.859 ± 0.152 |
| 20-80 语义近邻 (91) | 0.903 ± 0.133 | 0.937 ± 0.124 | 0.941 ± 0.096 |
| ≥80 语义近邻 (54) | 0.976 ± 0.061 | 0.978 ± 0.062 | 0.991 ± 0.027 |
关键发现:传统 recall 与 Semantic Recall 差距在低语义近邻查询上最大(0.762 vs 0.903),即传统 recall 最具误导性的正好是最需要关注的查询群体。当语义近邻充足时(≥80),三种指标趋于一致,证明 Semantic Recall 在极端情况下退化为传统 recall。
MIRACL 泰语数据集:传统 recall 0.75 vs Semantic Recall 0.85 vs Tolerant Recall 0.83。60% 的泰语查询在 top-20 中仅有 ≤4 个语义近邻,跨语言验证了该指标的通用性。
成本优化实验:以传统 recall 98% 为基线(对应 Semantic Recall 98.93%),重新以 Semantic Recall 98.93% 为目标调优 ScaNN 超参数,成本降低 14%。在更大规模的 BigANN(10亿向量、128维)上成本降低约 25%。这说明传统 recall 驱动的调优在优化检索与噪声的区分能力上浪费了大量计算。
5. 局限与未来方向
作者明确指出以下局限:(1) Semantic Recall 需要访问原始对象(文本、图像等)以进行语义判断,纯向量数据集无法使用;(2) LLM 判断依赖模型的知识范围,领域特定数据集(如医疗、法律)可能需要人工验证;(3) 采用二值相关性判断(相关/不相关),无法捕获模糊案例的不确定性,分级相关性判断是改进方向;(4) 当查询无任何语义相关的精确近邻时(|SN| = 0),Semantic Recall 未定义;(5) 判断错误不可避免,且当 LLM 评判者与 embedding 模型来自同一系统(如都基于 Gemini)时可能存在相关偏差。
6. 工业实践意义
直接可用:Semantic Recall 和 Tolerant Recall 可立即集成到现有的 ANN 索引评估管道中。对于 UGC 搜索场景,传统 recall 评估很可能系统性高估了检索质量退化的程度(因为 UGC 短文本的 embedding 质量参差不齐,语义近邻比例可能更低)。
成本节约:在 MSMARCO 上 14% 的成本降低意味着,对于大规模搜索系统,切换调优目标可在不损失语义质量的前提下显著降低 ANN 索引的计算开销(尤其是 bytes read / 内积计算量)。BigANN 上 25% 的成本降低更具工业说服力。
评估改进建议:搜索系统团队应审查现有 recall 评估是否被低语义近邻查询群体主导。建议在 embedding 评估流程中加入语义近邻分布分析(如本文的双峰分布图),识别 recall 指标最不可靠的查询群体。Tolerant Recall 适合在频繁更新索引时作为快速近似指标。
部署注意事项:需要一次性的 LLM 标注成本来建立语义相关性标注集(论文使用 Gemini 2.5),但标注范围仅限于 top-k 精确近邻(论文用 top-100),远小于全量标注。生产系统中可结合用户点击数据作为语义相关性的自然信号来替代 LLM 标注。