Elasticsearch:评估搜索相关性 - 第 1 部分

作者:来自 Elastic Thanos Papaoikonomou, Thomas Veasey

这是一系列博客文章中的第一篇,讨论如何在更好地理解 BEIR 基准的背景下考虑评估你自己的搜索系统。我们将介绍具体的技巧和技术,以便在更好地理解 BEIR 的背景下改进你的搜索评估流程。我们还将介绍导致评估可靠性降低的常见陷阱。最后,我们注意到 LLM 为搜索工程师提供了一个强大的新工具,我们将通过示例展示如何使用它们来帮助评估搜索。

介绍

要改进任何系统,你需要能够衡量其运行情况。在搜索环境中,BEIR(Benchmarking-InformationRetrieval - 或相当于 MTEB 排行榜的检索部分)被认为是信息检索社区的 “holy grail - 圣杯”,这一点并不奇怪。这是一个结构良好的基准,包含不同任务的各种数据集。更具体地说,涵盖以下领域:

  • 论证检索(ArguAna、Touche2020)
  • 开放域问答(HotpotQA、Natural Questions、FiQA)
  • 段落检索(MSMARCO)
  • 重复问题检索(Quora、CQADupstack)
  • 事实核查(FEVER、Climate-FEVER、Scifact)
  • 生物医学信息检索(TREC-COVID、NFCorpus、BioASQ)
  • 实体检索(DBPedia)
  • 引文预测(SCIDOCS)

它提供了一个单一统计数据 nDCG@10,该统计数据与系统在返回的顶级结果中与每个任务示例最相关的文档的匹配程度有关。对于搜索系统来说,人类与顶级结果(top results)的相关性互动至关重要。然而,评估搜索有许多细微差别,而单一的汇总统计数据会忽略这些细微差别。

BEIR 数据集的结构

每个基准都有三个工件:

  • 要检索的语料库或文档
  • 查询
  • 查询的相关性判断(又名 qrels)。

相关性判断以零或更大的分数提供。非零分数表示文档与查询有某种关联。

表 1:数据集统计数据。这些数字是根据数据集的测试部分(MSMARCO 的开发)计算得出的。
DatasetCorpus size#Queries in the test set#qrels positively labeled#qrels equal to zero#duplicates in the corpus
Arguana8,6741,4061,406096
Climate-FEVER5,416,5931,5354,68100
DBPedia4,635,92240015,28628,2290
FEVER5,416,5686,6667,93700
FiQA-201857,6386481,70600
HotpotQA5,233,3297,40514,81000
Natural Questions2,681,4683,4524,021016,781
NFCorpus3,63332312,334080
Quora522,93110,00015,67501,092
SCIDOCS25,6571,0004,92825,0002
Scifact5,18330033900
Touche2020382,545499321,9825,357
TREC-COVID171,3325024,76341,6630
MSMARCO8,841,8236,9807,4370324
CQADupstack (sum)457,19913,145

