RAG for AIGC: 检索增强生成在 AI 生成内容中的应用 — 学习笔记
待复核这篇是 RAG for AIGC 的综述(arXiv:2402.19473),不是单一新算法。
RAG = Retrieval-Augmented Generation(检索增强生成)。日常类比:开卷考试——先翻准许带进考场的资料,再答题;不是靠把整本教材背进脑子。
模型不只靠参数里的记忆回答,而是带着检索结果一起生成。资料库更新后,系统就能用新资料,而不必每次都重新训练大模型。
AIGC(AI 生成内容)比问答更宽:文本、代码、图像、音频、视频、3D、科学发现等。综述关心的是:RAG 如何作为一类方法,服务不同模态与不同生成任务。
一句话记住:先找齐准考证上允许带的材料,再动笔;材料错了,文笔再好也是开卷考砸。
不理解 RAG,下面这些事很难解释:
- 为什么模型知识会过期,而换资料库往往比重新训练便宜
- 为什么长尾事实不稳定,却能靠外部证据补上
- 为什么企业常把「检索 + 生成」当成 LLM 应用的常见默认架构(不是唯一,但是高频)
- 为什么 AIGC 要把「生成」和「素材库」连在一起,而不只拼一句漂亮 prompt
生成模型还有隐私与训练成本问题:RAG 提供一条工程上可用的路径——知识放库里,模型负责读懂与组织。
在 AIGC 场景里,同一套「先检索再生成」还能接到素材库:品牌色板、历史成片、内部设计规范,都可以成为检索对象,而不必写进模型权重。
-
RAG 不只是文本问答——也可服务图像、代码、音乐、多模态生成。类比:开卷资料可以是书,也可以是样张、图纸、旧作业。
-
检索对象不一定是文档——图片、视频片段、代码文件、知识图谱节点、过往生成样例都行。
-
注入阶段不同——有的把资料拼进 prompt;有的在 latent representation 层注入;有的把检索器与生成器联合训练。
-
质量取决于四环节:检索 → 重排 → 上下文组织 → 生成。只优化模型本身通常不够;任一环掉链子,最终答案都可能错。
工程上常把「重排」当成性价比最高的旋钮:检索多拿一点(如 top_k=20),重排后再截断到模型真正读得完的 3–5 段,往往比盲目加大模型更管用。
案例 1:企业知识库问答(文本 RAG)
Section titled “案例 1:企业知识库问答(文本 RAG)”用户问产品配置问题。一条最小流水线:
q = "产品 X 的限流默认值?"chunks = retrieve(index, q, top_k=8) # 段落向量检索chunks = rerank(q, chunks)[:4] # 重排后只留最相关 4 段answer = generate(q, context=chunks)if not supported(answer, chunks): say("资料不足,无法确认")步骤含义:转 query → 检索 → 重排 → 生成 → 无证据则拒答。chunk 常见 200–500 token,重叠约 10–20%;top-k 过大容易把窗口塞满噪声。
评测时不要只看 BLEU/流畅度:抽 20 条问答,人工标「引用是否支持结论」。支持率上不去,先查索引与切分,而不是先换 LLM。
案例 2:图像生成用参考图检索
Section titled “案例 2:图像生成用参考图检索”检索对象可以是参考图。系统先找相似风格或构图,再用这些参考约束生成(例如拼 caption、IP-Adapter 一类条件)。
若检索错了风格,后面再强写 prompt 也难救——开卷考试翻错章节,作文再通顺也偏题。
案例 3:代码生成检索仓库上下文
Section titled “案例 3:代码生成检索仓库上下文”检索对象是仓库里的接口定义与旧实现。生成补丁时,把命中的函数签名、测试、相邻文件放进上下文。
仓库很大时,先按路径 / 符号过滤,再做向量检索,避免 top-k 全是无关文件。资料里没有答案时,应承认不知道,而不是编造 API。
三个案例共用同一纪律:检索对象要匹配任务模态;上下文要短而准;生成必须可对照证据。缺纪律的「RAG」只是把搜索框和聊天框用胶带粘在一起。
- 检索到错误资料——生成模型会把错误证据说得很自然。
- 资料太多——上下文窗口被噪声占满,模型反而更容易跑偏。
- chunk 切分粗糙——一个定义被切断,检索结果看起来相关但缺关键前提。
- 只看答案流畅度——RAG 应评估引用是否支持结论,而不是只看文字好不好看。
- 把 RAG 当数据库替代品——精确事务、权限和结构化查询仍然需要正常系统设计。
补一句操作建议:上线前用「故意塞错文档」做对抗抽检——若模型仍一本正经引用,说明你还缺拒答与引用校验,而不是缺更大的模型。
适用:
- 知识经常变化:客服、法规、内部文档、产品手册、研究资料
- 有明确外部语料的生成:按品牌素材写文案、按代码仓库给补丁建议
- 需要可追溯证据、方便人工审核的场景
不适用:
- 完全没有资料库的开放创作
- 检索库质量很差(RAG 会把噪声放大)
- 需要强一致事务 / 权限的操作系统式查询
- top-k 命中里无关段长期占比很高(例如 >50%)却不治理索引与重排
若你的主需求是「精确查表 / 下单 / 改权限」,先做正常 API 与数据库;RAG 最多当解释层,不要当事务层。
历史小故事(可跳过)
Section titled “历史小故事(可跳过)”- 早期 NLP 系统常把检索和生成分开:搜索引擎找资料,摘要系统压缩资料。
- 神经生成模型兴起后,人们一度希望模型自己记住所有知识——更新慢,也难以解释来源。
- REALM、RAG、RETRO、Atlas 等工作把检索重新接回神经生成。
- 这篇综述站在更晚的位置,把这些路线扩展到 AIGC 全域。
- 它说明 RAG 不只是问答技巧,而是一种生成系统架构。
- RAG 的核心不是「把搜索结果塞进 prompt」,而是把外部知识变成生成过程的一等输入。
- 做系统要同时关心四层:资料库是否可信、检索是否找对证据、上下文是否适合模型阅读、生成是否忠实于证据。
- 先治理 chunk / 索引 / 重排,再谈换更大模型。
- 无证据时拒答,往往比流畅胡编更有用。
开卷考试的胜负,多半不在文笔,而在目录、书签和你敢不敢写「本题材料不足」。RAG 工程也一样。
把这句话贴在评测看板旁边,比再加一条「提升流畅度」的 KPI 更有用。
- rag-lewis-2020:检索增强生成的经典入口。
- REALM:把检索接入预训练阶段。
- retro:用海量检索邻居增强语言模型。
- atlas-2022:端到端训练检索器和生成器。
- self-rag-2023:让模型学习什么时候检索和自检。
- graphrag:用知识图谱组织检索对象的一条工程路线。
- rag-lewis-2020 —— 文本 RAG 奠基,本综述的上游经典
- retro —— 检索邻居扩上下文的规模化路线
- atlas-2022 —— 检索器与生成器联合训练
- self-rag-2023 —— 模型自己决定何时检索
- replug-2023 —— 检索黑盒增强 LM 的一条支线
- graphrag —— 微软知识图谱 + RAG 的工程化探索
(暂无反向链接)