1. 什么是 RAG

检索增强生成(RAG, Retrieval-Augmented Generation) 是一种创新的模型架构,旨在提升大型语言模型(LLM)的性能和输出质量。尽管 LLM 在许多自然语言处理任务中表现出色,但它们仍然可能在某些情况下提供不准确或不充分的答案。为了解决这一问题,RAG 架构将信息检索与文本生成结合起来,通过从庞大的知识库中检索相关信息来增强模型的生成能力。

RAG 架构通过将信息检索与文本生成的能力结合在一起,解决了大型语言模型在生成文本时面临的一些挑战,如知识不足和幻觉问题。通过动态检索并利用外部信息,RAG 不仅增强了模型的知识覆盖范围,还提高了生成内容的准确性和相关性。这使得 RAG 成为提升自然语言处理系统性能的重要工具,广泛应用于问答系统、知识提取和个性化推荐等领域。

1.1 RAG 的工作机制

RAG 的核心思想是将传统的检索系统和生成模型进行整合。其工作流程可以分为以下几个关键步骤:

  1. 查询生成:用户提出问题或输入查询,模型将其转换为一个查询向量,这个向量代表了输入内容的语义。
  2. 信息检索:RAG 使用这个查询向量从一个庞大的知识库(如 Wikipedia、数据库或预定义的文档集合)中检索出与查询最相关的信息片段。检索到的内容通常是文本段落、句子或其他相关信息。
  3. 生成增强:在检索到的相关信息的基础上,RAG 将这些信息作为上下文,输入到大型语言模型中,用于指导其生成更加准确和信息丰富的回答。这样,生成的文本不仅依赖于模型原有的语言知识,还结合了外部的检索信息,从而提高了生成结果的准确性和相关性。

1.2 RAG 的优势

RAG 架构通过结合检索和生成的优点,在以下几个方面表现出明显的优势:

  • 增强知识覆盖:LLM 的知识是通过预训练获得的,因此对特定领域或最新信息可能不够准确或全面。RAG 通过实时检索相关信息,可以动态补充模型的知识库,显著提升了回答的深度和准确性。
  • 减少幻觉(hallucination):LLM 有时会生成不真实或虚假的信息(即所谓的“幻觉”)。RAG 通过依赖于真实的检索信息,减少了幻觉现象的发生,从而生成更加可靠的内容。
  • 适应性强:RAG 可以适应不同领域和任务,只需调整检索知识库的内容,就能在不需要大量重新训练模型的情况下,应用于新的任务或领域。

1.3 RAG 的应用场景

RAG 在多个应用场景中展现了其潜力,以下是几个主要的应用领域:

  • 问答系统:在构建智能问答系统时,RAG 可以通过检索相关文档内容来提供更加准确和深入的答案,特别是在涉及具体事实和详细信息的问题上。
  • 知识提取与总结:RAG 可以从大量文献中提取出相关信息,并生成概括性的总结,这在法律、医学、学术研究等领域具有重要应用价值。
  • 个性化推荐:在个性化内容推荐系统中,RAG 可以通过检索用户历史行为或兴趣相关的内容,并生成符合用户需求的推荐信息。

1.4 RAG存在背景

在实际应用中,单独依赖 LLM 并不足够,而需要引入 RAG 来增强模型的性能。RAG 通过结合信息检索和文本生成的优势,有效地解决了 LLM 的局限性,提升了模型在准确性、实时性、可信度、专业性、推理能力、适应性和长文本处理能力等方面的表现。这使得 RAG 成为一种重要的技术框架,在各种复杂的自然语言处理任务中得到了广泛的应用。

目前 LLM 面临的主要问题有:

  • 信息偏差/幻觉: LLM 有时会产生与客观事实不符的信息,导致用户接收到的信息不准确。RAG 通过检索数据源,辅助模型生成过程,确保输出内容的精确性和可信度,减少信息偏差。
  • 知识更新滞后性: LLM 基于静态的数据集训练,这可能导致模型的知识更新滞后,无法及时反映最新的信息动态。RAG 通过实时检索最新数据,保持内容的时效性,确保信息的持续更新和准确性。
  • 内容不可追溯: LLM 生成的内容往往缺乏明确的信息来源,影响内容的可信度。RAG 将生成内容与检索到的原始资料建立链接,增强了内容的可追溯性,从而提升了用户对生成内容的信任度。
  • 领域专业知识能力欠缺: LLM 在处理特定领域的专业知识时,效果可能不太理想,这可能会影响到其在相关领域的回答质量。RAG 通过检索特定领域的相关文档,为模型提供丰富的上下文信息,从而提升了在专业领域内的问题回答质量和深度。
  • 推理能力限制: 面对复杂问题时,LLM 可能缺乏必要的推理能力,这影响了其对问题的理解和回答。RAG 结合检索到的信息和模型的生成能力,通过提供额外的背景知识和数据支持,增强了模型的推理和理解能力。
  • 应用场景适应性受限: LLM 需在多样化的应用场景中保持高效和准确,但单一模型可能难以全面适应所有场景。RAG 使得 LLM 能够通过检索对应应用场景数据的方式,灵活适应问答系统、推荐系统等多种应用场景。
  • 长文本处理能力较弱: LLM 在理解和生成长篇内容时受限于有限的上下文窗口,且必须按顺序处理内容,输入越长,速度越慢。RAG 通过检索和整合长文本信息,强化了模型对长上下文的理解和生成,有效突破了输入长度的限制,同时降低了调用成本,并提升了整体的处理效率。

