RAG 与 LLM:技术解析(定义、差异、使用场景)

RAG 和 LLM 并非竞争性选择:这篇解析说明了二者如何运作、彼此有何不同,以及何时仅靠 LLM 就足够、何时则需要检索。

Diagram comparing an LLM-only flow (input, LLM, output) with a RAG flow, where the input is exchanged with an external data source before reaching the LLM.

LLM 使用从训练数据模式中学习到的参数生成响应。由于这些参数可能无法反映最新或完整的信息,RAG(即检索增强生成)通过将外部来源的数据添加到 LLM 的输入上下文中来补充这一过程。AI 工具会检索 外部信息,以增强 LLM 的生成 过程。

现实中,你的选择并不是 RAG 还是 LLM,而是在混合方法与仅使用 LLM 的方法之间做选择。

当 LLM 需要访问公司文档、数据库或快速变化的信息时,RAG 是必要的。仅 LLM 的方法适用于某些行政、数据处理和内容创建任务,在这些任务中,所有输入都可以由用户提供。

RAG 与 LLM:关键区别是什么?

  • RAG 和 LLM 是互补系统。你可以在不使用 RAG 的情况下使用 AI 模型(此时它完全依赖自身已有参数),但没有模型就无法使用 RAG 系统。
  • 引入 RAG 是为了解决 LLM 的三个关键问题:信息过时、响应幻觉,以及缺乏对第三方来源的验证。
  • RAG 通过将 LLM 与经过验证的内部文档、数据库和 API 端点连接起来,使 AI 在真实商业场景中更有效。
  • RAG 的主要使用场景包括客户支持聊天机器人、基于快速变化数据(如行业新闻)的查询,以及医学和法律等对准确性和来源事实核查很重要的专业领域。
  • RAG 主要有三种类型:朴素 RAG、模块化 RAG 和高级 RAG。朴素 RAG 最容易理解,可视为直接的信息检索;而模块化和高级 RAG 则增加了诸如查询重写和分块优化等附加功能。

什么是大型语言模型(LLM)?

LLM,即大型语言模型,是一种使用微调参数生成内容的系统。这些参数决定了分配给 LLM 词汇表中所有 token 的概率,从而指示在给定序列中下一个最可能出现的 token 是什么。

要更好地理解 RAG 如何工作(以及它与 LLM 的区别),有必要从基础层面看看生成式 AI 是如何运作的:

  1. 分词: 用户的提示词会被拆分为 token,token 可以是单词、词的一部分或单个字符。
  2. 嵌入: token 会被转换为嵌入,即数值表示(数字串),也就是向量,供包含解码器的神经网络处理。
  3. 解码: 解码器的各层(它们构成了 LLM 神经网络的重要部分)会对这些向量进行处理,使用一种称为 注意力 的过程来捕捉含义。这个过程决定每个 token 应该与序列中的其他 token 关联得有多强。
  4. 评分: 模型会为其预先存在词汇表中的每个 token 分配一个兼容概率,并为序列选择一个可能的下一个 token。

关键在于,LLM 只能基于其现有参数和上下文窗口中的 token 生成输出。在训练过程中,LLM 会被要求无数亿次地补全文字的不完整部分,并不断调整参数,直到它能够可靠地为 token 分配概率(从而完成文本)。

例如,假设你问 AI 模型这样一个问题:“我们公司 2026 年退款政策是怎么规定的?”LLM 只能基于其现有参数预测下一个 token,而这些参数并未使用你的支持文档进行微调。如果你在没有任何额外上下文的情况下问它这个问题,它要么根本无法给出有意义的回应,要么就会幻觉出错误答案。

什么是检索增强生成(RAG)?

RAG(检索增强生成)是将外部系统中的信息纳入 LLM 提示词的过程。

底层的 LLM 过程——包括嵌入和概率 token 匹配——保持不变。RAG 引入了一个前置步骤,即用额外数据扩展用户提示词。

