论文标题:
CRUD-RAG: A Comprehensive Chinese Benchmark for Retrieval-Augmented Generation of Large Language Models
作者单位:
中国科学技术大学,上海算法创新研究院,新华社融媒国重
论文地址:
https://arxiv.org/abs/2401.17043
数据&代码地址:
https://github.com/IAAR-Shanghai/CRUD_RAG

介绍

检索增强生成(RAG)是一项利用外部知识源提升大型语言模型(LLMs)的文本生成能力的技术。基于输入检索语料库中的相关段落,并将其与输入一同提供给大模型。在外部知识的辅助下,大模型能够生成更准确可信的回应,有效解决知识过期、幻觉和领域专业知识不足等挑战。因此,RAG 技术在大模型时代备受瞩目。
检索增强策略(RAG)已经在广泛的实践中证明了其有效性,但是在实际场景中应用和部署 RAG 系统仍然面临着挑战。RAG 系统的性能取决于系统中的各种参数,如检索模型、外部知识库的构建和语言模型。因此,为了指导 RAG 系统的部署,对 RAG 系统进行自动评估至关重要。
目前用于评估 RAG 系统性能的基准可以分为两类:需要参考答案的和不需要参考答案的。无参考评估框架,如 RAGAS 和 ARES,使用大模型自动评估 RAG 系统生成内容的上下文相关性、忠实度和信息量。这些框架不依赖于真实参考答案,而只评估生成文本与检索上下文的一致性。如果检索的外部信息质量低,这种方法可能不够可靠。
因此,依赖参考答案的评估方式仍然是评估 RAG 系统的主要方法。目前,有参考答案的评估基准只有少数几个小规模的,因为创建高质量的数据集并对其进行实验涉及到相当大的成本。而且,这些评估 RAG 的基准都依赖于问答任务来衡量 RAG 系统的性能。
然而,问答并非是唯一的 RAG 应用场景,适用于问答的优化策略未必能推广到其他场景。因此,这些基准可能无法充分评估 RAG 系统在不同应用场景下的表现。
此外,在实验中,当前的评估通常集中于评估 RAG 链路中的大模型部分,而忽略了检索模型和外部知识库构建。这些组件对于 RAG 系统同样至关重要。
为了克服以上缺陷,研究者们急需一个全面的、更大规模的 RAG 评估基准,不仅仅涵盖问答任务。事实上,任何涉及知识库和用户交互的操作,都可以被分为增、删、改、查四类,也被称为 CRUD 操作。而 RAG 系统的本质是大模型和外部知识库的交互。因此,同样可以将 RAG 系统的应用场景分为增、删、改、查四类。
如下图所示,CRUD 的每个类别分别代表了 RAG 系统的不同应用场景。
  • 在“增”场景下,系统通过参考知识库中的信息,丰富输入文本,生成创意输出,如诗歌、故事或代码。
  • 在“删”场景下,系统简化检索到的信息,删除无关的不重要内容,呈现给用户更精炼的摘要。
  • 在“查”场景下,系统检索外部知识,推理并回答用户的问题。
  • 在“改”场景下,系统使用检索到的内容纠正输入文本中的错误,纠正拼写、语法或事实错误。
为了在这四个场景下评估 RAG 系统的性能,作者构建了 CRUD-RAG,一个全面的、大规模的中文 RAG 评估基准。CRUD-RAG 包括四个评估任务:文本续写、问答(包括单文档问答和多文档问答)、幻觉纠正和多文档摘要,分别对应于 RAG 应用场景的 CRUD 分类。
在实验中,作者系统地评估了 RAG 系统在 CRUD-RAG 基准上的性能。评估了可能会影响 RAG 系统性能的各种因素,如上下文长度、块大小、嵌入模型、检索算法和大模型。根据实验结果,作者还为构建有效的 RAG 系统提供了一些建议。
主要贡献点:
  1. 提出了一个更为全面的 RAG 评估基准:CRUD-RAG 评估基准不再局限于使用问答任务评估 RAG 系统,而是涵盖 RAG 应用的增删改查(CRUD)四种不同场景。
  2. 构建高质量的评估数据集:作者基于 RAG 的应用场景,为不同的评估任务构建了多样化、大规模的数据集。这些任务包括文本续写、多文档摘要、问答和幻觉纠正。
  3. 进行了广泛的实验:作者在构建的基准上进行了广泛的实验,使用各种指标来衡量 RAG 系统的性能。根据实验,作者为未来的研究人员和 RAG 系统开发者提供了有用的指导。