表 1 列出了构成 BEIR 基准的数据集的一些统计数据,例如语料库中的文档数量、测试数据集中的查询数量以及 qrels 文件中的正/负(查询、文档)对数量。快速浏览数据后,我们可以立即推断出以下内容:

  • 大多数数据集在 qrels 文件中不包含任何负面关系,即零分数,这明确表示文档与给定查询无关。
  • 每个查询的平均文档关系数(#qrels/#queries)从 ArguAna 的 1.0 到 TREC-COVID 的 493.5 不等,但大多数情况下的值小于 5。
  • 一些数据集的语料库中存在重复文档,在某些情况下可能会导致错误的评估,即当文档被认为与查询相关但其重复项不相关时。例如,在 ArguAna 中,我们已识别出 96 个重复文档对案例,其中每个文档对只有一个文档被标记为与查询相关。通过 “expanding - 扩展” 初始 qrels 列表以包括重复项,我们观察到 nDCG@10 得分平均相对增加约 1%。
{
  "_id": "test-economy-epiasghbf-pro02b",
  "title": "economic policy international africa society gender house believes feminisation",
  "text": "Again employment needs to be contextualised with …",
  "metadata": {}
}
{
  "_id": "test-society-epiasghbf-pro02b",
  "title": "economic policy international africa society gender house believes feminisation",
  "text": "Again employment needs to be contextualised with …",
  "metadata": {}
}

ArguAna 中重复对的示例。在 qrels 文件中,只有第一个似乎与查询(“test-economy-epiasghbf-pro02a”)相关(作为反驳)

在 MTEB 排行榜上比较模型时,人们很容易关注平均检索质量。这是模型整体质量的一个很好的代表,但它不一定能告诉你模型的表现如何。由于结果是按数据集报告的,因此有必要了解不同数据集与搜索任务的密切关系,并仅使用最相关的数据集对模型进行重新评分。如果你想深入挖掘,你还可以检查与各种数据集语料库的主题重叠。按主题对质量指标进行分层可以更细致地评估它们的具体优势和劣势。

这里需要注意的一点是,如果文档未在 qrels 文件中标记,则默认情况下它被视为与查询无关。我们深入研究这个领域,并收集一些证据来进一步阐明以下问题:“How often is an evaluator presented with (query, document) pairs for which there is no ground truth information? - 评估者多久会遇到一次没有基本事实信息的(查询、文档)对?”。这很重要的原因是,当只有浅层标记可用时(因此并非每个相关文档都标记为浅层标记),一个信息检索系统可能会被判定为比另一个更差,因为它 “选择” 显示不同的相关(但未标记)文档。这是创建高质量评估集时常见的问题,尤其是对于大型数据集。为了切实可行,手动标记通常侧重于当前系统返回的最佳结果,因此可能会错过盲点中的相关文档。因此,通常最好将更多资源集中在更少查询的更完整标记上,而不是广泛的浅层标记。

为了开始我们的分析,我们实施以下场景(参见 notebook):

  • 首先,我们将每个数据集的语料库加载到 Elasticsearch 索引中。
  • 对于测试集中的每个查询,我们使用 BM25 检索前 100 个文档。
  • 我们使用各种 SOTA 重新排序模型对检索到的文档进行重新排序。
  • 最后,我们报告来自步骤 2(检索后)和步骤 3(重新排序后)的前 10 个文档的 “判断率”。换句话说,我们计算 qrels 文件中具有分数的前 10 个文档的平均百分比。

我们使用的重新排序模型列表如下:

  • Cohere's rerank-english-v2.0 and rerank-english-v3.0
  • BGE-base
  • mxbai-rerank-xsmall-v1
  • MiniLM-L-6-v2
表 2:根据检索/重新排序的前 10 个文档计算的每对(数据集,重新排序器)的判断率
RetrievalReranking
DatasetBM25 (%)Cohere Rerank v2 (%)Cohere Rerank v3 (%)BGE-base (%)mxbai-rerank-xsmall-v1 (%)MiniLM-L-6-v2 (%)
Arguana7.544.877.874.524.536.84
Climate-FEVER5.756.248.159.367.797.58
DBPedia61.1860.7864.1563.963.567.62
FEVER8.899.9710.0810.199.889.88
FiQa-20187.0211.0210.778.439.19.44
HotpotQA12.5914.514.7615.114.0214.42
Natural Questions5.948.848.718.378.148.34
NFCorpus31.6732.933.9130.6332.7732.45
Quora12.210.4613.0411.2612.5812.78
SCIDOCS8.629.419.718.048.798.52
Scifact9.079.579.779.39.19.17
Touche202038.7830.4132.2433.0637.9633.67
TREC-COVID92.498.498.293.899.697.4
MSMARCO3.976.006.036.075.476.11
CQADupstack (avg.)5.47

从表 2 中,除了 TREC-COVID(覆盖率 > 90%)、DBPedia(~65%)、Touche2020 和 nfcorpus(~35%)之外,我们发现大多数数据集在检索或重新排序后的标记率在 5% 到 10% 多一点之间。这并不意味着所有这些未标记的文档都是相关的,但其中可能有一个子集(尤其是那些位于顶部位置的文档)可能是正面的。

随着通用指令调整语言模型的出现,我们有了一个强大的新工具,可以自动判断相关性。这些方法通常计算成本太高,无法在线用于搜索,但在这里我们关注的是离线评估。在下文中,我们将使用它们来探索一些 BEIR 数据集存在浅层标记的证据。

为了进一步研究这一假设,我们决定专注于 MSMARCO,并选择 100 个查询的子集以及当前未标记为相关的前 5 个重新排序的文档(使用 Cohere v2)。我们遵循了两种不同的评估路径:首先,我们使用精心调整的提示(稍后将详细介绍)来启动最近发布的 Phi-3-mini-4k 模型,以预测文档与查询的相关性(或不相关性)。同时,这些案例也被手动标记,以便评估 LLM 输出和人类判断之间的一致率。总体而言,我们可以得出以下两个结论:

  • LLM 响应和人类判断之间的一致率略高于 80%,这似乎足以作为该方向的起点。
  • 在 54.5% 的案例中(基于人类判断),返回的文档被发现与查询实际上相关。换一种说法:对于 100 个查询,我们有 107 个文档被判定为相关,但至少有 0.545 x 5 x 100 = 273 个额外的文档实际上是相关的!

以下是从 MSMARCO/dev 数据集中提取的一些示例,其中包含查询、带注释的真(positive)文档(来自 qrels)和由于标记不完整而导致的假(negative)文档:

示例 1:

{
  "query":
    {
        "_id": 155234,
        "text": "do bigger tires affect gas mileage"
    },
  "positive_doc":
    {
        "_id": 502713,
        "text": "Tire Width versus Gas Mileage. Tire width is one of the only tire size factors that can influence gas mileage in a positive way. For example, a narrow tire will have less wind resistance, rolling resistance, and weight; thus increasing gas mileage.",
    },
    "negative_doc":
    {
        "_id": 7073658,
        "text": "Tire Size and Width Influences Gas Mileage. There are two things to consider when thinking about tires and their effect on gas mileage; one is wind resistance, and the other is rolling resistance. When a car is driving at higher speeds, it experiences higher wind resistance; this means lower fuel economy."
    }
}

示例 2:

{
  "query":
    {
        "_id": 300674,
        "text": "how many years did william bradford serve as governor of plymouth colony?"
    },
  "positive_doc":
    {
        "_id": 7067032,
        "text": "http://en.wikipedia.org/wiki/William_Bradford_(Plymouth_Colony_governor) William Bradford (c.1590 \u00e2\u0080\u0093 1657) was an English Separatist leader in Leiden, Holland and in Plymouth Colony was a signatory to the Mayflower Compact. He served as Plymouth Colony Governor five times covering about thirty years between 1621 and 1657."
    },
    "negative_doc":
    {
        "_id": 2495763,
        "text": "William Bradford was the governor of Plymouth Colony for 30 years. The colony was founded by people called Puritans. They were some of the first people from England to settle in what is now the United States. Bradford helped make Plymouth the first lasting colony in New England."
    }
}

手动评估此类特定查询是一种普遍有用的技术,可用于了解搜索质量,可补充 nDCG@10 等定量指标。如果你有一组代表性查询,并且在更改搜索时始终运行这些查询,那么它将为你提供有关性能如何变化的重要定性信息,而这些信息在统计数据中是不可见的。例如,它可以让你更深入地了解搜索返回的错误结果:它可以帮助你发现检索结果中明显的错误、相关错误类别(例如误解特定领域的术语)等等。

我们的结果与 MSMARCO 评估的相关研究一致。例如,Arabzadeh 等人遵循类似的程序,他们雇用众包工作人员进行偏好判断:除其他事项外,他们表明,在许多情况下,与 MSMARCO qrels 文件中的文档相比,重新排名模块返回的文档更受欢迎。另一个证据来自 RocketQA 重新排名器的作者,他们报告说,经过手动检查,发现 70% 以上的重新排名文档是相关的。

主要收获和后续步骤

  • 对更好的基本事实的追求永无止境,因为它对于基准测试和模型比较至关重要。如果谨慎使用并按照适当的说明进行调整,LLMs 可以在一些评估领域提供帮助
  • 更一般地说,鉴于基准测试永远不会完美,最好从纯分数比较转向更强大的技术来捕捉统计上显着的差异。Arabzadeh 等人的工作提供了一个很好的例子,他们根据他们的发现建立了 95% 的置信区间,表明各个运行之间存在显着(或不显着)差异。在随附的 notebook 中,我们使用引导程序提供了置信区间的实现。
  • 从最终用户的角度来看,在阅读基准测试结果时考虑任务对齐很有用。例如,对于构建 RAG 管道并知道最典型的用例涉及从不同来源收集多条信息的 AI 工程师来说,评估其检索模型在 multi-hop QA 数据集(如 HotpotQA)上的性能比评估整个 BEIR 基准的全局平均值更有意义

在下一篇博文中,我们将深入探讨使用 Phi-3 作为 LLM 评判员以及对其进行调整以预测相关性的过程。

准备好自己尝试了吗?开始免费试用。

希望将 RAG 构建到你的应用程序中?想要使用矢量数据库尝试不同的 LLM?

在 Github 上查看我们针对 LangChain、Cohere 等的示例笔记本,并立即加入 Elasticsearch Relevance Engine 培训。

原文:Elasticsearch search relevance: Evaluating using the BEIR benchmark — Search Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/843171.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

17_高级进程间通信 UNIX域套接字1

非命名的UNIX域套接字 第1个参数domain,表示协议族,只能为AF_LOCAL或者AF_UNIX; 第2个参数type,表示类型,只能为0。 第3个参数protocol,表示协议,可以是SOCK_STREAM或者SOCK_DGRAM。用SOCK_STR…

视觉巡线小车——STM32+OpenMV(三)

目录 前言 一、OpenMV代码 二、STM32端接收数据 1.配置串口 2.接收数据并解析 总结 前言 通过视觉巡线小车——STM32OpenMV(二),已基本实现了减速电机的速度闭环控制。要使小车能够自主巡线,除了能够精准的控制速度之外&#xff0…

【BUG】已解决:raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)

