RAG(检索增强生成)
检索增强生成(Retrieval-Augmented Generation)的缩写。通过先检索外部知识库中的相关文档,再将其作为上下文输入大模型来生成回答,解决LLM知识过时和幻觉问题。
RAG(检索增强生成)
一句话理解
RAG 让大模型在回答问题前先"查资料"——从外部知识库中检索相关文档,作为上下文一起输入模型,让回答更准确、更可靠。
为什么需要 RAG
大语言模型有两个天然缺陷:
- 知识过时:训练数据有截止日期,无法回答训练后的新信息
- 幻觉问题:模型可能自信地编造不存在的事实
RAG 的思路是:与其把所有知识塞进模型参数里,不如在需要时从外部文档中检索,然后让模型基于真实文档回答。
工作流程
text
用户提问 → 向量化 → 在知识库中检索最相关的文档片段 → 拼接为 Prompt → LLM 生成回答
核心步骤:
- 索引阶段:将文档切块 → 每块用 Embedding 模型转为向量 → 存入向量数据库
- 检索阶段:用户提问也转为向量 → 用余弦相似度在向量库中找最相关的文档块
- 生成阶段:将检索到的文档块作为上下文拼入 Prompt,让 LLM 基于真实文档生成回答
底层数学原理
RAG 的检索环节本质上是向量检索——把语义匹配问题转化为向量空间中的距离计算:
relevance(q,d)=cos(q,d)=∣q∣⋅∣d∣q⋅d其中 q 是问题向量,d 是文档片段向量。
直觉类比
纯 LLM 回答问题像闭卷考试——只能凭记忆。RAG 让它变成开卷考试——可以翻书找答案。书的质量和翻书的技巧(检索策略)决定了最终答案的质量。
与微调的区别
| 维度 | RAG | 微调(Fine-tuning) |
|---|---|---|
| 知识注入方式 | 检索时动态注入 | 训练时固化到参数 |
| 知识更新 | 更新文档库即可,无需重新训练 | 需要重新训练 |
| 适用场景 | 事实性问答、文档查询 | 风格定制、特定任务优化 |
| 成本 | 低(只需向量数据库) | 高(需 GPU 训练) |
实际应用
- 企业知识库问答:员工用自然语言查询内部文档
- 代码助手:检索项目代码库,生成上下文相关的代码建议
- 客服系统:基于产品文档回答用户问题
引用本术语的文章