Retrieval-augmented generation (RAG) — 检索增强生成
Retrieval-Augmented Generation (RAG),即检索增强生成,是一种人工智能方法。该方法通过为生成式语言模型(LLM)提供外部信息源的访问权限,来提高其回答的准确性和可靠性。换言之,模型在生成答案之前会执行相关数据检索(例如,在文档库、网站或数据库中),并利用检索到的信息来构建回答[1][2]。这种方法通过来自最新信息源的“知识补充”,有助于克服 LLM 本身因“记忆”容量有限和信息过时而受到的限制[3]。RAG 系统能够在生成的回答中引用具体的文档(例如,以脚注形式),这提高了透明度,并允许用户核实事实[1]。因此,出现幻觉(即模型自信地提供虚假信息)的风险得以降低[1][3]。RAG 将 LLM 的知识库扩展到几乎无限的规模,并使模型能够使用最新的数据而无需重新训练[4]。
方法的起源与发展
将信息检索与自动答案生成相结合的想法,早在现代 LLM 出现之前就已存在。早在 20 世纪 70 年代,就有人尝试创建问答(question-answering)系统,这些系统会根据给定的问题在文本数据库中寻找答案[1]。到了 90 年代,网络服务 Ask Jeeves 的出现普及了用自然语言搜索答案的方式。2011年,IBM Watson 系统在电视问答节目 Jeopardy! 中战胜人类选手,展示了 AI 的巨大潜力[1]。
现代阶段的发展与神经网络语言模型的引入有关:Retrieval-Augmented Generation 作为一个独立的方法,由 Patrick Lewis 领导的 Facebook AI Research、伦敦大学学院等机构的一组研究人员于 2020 年提出[1]。在他们被 NeurIPS 2020 接收的论文中,描述了一种 RAG 模型——这是一种生成式 seq2seq 模型(例如 BART),它对外部“非参数化”知识库具有可微访问(differentiable access)能力[5]。作者使用整个英文维基百科作为外部知识库,将其表示为一个向量索引(约 2100 万个文本片段),并通过神经算法Dense Passage Retrieval进行搜索[5]。对于输入的查询,RAG 模型从索引中提取最相关的片段,并将其添加到生成答案的上下文中。这一机制使其在开放知识库任务(如 Natural Questions、WebQuestions 等测试)上取得了新的业界顶尖(state-of-the-art)成果[2]。研究指出,由于 RAG 模型能够综合来自多个来源的信息,其回答比以往的生成式方法更具针对性和事实准确性[2]。不久之后,Facebook 开源了 RAG 的源代码:该模型被集成到 HuggingFace Transformers 库及其相关的数据集中,使得开发者可以轻松地在自己的项目中使用 RAG[2]。自 2020 年以来,RAG 方法迅速普及——据其作者称,尽管缩写听起来不雅,但该方法得到了广泛应用,催生了数百篇科学论文,并成为众多商业服务的基础[1]。
RAG 的工作原理
检索增强生成的基本流程:检索模块(左)从知识库中提取相关文档,然后生成模型(右)根据用户查询和检索到的信息生成答案[6]。这种方法使 LLM 在生成回答时能够依赖于最新的外部数据。图中展示了用户查询如何被转换为向量,并用于搜索相似的文本片段;然后这些片段被整合到模型的上下文中,从而“扩展”其知识并提高回答的准确性。
一个 RAG 系统通常由两个主要部分组成:检索模块(retriever)和生成模块(generator)[6]。在准备阶段,会构建知识库的向量索引:所有文档(文本)被分割成片段,并通过嵌入(embedding)模型转换为数值向量,这些向量被存储在专门的数据库中以备后续检索[6]。当收到用户查询时,同一个嵌入模型将查询编码为向量;接着,在向量空间中进行最近邻搜索,从知识索引中选出 top K 个最相似的片段(例如,K = 5)[6]。这些片段被视为外部上下文,包含了与查询主题相关的可能事实。
在下一阶段,已构建的上下文被生成模型使用。原始问题连同检索到的文本片段一起被输入到 LLM(例如,seq2seq 类型的 Transformer 或指令导向模型)中,以生成最终答案[2]。这样,语言模型不仅依赖于其已学到的(参数化)知识,还依赖于提供给它的外部数据。在 RAG 的最初实现中,生成器是预训练的 BART 模型,而外部“记忆”则是由 DPR 方法索引的维基百科集合[5]。
知识融合方法
RAG 的一个重要特点是其结合多个检索文档信息的方式。与简单地拼接所有文本不同,RAG 采用了一种称为“后期融合”(late fusion)的方法——生成模型并行处理 K 个检索到的片段,为每个片段生成一个带有置信度评分的假设性答案,然后将这些备选方案聚合成最终输出[2]。这种方法使得 RAG 即使在没有任何单个来源包含问题直接且完整答案的情况下,也能综合生成回答。例如,如果所需信息分散在不同的文章中,模型能够将来自多个文档的“线索”整合成一个统一的答案[2](值得注意的是,增加使用的文档数量通常会提高回答的完整性,但代价是文本的连贯性会略有下降[7])。
实现变体
在 2020 年的原始论文中,提出了 RAG 架构的两种变体[6]。在RAG-Sequence模式下,生成模型接收一组固定的检索文档,并使用它们来一次性生成整个答案。而在RAG-Token模式下,则允许动态更新:在生成每个 token 的步骤中,模型可以重新执行检索并加载额外的文本片段,以 уточнить答案。两种方法都表现出相似的高质量水平;RAG-Sequence 更简单、更快,而 RAG-Token 理论上允许在长答案中考虑更多不同的信息[6]。
RAG 的优势
- 时效性与事实准确性。通过连接外部数据,LLM 能够提供更准确、更有根据的回答,这些回答基于真实信息,而不仅仅是模型的参数。这显著降低了模型回答中出现过时或虚构信息的风险[3][1]。与知识“快照”固定的模型不同,RAG 甚至可以回答关于模型训练结束后发生的事件或事实的问题——因为它能访问最新的数据源[4]。
- 透明度与用户信任。RAG 系统能够提供作为回答基础的信息来源链接(例如,指向文章、报告或数据库)[1]。实际上,模型的回答就像一篇带有脚注的学术论文,这使得用户可以核实每个事实的真实性。引用原始来源可以提高用户的信任度,并便于对所获信息进行验证。
- 特定领域的专业化。检索增强技术使得在不改变语言模型本身的情况下,相对容易地使模型适应狭窄的知识领域。为此,只需为 LLM 提供一个关于所需主题的专业知识库——无论是医学文章、法律文件还是公司的技术手册。模型在参数上保持通用性的同时,开始扮演该领域的专家角色,因为它从精选的数据集中获取事实[4][8]。例如,一个基于 RAG 的法律助手可以将其搜索范围限制在一个司法管辖区的法律文库(特定国家的法律),从而确保回答符合该国的法律[8]。
- 灵活性与知识可更新性。在传统模型中,要添加新知识或纠正错误事实,需要在一个扩展的数据集上进行重新训练(fine-tuning),这既耗时又耗费资源。RAG 解决了这个问题:要更新模型的知识,只需更新外部数据库或连接额外的来源,模型就会立即开始使用新信息[2]。这使得维护系统的时效性变得容易——实际上,数据甚至可以在模型不中断工作的情况下实时“热替换”[1]。
- 效率与资源节约。RAG 方法通常比训练那些试图在其参数中包含所有信息的超大型模型更为实用。通过集成检索,可以使用一个中等规模的模型达到相当的效果,而无需试图在神经网络内部记住所有事实[6]。此外,实现 RAG 管道相对简单:有现成的工具(框架、库),开发者已经证明,一个基本的 RAG 原型只需几行代码即可构建[1]。因此,RAG 降低了实施 AI 的总成本:无需为每个任务训练一个新模型,只需配置检索机制并提供合适的数据即可。
RAG 的问题与局限性
尽管有明显的优势,检索增强生成继承了检索组件和语言模型本身的局限性[9]。以下是 RAG 系统固有的关键问题:
- 对检索质量的依赖。最终答案的正确性完全取决于检索到的数据的相关性和可靠性。如果检索模块返回了与问题无关或包含错误的文档,生成模型无法“纠正”这些事实——它将基于这些信息生成回答[8]。因此,外部知识库的质量和时效性直接决定了 RAG 的准确性。需要定期更新索引并调整排序算法,以保持文档检索的相关性。
- 高复杂性与资源密集性。一个 RAG 系统不仅需要 LLM 本身,还需要检索基础设施:存储和更新大型数据库、索引、执行查询的时间。所有这些都增加了计算成本,并可能降低与单独使用语言模型相比的响应速度[8]。在最坏的情况下,检索阶段的延迟或处理大量数据会使系统变慢。在实践中,必须在回答质量和性能之间取得平衡,通过优化管道(例如,限制知识库大小或检索深度)来将响应时间保持在可接受的范围内。
- 对数据和维护的要求。为了有效运作,RAG 需要高质量、结构化且可访问的外部数据。如果外部知识库组织不善或包含噪声,检索模型可能难以找到有用的信息[8]。此外,所需数据并非总是开放或廉价的:公司必须创建并维护自己的知识库(knowledge bases)。这带来了额外的成本,并需要努力保持数据的最新状态(例如,添加新文档、清理过时信息)。RAG 的一个弱点是它依赖于知识库的持续维护。
- 无法消除某些 LLM 错误。虽然 RAG 显著减少了虚构内容的数量,但完全排除错误答案并非总是可能的[9]。生成模型仍然可能犯逻辑错误或不正确地概括信息,特别是当提供的上下文不完整或相互矛盾时[9]。实际上,RAG 转移了错误的重点:相较于纯粹的虚构事实(“幻觉”),知识整合错误更为常见——例如,模型可能会忽略一个重要片段或不正确地关联不同的来源。因此,在关键应用(如医疗、法律)中,仍然需要人工参与来验证和修正系统的回答。
RAG 的应用
检索增强生成方法已在许多与知识提取和使用相关的场景中得到应用。以下是 RAG 发挥最大作用的主要领域:
- 问答系统与聊天机器人。RAG 允许创建能够高精度回答用户问题并提供来源链接的虚拟助手和聊天机器人。在客户支持领域,这类机器人会查询公司的内部知识库(FAQ、帮助文章),并为客户请求提供即时回答,从而减轻员工的负担[8]。与传统的 FAQ 系统不同,RAG 机器人用自然的语言组织回答,同时用针对用户问题的最新数据来“支撑”其回答。
- 医疗与健康保健。一个由专业医疗数据库(科学文章、临床指南、手册)增强的生成模型,可以作为医生或患者的智能助手。例如,系统可以通过在医学文献中查找关于某个罕见诊断的最新研究来回答相关问题[8]。RAG 在医学领域的一个重要优势是能够引用原始来源(例如,临床试验结果),这对于获得医生的信任至关重要。这类系统被用于支持决策、检查症状、培训医学生等,从而提供对最新医学知识的访问。
- 法律与金融。在法律实践和金融分析中,信息的准确性和可验证性尤为关键。RAG 系统可以帮助专业人士快速找到所需数据:例如,律师可以借助模型找到并引用与当前案件相关的判例或法律条款,而金融分析师可以迅速获取最新经济报告或市场新闻的摘要[8]。同时,模型的每个回答都可以包含指向具体文件(法规、报告、文章)的链接,这符合行业标准,并简化了专家后续的手动工作。
- 科学研究与内容创作。记者、研究人员和作家可以利用 RAG 加速在准备材料时查找事实和来源的过程。例如,模型可以根据请求从多个可靠出版物中“收集”信息,从而大大减少事实核查和挑选引文的时间[8]。基于 RAG 的研究助手可以自动提取相关论文的引用、来自开放数据库的数据(例如,国际报告的统计数据),甚至草拟翻译,使作者能够专注于分析工作。这类工具在媒体、学术界、文献综述撰写等领域都有应用。
- 企业知识与文档搜索。在许多组织中,大量有价值的信息以文本文档的形式存储:规章制度、手册、报告、通信、日志文件。RAG 提供了一种通过自然语言对这些非结构化数据进行交互式搜索的方法。员工可以提问(“关于远程员工的休假政策是怎么规定的?”),模型会找到内部文档的相关部分,引用它并形成一个总结性回答[1]。这提高了工作效率:新员工能更快地找到问题的答案,支持部门获得了快速查询事件库的工具,而管理层则有了一种分析累积文本数据的方法。大型 IT 公司已经开始在其企业解决方案中实施 RAG 方法:来自微软、谷歌、IBM、AWS 等公司的技术正在将 LLM 与企业数据搜索相结合[1]。
前景与未来研究
检索增强生成方法正在积极发展,预计在未来几年其能力将进一步扩展。其中一个方向是多模态 RAG,即外部信息不仅可以是文本,还可以是图像、音频/视频,甚至来自传感器的数据。实验表明,将语言模型与视觉数据库搜索相结合具有广阔前景,这将使得例如能够根据图像或视频内容回答问题,同时依赖于描述和相关文本[2]。另一个重要方向是同时使用多个知识源:未来的 RAG 系统将能够结合来自不同数据库(例如维基百科、专业百科全书、用户个人笔记)的数据,并综合考虑这些异构信息来生成回答[2]。
研究人员还面临着提高 RAG 可靠性和安全性的任务。必须最大限度地降低传播外部数据中可能存在的偏见和错误的风险,并保证回答的一致性。最初的 RAG 开发团队已经在这方面采取了措施——例如,将初始知识库限制为仅包含维基百科文章,因为这是一个相对经过验证且中立的来源[2]。未来计划创建特殊的过滤器和文档筛选方法,以确保模型获得高质量的上下文。此外,研究还集中于改进检索机制本身:正在开发新的排序(ranking)和语义索引(semantic indexing)算法,以便更准确地理解查询,并即使在复杂或模糊的表述下也能找到相关信息。
最后,将 RAG 与语言模型的训练过程更深度地整合也引起了人们的兴趣。已经出现了一些方法,其中检索机制不仅在推理阶段使用,还在 LLM 的预训练或微调阶段使用[10]。这可能会进一步提高模型的事实准确性,并减少其对静态存储在权重中的知识的依赖。根据 2024 年发表的综述,社区看到了 RAG 生态系统发展的巨大潜力:从优化基础设施(加速检索、降低内存成本)到创建用于评估 RAG 系统质量的标准基准测试[3]。所有这些都旨在使生成模型在处理不断更新的外部知识时更加准确、通用和安全,这是迈向新一代可靠人工智能的关键一步。
链接
- 什么是检索增强生成 (RAG) — NVIDIA 博客
- Retrieval-Augmented Generation for Large Language Models: A Survey — arXiv 上的科学综述
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks — 关于 RAG 的原始论文
- 什么是 RAG?应用、局限与挑战 — Bright Data 博客
参考文献
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Karpukhin, V. et al. (2020). Dense Passage Retrieval for Open-Domain Question Answering. arXiv:2004.04906.
- Guu, K. et al. (2020). REALM: Retrieval-Augmented Language Model Pre-Training. arXiv:2002.08909.
- Qu, Y. et al. (2020). RocketQA: An Optimized Training Approach to Dense Passage Retrieval for Open-Domain Question Answering. arXiv:2010.08191.
- Izacard, G.; Grave, E. (2021). Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering. arXiv:2007.01282.
- Borgeaud, S. et al. (2022). Improving Language Models by Retrieving from Trillions of Tokens. arXiv:2112.04426.
- Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
- Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
- Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
- Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
- Mialon, G. et al. (2023). Retrieval-Augmented Generation for Large Language Models: A Survey. arXiv:2312.10997.
- Madaan, A. et al. (2023). Self-Refine: Iterative Refinement with Self-Feedback. arXiv:2303.17651.
- Yang, Z. et al. (2023). Re-ViLM: Retrieval-Augmented Visual Language Model for Zero and Few-Shot Image Captioning. arXiv:2302.04858.
- Barnett, S. et al. (2024). Seven Failure Points When Engineering a Retrieval Augmented Generation System. arXiv:2401.05856.
- Wang, Y. et al. (2024). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
- Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
注释
- ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 “What Is Retrieval-Augmented Generation aka RAG”. NVIDIA Blogs. [1]
- ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 “Facebook open-sources RAG, an AI model that retrieves documents to answer questions”. VentureBeat. [2]
- ↑ 3.0 3.1 3.2 3.3 Mialon, Grégoire et al. “Retrieval-Augmented Generation for Large Language Models: A Survey”. arXiv. [3]
- ↑ 4.0 4.1 4.2 “Applied AI Software Engineering: RAG”. Pragmatic Engineer. [4]
- ↑ 5.0 5.1 5.2 Lewis, Patrick et al. “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks”. arXiv. [5]
- ↑ 6.0 6.1 6.2 6.3 6.4 6.5 6.6 “How RAG Makes LLMs Smarter”. Exxact Blog. [6]
- ↑ “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks”. arXiv. [7]
- ↑ 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 “What Is RAG? Use Cases, Limitations, and Challenges”. Bright Data Blog. [8]
- ↑ 9.0 9.1 9.2 Lewis, Patrick et al. “Seven Failure Points When Engineering a Retrieval Augmented Generation System”. arXiv. [9]
- ↑ “检索增强生成”. 维基百科. [10]