以下是 RAG 工作原理概览:

  1. 知识准备: 准备一个知识源。它可以是一组文档、向量数据库、知识图谱,或实时索引(例如用于 AI 搜索)。
  2. 提示: 用户输入一个提示词,例如:“我今天应该去伦敦散步吗?”
  3. 检索: 外部信息源由 AI 工具的检索器进行查询。它可能会对提示词进行嵌入,将其转化为向量,然后查询向量数据库。或者,它也可以采用其他方法,例如 API 调用、关键词匹配或知识图谱遍历。
  4. 插入: 这些信息会被添加到用户的原始提示词中。在伦敦散步问题的示例中,这可能包括伦敦的天气信息以及热门步行路线的当前可达性。
  5. 答案生成: LLM 使用扩展后的提示词,以常规方式生成响应。

在幕后,检索到的文本会被添加到输入上下文中,进行分词并嵌入。随后模型通过其解码器处理这部分额外上下文,从而改变输出 token 的概率。

广义上说,RAG 可分为三种子类型。朴素 RAG 遵循基本的 RAG 流程,检索信息并将其输入提示词。高级 RAG 增加了诸如查询重写和多轮查询等附加功能。模块化 RAG 则指一种架构,其中不同的高级功能可以被视为组件,并按需组合。

RAG 与 LLM:使用场景概览

RAG 让用户能够访问最新数据。因此,LLM 的输出更不容易出现幻觉和信息缺口。如果你需要查看输出中所用信息的来源,RAG 也至关重要,因为未基于事实依据的 LLM 答案不会附带归因信息。

RAG 使用场景

  • 对时间敏感信息的请求: 任何关于会迅速过时的信息的查询,无论是像天气预报这样简单,还是像对突发新闻事件的详细分析这样复杂,都需要基于经过验证的第三方来源。
  • 公司文档: 面向内部或客户的 AI 聊天机器人,如果用户会就公司或产品文档提出问题,就应启用 RAG,尤其是在文档经常更新的情况下。
  • 客户支持: 客户聊天机器人需要访问最新、详细的支持文档,才能提供准确答案。
  • 专业领域(医学、法律、金融等): 未在领域专属语料上训练过的 LLM(尤其是主流模型)通常难以把握专业提示词的细微差别。

LLM 使用场景

  • 行政任务: LLM 可以以最低延迟完成基础任务。对于不需要外部信息的基础写作和行政任务,例如拼写检查或摘要,RAG 并非必要。
  • 创意任务: 某些创意任务,例如生成短篇故事或图像,只需要原始提示词中提供的信息。
  • 推理和数据驱动任务: 如果你正在处理大型数据集,LLM 无需访问外部信息即可执行推理和分析功能。
  • 通用编程: 虽然编码工作流可能需要访问私有代码库或文档,但 LLM 非常擅长执行通用编程任务,例如修复 bug 和创建函数,而无需借助外部来源。

RAG 与长上下文 LLM、智能体 AI 和落地

有三个相关概念与 RAG 和 LLM 的区别有关,分别是长上下文 LLM、智能体 AI 和落地。

长上下文 LLM 有时可以替代启用 RAG 的系统,而智能体 AI 和落地则与它们同义或与它们协同工作。

长上下文 LLM

这些模型具有很大的上下文窗口,其中一些广泛可用的商业模型可处理多达一百万个 token。

如果相关材料可以放入模型的上下文窗口,并且可用文本格式提供,那么采用仅 LLM 的方法有一些好处。它可以降低检索错误的可能性,提供更全面的上下文,并免去搭建完整 RAG 架构的需要。

智能体 AI

智能体是一个系统,它会调用多种工具,包括用于执行复杂任务的 RAG 能力。RAG 是智能体 AI 的一个组成部分,而智能体通常会根据提示词内容使用不同类型的检索方法(例如网页搜索与向量搜索)。

落地

落地指的是使用证据或数据来提高 LLM 响应准确性的更广泛过程。RAG 是落地的一种形式,但将技术文档添加到上下文窗口中也算是落地。

RAG 与 LLM:真实案例

要更好地理解 RAG 相比于不启用 RAG 的 LLM 使用方式有何不同,我们可以看一个使用 Perplexity 的简单真实示例,以及一个查询向量数据库的假设企业案例。

