AI 文摘

有趣的大模型RAG问答评测基准CRUD-RAG:任务设计思路与数据构造细节解析





作者: 老刘说NLP 来源: 老刘说NLP

今天是2024年2月1日,星期四,二月份第一天,北京,天气晴。

我们再来看看大模型RAG问答的工作,例如ASER、RAGAS等,包括:

《再看大模型RAG检索增强如何评估:RAGAS开源自动化评估框架》(https://mp.weixin.qq.com/s/TrXWXkQIYTVsS1o4IZjs9w)

《大模型RAG检索增强问答如何评估:噪声、拒答、反事实、信息整合四大能力评测任务探索》(https://mp.weixin.qq.com/s/YFji1s2yT8MTrO3z9_aI_w)

最近参与了一个很有趣的工作 ,CRUD-RAG: 用于检索增强生成大模型的全面中文基准:《CRUD-RAG: A Comprehensive Chinese Benchmark for Retrieval-Augmented Generation of Large Language Models》(https://arxiv.org/pdf/2401.17043) ,对RAG感兴趣的,可关注。

该工作其核心在于:在RAG评测任务上,覆盖CRUD(增删改查),即大模型信息新增能力、信息缩减能力、信息校正能力、信息查询问答能力评测 ,其中:

并在评测规模上,总测试数据量达到36166个,在评测指标上,包括ROUGE, BLEU, bertScore, RAGQuestEval,都比较有趣。

这个工作也是诸多RAG评测中的一项,我们来看看具体的细节,项目代码放在:https://github.com/IAAR-Shanghai/CRUD_RAG

供大家一起参并思考,重点关注数据的处理、任务的设计思路。

一、先看CRUD任务的具体构成

当前已经有了许多不同的RAG评测数据集,例如RGB、ARES、RAGAS等,其规模、评估方式、是否有参考答案、语种可以从下图中表示:

CRUD任务则主要包括Create、Read、Update以及Delete四个任务。

在"Create"中,系统通过添加外部来源的相关信息来改进输入文本,从而产生诗歌、故事或代码等创造性输出。

在"Read"中,系统利用外部知识检索来回答问题,解决答题、对话和推理方面的问题,加深对输入文本的理解。

在"Update"中,系统利用检索到的内容修正输入文本中的错误,纠正拼写、语法或事实错误,使文本更加完善。

在"Delete"中,系统通过改进检索结果、删除不必要的细节以及执行文本摘要或简化等任务来简化输入内容。

我们来重点看数据构建方面的思路:

最新的新闻数据是创建RAG评估数据集的最合适选择,与百科全书、问题或对话等其他类型的数据不同,最新的新闻数据使模型无法直接从自身的知识库中生成答案,这样一来,模型必须使用外部文档来生成内容。

因此,选择新闻作为数据集的基础,具体的,为确保数据集的真实性和时效性,从中国主要新闻网站收集了近30万篇2023年7月以后发布的历史新闻文章,这些文章在训练阶段未被LLMs查看过,基于收集到的新闻语料,构建了开放域多文档摘要、文本续写和问题解答三个任务的数据集。

数据的例子如下:

二、Create生成任务Text Continuation

RAG不仅可用于“删除”(从大量文本中检索和总结关键信息),而且还可用于“创建”。在这种场景下,RAG系统通过扩展现有文本表现出强大的创造力,以文本续写任务作为评估。

文本延续任务旨在根据文本的开头自动产生连贯且相关的后续内容,使文本更加完整和生动。

为了构建延续任务数据集,采用与摘要任务数据集相同的方法。图3展示了文本延续的构建过程。

具体地:

首先从高质量的语料库中选择一篇新闻文章,并使用jieba中文分词工具将其分割成句子。

然后,将文章分为两个相等的部分:前半部分作为续写数据集的输入,后半部分作为续写数据集的输出,并期望模型使用RAG技术从文档库中检索相关信息,并生成连贯、信息丰富且与输入和输出一致的后续文本。

为了确保检索数据库覆盖真实的续写文本,使用百度搜索引擎查找外部文档并将其添加到数据库中。续写文本与事件文本的不同之处在于它由多个句子组成。

将续写文本按句子分成段落,并使用搜索引擎检索每个段落的相关文档,这样可以保证检索数据库包含重建延续文本的大部分信息。

数据样例如下:

三、Read任务Question Answering

RAG的另一个应用场景是利用外部知识库来增强大型语言模型的问答能力,可以应用于各种知识密集型任务。

目前,有很多评估基准来衡量RAG在该场景下的性能,并且已经创建了多个问答数据集,但现有的问答数据集也存在一些局限性。

一方面,一些数据集(例如NQ和WEBQA)已经过时,并且可能在预训练阶段就被大型语言模型覆盖,这降低了RAG系统的优势。

另一方面,一些数据集(例如RGB)仅包含一些事实问题,可以直接从检索到的文本中提取这些事实问题,而不需要对多个文本进行复杂的推理,这对RAG系统提出的挑战较小。

为了克服这些限制,构建了一个大规模的问答数据集,该数据集分为两部分:单文档和多文档问答。

其中:

单文档问答侧重于询问新闻中具体细节的事实问题,例如事件的地点或主要人物。

在数据构建方式上,采用之前RGB基准的数据集构建过程:首先从收集的高质量语料库中选择新闻文章。然后使用提示让ChatGPT为每篇文章生成问题和答案。例如,对于“2023年诺贝尔奖”的报道,ChatGPT会生成问题“谁获得了2023年诺贝尔生理学和医学奖?”并提供回答问题的关键信息。

多文档问答涉及推理和批判性思维问题,要求读者对多个新闻段落进行推理,例如比较和对比两个事件或评估其影响。

在数据集构建方式上,构建需要合成多个文档的推理问题比较难,而简单地使用提示强制ChatGPT生成问题是无效的,因为创建这样的多文档QA数据集本身就是一项复杂的推理任务。因此,采用Chain-of-Thought(CoT来增强ChatGPT,通过引导模型通过多个推理步骤逐渐构建数据集。

具体步骤如图4所示,分成以下几个步骤:

(1)检索多条关联新闻,这些新闻应涵盖同一事件,但提供不同的观点或信息。

(2)确定不同报告之间的共同点,例如报告的事件,并确保它们是相关的。

(3)区分新闻文章之间的差异。在保持报告之间的联系的同时,分析每个报告之间的差异。这一步需要多角度的全面理解和分析,避免产生单段文字就能回答的问题。

(4)根据不同焦点生成问题,需要整合多方信息来回答。

(5)根据关联点重构问题。根据报告中的联系,细化问题,保证内在的逻辑联系,避免表面的组合。这些问题应该在逻辑上联系在一起,而不是在物理上并列。例如,不简单地问“描述第二次世界大战的历史并解释量子物理学的基本原理”,而应该提出“二战期间的技术和政治环境如何促进量子物理学的发展?”这样的问题,其中各部分相互依赖或具有因果关系。

但并不是文档数越多越好,因此,构建了两种不同难度的多文档问答数据集:一种需要从2个文档推理来回答问题,另一种则更具挑战性,需要从3个文档推理来回答问题。

1-document文档问答例子:

2-documents文档问答例子:

3-documents文档问答例子:

四、Update任务Hallucination Modification

RAG框架还可以用于纠正文本中的错误,这涉及使用RAG框架从外部来源访问相关信息,识别并纠正文本中的错误,并保持文本内容的准确性。

其使用开源大型数据集UHGEval(https://github.com/IAAR-Shanghai/UHGEval)构建了幻觉修正的数据集

UHGEval指示模型生成包含给定新闻文本幻觉的续写内容,利用GPT-4进行自动标注和人工评估,以识别和标记文本中包含幻觉的片段。

在这里,输入幻觉文本以及数据集中的相应标注信息,然后使用GPT-4被用来纠正幻觉,从而产生没有幻觉元素的文本。

最后,真实的新闻续写将被纳入文档检索数据库中,RAG系统在此数据集上的实验结果可以确认系统是否能够根据输入文本(由开头文本和幻觉续写文本组成)从文档数据库中检索出真实的新闻信息,然后对幻觉文本进行纠正以生成没有幻觉的文字。

数据样例如下:

五、Delete任务Multi-Doc Summarization

消除大量冗余信息,仅保留最重要的内容。这些任务需要手动注释,这会消耗大量的时间和财力,并且常常会导致太多多余的信息。

幸运的是,我们可以使用现有的方法,反向构建多文档摘要数据集。图3展示了多文档摘要的构建流程。

具体来数据集构建过程如下:

首先,不根据多个相关新闻内容生成事件摘要,而是首先从高质量语料库中获取新闻文章,并对其摘要和事件进行标注。

然后,通过使用事件文本,确保它们有联系但又不过分相似,来与当前新闻相关的外部参考资料,通过收集的参考文献以及当前的总结新闻,共同形成多文档摘要的数据集

这个步骤很有意思:

首先从高质量新闻语料库𝐷中选择10,000篇新闻文章𝑑,然后使用GPT-4为每篇文章生成摘要和事件。

然后,以事件为关键词,在百度上搜索最相关的10篇新闻文章,排除与原文过于相似的数据。

对所有文章重复此过程,并将扩展的文章添加到新闻语料库中,同时删除10,000篇文章𝑑。

新的新闻语料库𝐷−𝑑+𝐸作为检索语料库,并期望模型使用检索语料库中的事件和相关信息来生成文章𝑑的摘要。

数据样例如下:

六、再看RAG任务的评测指标

该基准测试的目的是评估RAG系统检索相关文档的能力,并使用它们生成合理的恢复。因此,采用端到端的评估方法,直接比较模型输出与参考答案之间的相似度。

但问题又来了,评估RAG系统的性能需要选择适当的评估指标。

在指标方面,之前文本生成的评估指标ROUGE和BLEU,它们都是基于单词重叠的。

ROUGE主要统计n-gram上的召回率,而BLEU主要统计n-gram上的准确率。

BLEU和ROUGE是基于单词重叠的准确性度量,依赖于文本的整体表达,并且不捕获文本中特定关键信息的准确性。

因此,它们可能无法很好地反映文本的事实一致性,特别是对于长文本。

为了缓解这个问题,可以使用抽象概括评估的新评估指标。这些指标基于这样的直觉:如果您询问有关摘要和原始文档的问题,如果摘要与原始文档实际匹配,您将得到类似的答案。他们评估摘要中每条本地关键信息的准确性。

此外,还可以基于问答的指标来评估生成的事实准确性。

例如,工作QuestEval,地址:https://github.com/ThomasScialom/QuestEval,这一工作该在广泛的实验中改善了与人类判断相对于先前指标的相关性。

QuestEval评估生成文本与源文档之间的事实一致性,主要用于文本摘要任务,不需要参考答案。

然而,对于RAG系统,检索到的文本可能不相关或不正确,因此与它们的一致性不是有效的标准,但可以使用这个指标来衡量生成的文本与真实参考的匹配程度,该工作将此指标称为RAGQuestEval。

令𝐺𝑇和𝐺𝑀为两个标记序列,其中𝐺𝑇表示真实参考,𝐺𝑀表示相应的评估对象。

首先,使用QuestEval方法从真实参考文献𝐺𝑇中生成一系列问题,该方法从文本中提取实体和名词短语。RAGQuestEval的目标是检查生成的文本是否包含并正确传达了真实参考中的所有关键信息。

接下来,使用真实参考和模型生成的文本来回答这些问题。如果问题无法回答,模型将返回“”。

最后,计算两个分数来评估生成文本的质量:召回率和精度,其中,召回率是可回答问题与所有问题的比率,该分数显示RAG系统生成的文本捕获了真实参考中的多少信息。较高的召回率意味着生成的文本涵盖了参考文献中的更多信息。

在上式中,𝑄𝐺是问题生成器,𝑄𝐴是问题回答器。

精确率是所有问题的平均答案相似度,不包括无法回答的问题,具体的,使用token级别F1分数来衡量答案相似度,这是评估事实问答模型的标准指标。更高的精度意味着生成的文本更准确并且与参考一致。

总结

本文主要家介绍了一个RAG的评估基准数据集,这个基准数据集在评测任务的设计上比较有趣,项目代码放在:https://github.com/IAAR-Shanghai/CRUD_RAG。

参考文献

1、https://github.com/IAAR-Shanghai/CRUD_RAG

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。

更多AI工具,参考Github-AiBard123国内AiBard123

可关注我们的公众号:每天AI新工具