已解决:raise KeyError(key) from err KeyError: (‘name‘, ‘age‘) 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识&#xf…

第十课:telnet(远程登入)

如何远程管理网络设备? 只要保证PC和路由器的ip是互通的,那么PC就可以远程管理路由器(用telnet技术管理)。 我们搭建一个下面这样的简单的拓扑图进行介绍 首先我们点击云,把云打开,点击增加 我们绑定vmn…

idea如何让包结构分层

文章目录 前言1.选中前项目包结构2.取消后项目包结构3.情况二 前言 在大型项目中,代码的分层管理至关重要。IDEA编辑器提供了强大的package分层结构功能,帮助开发者更好地组织和管理代码。通过合理配置,我们可以清晰地看到各个package之间的…

【BUG】已解决:java.lang.reflect.InvocationTargetException

已解决:java.lang.reflect.InvocationTargetException 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发…

Mysql-索引结构

一.什么是索引? 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引 二.无索引的情况 找到…

【效率提升】程序员常用Shell脚本

文章目录 常用Shell脚本一. 定期更新分区数据二、获取系统资源的使用情况 常用Shell脚本 一. 定期更新分区数据 在某些场景下,我们需要对N年前某一分区的数据进行删除,并添加今年该对应分区的数据,实现数据的流动式存储。 #!/bin/bash dt$…