带有简单提示词的 RAG 与 LLM

以下是当 Perplexity 被问到“我今天应该去伦敦散步吗?”并关闭 AI 网页搜索(RAG 的一种形式)时得到的输出(限制为两句话):

是的——如果天气相对干燥,而且你有时间,今天在伦敦散步会是一次令人耳目一新的换景。可以选择南岸、摄政运河或海德公园一带的路线,顺便带上一件轻便防水外套以防万一。

与 LLM 可以检查外部来源时的提示词作比较:

是的,今天在伦敦很适合散步:预报显示气温温和,约 19–21°C,间有晴天,降雨概率极低。天空局部多云,微风轻拂,前往公园或沿河路线(如南岸)漫步都很舒适。

两者之间有相似之处,因为 LLM 使用的是相同的底层 token 评分过程。不过,第二个示例包含了详细的天气信息,因此实用得多。

RAG 与企业向量数据库中的 LLM

设想一下,某银行应用中的应用内聊天机器人收到用户如下问题:“我可以在哪里下载我最近的账单?”

管理该应用的银行创建了一个数据库,其中包含其最新产品文档的嵌入,并将其连接到聊天机器人的 RAG 流水线。该文档库约有 1,000 份源文档,这些文档被拆分为更小的分块,并已转换为用于检索的向量。

用户的查询会发送到嵌入模型,应用再将该向量发送到数据库,数据库返回相关分块。

嵌入模型会接收到如下请求:

json
{ "input": "Where can I download my most recent statement?" }

嵌入模型返回如下向量嵌入:

json
{ "embedding": [0.12, -0.44, 0.87, 0.31] }

随后向量数据库会接收到如下请求:

json
{ "vector": [0.12, -0.44, 0.87, 0.31], "top_k": 5 }

在这个(大幅简化的)示例中,数据库返回与用户查询最相关的五个分块,这些分块会发送到应用程序,并包含到 LLM 提示词中。

何时选择 RAG 与 LLM,以及何时将二者结合

LLM 和 RAG 是互补系统。因此,“我应该何时选择 LLM、何时选择 RAG?”这个问题并不恰当。更准确地说,你应该问:“LLM 何时足够用,何时 RAG 才最优?”

何时在未启用 RAG 的情况下使用 LLM

  • 你选择的 AI 模型具有较大的上下文窗口: 如果把生成准确答案所需的所有信息或数据都放入提示词中更容易,比如通过上传文档,那么这样做可以降低延迟并避免检索相关问题。
  • 推理和数据分析工作流: 仅引用提示词中所提供数据的分析和推理工作流,不需要 RAG 能力。
  • 代码生成: 通用编程通常不需要 RAG,不过对于项目特定任务,它通常会被用到,例如检索之前的修复记录或供应商 API 和文档。

何时使用启用 RAG 的 LLM

  • 你需要访问最新信息: 如果某个 AI 应用需要访问最新信息的外部来源以生成准确答案,请务必确保启用 RAG 能力。
  • 你正在某个专业领域工作: 对于医学、法律、教育等需要准确性、细节和来源核查的领域,仅使用 LLM 往往是不够的。
  • 输出应引用公司内部文件: 如果你在内部或面向客户的应用中使用 AI,基于公司内部文档、无论是数据、品牌素材、文档还是文件来生成内容,RAG 都能提供对这些信息的访问。

RAG 和 LLM 是互补且不断演进的技术

RAG 标志着 AI 演进中的一项重大创新。它解决了三大问题:过时信息、模型记忆有限,以及由于缺乏相关训练数据而导致的信息缺口,这些问题往往会造成幻觉。当然,LLM 并未彻底克服这些问题,但自从 RAG 出现以来,这些问题的发生率已显著降低。

RAG 不是静态技术。它有望在多个方面持续改进,包括重排序、检索和 token 使用期间的延迟、针对危险数据源的安全防护、整合来自多个来源的检索数据,以及更多方面。随着 LLM 和智能体 AI 继续发展,支撑它们的 RAG 系统也会随之发展。