输入“/”快速插入内容

大型语言模型的检索增强生成:综述

2024年7月2日修改
论文地址:
主题与背景
本文是一篇关于大型语言模型(LLMs)中检索增强生成(RAG)的综述。主要作者来自上海智能自主系统研究所在复旦大学计算机科学学院数据科学实验室和同济大学设计与创新学院的研究团队。
文章探讨了RAG的开发范式、组件和评估方法,并展望了未来的研究方向。
主要观点
RAG的定义与优势
RAG通过在回答问题或生成文本前从外部知识库检索相关信息,显著提高了答案的准确性,减少了模型的幻觉,尤其是在知识密集型任务中。
RAG通过引用来源,使用户可以验证答案的准确性,增加对模型输出的信任。
RAG结合了参数化的知识和非参数化的外部知识库,有效地解决了纯参数化模型的局限性。
RAG的框架与进化
文章总结了RAG的三个主要发展范式:朴素RAG、高级RAG和模块化RAG。
详细介绍了RAG的三个核心组件:检索器、生成器和增强方法,以及每个组件中的关键技术。
讨论了如何评估RAG模型的有效性,介绍了两种评估方法,强调了关键评估指标和能力。
RAG的评估与应用
分析了RAG的评估系统、适用场景和其他相关内容。
展望了RAG的未来发展趋势,并总结了本文的主要内容。
总结
文章强调了RAG作为一种重要的大型语言模型实现方法,在提升模型准确率、减少幻觉、提高知识更新效率等方面的重要作用。它通过结合参数化模型和非参数化知识,有效解决了纯参数化模型的局限。同时,文章详细论述了RAG的框架、发展范式、组件技术及评估方法,并展望了未来的研究方向,为读者提供了全面而系统的知识体系。
Introduction
大语言模型(LLM)比以前在自然语言处理(NLP)中看到的任何东西都更强大。
GPT系列模型、LLama系列模型、Gemini和 other大型语言模型展示了 impressive 语言和知识掌握,超越了人类基准水平,在多个评估基准测试中取得了优异的成果。
然而,大型语言模型也存在许多缺陷。它们经常虚构事实[Zhang et al.,2023b],在与特定领域或高度专业的问题打交道时缺乏知识。
例如,当信息超出了模型的训练数据或需要最新的数据时,LLM可能无法提供准确的答案。
在将生成的人工智能部署到实际生产环境时,这种局限性会带来挑战,因为盲目地使用黑盒LLM可能无法满足需求。
传统的神经网络通过微调模型以参数化知识来适应特定的领域或专有信息。虽然这种技术能获得显著的成果,但需要大量的计算资源,会产生高成本,需要专门的技術專長,这使得它在不断变化的資訊 landscape中不太适应。
参数知识和非参数知识发挥不同的作用。参数知识是通过训练LLM并存储在神经网络权重中获得的,代表模型对训练数据的掌握和泛化,为生成回答提供基础。
非参数知识则存在于诸如向量数据库等外部知识源中,未直接编码到模型中,但被视为可更新补充信息。
非参数知识使LLM能够访问和利用最新的或特定领域信息,从而提高回答的准确性和相关性。
纯粹的参数化语言模型(LLM)将它们的世界知识存储在模型的參數中,这些參數來自大量語料庫。然而,这类模型存在局限性。首先,从训练语料庫中难以保留所有知识,特别是不太常见和更具体的知识。其次,由于模型參數無法動態更新,參數知識容易隨著時間而過時。最后,參數增加导致訓練和推理的計算成本增加。
为了解決純粹的參數化模型的局限性,語言模型可以採用半參數化的方法,通過將非參數化的語料庫數據庫與參數化模型整合。這種方法被稱為檢索增強生成(RAG)。
RAG term首先由[Lewis et al.,2020]提出。它结合了一個預訓練的檢索器與一個預訓練的序列到序列模型(生成器),並經過端到端微調以以更易解釋和模組的方式捕捉知識。
在大型模型出现之前,RAG主要集中在對端到端模型的直接優化。
在檢索一侧密集檢索,例如使用基於向量的密集文章檢索(DPR)[Karpukhin et al.,2020],以及在生成側訓練較小模型的常見做法。
Background
本章我们将介绍RAG(文档归约法)的定义,并与其他模型优化技术(如微调)进行比较。RAG的意义随着技术的发展而扩展。在大语言模型时代,RAG的具体定义是指在回答问题或生成文本时,首先从大量的文档中检索相关信息。然后,利用检索到的信息生成响应或文本,从而提高预测质量。RAG方法使开发人员无需重新训练整个大型模型来进行特定任务。相反,他们可以附加一个知识库,提供额外的信息输入,提高模型的准确性。RAG方法特别适用于知识密集型任务。总之,RAG系统包括两个关键阶段:1.利用编码模型根据问题检索相关信息,例如BM25,DPR,Col-BERT等[Robertson et al.,2009,Karpukhin et al.,2020,Khattab和Zaharia,2020]。2.生成阶段:使用检索到的上下文作为条件,生成文本。在优化大型语言模型(LLMs)时,除了RAG之外,还有一个重要的优化技术是微调。RAG相当于给模型提供教科书,让它根据特定查询检索信息。这种方法适用于模型需要回答特定问题或完成特定信息检索任务的情况。但是,RAG不适合教模型理解广泛领域或学习新语言、格式或样式。微调类似于使学生通过大量学习内化知识。这种方法适用于模型需要复制特定结构、样式或格式的情况。微调可以提高非微调模型的性能,使交互更高效。它特别适用于强调基础模型中的现有知识,修改或定制模型的输出,并向模型提供复杂指令。然而,微调不适合添加新知识到模型中,也不适合需要快速迭代的新用例。RAG和微调(FT)之间的具体比较可以在表1中阐述。RAG和微调不是相互排斥的,而是可以互补,在不同层面上增强模型的功能。在某些情况下,将这两种技术组合可以实现最优模型性能。优化RAG和微调的过程可能需要多次迭代才能达到令人满意的结果。
RAG Framework
RAG 研究范式的不断演变
本章主要介绍了 RAG 研究范式的演变,分为 Naive RAG、Advanced RAG 和 Modular RAG 三种类型
早期 RAG 虽然成本低且性能优于原生 LLM,但仍然存在许多不足
直接更新检索知识库可以确保信息保持最新,无需频繁重新训练,适用于动态数据环境
存储静态数据,需要重新训练以更新知识库和数据
擅长利用外部资源,特别适用于文档或其他结构化/非结构化数据库
可以应用于将预训练知识与大型语言模型结合,但可能对于频繁变化的数据源不太实用
无需大量数据处理和处理
依赖于构建高质量的数据集,有限的数据集可能无法带来显著的性能改进
专注于信息检索和集成外部知识,但可能无法完全定制模型行为或写作风格
可以根据特定的语调或术语调整 LLM 行为、写作风格或特定领域知识
答案可以追溯到特定的数据源,提供更高的可解释性和可追溯性,类似于黑盒,不一定清楚模型为何作出某种反应
需要计算资源支持检索策略和相关技术
需要维护外部数据源的集成和更新
高质量训练数据集的准备、微调目标定义和提供相应的计算资源是必要的
数据检索可能带来更高的延迟
在 fine-tuning 后,LLM 可以通过检索响应而无需检索,从而降低延迟
Naive RAG 和 Modular RAG 旨在解决 Naive RAG 中的特定缺陷
Naive RAG 是最早获得广泛关注的基于 ChatGPT 的方法之一
Naive RAG 涉及传统的过程:索引、检索和生成
获取数据源和建立数据索引的管道通常在离线状态下进行
数据索引涉及以下步骤:
1. 数据清理和提取
2. 分块
3. 将不同文件格式(如 PDF、HTML、Word、Markdown 等)转换为纯文本
Retriever
在RAG中,“R”代表检索,在RAG流程中负责从庞大的知识库中检索前几个相关的文档。
构建高质量检索器是一项非易事。
在本章中,我们的讨论围绕三个关键问题进行组织:
1) 如何获得准确的语义表示?
2) 如何将查询和文档的语义空间进行匹配?