NFT革命:数字资产的确权、营销与元宇宙的未来

目录 1、NFT:数字社会的数据确权制度 2、基于低成本及永久产权的文化发现 3、PFP:从“小图片”到“身份表达”,再到社区筛选 4、透明表达:NFT 在数字化营销中的商业价值 5、可编程性:赋予 NFT 无限可能的应用 5.…

微信被好友屏蔽朋友圈/拉黑/删除?教你几招悄悄验证

微信这一国民级的社交软件,基本上渗入了大家日常生活的方方面面,沟通、支付、购物、娱乐都可以在上面一站式解决。微信功能虽然很全面,但某些功能细节设计也会让人感到困惑,比如我们被朋友拉黑或者删除,微信是不会通知…

C程序优化与指针传址

最近在写程序时遇到了一些问题,记录一下: 开始程序使用全局变量,程序如下:程序的缺点是全局变量的泛滥。 笔者觉得有些不妥,于是将它修改成这样: 使用结构体进行封装,避免了全局变量&#xff0…

Gitee使用教程2-克隆仓库(下载项目)并推送更新项目

一、下载 Gitee 仓库 1、点击克隆-复制代码 2、打开Git Bash 并输入复制的代码 下载好后,找不到文件在哪的可以输入 pwd 找到仓库路径 二、推送更新 Gitee 项目 1、打开 Git Bash 用 cd 命令进入你的仓库(我的仓库名为book) 2、添加文件到 …