2. RAG 的工作流程

RAG(检索增强生成)系统的工作流程可以分为四个主要阶段:数据处理、检索、增强和生成。每个阶段都有其特定的功能和处理步骤。通过将数据处理、信息检索、内容增强和答案生成这四个阶段紧密结合起来,构建了一个强大的系统,能够有效地解决大型语言模型在单独使用时面临的一些挑战。通过这个流程,RAG 能够生成更准确、更可靠、更信息丰富的回答,广泛应用于问答系统、信息检索、知识管理等领域。

2.1 数据处理阶段

1. 数据清洗和处理
在这个阶段,系统首先需要对原始数据进行清洗和处理。清洗的目的是去除噪音、错误或不完整的信息,以确保数据的质量。处理步骤可能包括数据格式转换、去除重复项、标准化文本格式等。这一步是为了确保后续的检索和生成阶段有高质量的数据支撑。

2. 数据格式转换
处理后的数据需要转换成检索模型能够使用的格式。这通常涉及将文本数据转化为嵌入(embeddings)或向量表示,这些向量将被用于快速有效地检索相关信息。

3. 数据存储
处理和转换后的数据被存储在一个高效的数据库或索引结构中,如向量数据库(如 FAISS)或文档数据库。这些数据库允许快速检索并返回与用户查询最相关的内容。

2.2 检索阶段

1. 查询输入
当用户输入一个问题或查询时,系统首先将这个输入转换为查询向量。这个向量捕捉了用户输入的语义信息,便于与数据库中的数据进行匹配。

2. 信息检索
系统使用查询向量在预先存储的数据库中检索与之最相关的信息片段。检索模型会返回一组文本段落、句子或其他形式的相关信息,这些信息是后续生成阶段的基础。

2.3 增强阶段

1. 信息处理和增强
在生成答案之前,检索到的信息可能需要进一步处理和增强。这一步可能包括过滤掉不相关的内容、合并多个信息片段、重新组织信息顺序,或者根据上下文调整信息的表达方式。目的是让生成模型能够更好地理解这些信息,并有效利用它们来生成准确的答案。

2.4 生成阶段

1. 信息输入
增强后的信息被输入到生成模型中。生成模型(如大型语言模型)将这些信息作为上下文,结合自身的语言理解能力,生成符合用户查询的回答。

2. 答案生成
生成模型根据输入的增强信息生成最终的答案。这个答案不仅依赖于模型本身的语言知识,还借助了从外部检索到的相关信息,从而提高了回答的准确性和深度。

3. RAG 与 FINETUNE

在提升大语言模型效果中,RAG 和 微调(Finetune)是两种主流的方法。

微调: 通过在特定数据集上进一步训练大语言模型,来提升模型在特定任务上的表现。

RAG 和 微调的对比参考:

特征比较

RAG

微调

知识更新

直接更新检索知识库,无需重新训练。信息更新成本低,适合动态变化的数据。

通常需要重新训练来保持知识和数据的更新。更新成本高, 适合静态数据。

外部知识

擅长利用外部资源,特别适合处理文档或其他结构化/非结

构化数据库。

将外部知识学习到 LLM内部。

数据处理

对数据的处理和操作要求极低。

依赖于构建高质量的数据集,有限的数据集可能无法显著提高性能。

模型定制

侧重于信息检索和融合外部知识,但可能无法充分定制模型

行为或写作风格。

可以根据特定风格或术语调整LLM行为、写作风格或特定领域知识。

可解释性

可以追溯到具体的数据来源, 有较好的可解释性和可追踪

性。

黑盒子, 可解释性相对较低。

计算资源

需要额外的资源来支持检索机制和数据库的维护。

依赖高质量的训练数据集和微调目标,对计算资源的要求较高。

推理延迟

增加了检索步骤的耗时

单纯 LLM 生成的耗时

降低幻觉

通过检索到的真实信息生成回答,降低了产生幻觉的概率。

模型学习特定领域的数据有助于减少幻觉,但面对未见过的输

入时仍可能出现幻觉。

伦理隐私

检索和使用外部数据可能引发伦理和隐私方面的问题。

训练数据中的敏感信息需要妥善处理,以防泄露。

参考

DataWhale-动手学大模型应用开发