十分钟了解 RAG 基本原理(专业总结版)
一、RAG 是什么,为什么需要它?
RAG(Retrieval-Augmented Generation,检索增强生成)是一种让大模型在回答前先“查资料”,再“组织答案”的方法。
虽然大语言模型(LLM)能力很强,但其本质是“预测下一个 token”,因此会有三类典型问题:
- 幻觉问题:当训练语料中没有答案时,模型可能编造看似合理但错误的内容。
- 知识时效问题:模型知识停留在训练截止时间点,无法天然掌握新增信息。
- 私有数据缺失:企业内部文档、业务规则、个人/组织私域数据不在公开训练集中。
直接把整个知识库塞进提示词不可行,原因包括:
- 上下文窗口有限(即使长上下文也会注意力分散)
- 推理成本高
- 响应速度慢、用户体验差
因此,RAG 的核心价值是:让模型只阅读“与当前问题最相关”的片段,再生成答案。
二、RAG 的核心流程
RAG 通常分为两个阶段:数据准备阶段与在线问答阶段。
1)数据准备阶段(离线)
1. 文档解析与清洗
先处理原始数据源(PDF、Word、网页、表格、图片等),结合 OCR、版面分析等手段提取高质量文本。
> 这一步质量决定上限:解析错,后续再优化也难以得到正确答案。
2. 文本切分(Chunking)
将长文档切成语义相对完整的小块(chunk),可按章节、段落、固定字数或滑动窗口切分。
目标:兼顾语义完整性和检索精度。
3. 向量化(Embedding)
用 embedding 模型将每个 chunk 映射为向量。语义越相近,向量空间距离通常越近。
4. 建立索引并存储
把“文本块 + 向量 + 元数据(来源、标题、时间等)”写入向量数据库,供后续检索。
2)在线问答阶段(实时)
1. Query 处理与重写(可选)
用户问题可能口语化、过短或有歧义,可先做 query rewrite,补全意图,提高召回质量。
2. 召回(Retrieval)
将问题向量化后,在向量库中做相似度检索(常见:余弦相似度、欧式距离),返回 Top K 候选片段。
> 此步偏“快”,属于粗筛。
3. 重排(Rerank)
使用更强的重排模型对候选片段与问题做精细匹配,筛出更有回答价值的内容。
> 此步偏“准”,用于提升最终答案可靠性。
4. 生成(Generation)
将“用户问题 + 检索证据 + 系统提示词(如:仅基于资料回答,不知道就明确说明)”拼装为 prompt,交给大模型生成最终答复。
三、常见卡点与优化要点
1)数据层:解析质量
- PDF、多栏排版、扫描件、表格是高频难点
- 建议:统一清洗规范,保留文档结构与来源字段
2)切分层:颗粒度控制
- 切太大:主题混杂,召回不准
- 切太小:上下文断裂,语义不完整
- 建议:按语义边界切分,并使用适度 overlap(重叠窗口)
3)检索层:召回策略
- 仅向量检索可能漏掉精确关键词
- 建议:使用混合检索(关键词检索 + 向量检索)互补盲区
4)查询层:问题理解
- 口语化问题易导致召回偏移
- 建议:query rewrite + 术语规范化 + 上下文补全
5)生成层:模型与提示词
- 模型稳定性、指令遵循、幻觉率影响最终体验
- 建议:约束式提示词 + 引用证据 + 无答案时显式拒答
四、总结
RAG 不改变大模型本体能力,而是通过“先检索、后生成”的机制,显著提升答案的准确性、时效性、可控性。
可将其理解为明确分工:
- Embedding/检索:负责“快速找到可能相关内容”
- Rerank:负责“从候选中选最相关证据”
- LLM:负责“基于证据组织可读答案”
面试题与参考答案
1. 什么是 RAG?它解决了 LLM 的哪些核心问题?
答:RAG 是“检索增强生成”,即先检索外部知识,再由大模型生成答案。它主要缓解 LLM 的幻觉、知识过时、无法访问私有数据三类问题。
2. 为什么不能把整个知识库直接放进 Prompt?
答:因为上下文窗口与注意力能力有限,且会导致推理成本高、响应慢;同时噪声信息过多会降低回答质量。
3. RAG 中 Retrieval 和 Rerank 的区别是什么?
答:Retrieval 偏召回与速度(粗筛),从大规模语料中找 Top K 候选;Rerank 偏精度(精排),在候选中选出真正可回答问题的片段。
4. Chunking 为什么是 RAG 成败关键之一?
答:切分直接影响检索单元质量。块过大导致主题混杂、召回不准;块过小导致语义断裂、证据不足。合理分块能兼顾召回率与准确率。
5. 什么是混合检索?为什么常用?
答:混合检索是关键词检索(稀疏)+ 向量检索(稠密)联合使用。前者强于精确匹配,后者强于语义匹配,组合后能互补盲区、提高召回质量。
6. Query Rewrite 在什么场景下必要?
答:当用户提问口语化、模糊、过短或上下文省略时。通过重写可补全意图和关键约束,使查询更适合检索系统。
7. 如果检索结果是对的,但最终答案仍然错,可能原因是什么?
答:常见原因包括:重排失败、提示词约束不足、模型指令遵循弱、生成时未严格基于证据。可通过更强 reranker、引用约束、拒答策略优化。
8. 企业落地 RAG 的第一优先级是什么?
答:数据质量与文档解析。若源数据清洗和结构化不到位,后续 embedding、检索、生成效果都会受限。 2. RAG 流程中,向量检索和重排序(Re-rank)分别扮演什么角色?为什么需要重排序? 答案:
- 向量检索(粗筛):快速从海量数据中召回与问题语义最相似的 Top K 个候选片段,追求速度和召回率。
- 重排序(精排):使用更强大的模型对召回的 Top K 个候选片段进行精细排序,评估其与问题的实际相关性,过滤掉只是“像”但未真正回答问题的片段,追求精确度。
- 为什么需要重排序:向量检索的相似度不等于是否包含了问题的答案,重排序能修正这种偏差,提升最终生成答案的质量。
3. 如何选择文本分块的策略?块切得太大或太小会有什么问题? 答案:分块策略需根据文档类型和场景调整。核心目标是让每个块表达一个相对完整的语义单位。
- 切得太大:块内包含多个主题,检索时不精确,会引入大量无关信息。
- 切得太小:导致语义断裂,如将一个完整的句子切碎,模型无法理解上下文,难以找到正确答案。
- 常用策略:按段落、章节切分,或固定字数(如 500 字)并允许重叠,以保证语义连续性。