转移C盘中的conda环境(包括.condarc文件修改,environment.txt文件修改,conda报错)

conda环境一般是默认安装到C盘的,若建立多个虚拟环境,时间长了,容易让本不富裕的C盘更加雪上加霜,下面给出将conda环境从C盘转移到D盘的方法。 目录 电脑软硬件转移方法查看当前conda目录转移操作第一步:.condarc文件修…

C语言迷宫

目录 开头程序程序的流程图程序输入与输出的效果结尾 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我要来看我用C语言编译出来的迷宫游戏。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <Windows.h> void printmaze(char s…

鸿蒙Navigation路由能力汇总

基本使用步骤&#xff1a; 1、新增配置文件router_map&#xff1a; 2、在moudle.json5中添加刚才新增的router_map配置&#xff1a; 3、使用方法&#xff1a; 属性汇总&#xff1a; https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-basic-compone…

在RK3568上如何烧录MAC?

这里我们用RKDevInfoWriteTool 1.1.4版本 下载地址&#xff1a;https://pan.baidu.com/s/1Y5uNhkyn7D_CjdT98GrlWA?pwdhm30 提 取 码&#xff1a;hm30 烧录过程&#xff1a; 1. 解压RKDevInfoWriteTool_Setup_V1.4_210527.7z 进入解压目录&#xff0c;双击运行RKDevInfo…

H3CNE(计算机网络的概述)

1. 计算机网络的概述 1.1 计算机网络的三大基本功能 1. 资源共享 2. 分布式处理与负载均衡 3. 综合信息服务 1.2 计算机网络的三大基本类型 1.3 网络拓扑 定义&#xff1a; 网络设备连接排列的方式 网络拓扑的类型&#xff1a; 总线型拓扑&#xff1a; 所有的设备共享一…

Flutter 插件之 easy_refresh(下拉刷新、上拉加载)

今天给大家较少一下日常开发中最常见的一个功能,就是 下拉刷新、上拉加载,这个在我们使用分页功能是最常见的。 此前我我也写了一篇关于 下拉刷新、上拉加载。 Flutter 下拉刷新、上拉加载flutter_easyrefresh的使用https://blog.csdn.net/WangQingLei0307/article/details/…

阿里宜搭对接打通金蝶云星空搜索表单实例详情列表接口与仓库新增接口

阿里宜搭对接打通金蝶云星空搜索表单实例详情列表接口与仓库新增接口 来源系统:阿里宜搭 宜搭是阿里巴巴自研的低代码应用搭建平台&#xff0c;传统情况下需要2周才能搭建完成的应用&#xff0c;用宜搭2小时就可完成。宜搭于2019年3月上线&#xff0c;用户可以在可视化界面上以…

AI 模型本地推理 - YYPOLOE - Python - Windows - GPU - 吸烟检测(目标检测)- 有配套资源直接上手实现

Python 运行 - GPU 推理 - windows 环境准备python 代码 环境准备 FastDeploy预编译库下载 conda config --add channels conda-forge && conda install cudatoolkit11.2 cudnn8.2 pip install fastdeploy_gpu_python-0.0.0-cp38-cp38-win_amd64.whlpython 代码 impo…