趋近智
一个语义搜索流程通常包括多个阶段:数据摄取、生成有意义的嵌入、使用 ANN 算法建立高效索引以及处理用户查询。一旦这样的系统建成,一个主要问题便会浮现:它是否真正有效?系统返回的结果有多大相关性?仅仅构建系统是不足够的;全面的评估对于理解其表现、比较不同配置以及证明其价值是不可或缺的。与传统关键词搜索相比,评估语义搜索带来了独特挑战,这主要是因为相关性本身与含义和意图相关联,而这些可能更具主观性。
衡量搜索系统有效性通常涉及将系统输出(排序后的结果列表)与针对特定查询的一组已知“真实”相关文档进行比较。虽然完美的真实数据通常难以获得,特别是对于语义查询,但我们可以采用几种为此任务调整过的标准信息检索指标。这些指标主要关注系统生成的排名的质量。
我们来看看一些最常用的、直接适用于语义搜索的、用于评估排序检索系统的指标:
精确度@K: 这个指标回答了这个问题:“在返回的前 K 个文档中,有多少是真正相关的?”它的计算方法是:在前 K 个位置检索到的相关文档数量除以 K。
Precision@K=K前 K 个相关文档数量
精确度@K 易于理解和计算。如果 K=10,并且前 10 个结果中有 7 个是相关的,那么精确度@10 就是 0.7。然而,它不考虑该查询存在的相关文档总数,也不关心前 K 个相关文档的顺序。一个在排名 1-5 返回 5 个相关文档的系统,其精确度@10 与在排名 6-10 返回的系统相同。
召回率@K: 这个指标解决了另一个问题:“在所有存在的相关文档中,系统在前 K 个结果中找到了多少?”它的计算方法是:在前 K 个位置检索到的相关文档数量除以整个数据集中该查询总共的相关文档数量。
Recall@K=相关文档总数前 K 个相关文档数量
召回率@K 有助于了解系统是否能够找到大部分相关信息。然而,与精确度@K 类似,它忽略了前 K 个结果内部的排名。获得高召回率有时可能以牺牲低精确度为代价(在检索相关文档的同时,也检索了许多不相关的文档)。
平均精确度均值 (MAP): MAP 提供了一个单一数值指标,该指标同时考虑了精确度和召回率,并且对相关文档的排名顺序敏感。当您有多个查询需要评估时,它特别有用。要理解 MAP,我们首先需要针对单个查询的平均精确度 (AP):
单个查询的 AP 公式是: AP=相关文档总数∑k=1N(P(k)×rel(k)) 这里,N 是检索到的文档总数,P(k) 是在排名 k 时的精确度,rel(k) 是一个指示函数(如果排名 k 的文档相关,则为 1,否则为 0)。
MAP 只是您的评估集中所有查询的平均精确度分数的均值。更高的 MAP 表明整体排名表现更好,奖励那些在排序列表早期检索到相关文档的系统。
归一化折损累积增益 (NDCG): NDCG 可以说是评估排名质量最复杂且应用最广泛的指标,尤其是在相关性不仅仅是二元(相关/不相关)而是具有不同程度(例如,高度相关、有些相关、不相关)时。它包含两个主要思想:
这些指标非常依赖于相关性判断(真实数据)。获取这些可能具有挑战性:
评估您的语义搜索系统时:
我们来看一个简化场景,比较单个查询上三种系统配置的 NDCG@5,其中相关性是分级的(0=不相关,1=一般,2=好,3=完美)。假设理想排名产生的 IDCG@5 为 6.86。
三种语义搜索系统配置的 NDCG@5 分数比较。配置 B 在此特定查询集上显示出最佳性能。
评估语义搜索相关性不仅仅是学术练习;它是迭代开发过程的重要组成部分。通过使用适当的指标和精心策划的评估集,您可以量化您系统的性能,发现改进的空间,并最终构建能够有效连接用户与他们真正需要的信息的搜索应用程序,这些信息基于含义而非仅仅是关键词。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造