什么是RAG?让大模型”开卷考试”的技术拆解
用了几天 AI 助手,很多人都会撞上同一个困惑:明明模型很强,问它”我们公司上个月发布的新产品”,它要么说不知道,要么一本正经编一个。可要是把产品资料贴给它,它立刻答得很准。这个差别背后,就是 RAG 要解决的问题。
RAG 全称 Retrieval-Augmented Generation,检索增强生成。说人话:让模型考试时能翻书。
第一步:为什么模型”不知道”新东西
大模型的全部知识,都固化在训练那一刻的参数里。训练完成后,参数不再变化,这被称为”知识冻结”。所以它有一个训练截止日期,截止之后发生的事,它一概不知。
更麻烦的是,它并不知道自己不知道。参数里没有的东西,它仍会用最像的语言模式补全——这就是幻觉。微调(fine-tune)能教它新知识,但成本高、更新慢,而且每次知识变动都得重训一次,对”上周刚改的价格表”这种高频变化完全跟不上。
RAG 换了个思路:不改模型,改输入。把相关资料先检索出来,塞进提示词,让模型基于这些材料作答。
第二步:三段式流程
检索(Retrieval):把用户问题转成向量,去知识库里找语义最接近的若干片段。 增强(Augmentation):把找到的片段拼成一段上下文,和问题一起放进提示词。 生成(Generation):模型只负责在给定材料范围内组织语言作答。
关键点在于第三步的约束:提示词里通常要明确写”仅根据以下材料回答,材料中没有的信息请说明不知道”。这一句能砍掉大部分幻觉。
第三步:切块——RAG 里最容易被忽略的工序
知识库文档不能整篇塞进去,必须先切成小块(chunk),每块单独向量化。切法直接决定检索质量。
块大小:中文场景常见 300 到 800 字。太小,单块信息不完整,检索出来答不了问题;太大,一块里混了好几个主题,向量被稀释,反而不容易命中。经验值是”一个块讲清一件事”。
重叠(overlap):相邻块之间留 10% 到 15% 的重叠,防止一句话被切断在两块之间,两边都读不通。
按结构切,别按字数硬切:优先在标题、段落、表格边界断开。一份产品手册按章节切,效果远好于每 500 字一刀切。
向量化(embedding):每块文本被编码成一个高维向量(常见 768 到 3072 维)。语义相近的文本,向量距离也近,检索就是算距离。中文场景要选对中文语料训练过的 embedding 模型,用英文模型处理中文,召回率会明显下降。
第四步:召回不等于能用,还要重排
初步检索通常按向量相似度取前 20 到 50 条候选,但”向量最像”不等于”最能回答问题”。所以成熟系统会加一层重排(rerank):用一个交叉编码器模型,把问题和每条候选逐一配对打分,重新排序,最后只取前 3 到 5 条塞进提示词。
这一步的收益很实在。同样的知识库,加了重排,答案准确率往往有明显提升,因为送进模型的材料从”看起来相关”变成了”确实相关”。提示词里的材料也不是越多越好——超过 5 到 8 条,模型容易抓错重点,还会挤占上下文窗口。
第五步:RAG 失效时,先分清是哪一环坏了
RAG 答错,原因只有两类,排查方向完全不同。
检索失败:材料里有答案,但没被找出来。表现是模型说”材料中未提及”。原因通常是切块不合理、embedding 模型不匹配、或用户问法和文档用词差距太大(专业术语 vs 口语)。解法:调块大小、加同义词、给文档补标题和摘要字段、混合关键词检索(BM25 + 向量)。
生成失败:材料找对了,模型却答歪了。表现是答非所问、把几条材料混着说、或超出材料范围编造。解法:收紧提示词约束、减少材料条数、要求逐条引用来源、把温度参数调低。
分不清这两类,调参就是瞎试。先看检索结果里有没有正确答案,这一步能省掉一半时间。
结论
RAG 不是让模型变聪明,而是给它一个可查的资料柜。它的上限由知识库质量决定,下限由切块和重排决定。想搭一套能用的 RAG,记住四个参数:块 300 到 800 字、重叠 10% 到 15%、候选 20 条以上、最终只喂 3 到 5 条。
对做内容生产的团队来说,这个思路同样适用:把品牌规范、产品卖点、历史文案整理成结构化知识库,用 RAG 驱动生成,输出的口径一致性会明显好于每次现场描述。很多做 AI广告 的团队卡住的不是模型能力,而是资料本身没整理成可检索的形态。视觉灵动在处理 AIGC广告 这类多品类、多版本的物料生产时,也是先把品牌资产沉淀成可检索的库,再让模型在库内取材——这比反复调提示词稳定得多。