这是系列博客文章的第一篇,探讨如何在更好地理解 BEIR 基准测试的背景下,评估您自己的搜索系统。我们将介绍具体的技巧与方法,帮助您在深入理解 BEIR 的背景下改进搜索评估流程。我们还将指出常见的陷阱,这些陷阱会降低评估的可靠性。最后,我们注意到,LLM 为搜索工程师提供了一种强大的新工具,我们将通过示例展示如何利用它们来协助搜索评估。
理解搜索相关性评估中的 BEIR 基准测试
要改进任何系统,您需要能够衡量其表现。在搜索领域,BEIR(或等效 MTEB 排行榜的检索部分)被认为是信息检索社区的“圣杯”,这并不令人意外。它是一个结构非常完善的基准测试,涵盖了不同任务的多样化数据集。更具体地说,它涵盖了以下领域:
- 参数检索 (ArguAna, Touche2020)
- 开放领域问答 (HotpotQA, Natural Questions, FiQA)
- 段落检索(MSMARCO)
- 重复问题检索(Quora,CQADupstack)
- 事实核查(FEVER, Climate-FEVER, Scifact)
- 生物医学信息检索(TREC-COVID、NFCorpus、BioASQ)
- 实体检索 (DBPedia)
- 引文预测 (SCIDOCS)
它提供了一个单一的统计信息 nDCG@10,用于衡量系统在其返回的顶部结果中,为每个任务样例匹配最相关文档的程度。对于人机交互的搜索系统来说,顶部结果的相关性至关重要。然而,评估搜索效果有很多细微差别,而单一的汇总统计数据无法涵盖这些差别。
BEIR 数据集的结构
每个基准测试包含三个组成部分:
- 要检索的语料库或文档
- 查询
- 查询的相关性判断(也称为
qrels)。
相关性判断以零或更高的分数表示。非零分数表示文档与查询有一定的相关性。
| 数据集 | 语料库大小 | #测试集中的查询数量 | #qrels 中正向标注的数量 | #qrels 等于零 | #语料库中的重复项数量 |
|---|---|---|---|---|---|
| Arguana | 8,674 | 1,406 | 1,406 | 0 | 96 |
| Climate-FEVER | 5,416,593 | 1,535 | 4,681 | 0 | 0 |
| DBPedia | 4,635,922 | 400 | 15,286 | 28,229 | 0 |
| FEVER | 5,416,568 | 6,666 | 7,937 | 0 | 0 |
| FIQA-2018 | 57,638 | 648 | 1,706 | 0 | 0 |
| HotpotQA | 5,233,329 | 7,405 | 14,810 | 0 | 0 |
| Natural Questions | 2,681,468 | 3,452 | 4,021 | 0 | 16,781 |
| NFCorpus | 3,633 | 323 | 12,334 | 0 | 80 |
| Quora | 522,931 | 10,000 | 15,675 | 0 | 1,092 |
| SCIDOCS | 25,657 | 1,000 | 4,928 | 25,000 | 2 |
| Scifact | 5,183 | 300 | 339 | 0 | 0 |
| Touche2020 | 382,545 | 49 | 932 | 1,982 | 5,357 |
| TREC-COVID | 171,332 | 50 | 24,763 | 41,663 | 0 |
| MSMARCO | 8,841,823 | 6,980 | 7,437 | 0 | 324 |
| CQADupstack (sum) | 457,199 | 13,145 | 23,703 | 0 | 0 |
表 1:数据集统计信息。这些数字是在数据集的测试部分计算得出的(MSMARCO 的 dev)。
表 1 列出了构成 BEIR 基准的数据集的一些统计数据,如语料库中的文档数量、测试数据集中的查询数量以及 qrels 文件中的正/负(查询、文档)对数量。通过快速查看数据,我们可以立即推断出以下几点:
- 大多数数据集在
qrels文件中不包含任何负面关系,即零分,这会明确地将文档标记为与给定查询无关。 - 每个查询的平均文档关联数(
#qrels/#queries)从ArguAna的 1.0 到 493.5(TREC-COVID)不等,但大多数情况下的值为<5。 - 一些数据集的语料库中存在重复文档,在某些情况下可能导致评估不准确,例如,当一个文档被认为与查询相关但其重复文档却不相关时。例如,在
ArguAna中,我们识别出 96 个重复文档对案例,每对中只有一个文档被标记为与查询相关。通过将初始 qrels 列表“扩展”以包含重复文档,我们观察到nDCG@10分数平均相对提高了约 1%。
ArguAna 中的重复对示例。在 qrels 文件中,只有第一个文档显示为与查询(“test-economy-epiasghbf-pro02a”)相关(作为反方论点)
在 MTEB 排行榜上比较模型时,人们很容易将重点放在平均检索质量上。这虽然是模型整体质量的一个良好代理指标,但并不一定能说明它在您特定场景下的表现。由于结果按数据集报告,因此值得了解不同数据集与您的搜索任务的关联程度,并仅使用最相关的数据集重新评估模型。如果您想深入研究,还可以检查各数据语料库的主题重叠情况。按主题对质量指标进行分层,可以更精细地评估模型的具体优势与劣势。
这里需要特别注意,当文档未在 qrels 文件中标注时,默认情况下它被视为与查询不相关。我们对此领域进行了更深入的探究,并收集了一些证据,以更清晰地阐明以下问题:“评估者面对没有真实标注信息的(查询,文档)对的频率有多高?”。这一点之所以重要,是因为当只有浅层标注可用时(即并非每个相关文档都被标记),一个信息检索系统可能仅仅因为它“选择”呈现了不同的相关(但未标记)文档,而被判定为比另一个系统更差。这是创建高质量评估集时的常见陷阱,尤其是对于大型数据集。为了可行,人工标注通常会关注当前系统返回的顶部结果,因此可能会遗漏其盲区中的相关文档。因此,通常更可取的做法是将更多资源集中在少数查询的更完整标注上,而不是广泛的浅层标注。
利用 BEIR 基准测试进行搜索相关性评估
为了启动分析,我们实施了以下场景(见笔记本):
- 首先,我们将每个数据集的语料库加载到 Elasticsearch 索引中。
- 对于测试集中的每个查询,我们使用 BM25 检索前 100 个文档。
- 我们使用多种 SOTA 重排序模型对检索到的文档进行重新排序。
- 最后,我们报告第 2 步(检索后)和第 3 步(重新排序后)得出的前 10 名文档的 "评判率"。换句话说,我们计算的是
qrels文件中得分排名前 10 的文档的平均百分比。
我们使用的模型重新排序列表如下:
- Cohere 的
rerank-english-v2.0和rerank-english-v3.0 - BGE-base
- mxbai-rerank-xsmall-v1
- MiniLM-L-6-v2
| 检索 | 重排序 | |||||
|---|---|---|---|---|---|---|
| 数据集 | BM25(%) | Cohere Rerank v2 (%) | Cohere Rerank v3 (%) | BGE-base (%) | mxbai-rerank-xsmall-v1 (%) | MiniLM-L-6-v2 (%) |
| Arguana | 7.54 | 4.87 | 7.87 | 4.52 | 4.53 | 6.84 |
| Climate-FEVER | 5.75 | 6.24 | 8.15 | 9.36 | 7.79 | 7.58 |
| DBPedia | 61.18 | 60.78 | 64.15 | 63.9 | 63.5 | 67.62 |
| FEVER | 8.89 | 9.97 | 10.08 | 10.19 | 9.88 | 9.88 |
| FiQa-2018 | 7.02 | 11.02 | 10.77 | 8.43 | 9.1 | 9.44 |
| HotpotQA | 12.59 | 14.5 | 14.76 | 15.1 | 14.02 | 14.42 |
| Natural Questions | 5.94 | 8.84 | 8.71 | 8.37 | 8.14 | 8.34 |
| NFCorpus | 31.67 | 32.9 | 33.91 | 30.63 | 32.77 | 32.45 |
| Quora | 12.2 | 10.46 | 13.04 | 11.26 | 12.58 | 12.78 |
| SCIDOCS | 8.62 | 9.41 | 9.71 | 8.04 | 8.79 | 8.52 |
| Scifact | 9.07 | 9.57 | 9.77 | 9.3 | 9.1 | 9.17 |
| Touche2020 | 38.78 | 30.41 | 32.24 | 33.06 | 37.96 | 33.67 |
| TREC-COVID | 92.4 | 98.4 | 98.2 | 93.8 | 99.6 | 97.4 |
| MSMARCO | 3.97 | 6.00 | 6.03 | 6.07 | 5.47 | 6.11 |
| CQADupstack(平均) | 5.47 | 6.32 | 6.87 | 5.89 | 6.22 | 6.16 |
表 2:在检索/重新排序的前 10 个文档上计算的(数据集、重排序器)对的评判率
从 表 2 可以看出,除了 TREC-COVID(覆盖率>90%)、DBPedia(~65%)、Touche2020 和 nfcorpus(~35%)之外,大多数数据集在检索或重新排序后的标注率介于 5% 到略高于 10% 之间。这并不意味着所有这些未标注文档都是相关的,但其中可能有一个子集——特别是那些排在靠前位置的——可能是正例。
随着通用指令调优语言模型的出现,我们拥有了一种新的强大工具,它有可能自动化判断相关性。这些方法的计算成本通常太高,不适合在线搜索,但我们这里关注的是离线评估。在下文中,我们将使用它们来探究一些 BEIR 数据集可能存在浅层标注问题的证据。
为了进一步验证这一假设,我们决定专注于 MSMARCO 数据集,选择 100 个查询及其前 5 个经重排序(使用 Cohere v2)且当前未被标记为相关的文档。我们遵循了两种不同的评估路径:首先,我们使用精心调优的提示(后续文章中将详述)引导最近发布的 Phi-3-mini-4k 模型来预测文档与查询的相关性(或不相关性)。与此同时,这些案例也进行了人工标注,以评估 LLM 输出与人工判断之间的一致性率。总体而言,我们可以得出以下两个结论:
- LLM 响应与人工标注之间的一致性率接近 80%,作为该方向的起点,这似乎足够好。
- 在 57.6% 的情况下(基于人工判断),返回的文档被判定为实际上与查询相关。换一种说法:对于 100 个查询,我们有 107 个文档被判定为相关,但至少还有 0.576 × 5 × 100 = 288 个额外文档实际上是相关的!
以下是一些从 MSMARCO/dev 数据集中提取的示例,其中包含查询、注释的正例文档(来自 qrels)一个由于标注不全导致的假负例文档:
示例 1:
示例 2:
人工评估此类特定查询,是理解搜索质量的一种普遍有用的技术,它是对 nDCG@10 等定量指标的补充。如果您有一组代表性的查询集,在每次修改搜索时都运行它们,这将为您提供关于性能如何变化的重要定性信息,而这些信息在统计数据中是看不见的。例如,它为您提供了更多关于搜索返回的错误结果的见解:它可以帮助您发现检索结果中的明显错误,相关错误类别,如误解特定领域术语等等。
我们的结果与围绕 MSMARCO 评估的相关研究一致。例如,Arabzadeh 等人 遵循类似的流程,他们雇用众包工人进行偏好判断:除其他发现外,他们表明在许多情况下,重新排序模块返回的文档比 MSMARCO qrels 文件中的文档更受青睐。另一项证据来自 RocketQA 重新排序器的作者,他们报告称,经过人工检查,超过 70% 的重排序文档被判定为相关。
更新 - 2023 年 9 月 9 日:在对数据集进行仔细重新评估后,我们识别出另外 15 个相关文档案例,使其总数从 273 个增加到 288 个。
主要要点和后续步骤
- 对更高质量真实标注的追求永无止境,因为它对于基准测试和模型比较至关重要。如果谨慎使用并配以适当的指令调优,LLM 可以在某些评估领域提供协助
- 更普遍地说,鉴于基准测试永远不会完美,从单纯的分数比较转向捕捉统计显著性差异的更稳健技术可能更可取。Arabzadeh 等人等人的工作提供了一个很好的例子,他们基于研究结果构建了 95% 置信区间,以表明不同运行之间是否存在显著(或不显著)差异。在随附的笔记本中,我们提供了使用自助法实现置信区间的方法。
- 从最终用户的角度来看,在阅读基准测试结果时,考虑任务对齐性是有益的。例如,对于构建 RAG 管道的 AI 工程师来说,如果知道最典型的用例涉及从不同来源汇集多条信息,那么在 HotpotQA 等多跳问答数据集上评估其检索模型的性能,会比在整个 BEIR 基准测试的全局平均分更有意义
在下一篇博客文章中,我们将更深入地探讨如何使用 Phi-3 作为 LLM 评判工具,以及调优它以预测相关性的过程。
常见问题
BEIR基准是什么?
BEIR 是一个结构完善的基准测试,涵盖了不同任务的多样化数据集。它涵盖的领域有:开放领域问答、段落检索、事实核查、生物医学检索等。它为评估搜索相关性提供了一个标准。
什么是 nDCG,它用于什么?
NDCG(标准化折损累积增益)是一种评估搜索引擎排名质量的指标,通过衡量结果排序反映其相关性的程度来评分。




