RAG(检索增强生成)

检索增强生成(Retrieval-Augmented Generation)的缩写。通过先检索外部知识库中的相关文档,再将其作为上下文输入大模型来生成回答,解决LLM知识过时和幻觉问题。

RAG(检索增强生成)

一句话理解

RAG 让大模型在回答问题前先"查资料"——从外部知识库中检索相关文档,作为上下文一起输入模型,让回答更准确、更可靠。

为什么需要 RAG

大语言模型有两个天然缺陷:

  1. 知识过时:训练数据有截止日期,无法回答训练后的新信息
  2. 幻觉问题:模型可能自信地编造不存在的事实

RAG 的思路是:与其把所有知识塞进模型参数里,不如在需要时从外部文档中检索,然后让模型基于真实文档回答。

工作流程

text
用户提问 → 向量化 → 在知识库中检索最相关的文档片段 → 拼接为 Prompt → LLM 生成回答

核心步骤:

  1. 索引阶段:将文档切块 → 每块用 Embedding 模型转为向量 → 存入向量数据库
  2. 检索阶段:用户提问也转为向量 → 用余弦相似度在向量库中找最相关的文档块
  3. 生成阶段:将检索到的文档块作为上下文拼入 Prompt,让 LLM 基于真实文档生成回答

底层数学原理

RAG 的检索环节本质上是向量检索——把语义匹配问题转化为向量空间中的距离计算:

relevance(q,d)=cos(q,d)=qdqd\text{relevance}(q, d) = \cos(\vec{q}, \vec{d}) = \frac{\vec{q} \cdot \vec{d}}{|\vec{q}| \cdot |\vec{d}|}relevance(q,d)=cos(q,d)=qdqd

其中 q\vec{q}q 是问题向量,d\vec{d}d 是文档片段向量。

直觉类比

纯 LLM 回答问题像闭卷考试——只能凭记忆。RAG 让它变成开卷考试——可以翻书找答案。书的质量和翻书的技巧(检索策略)决定了最终答案的质量。

与微调的区别

维度RAG微调(Fine-tuning)
知识注入方式检索时动态注入训练时固化到参数
知识更新更新文档库即可,无需重新训练需要重新训练
适用场景事实性问答、文档查询风格定制、特定任务优化
成本低(只需向量数据库)高(需 GPU 训练)

实际应用

  • 企业知识库问答:员工用自然语言查询内部文档
  • 代码助手:检索项目代码库,生成上下文相关的代码建议
  • 客服系统:基于产品文档回答用户问题

引用本术语的文章