数据集简介与构建流程

CRUD-RAG 基准使用的数据集简介如下:
接下来将介绍,如何构建这些数据集的。
选择最新的新闻数据,作为 RAG 评估数据集的基础。最新的新闻数据与百科、对话等其他类型的数据不同,它们并未在训练阶段暴露给大型模型。因此,模型在生成内容时需要依赖外部文档的信息。
为了保证数据集的真实性和时效性,我们从中国主要的新闻网站上收集了近 30 万篇 2023 年 7 月以后发表的历史新闻文章,在此基础上,设计了开放域多文档摘要、文本续写和问题解答三个任务的数据集。

Delete任务Multi-Doc Summarization

RAG 一项重要的应用就是,消除检索信息中的大量冗余信息,仅保留最重要的内容,输出总结性地摘要方便用户查看。一个适合评估此场景的任务,就是多文档摘要。具体到 RAG 系统和新闻数据集,就是利用新闻事件,从数据库中检索相关新闻,为这些新闻生成个摘要。
作者中采取一种反向的构建方式,构建多文档摘要数据集。
具体来数据集构建过程如下:
  • 首先,从高质量语料库中获取 10,000 新闻文章 𝑑,使用 GPT-4 标注其摘要(100 字左右)和事件(1 句话)。
  • 然后,使用事件文本,在搜索引擎中检索与当前新闻相关的外部参考资料,加入新闻语料库中。但是,注意去除与原文过于相似的数据。这一步的目的是,确保新闻语料库有足够多的与事件相关的信息,以供 RAG 系统检索使用。但是,不能让模型直接接触到原文,以免直接复读原文解决问题。
  • 对所有文章重复此过程,并将扩展的文章添加到新闻语料库中,同时删除 10,000 篇文章 𝑑。
  • 新的新闻语料库 𝐷−𝑑+𝐸 作为检索语料库。作者期望,RAG 系统能够使用事件信息,从检索语料库中检索出相关新闻信息,生成文章 𝑑 的摘要。

Create任务Text Continuation

文本续写数据集构建流程与多文档摘要数据集的构建流程相似:
  • 从高质量的新闻语料库中选择一篇新闻文章,并使用中文分词工具将其分割成句子。
  • 将文章分为两个相等的部分:前半部分作为续写数据集的输入,后半部分作为续写数据集的输出。作者期望 RAG 系统能够利用输入的前半部分文本,从文档库中检索相关信息,并生成后半段真实的续写文本。
  • 为了确保检索数据库覆盖真实的续写文本中的全部信息,使用百度搜索引擎查找外部文档并将其添加到数据库中。需要注意,续写文本与事件文本的不同之处在于它由多个句子组成。因此,作者将将续写文本按句子分成段落,并使用搜索引擎检索每个段落的相关文档,以确保检索数据库包含重建续写文本的大部分信息
同样的,为了增加任务的难度,作者仍然把和续写文本一模一样的新闻从检索数据库删除,防止模型直接复读原文解决问题。

Read任务Question Answering

