大型语言模型(LLMs)的检索增强生成(RAG)
在使用大型语言模型(LLMs)时存在许多挑战,例如领域知识空白、事实准确性问题和幻觉。检索增强生成(RAG)提供了一种解决方案,通过使用数据库等外部知识来增强大型语言模型,从而缓解其中一些问题。RAG 在知识密集型场景或需要持续更新知识的特定领域应用中特别有用。RAG 相较于其他方法的一个关键优势在于,大型语言模型无需针对特定任务应用进行重新训练。最近,RAG 因其在对话代理中的应用而受到欢迎。
在此总结中,我们重点介绍了一篇近期题为《大型语言模型的检索增强生成:一项综述 (在新标签页中打开)》(Gao 等人,2023 年) 的研究的主要发现和实践见解。具体来说,我们重点关注现有的方法、最先进的 RAG、评估、应用以及构成 RAG 系统不同组件(检索、生成和增强技术)的相关技术。
RAG 引言
如此处 (在新标签页中打开)更详细地介绍的,RAG 可以定义为
RAG 接收输入,并根据给定来源(例如维基百科)检索一组相关/支持文档。这些文档被作为上下文与原始输入提示连接起来,然后输入到文本生成器中,生成最终输出。这使得 RAG 适用于事实随时间演变的情况。这非常有用,因为大型语言模型的参数知识是静态的。RAG 允许语言模型绕过重新训练,从而能够访问最新信息,通过基于检索的生成来产生可靠的输出。
简而言之,RAG 中获得的检索到的证据可以作为一种方式,增强大型语言模型响应的准确性、可控性和相关性。这就是为什么 RAG 在处理快速变化环境中的问题时,可以帮助减少幻觉或性能问题。
虽然 RAG 也涉及预训练方法的优化,但当前的方法已主要转向结合 RAG 和强大的微调模型的优势,例如 ChatGPT (在新标签页中打开) 和 Mixtral (在新标签页中打开)。下表显示了 RAG 相关研究的演变。
下方是典型的 RAG 应用工作流程
我们可以按如下方式解释不同的步骤/组件
- 输入:大型语言模型系统响应的问题被称为输入。如果未使用 RAG,大型语言模型将直接用于回答问题。
- 索引:如果使用 RAG,则会先将一系列相关文档分块,生成块的嵌入,并将它们索引到向量存储中。在推理时,查询也会以类似的方式进行嵌入。
- 检索:相关文档通过将查询与索引向量进行比较来获得,也称为“相关文档”。
- 生成:相关文档与原始提示结合作为附加上下文。然后将组合后的文本和提示传递给模型以生成响应,响应作为系统的最终输出呈现给用户。
在提供的示例中,由于缺乏对当前事件的了解,直接使用模型无法回答问题。另一方面,当使用 RAG 时,系统可以提取模型适当回答问题所需的相關信息。
在我们的新 AI 课程中了解更多关于 RAG 和高级提示方法的信息。立即加入! (在新标签页中打开)
使用代码 PROMPTING20 额外享受八折优惠。
RAG 范式
在过去几年中,RAG 系统已从朴素 RAG 演变为高级 RAG 和模块化 RAG。这种演变是为了解决性能、成本和效率方面的一些限制。
朴素 RAG
朴素 RAG 遵循传统的上述索引、检索和生成过程。简而言之,用户输入用于查询相关文档,然后将这些文档与提示结合并传递给模型以生成最终响应。如果应用程序涉及多轮对话交互,可以将对话历史集成到提示中。
朴素 RAG 存在一些局限性,例如低精度(检索到的块未对齐)和低召回率(未能检索所有相关块)。此外,大型语言模型也可能被传递过时信息,这是 RAG 系统最初应旨在解决的主要问题之一。这会导致幻觉问题以及糟糕且不准确的响应。
应用增强时,也可能存在冗余和重复的问题。使用多个检索到的段落时,排序和协调风格/语调也很关键。另一个挑战是确保生成任务不过度依赖增强信息,这可能导致模型仅仅重复检索到的内容。
高级 RAG
高级 RAG 有助于处理朴素 RAG 中存在的问题,例如提高检索质量,这可能涉及优化预检索、检索和后检索过程。
预检索过程涉及优化数据索引,旨在通过五个阶段提高索引数据的质量:增强数据粒度、优化索引结构、添加元数据、对齐优化和混合检索。
检索阶段可以通过优化嵌入模型本身来进一步改进,这直接影响构成上下文的块的质量。可以通过微调嵌入来优化检索相关性,或者使用能更好地捕捉上下文理解的动态嵌入(例如 OpenAI 的 embeddings-ada-02 模型)来实现。
优化后检索侧重于避免上下文窗口限制以及处理噪声或潜在干扰信息。解决这些问题的常用方法是重新排序,这可能包括将相关上下文重新定位到提示的边缘或重新计算查询与相关文本块之间的语义相似度等方法。提示压缩也可能有助于解决这些问题。
模块化 RAG
顾名思义,模块化 RAG 增强了功能模块,例如整合用于相似性检索的搜索模块,并在检索器中应用微调。朴素 RAG 和高级 RAG 都是模块化 RAG 的特例,由固定模块组成。扩展的 RAG 模块包括搜索、内存、融合、路由、预测和任务适配器,这些模块解决不同的问题。这些模块可以根据特定的问题背景进行重新排列。因此,模块化 RAG 受益于更大的多样性和灵活性,您可以根据任务需求添加或替换模块,或调整模块之间的流程。
鉴于构建 RAG 系统的灵活性增加,还提出了其他重要的优化技术来优化 RAG 管线,包括
- 混合搜索探索:这种方法利用关键词搜索和语义搜索等多种搜索技术的组合来检索相关且上下文丰富的信息;这在处理不同查询类型和信息需求时非常有用。
- 递归检索和查询引擎:涉及一个递归检索过程,该过程可能从小的语义块开始,然后检索更大的块以丰富上下文;这有助于平衡效率和上下文丰富的信息。
- StepBack-prompt:一种提示技术 (在新标签页中打开),使大型语言模型能够进行抽象,生成指导推理的概念和原则;将其应用于 RAG 框架时,可以产生更扎实的响应,因为大型语言模型不再局限于特定实例,并在需要时可以进行更广泛的推理。
- 子查询:存在不同的查询策略,例如树查询或块的顺序查询,可用于不同的场景。LlamaIndex 提供了一种子问题查询引擎 (在新标签页中打开),可以将一个查询分解为几个使用不同相关数据源的问题。
- 假设文档嵌入:HyDE (在新标签页中打开) 生成对查询的假设答案,对其进行嵌入,并用它来检索与假设答案相似的文档,而不是直接使用查询。
RAG 框架
在本节中,我们总结了 RAG 系统组件的关键发展,包括检索、生成和增强。
检索
检索是 RAG 中处理从检索器中检索高度相关上下文的组件。检索器可以通过多种方式增强,包括
增强语义表示
此过程涉及直接改进为检索器提供动力的语义表示。以下是一些注意事项
- 分块:一个重要的步骤是选择合适的分块策略,这取决于您正在处理的内容以及您正在为其生成响应的应用程序。不同的模型在不同的块大小上也会表现出不同的优势。句子 Transformer 模型在单个句子上的表现更好,而 text-embedding-ada-002 模型在包含 256 或 512 个 token 的块上表现更好。其他需要考虑的方面包括用户问题的长度、应用程序和 token 限制,但通常会尝试不同的分块策略以帮助优化 RAG 系统中的检索。
- 微调嵌入模型:确定有效的分块策略后,如果您正在处理专业领域,可能需要微调嵌入模型。否则,用户查询在您的应用程序中可能会被完全误解。您可以在广泛的领域知识(即领域知识微调)和特定的下游任务上进行微调。由 BAAI 开发的 BGE-large-EN (在新标签页中打开) 是一个值得注意的嵌入模型,可以进行微调以优化检索相关性。
对齐查询和文档
此过程处理将用户查询与语义空间中的文档对齐。当用户查询可能缺乏语义信息或包含不精确的措辞时,可能需要这样做。以下是一些方法
- 查询重写:侧重于使用各种技术重写查询,例如 Query2Doc (在新标签页中打开)、ITER-RETGEN (在新标签页中打开) 和 HyDE。
- 嵌入转换:优化查询嵌入的表示,并将其对齐到与任务更紧密相关的潜在空间。
对齐检索器和大型语言模型
此过程处理将检索器输出与大型语言模型的偏好对齐。
- 微调检索器:使用大型语言模型的反馈信号来改进检索模型。示例包括增强适应检索器 (AAR (在新标签页中打开))、REPLUG (在新标签页中打开) 和 UPRISE (在新标签页中打开) 等等。
- 适配器:整合外部适配器以帮助进行对齐过程。示例包括 PRCA (在新标签页中打开)、RECOMP (在新标签页中打开) 和 PKG (在新标签页中打开)。
生成
RAG 系统中的生成器负责将检索到的信息转换为连贯的文本,形成模型的最终输出。此过程涉及多样化的输入数据,有时需要努力改进语言模型对来自查询和文档的输入数据的适应性。这可以通过后检索处理和微调来解决
- 冻结大型语言模型的后检索:后检索处理不改变大型语言模型,而是通过信息压缩和结果重新排序等操作来增强检索结果的质量。信息压缩有助于减少噪声、解决大型语言模型的上下文长度限制并增强生成效果。重新排序旨在对文档进行重新排序,以优先将最相关的项目放在顶部。
- 微调大型语言模型以用于 RAG:为了改进 RAG 系统,可以进一步优化或微调生成器,以确保生成的文本自然,并有效利用检索到的文档。
增强
增强涉及将检索到的段落中的上下文与当前生成任务有效整合的过程。在进一步讨论增强过程、增强阶段和增强数据之前,这里是 RAG 核心组件的分类法
检索增强可以应用于许多不同的阶段,例如预训练、微调和推理。
-
增强阶段:RETRO (在新标签页中打开) 是一个利用检索增强从头开始进行大规模预训练的系统示例;它使用一个构建在外部知识之上的额外编码器。微调也可以与 RAG 结合,以帮助开发和提高 RAG 系统的有效性。在推理阶段,应用了许多技术来有效整合检索到的内容,以满足特定的任务需求并进一步改进 RAG 过程。
-
增强来源:RAG 模型的有效性很大程度上受增强数据来源选择的影响。数据可分为非结构化数据、结构化数据和大型语言模型生成的数据。
-
增强过程:对于许多问题(例如多步推理),单次检索是不够的,因此提出了一些方法
- 迭代检索使模型能够执行多次检索循环,以增强信息的深度和相关性。利用这种方法的著名方法包括 RETRO (在新标签页中打开) 和 GAR-meets-RAG (在新标签页中打开)。
- 递归检索将一个检索步骤的输出作为另一个检索步骤的输入进行递归迭代;这使得对于复杂的多步查询(例如学术研究和法律案例分析),能够更深入地挖掘相关信息。利用此方法的著名方法包括 IRCoT (在新标签页中打开) 和 Tree of Clarifications (在新标签页中打开)。
- 自适应检索通过确定最佳检索时间和内容,根据特定需求调整检索过程。利用此方法的著名方法包括 FLARE (在新标签页中打开) 和 Self-RAG (在新标签页中打开)。
下图详细描绘了 RAG 研究的不同增强方面,包括增强阶段、来源和过程。
RAG 与微调
关于 RAG 和微调之间的区别以及各自适用的场景,存在许多公开讨论。这两个领域的研究表明,RAG 对于整合新知识很有用,而微调可以通过改进内部知识、输出格式和教授复杂的指令遵循来提高模型性能和效率。这些方法并非互斥,可以在迭代过程中相互补充,旨在改进大型语言模型在需要访问快速演进的知识和遵循特定格式、语调和风格的定制响应的复杂知识密集型和可扩展应用中的使用。此外,提示工程还可以通过利用模型固有的能力来帮助优化结果。下图显示了 RAG 与其他模型优化方法相比的不同特性
下面是来自综述论文的表格,比较了 RAG 和微调模型之间的特性
RAG 评估
类似于衡量大型语言模型在不同方面的性能,评估在理解和优化 RAG 模型在各种应用场景中的性能方面起着关键作用。传统上,RAG 系统是根据下游任务的性能,使用 F1 和 EM 等特定任务指标进行评估的。RaLLe (在新标签页中打开) 是一个用于评估知识密集型任务的检索增强大型语言模型的框架的著名示例。
RAG 评估目标是针对检索和生成确定的,其目标是评估检索到的上下文的质量以及生成内容的质量。为了评估检索质量,使用推荐系统和信息检索等其他知识密集型领域中使用的指标,例如 NDCG 和命中率。为了评估生成质量,如果是未标注的内容,可以评估相关性和有害性等方面,对于已标注的内容,则评估准确性。总的来说,RAG 评估可以采用手动或自动评估方法。
评估 RAG 框架侧重于三个主要质量得分和四种能力。质量得分包括衡量上下文相关性(即检索到的上下文的精确度和特异性)、答案忠实性(即答案对检索到的上下文的忠实性)和答案相关性(即答案与提出的问题的相关性)。此外,还有四种能力有助于衡量 RAG 系统的适应性和效率:噪声鲁棒性、负面拒绝、信息集成和反事实鲁棒性。以下是用于评估 RAG 系统不同方面的指标摘要
使用了一些基准测试来评估 RAG 模型,例如 RGB (在新标签页中打开) 和 RECALL (在新标签页中打开)。已经开发了许多工具来自动化 RAG 系统评估过程,例如 RAGAS (在新标签页中打开)、ARES (在新标签页中打开) 和 TruLens (在新标签页中打开)。一些系统依靠大型语言模型来确定上述定义的一些质量得分。
RAG 的挑战与未来
在此概述中,我们讨论了 RAG 研究的几个研究方面以及增强 RAG 系统检索、增强和生成的不同方法。以下是 Gao 等人,2023 年 (在新标签页中打开) 在我们继续开发和改进 RAG 系统时强调的几个挑战
- 上下文长度:大型语言模型不断扩展上下文窗口大小,这对如何调整 RAG 以确保捕获高度相关和重要的上下文提出了挑战。
- 鲁棒性:处理反事实和对抗性信息对于衡量和改进 RAG 至关重要。
- 混合方法:目前正在进行研究,以更好地了解如何最佳地优化 RAG 和微调模型的使用。
- 扩展大型语言模型的作用:增加大型语言模型的作用和能力,以进一步增强 RAG 系统,这是一个备受关注的领域。
- 缩放定律:对大型语言模型缩放定律及其如何应用于 RAG 系统的研究尚未得到充分理解。
- 生产级 RAG:生产级 RAG 系统需要在性能、效率、数据安全、隐私等方面达到卓越的工程水平。
- 多模态 RAG:虽然围绕 RAG 系统进行了大量研究,但它们主要集中在基于文本的任务。将模态扩展到 RAG 系统以支持解决图像、音频和视频、代码等更多领域问题的兴趣正在增加。
- 评估:构建基于 RAG 的复杂应用程序的兴趣需要特别关注开发细致的指标和评估工具,以便更可靠地评估上下文相关性、创造力、内容多样性、事实准确性等不同方面。此外,还需要更好的 RAG 可解释性研究和工具。
RAG 工具
一些流行的用于构建 RAG 系统的综合工具包括 LangChain (在新标签页中打开)、LlamaIndex (在新标签页中打开) 和 DSPy (在新标签页中打开)。还有一系列用于不同目的的专用工具,例如提供低代码解决方案来构建 RAG 应用的 Flowise AI (在新标签页中打开)。其他值得注意的技术包括 HayStack (在新标签页中打开)、Meltano (在新标签页中打开)、Cohere Coral (在新标签页中打开) 等等。软件和云服务提供商也包含了以 RAG 为中心的服务。例如,Weaviate 的 Verba 对于构建个人助理应用非常有用,亚马逊的 Kendra 提供智能企业搜索服务。
结论
总之,RAG 系统发展迅速,包括开发了更高级的范式,这些范式实现了定制化,并进一步提高了 RAG 在广泛领域中的性能和实用性。对 RAG 应用的巨大需求加速了改进 RAG 系统不同组件的方法的发展。从混合方法到自检索,这些都是现代 RAG 模型目前正在探索的一些研究领域。对更好的评估工具和指标的需求也在增加。下图回顾了 RAG 生态系统、增强 RAG 的技术、挑战以及本概述中涵盖的其他相关方面
RAG 研究见解
以下是一系列研究论文,重点介绍了 RAG 的关键见解和最新进展。
见解 | 参考文献 | 日期 |
---|---|---|
展示了如何通过训练检索增强模拟器来使用检索增强蒸馏语言模型助手 | KAUCUS: Knowledge Augmented User Simulators for Training Language Model Assistants (在新标签页中打开) | 2024 年 3 月 |
提出了纠正性检索增强生成(CRAG),以提高 RAG 系统中生成的鲁棒性。核心思想是为检索器实现自纠正组件,并改进检索文档在增强生成中的利用。检索评估器有助于评估给定查询下检索文档的整体质量。使用网络搜索和优化的知识利用操作可以提高自动自纠正和检索文档的有效利用。 | Corrective Retrieval Augmented Generation (在新标签页中打开) | 2024 年 1 月 |
递归地嵌入、聚类和总结文本块,自下而上构建具有不同摘要级别的树。在推理时,所提出的 RAPTOR 模型从树中检索,整合长文档中不同抽象级别的信息。 | RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval (在新标签页中打开) | 2024 年 1 月 |
一个通用的程序,通过语言模型和检索器之间的多步交互,有效解决多标签分类问题。 | In-Context Learning for Extreme Multi-Label Classification (在新标签页中打开) | 2024 年 1 月 |
从资源丰富的语言中提取语义相似的提示,以提高多语言预训练语言模型在各种任务上的零样本性能。 | From Classification to Generation: Insights into Crosslingual Retrieval Augmented ICL (在新标签页中打开) | 2023 年 11 月 |
提高了 RAG 在面对嘈杂、不相关文档和处理未知场景时的鲁棒性。它为检索到的文档生成顺序阅读笔记,从而能够彻底评估它们与给定问题的相关性,并整合信息以准备最终答案。 | Chain-of-Note: Enhancing Robustness in Retrieval-Augmented Language Models (在新标签页中打开) | 2023 年 11 月 |
消除可能不会对读者答案生成过程贡献重要信息的 token。将运行时减少了高达 62.2%,性能仅下降 2%。 | Optimizing Retrieval-augmented Reader Models via Token Elimination (在新标签页中打开) | 2023 年 10 月 |
通过指令微调一个小型语言模型验证器来验证知识增强型语言模型的输出和知识,该验证器是独立的。这有助于解决模型未能检索到与给定查询相关的知识,或者模型未能忠实反映检索到的知识在生成文本中的情况。 | Knowledge-Augmented Language Model Verification (在新标签页中打开) | 2023 年 10 月 |
用于分析不同大型语言模型在 RAG 所需的 4 种基本能力方面的性能的基准测试,包括噪声鲁棒性、负面拒绝、信息集成和反事实鲁棒性。 | Benchmarking Large Language Models in Retrieval-Augmented Generation (在新标签页中打开) | 2023 年 10 月 |
引入了自反思检索增强生成(Self-RAG)框架,通过检索和自反思增强语言模型的质量和事实准确性。它利用语言模型自适应地检索段落,并使用反思 token 生成和反思检索到的段落及其自身的生成。 | Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection (在新标签页中打开) | 2023 年 10 月 |
通过迭代改进检索(通过生成增强检索 (GAR))和改进重写(通过 RAG)来改进零样本信息检索。重写-检索阶段提高了召回率,而重新排序阶段提高了精确率。 | GAR-meets-RAG Paradigm for Zero-Shot Information Retrieval (在新标签页中打开) | 2023 年 10 月 |
使用一个基础的 43B GPT 模型预训练一个 48B 的检索模型,并从 1.2 万亿个 token 中检索。该模型进一步通过指令微调,在各种零样本任务上展现出比指令微调的 GPT 显著的改进。 | InstructRetro: Instruction Tuning post Retrieval-Augmented Pretraining (在新标签页中打开) | 2023 年 10 月 |
通过两个不同的微调步骤为大型语言模型配备检索能力:一个更新预训练的语言模型以更好地使用检索到的信息,另一个更新检索器以返回语言模型更喜欢的更相关结果。通过在需要知识利用和上下文意识的任务上进行微调,每个阶段都能产生性能改进。 | RA-DIT: Retrieval-Augmented Dual Instruction Tuning (在新标签页中打开) | 2023 年 10 月 |
一种使 RAG 对不相关内容具有鲁棒性的方法。它自动生成数据来微调语言模型,使其能够正确利用检索到的段落,在训练时使用相关和不相关的上下文混合。 | Making Retrieval-Augmented Language Models Robust to Irrelevant Context (在新标签页中打开) | 2023 年 10 月 |
发现使用简单检索增强的 4K 上下文窗口大型语言模型在生成时的性能与通过位置插值在长上下文任务上微调的 16K 上下文窗口大型语言模型相当。 | Retrieval meets Long Context Large Language Models (在新标签页中打开) | 2023 年 10 月 |
在进行上下文整合之前,将检索到的文档压缩成文本摘要,这降低了计算成本,并减轻了语言模型在长检索文档中识别相关信息的负担。 | RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation (在新标签页中打开) | 2023 年 10 月 |
一个迭代的检索-生成协作框架,利用参数化和非参数化知识,并通过检索-生成交互帮助找到正确的推理路径。适用于需要多步推理的任务,并全面提高了大型语言模型的推理能力。 | Retrieval-Generation Synergy Augmented Large Language Models (在新标签页中打开) | 2023 年 10 月 |
提出了歧义澄清树(ToC),这是一个框架,通过利用外部知识进行少样本提示,递归地构建歧义问题的消歧树。然后,它使用该树生成长篇答案。 | Tree of Clarifications: Answering Ambiguous Questions with Retrieval-Augmented Large Language Models (在新标签页中打开) | 2023 年 10 月 |
一种方法,允许大型语言模型引用其先前遇到的问题,并在遇到新问题时自适应地调用外部资源。 | Self-Knowledge Guided Retrieval Augmentation for Large Language Models (在新标签页中打开) | 2023 年 10 月 |
一套指标,可用于评估不同维度(即检索系统识别相关和聚焦上下文段落的能力、大型语言模型以忠实方式利用这些段落的能力,或生成本身的质量),而无需依赖人工标注的真实数据。 | RAGAS: Automated Evaluation of Retrieval Augmented Generation (在新标签页中打开) | 2023 年 9 月 |
提出了一种先生成后读取 (GenRead) 方法,该方法首先提示大型语言模型根据给定问题生成上下文文档,然后读取生成的文档以产生最终答案。 | Generate rather than Retrieve: Large Language Models are Strong Context Generators (在新标签页中打开) | 2023 年 9 月 |
演示了如何在 RAG 系统中利用 DiversityRanker 和 LostInTheMiddleRanker 等排序器来选择和利用信息,从而优化大型语言模型上下文窗口的利用。 | Enhancing RAG Pipelines in Haystack: Introducing DiversityRanker and LostInTheMiddleRanker (在新标签页中打开) | 2023 年 8 月 |
将大型语言模型与各种知识库 (KB) 连接起来,从而促进知识的检索和存储。检索过程采用思维程序提示,以代码格式生成知识库的搜索语言,其中包含预定义的知识库操作函数。它还提供将知识存储到个性化知识库的能力,以满足个体用户的需求。 | KnowledGPT: Enhancing Large Language Models with Retrieval and Storage Access on Knowledge Bases (在新标签页中打开) | 2023 年 8 月 |
提出了一个结合了检索增强型掩码语言模型和前缀语言模型的模型。然后,引入了上下文融合学习,通过使模型能够利用更多上下文示例而无需额外训练来增强少样本性能。 | RAVEN: In-Context Learning with Retrieval Augmented Encoder-Decoder Language Models (在新标签页中打开) | 2023 年 8 月 |
RaLLe 是一个开源框架,用于开发、评估和优化知识密集型任务的 RAG 系统。 | RaLLe: A Framework for Developing and Evaluating Retrieval-Augmented Large Language Models (在新标签页中打开) | 2023 年 8 月 |
发现当相关信息的位置发生变化时,大型语言模型的性能会显著下降,这表明大型语言模型无法鲁鲁棒地利用长输入上下文中的信息。 | Lost in the Middle: How Language Models Use Long Contexts (在新标签页中打开) | 2023 年 7 月 |
以迭代方式协同检索和生成。模型输出用于显示完成任务所需的内容,为检索更相关的知识提供信息丰富的上下文,这反过来又有助于在下一次迭代中生成更好的输出。 | Enhancing Retrieval-Augmented Large Language Models with Iterative Retrieval-Generation Synergy (在新标签页中打开) | 2023 年 5 月 |
提供了主动 RAG 的广义视图,即在生成过程中主动决定何时检索和检索什么的方法。然后,提出了前瞻性主动检索增强生成(FLARE),该方法迭代地使用对即将出现的句子的预测来预测未来的内容,然后将该预测用作查询,以检索相关文档,并在句子包含低置信度 token 时重新生成该句子。 | Active Retrieval Augmented Generation (在新标签页中打开) | 2023 年 5 月 |
引入了一种通用检索插件,该插件利用通用检索器来增强目标语言模型,这些目标语言模型可能事先未知或无法联合微调。 | Augmentation-Adapted Retriever Improves Generalization of Language Models as Generic Plug-In (在新标签页中打开) | 2023 年 5 月 |
通过两种预训练策略改进结构化数据上的密集检索。首先,它利用结构化数据和非结构化数据之间的自然对齐进行结构感知预训练。然后,它实现掩码实体预测,用于掩码实体预测和捕获结构语义。 | Structure-Aware Language Model Pretraining Improves Dense Retrieval on Structured Data (在新标签页中打开) | 2023 年 5 月 |
动态整合来自多个领域异构来源的 grounding 信息,以增强大型语言模型的事实正确性。引入了自适应查询生成器来处理针对不同知识源量身定制的查询。该框架逐步纠正推理过程,以确保先前推理中的不准确性不会传播到后续步骤。 | Chain-of-Knowledge: Grounding Large Language Models via Dynamic Knowledge Adapting over Heterogeneous Sources (在新标签页中打开) | 2023 年 5 月 |
一个框架,用于生成与知识图谱 (KG) 相关的上下文和基于知识的对话。它首先从知识图谱中检索相关的子图,然后通过扰动词嵌入(以检索到的子图为条件)来强制事实之间的一致性。然后,它利用对比学习来确保生成的文本与检索到的子图高度相似。 | Knowledge Graph-Augmented Language Models for Knowledge-Grounded Dialogue Generation (在新标签页中打开) | 2023 年 5 月 |
采用一个小型语言模型作为可训练的重写器,以适应黑盒大型语言模型读者。该重写器使用大型语言模型读者的反馈通过强化学习进行训练。形成了一个新的框架,称为重写-检索-读取,其重点是优化查询。 | Query Rewriting for Retrieval-Augmented Large Language Models (在新标签页中打开) | 2023 年 5 月 |
迭代使用检索增强型生成器创建无界内存池,并使用内存选择器选择一个输出作为后续生成轮次的内存。这使得模型能够利用自身的输出(称为自内存)来改进生成。 | Lift Yourself Up: Retrieval-augmented Text Generation with Self Memory (在新标签页中打开) | 2023 年 5 月 |
为大型语言模型配备了知识引导模块,使其能够在不改变参数的情况下访问相关知识。它提高了“黑盒”大型语言模型在一系列需要事实(+7.9%)、表格(+11.9%)、医学(+3.0%)和多模态(+8.1%)知识的领域知识密集型任务上的性能。 | Augmented Large Language Models with Parametric Knowledge Guiding (在新标签页中打开) | 2023 年 5 月 |
为大型语言模型配备了通用的读写内存单元,使其能够根据任务需求从文本中提取、存储和回忆知识。 | RET-LLM: Towards a General Read-Write Memory for Large Language Models (在新标签页中打开) | 2023 年 5 月 |
采用与任务无关的检索器构建共享静态索引并高效选择候选证据。然后,设计一个提示引导的重排器,根据任务特异性相关性为读者对最近的证据进行重排。 | Prompt-Guided Retrieval Augmentation for Non-Knowledge-Intensive Tasks (在新标签页中打开) | 2023 年 5 月 |
提出了 UPRISE(用于改进零样本评估的通用提示检索),它调整了一个轻量级且通用的检索器,该检索器自动检索给定零样本任务输入的提示。 | UPRISE: Universal Prompt Retrieval for Improving Zero-Shot Evaluation (在新标签页中打开) | 2023 年 3 月 |
一种自适应的先过滤后重排范式,结合了小型语言模型(充当过滤器)和大型语言模型(充当重排器)的优势。 | Large Language Model Is Not a Good Few-shot Information Extractor, but a Good Reranker for Hard Samples! (在新标签页中打开) | 2023 年 3 月 |
零样本指令遵循型大型语言模型生成一个捕获相关性模式的假设文档。然后,Contriever 将文档编码成嵌入向量,该向量用于识别语料库嵌入空间中的近邻,在此基础上通过向量相似度检索相似的真实文档。 | Precise Zero-Shot Dense Retrieval without Relevance Labels (在新标签页中打开) | 2022 年 12 月 |
提出了 Demonstrate-Search-Predict (DSP),一个构建高级程序的框架,该框架引导管线感知的演示、搜索相关段落并生成基于事实的预测,系统地将问题分解为可以更可靠处理的小转换。 | Demonstrate-Search-Predict: Composing retrieval and language models for knowledge-intensive NLP (在新标签页中打开) | 2022 年 12 月 |
一种用于多步问答的方法,该方法将检索与思维链中的步骤交错进行,用思维链引导检索,并反过来使用检索结果改进思维链。这有助于提高在知识密集型多步问题上的性能。 | Interleaving Retrieval with Chain-of-Thought Reasoning for Knowledge-Intensive Multi-Step Questions (在新标签页中打开) | 2022 年 12 月 |
表明检索增强可以减少对相关预训练信息的依赖,这使得 RAG 成为一种有前途的捕获长尾的方法。 | Large Language Models Struggle to Learn Long-Tail Knowledge (在新标签页中打开) | 2022 年 11 月 |
通过采样从大型语言模型自身的记忆中背诵一个或多个相关段落,然后产生最终答案。 | Recitation-Augmented Language Models (在新标签页中打开) | 2022 年 10 月 |
利用大型语言模型作为少样本查询生成器,并根据生成的数据创建特定任务的检索器。 | Promptagator: Few-shot Dense Retrieval From 8 Examples (在新标签页中打开) | 2022 年 9 月 |
介绍了 Atlas,一个预训练的检索增强语言模型,能够在极少的训练示例下学习知识密集型任务。 | Atlas: Few-shot Learning with Retrieval Augmented Language Models (在新标签页中打开) | 2022 年 8 月 |
从训练数据中检索,以在多个自然语言生成(NLG)和自然语言理解(NLU)任务上获得增益。 | Training Data is More Valuable than You Think: A Simple and Effective Method by Retrieving from Training Data (在新标签页中打开) | 2022 年 3 月 |
通过保存连续数据存储条目之间的指针并将这些条目聚类到状态来近似数据存储搜索。产生了一个加权有限自动机,在推理时,它有助于在不损害困惑度的情况下,相对于 kNN-LM 节省高达 83% 的最近邻搜索。 | Neuro-Symbolic Language Modeling with Automaton-augmented Retrieval (在新标签页中打开) | 2022 年 1 月 |
通过基于与前导 token 的局部相似性,从大型语料库中检索到的文档块进行条件化,改进了自回归语言模型。它通过从一个 2 万亿 token 的数据库中检索来增强模型。 | Improving language models by retrieving from trillions of tokens (在新标签页中打开) | 2021 年 12 月 |
一种新颖的零样本槽填充方法,通过硬负样本和鲁棒的训练程序扩展了密集段落检索,用于检索增强生成模型。 | Robust Retrieval Augmented Generation for Zero-shot Slot Filling (在新标签页中打开) | 2021 年 8 月 |
介绍了 RAG 模型,其中参数记忆是一个预训练的 seq2seq 模型,非参数记忆是维基百科的密集向量索引,通过预训练的神经检索器访问。它比较了两种 RAG 公式,一种是在整个生成序列中以相同的检索段落为条件,另一种是对每个 token 使用不同的段落。 | Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (在新标签页中打开) | 2020 年 5 月 |
表明检索可以单独使用密集表示来实现,其中嵌入通过简单的双编码器框架从少量问题和段落中学习。 | Dense Passage Retrieval for Open-Domain Question Answering (在新标签页中打开) | 2020 年 4 月 |
参考文献
- KAUCUS: Knowledge Augmented User Simulators for Training Language Model Assistants (在新标签页中打开)
- A Survey on Hallucination in Large Language Models: Principles,Taxonomy, Challenges, and Open Questions (在新标签页中打开)
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (在新标签页中打开)
- Retrieval-augmented multimodal language modeling (在新标签页中打开)
- In-Context Retrieval-Augmented Language Models (在新标签页中打开)
- Precise Zero-Shot Dense Retrieval without Relevance Labels (在新标签页中打开)
- Shall we pretrain autoregressive language models with retrieval? a comprehensive study. (在新标签页中打开)
- REPLUG: Retrieval-Augmented Black-Box Language Models (在新标签页中打开)
- Query2Doc (在新标签页中打开)
- ITER-RETGEN (在新标签页中打开)
- A Survey of Techniques for Maximizing LLM Performance (在新标签页中打开)
- HyDE (在新标签页中打开)
- Advanced RAG Techniques: an Illustrated Overview (在新标签页中打开)
- Best Practices for LLM Evaluation of RAG Applications (在新标签页中打开)
- Building Production-Ready RAG Applications (在新标签页中打开)
- Evaluating RAG Part I: How to Evaluate Document Retrieval (在新标签页中打开)
- Retrieval Augmented Generation meets Reciprocal Rank Fusion and Generated Queries (在新标签页中打开)