向量搜索中的召回率是什么? 在向量搜索中,召回率衡量近似最近邻 (ANN) 算法检索查询的真实最近匹配项(真实近邻)的效果。 真实近邻是使用精确搜索方法确定的,这些方法保证正确性但计算成本很高。 召回率回答了以下问题:在所有存在的真实匹配项中,ANN 算法实际返回了多少? 例如,如果一个查询有 100 个真实近邻,而 ANN 检索到其中 80 个,则召回率为 80%。 该指标对于评估 ANN 系统中速度和准确性之间的权衡至关重要,其中较高的召回率表明错过的匹配项较少。
如何计算召回率? 召回率的计算方法是 ANN 检索到的真实近邻数与真实近邻总数的比率。 假设您使用一个数据集评估 ANN 算法,其中每个查询都有一组已知的精确前 100 个邻居(真实值)。 如果 ANN 在其前 100 个结果中返回了这些 100 个邻居中的 90 个,则 recall@100 为 90/100 = 0.9(或 90%)。 公式为: Recall@k = (ANN 的前 k 个结果中的真实近邻数) / k
这里,k
是返回的结果数。 例如,如果您将 ANN 的前 10 个结果与真实值前 100 个结果进行比较,则 recall@10 将衡量前 10 个 ANN 结果中有多少在前 100 个真实值中(例如,7/100 = 7% recall@10)。 这种灵活性使开发人员能够根据特定用例定制评估,例如优先考虑较低 k
时的精度或较高 k
时的完整性。
实际考虑因素 在实现召回率计算时,开发人员必须使用精确方法(例如,暴力搜索)预先计算代表性查询集的真实近邻。 对于大型数据集,此步骤非常耗时,但对于可靠的评估是必要的。 例如,测试 FAISS 或 Annoy 等 ANN 库可能需要运行 1,000 个查询,每个查询有 100 个真实近邻,并平均所有查询的召回率。 此外,召回率通常与延迟或内存使用量相权衡:HNSW 或 IVF 等算法可能实现 95% 的 recall@100,但需要更多的索引内存或更长的查询时间。 开发人员必须根据应用程序需求平衡这些因素——例如,推荐系统可能会优先考虑高召回率,而实时应用程序可能会接受较低的召回率以获得更快的结果。