RAG的一个广泛应用场景是问题回答(QA),利用外部知识库来增强大型语言模型的问答能力,可以应用于各种知识密集型任务。
目前,有很多评估基准来衡量 RAG 在该场景下的性能,并且已经创建了多个问答数据集,但现有的问答数据集也存在一些局限性。
一方面,一些数据集(例如 NQ 和 WEBQA)已经过时,并且可能在预训练阶段就被大型语言模型覆盖,这降低了 RAG 系统的优势。
另一方面,一些数据集(例如 RGB)仅包含一些事实问题,可以直接从检索到的文本中提取这些事实问题,而不需要对多个文本进行复杂的推理,这对 RAG 系统提出的挑战较小。
为了克服这些限制,构建了一个大规模的问答数据集,该数据集分为两部分:单文档和多文档问答。
其中:单文档问答侧重于询问新闻中具体细节的事实问题,例如事件的地点或主要人物。
在数据构建方式上,采用之前 RGB 基准的数据集构建过程:首先从收集的高质量语料库中选择新闻文章。然后使用提示让 ChatGPT 为每篇文章生成问题和答案。例如,对于“2023 年诺贝尔奖”的报道,ChatGPT 会生成问题“谁获得了 2023 年诺贝尔生理学和医学奖?”并提供回答问题的关键信息。
多文档问答涉及推理和批判性思维问题,要求读者对多个新闻段落进行推理,例如比较和对比两个事件或评估其影响。
在数据集构建方式上,构建需要合成多个文档的推理问题比较难,而简单地使用提示强制 ChatGPT 生成问题是无效的,因为创建这样的多文档 QA 数据集本身就是一项复杂的推理任务。因此,采用 Chain-of-Thought(CoT 来增强 ChatGPT,通过引导模型通过多个推理步骤逐渐构建数据集。
具体步骤如下图所示,分成以下几个步骤:
(1)检索多条关联新闻,这些新闻应涵盖同一事件,但提供不同的观点或信息。
(2)确定不同报告之间的共同点,例如报告的事件,并确保它们是相关的。
(3)区分新闻文章之间的差异。在保持报告之间的联系的同时,分析每个报告之间的差异。这一步需要多角度的全面理解和分析,避免产生单段文字就能回答的问题。
(4)根据不同焦点生成问题,需要整合多方信息来回答。
(5)根据关联点重构问题。根据报告中的联系,细化问题,保证内在的逻辑联系,避免表面的组合。这些问题应该在逻辑上联系在一起,而不是在物理上并列。例如,不简单地问“描述第二次世界大战的历史并解释量子物理学的基本原理”,而应该提出“二战期间的技术和政治环境如何促进量子物理学的发展?”这样的问题,其中各部分相互依赖或具有因果关系。

Update任务Hallucination Modification

RAG 系统还可用于文本中错误的纠正。这涉及使用 RAG 系统从外部来源获取相关信息,以识别并纠正文本中的错误,确保文本内容的准确性。
作者利用开源大型数据集UHGEval(https://github.com/IAAR-Shanghai/UHGEval)构建了一个用于幻觉修正的数据集。UHGEval 数据集包含由大型模型生成的幻觉续写内容以及标记的文本中包含幻觉的片段。
在构建数据集时,作者从 UHGEval 中提取了幻觉文本以及数据集中的相应标注信息,然后使用 GPT-4 对幻觉进行纠正,生成没有幻觉元素的文本。同时,真实的新闻续写将被纳入文档检索数据库中。
最终,作者成功构建了一个用于幻觉修正的数据集,其中包含输入文本(由开头文本和幻觉续写文本组成)以及期望的输出文本(对幻觉文本进行纠正生成的没有幻觉的文本)。

实验介绍

3.1 评估指标
目前,RAG 评估基准的目标主要是评估 RAG 系统检索相关文档并利用它们生成合理回复的能力。因此,作者采用了端到端的评估方法,直接比较模型输出与参考答案之间的相似度。
评估 RAG 系统性能时,选择适当的评估指标至关重要。在指标方面,之前用于文本生成的 ROUGE 和 BLEU 是常见的评估指标,它们都基于单词重叠。
ROUGE 主要统计 n-gram 上的召回率,而 BLEU 主要统计 n-gram 上的准确率。尽管这些指标能够提供一定程度的性能评估,但它们依赖于整体文本表达,难以捕捉文本中特定关键信息的准确性,尤其是对于长文本。
为了缓解这个问题,文本摘要领域已经提出了不少基于问答的新型评估指标,如 Feqa,Qags,QuestEval。这些指标基于这样的直觉:如果同时向摘要和原始文档询问相同的问题,如果摘要与原始文档实际匹配,将得到类似的答案。这些工作该在广泛的实验中,证实了这些评估指标与生成文本的真实性更相关。
作者选择 QuestEval 指标,对其略加修改,作为 RAG 评估的一个新指标。QuestEval 评估生成文本与源文档之间的事实一致性,主要用于文本摘要任务,不需要参考答案。
然而,对于 RAG 系统,检索到的文本可能不相关或不正确,因此与它们的一致性不是有效的标准,但可以使用这个指标来衡量生成的文本与真实参考的匹配程度,作者将此指标称为 RAGQuestEval。RAGQuestEval 的目标是检查生成的文本是否包含并正确传达了真实参考中的所有关键信息。
令 𝐺𝑇 和 𝐺𝑀 为两个标记序列,其中 𝐺𝑇 表示真实参考答案,𝐺𝑀 表示相应的评估文本。
首先,使用 QuestEval 方法从真实参考文献 𝐺𝑇 中生成一系列问题。该方法从文本中提取实体和名词短语,再据此生成一系列问题。
接下来,使用真实参考和模型生成的文本来回答这些问题。如果问题无法回答,模型将返回“Unanswerable”。
最后,计算两个分数来评估生成文本的质量:召回率和精度,其中,召回率是可回答问题与所有问题的比率,该分数显示 RAG 系统生成的文本捕获了真实参考中的多少信息。较高的召回率意味着生成的文本涵盖了参考文献中的更多信息。
在上式中,𝑄𝐺 是问题生成器,𝑄𝐴 是问题回答器。
精确率是所有问题的平均答案相似度,不包括无法回答的问题,具体的,使用 token 级别 F1 分数来衡量答案相似度,这是评估问答模型的标准指标。更高的精度意味着生成的文本更准确并且与参考一致。
3.2 实验设置
在本部分中,作者将介绍 RAG 系统的组件,并描述如何进行实验来评估它们对系统性能的影响。RAG 系统包括以下组件:
  • 块大小(Chunk size):RAG 系统将外部知识分割成特定长度的块,并将它们存储在矢量数据库中。块大小影响检索准确性和上下文的完整性。
  • 块重叠(Chunk overlap):块重叠指两个相邻文本块之间共享的 token 数目,用于确保在分块时语义的一致性。
  • 嵌入模型(Embedding model):RAG 系统使用嵌入模型或其他方法将文本块和用户的查询转换为向量。嵌入模型影响上下文的质量和相关性。
  • 检索器(Retriever):RAG 系统使用检索器在矢量数据库中找到与查询向量最相似的前 k 个向量,并检索相应的文本块。检索器影响上下文的丰富性和多样性。
  • Top-k:这是 RAG 系统为每个查询检索的文本块数量,它们作为 LLMs 提示的上下文部分。Top-k 影响模型接收的上下文的大小。
  • 大型语言模型(Large language model):RAG 系统将上下文和查询输入到 LLM 以生成答案。LLM 影响答案的正确性和合理性。
作者将以下设置作为 RAG 系统的基础版本:块大小:128,块重叠:0%,嵌入模型:bge-base,检索器:dense retriever,Top-k:8,以及 LLM:GPT-3.5。在实验中, 作者逐个更改每一个组件,并在不同任务上评估结果。
在实验中,使用两种类型的评估指标:整体语义相似性指标(bleu、rouge-L和bertScore)衡量生成内容在意义和流畅性方面与参考内容的匹配程度;关键信息指标(RAGQuestEval)衡量生成内容多大程度上捕捉并呈现了参考内容的关键信息。
3.3 实验结果
作者在构建的 CRUD-RAG Benchmark 上进行了大量实验,深入探讨了构建 RAG 系统所需微调的各个组件,包括优化检索模型、上下文长度、知识库构建以及底层大型语言模型部署的重要性。作者还提供了一些有趣的发现,希望为该领域的研究人员和实践者提供有价值的路线图,帮助他们开发和完善 RAG 系统。
分块大小是构建外部知识向量索引时的一个重要参数。从上表可以看出,不同的任务类型,需要选择合适的分块大小,才能达到最佳的效果。对于 RAG 应用的创新生成场景,如续写,建议使用较大的分块大小,以保持文章的逻辑结构,避免影响 RAG 系统的性能。
对于摘要场景,如果想要召回更多的信息,可以考虑使用较小的分块大小;但是,如果更注重生成内容的准确性,还是建议使用较大的分块大小,以防止破坏文章的完整性。在事实型问答场景中,较小的分块大小有助于在简短的句子中直接找到答案,而对于推理型问答任务,使用较大的分块大小可以保证文章的连贯性,提高推理能力。
分块重叠是指相邻两个分块之间重复 token 的比例,它影响着分块之间的语义连贯性。研究表明,在文本续写、摘要和问答场景中,分块之间的语义连贯性非常重要,因此应该使用较高的分块重叠值。但是,在错误纠正场景中,分块之间的语义连贯性相对不太重要,可以考虑使用较低的分块重叠值。
由上表可以得出结论:在选择检索算法时,BM25 算法与基于嵌入的深度学习检索算法相比,有着节约计算资源的优点,而且由于它是基于关键词的算法,通常能够检索到高度相关的文档。
但是,基于关键词的算法在捕获语义方面能力较弱,可能会遗漏一些相关内容。因此,对于需要精确内容生成的任务,如幻觉修改和摘要,建议使用 BM25。
然而,BM25 可能不太适合需要语义理解的任务,例如问答和创造性生成。在这些情况下,建议使用基于深度学习嵌入的密集型算法。
此外,将密集型和 BM25 检索器结合的混合算法对生成结果的整体质量的提升并不明显。然而,通过使用重排模型对检索结果进行重新排序,再输入到 LLMs 中,几乎所有任务的性能都有所提高,尤其是对于推理任务。因此,在条件允许的情况下,建议尝试使用混合算法+重排检索模式,这可以在 RAG 系统中达到更好的效果。
Top-k 值是 RAG 系统的一个重要参数,它影响了每个查询能够检索到的文档数量。不同的场景可能需要不同的 top-k 值来达到最佳效果。
比如,在文本续写等需要创造性的内容生成任务中,较大的 top-k 值更有利于获取多样化和相关性高的知识,从而生成更丰富、更精确的内容。但是,这也会增加计算的开销。在摘要任务中,适中的 top-k 值可以平衡信息的精确度和召回率。
对于对精确度要求更高的场景,可以使用较小的 top-k 值,而对于对召回率要求更高的场景,可以使用较大的 top-k 值。在单文档 QA 中,仍然推荐使用较大的 top-k 值,这样可以增加答案的确定性。在涉及多文档推理的 QA 任务中,较大的 top-k 值可以帮助检索到两篇相关而又互补的文章,从而提升问答的表现。

目前,GPT-4 仍然是先进的大语言模型。但由于其调用成本较高,在选择大型语言模型时,可以需要考虑一些开源的替代方案。
根据实验结果,Qwen-14B 模型在文本续写和摘要生成两个任务上表现出了与 GPT-4 相似的性能,并能够生成高质量的创造性和摘要性文本。在问答任务中,Baichuan2-13B 模型也显示出了接近 GPT-4 水平的性能,并且能够生成准确且流畅的答案。因此,建议根据不同任务和成本需求,考虑合适的大型语言模型。

总结

作者引入了一个全新的 RAG 评估基准,命名为 CRUD-RAG,用于评估检索增强生成(RAG)系统。该评估基准旨在全面而具体地评估 RAG 系统在处理不同环境时的能力和限制。
作者对文本生成任务进行了独特的分类,分为 CRUD(Create、Read、Update 和 Delete)类型,提供了一种结构化的方法来评估 RAG 系统的性能。为了促进评估,作者为每个 CRUD 类别精心构建了大规模数据集,这些数据集旨在反映 RAG 系统在不同应用场景下的性能。
在实验中,作者的研究深入探讨了 RAG 系统微调过程中所需的复杂平衡,强调了优化检索模型、上下文长度、知识库的构建以及部署基础大语言模型的重要性。作者还提供了一些针对不同场景,优化 RAG 系统的建议,为该领域的研究人员和从业者提供了有价值的指导。
更多阅读
#投 稿 通 道#
 让你的文字被更多人看到 
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:[email protected] 
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
·
·
·
继续阅读
阅读原文