Home

gqjia

09 Jan 2024

RAG评估工具调研

image-20240108183631581

在评估框架方面,存在如 RGB 和 RECALL 这样的基准测试,以及 RAGAS、ARES 和 TruLens 等自动化评估工具,它们有助于全面衡量 RAG 模型的表现。表中汇总了如何将传统量化指标应用于 RAG 评估以及各种 RAG 评估框架的评估内容,包括评估的对象、维度和指标,为深入理解 RAG 模型的性能和潜在应用提供了宝贵信息。

RGB

arxiv: https://arxiv.org/abs/2309.01431

ar5iv: https://ar5iv.labs.arxiv.org/html/2309.01431

github: https://github.com/chen700564/RGB

作者从4个维度对RAG进行评估,建立了评价基准RGB。RGB可与对中文和英文RAG进行评估(包括4个两种语言的测试集)。作者对6个LLM(ChatGPT、ChatGLM-6B、ChatGLM2-6B、Vicuna-7b、Qwen-7B-Chat、BELLE-7B)应用的RAG进行了测试,证明LLMs在噪声鲁棒性方面表现出一定程度的优势,但在负面拒绝、信息整合和处理虚假信息方面仍然存在显著困难。

作者将RAG的评测分为4个测试维度: image-20240108104910703

  1. 噪声鲁棒性(Noise Robustness)

    模型能从噪声文档中提取有用信息。噪声文档定义为与问题相关但不包含任何相关信息的文档。在图1中的实例中,与”谁获得了2022年诺贝尔文学奖”问题相关的噪声文档包括有关2021年诺贝尔文学奖的报道。为此,噪声鲁棒性测试根据所需的噪声比,将外部文档包含一定数量噪声文档的实例包含在内。

  2. 否定拒绝(Negative Rejection)

    当检索到的文档中不存在所需的知识点时,模型应拒绝回答问题。否定拒绝的测试包含外部文档只有噪声文档的实例。LLM预计会发出”信息不足”或其他拒绝信号。

    (应该包括对敏感问题的拒答

  3. 信息整合(information integration)

    评估模型能否回答需要整合多个文档信息的复杂问题。在图1的例子中,对于”ChatGPT iOS应用程序和ChatGPT api是什么时候推出的?”这个问题,LLMs应提供iOS上ChatGPT应用程序和ChatGPT API的推出日期信息。信息集成测试包含只能使用多个外部文件才能回答的问题。

  4. 反事实鲁棒性(Counterfactual Robustness)

    该测试评估当通过指令向LLMs发出关于检索信息中潜在风险的警告时,模型能否识别检索文档中已知事实错误的风险。反事实鲁棒性的测试包括可以由LLM直接回答,但外部文档包含事实错误的实例。

数据构建

训练数据构建过程:

image-20240108145801467

首先收集最新的新闻文章,并使用提示让ChatGPT为每篇文章生成事件、问题和答案。通过生成事件,模型能够初步筛选出不包含任何事件的新闻文章。生成后,作者手动检查答案,并过滤掉通过搜索引擎难以获取的数据。

对于每个查询,作者使用谷歌的API获取10个相关的网页,并从中提取相应的文本片段。同时,阅读这些网页,并将它们的文本内容转换为最多300个标记长度的文本块。英文模型用all-mpnet-base-v2,中文使用moka-ai/m3e-base

选择与查询最有效匹配的前30个文本块。这些检索到的文本块,以及搜索API提供的摘要,将作为外部文档。这些文档将根据是否包含答案将其分为正面文档和负面文档。

作者扩展了语料库,并将其分为4个测试平台,以评估LLMs的上述基本能力。为了评估噪声鲁棒性,作者根据所需的噪声比例随机抽取不同数量的负面文档。对于负面拒绝能力,所有外部文档都是从负面文档中抽取的。为了评估信息整合能力,进一步构建了基于上述生成的问题的数据。这涉及到扩展或重写这些问题,使它们的答案涵盖多个方面。例如,问题“谁赢得了2023年超级碗的最有价值球员奖?”可以重写为“谁赢得了2022年和2023年超级碗的最有价值球员奖?”因此,回答这样的问题需要利用来自各种文档的信息。与前三个能力不同,反事实鲁棒性的数据仅基于模型的内部知识构建。基于上述生成的问题,采用ChatGPT自动生成其已知知识。具体而言,使用提示让模型生成已知的问题和答案。 例如,基于问题“谁被授予2022年诺贝尔生理学或医学奖?”,模型将生成已知问题“谁被授予2021年诺贝尔文学奖?”并回答“阿卜杜勒拉扎克·古尔纳”。然后,手动验证生成的答案,并按上述描述检索相关文档。为了使文档包含事实错误,手动修改答案并替换文档中相应的部分。

最后,作者总共收集了600个RGB基础问题,以及200个额外的问题用于信息整合能力和200个额外的问题用于反事实鲁棒性能力。

实验部分

实验中用到的中英文指令:

image-20240108155818476

噪音鲁棒性试验

不同噪音比下的准确率:

image-20240108155858605

  1. RAG可以改善LLMs的响应。即使在噪声存在的情况下,LLMs仍然表现出强大的性能,这表明RAG是LLMs生成准确可靠响应的一种有前景的方式。
  2. 噪声率的增加对LLM中的RAG构成了挑战。具体而言,当噪声比例超过80%时,模型的准确性显著降低。例如,ChatGPT的性能从96.33%下降到76.00%,而ChatGLM2-6B的性能从91.33%下降到57.33%。

噪声鲁棒性的错误案例,只显示了一个正面文档和一个负面文档。回答由ChatGLM2-6B生成。蓝色文本表示文档与问题或答案之间的匹配部分,而红色文本突出显示不匹配的部分:

image-20240108160226038

实验发现错误通常源于三个原因:

  1. 长距离信息。在处理外部文档时,模型在识别与问题相关的信息与答案相关的信息相距较远时,往往面临着找到正确答案的困难。
  2. 证据不确定性。模型可能被不确定的证据误导。
  3. 概念混淆。外部文件中的概念可能与问题中的概念相似,但又有所不同。这可能会让LLMs感到困惑,并导致LLMs生成错误的答案。

Negative Rejection 试验

image-20240108174940287

image-20240108174956582

LLMs很容易被噪声文档误导,导致答案不正确。

信息集成试验

image-20240108175357402

  1. 即使没有噪音,LLMs的最高准确率也只能分别达到60%和67%的英文和中文。添加噪音后,最高准确率降至43%和55%。这些结果表明LLMs在有效整合信息方面存在困难,并不适合直接回答复杂问题。
  2. 复杂问题对于带有噪音文档的RAG来说更具挑战性。当噪音比例为0.4时,性能下降变得显著,但对于简单问题,只有在噪音比例为0.8时才会出现显著下降。这表明复杂问题更容易受到噪音的干扰。我们推测这是因为解决复杂问题需要整合来自多个文档的信息,而这些信息可以被视为彼此的噪音,使得模型更难从文档中提取相关信息。

除了在噪声鲁棒性实验中发现的相似错误(占总数的38%)之外,还存在三种独特的错误类型:

  1. 合并错误(总数的28%)。模型有时会合并两个子问题的答案,导致错误。它错误地使用一个问题的答案来回答两个问题。此时,模型将忽略与一个子问题相关的任何文档。例如,在表6中,它错误地表示D组既是法国的世界杯分组,也是德国的分组,而实际上德国实际上被分配到E组。
  2. 忽略错误(总错误的28%)。有时,模型可能会忽略其中一个子问题,只回答另一个子问题。这种错误发生在模型对问题缺乏完全理解,未能意识到问题由多个子问题组成。因此,模型只考虑一个子问题的相关文档以生成答案,而忽视了另一个子问题提出的问题。例如,在表6中,模型只提供了2022年超级碗MVP的答案,而没有考虑2023年的情况。
  3. 对齐错误(总错误的6%)。有时,模型会错误地将一个子问题的文档错误地识别为另一个子问题的文档,导致答案错位。例如,在表6中,第三个答案有两个错误:一个是忽略错误,一个是对齐错误。首先,模型只提到了2023年(第95届)奥斯卡最佳影片,完全忽视了2022年的奥斯卡奖项。此外,它错误地声称“CODA”是2023年的最佳影片,实际上它是在2022年获得最佳影片奖的。

上述错误主要是由于对复杂问题的理解有限,这阻碍了有效利用不同子问题的信息的能力。关键在于提高模型的推理能力。一种可能的解决方案是使用一种思维链的方法来分解复杂问题。然而,这些方法会降低推理速度,无法提供及时的响应。

反事实鲁棒性试验

image-20240108181224389

LLMs很难识别和纠正文档中的事实错误。这表明模型很容易被包含错误事实的文档所误导。

RECALL

arxiv: https://arxiv.org/abs/2311.08147

ar5iv: https://ar5iv.labs.arxiv.org/html/2311.08147

LLMs仍然存在幻觉问题,即生成看似有意义但实际上违反事实的答案。除了模型内在的原因之外,不总是可靠的外部知识也是幻觉的一个显著原因。现有研究表明,模型容易受到不可靠的外部信息的影响。例如,模型倾向于迎合用户,并且会被用户输入中的错误所误导。此外,当检索外部知识时,模型也可能被反事实信息所误导。理想情况下,LLMs应该能够在有反事实信息干扰的情况下,为用户提供没有错误的输出。现有的反事实检测工作旨在通过微调或其他方式直接识别和纠正给定文本中的错误信息,而在作者的研究中,模型不需要明确区分误导信息,能够在不考虑给定信息的质量的情况下生成对用户查询可信的回答。也就是说,作者希望评估LLMs对外部反事实知识的鲁棒性,以便为用户输入生成正确的答案。

作者通过在原始样本中添加反事实信息,从现有数据集中,利用ChatGPT创建了一个用于LLMs对外部反事实知识的鲁棒性的基准测试(RECALL)。并且探索了两种现有方法来提高答案的真实性,以增强对带有反事实信息的文本的稳健性,但它们未能有效缓解这个问题,这表明这个问题具有挑战性,需要有效的解决方案。

作者在两个不同的领域中评估模型对反事实知识的稳健性:常识知识和科学知识。常识知识,作者修改了来自EventKG数据集(EventKG);对于科学知识,我们扩展了UJ-CS/Math/Phy数据集(UJ)。

问答任务,作者分别使用准确率和误导率(M-Rate)来评估模型在这两个方面的表现。误导率的定义如下:

image-20240109100215722

M-Rate是模型在所有可以正确回答的查询中,使用编辑后的上下文回答错误的查询的比例。

对于文本生成,选择BLEU和ROUGE-L作为响应质量的评估指标。对于鲁棒性的评估,使用事件知识图谱的错误再现率(R-Rate)来定义。

image-20240109100455349

错误再现率是所有编辑过的单词中出现在模型输出中的编辑过的单词的比例。对于UJ来说,我们调整了R-Rate的定义,因为UJ中的原始单词和编辑过的单词无法完全一一匹配。因此,UJ的R-Rate将如下所示:

image-20240109100526257

RAGAS

arxiv: https://arxiv.org/abs/2309.15217

ar5iv: https://ar5iv.labs.arxiv.org/html/2309.15217

githb: https://github.com/explodinggradients/ragas

评估 RAG需要检索系统识别相关和聚焦上下文段落的能力,LLM以忠实的方式利用这些段落的能力,以及生成本身的质量。作者提出一套可以用来评估这些不同方面的度量标准,无需依赖人工标注。

评估策略

作者从三个方面进行评估:

  1. 忠实度:答案应该基于给定的上下文
  2. 答案相关性:生成的答案应该回答实际提供的问题
  3. 上下文相关性:检索到的上下文应该是聚焦的,尽可能包含少量无关信息

忠实度

第一步是给定问答,用LLM生成一组 statements,prompt如下:

image-20240109115726231

对于每个statement,由LLM确定是否可以推出

image-20240109142143007

答案的相关性

对于给定答案,由LLM生成问题:

image-20240109154648989

用openai api 获取embeding,计算与原始query的相似度:

image-20240109154702894

上下文相关性

给定问题和上下文,LLM从上下文中抽取一部分关键句子来回答问题,prompt格式如下:

image-20240109154933885

相关性计算如下:

image-20240109154948725

参考资料

Til next time,
gqjia at 00:00

scribble