很抱歉,您的问题似乎不完整。如果您能提供更多的上下文或具体问题,我会很乐意帮助您解答。
摘要:当 AI 开始"翻书":一文读懂检索增强生成(RAG)的前世今生与实战指南 开篇:AI 很强,但它也会"胡说八道" 你一定用过 Chat
当 AI 开始"翻书":一文读懂检索增强生成(RAG)的前世今生与实战指南
开篇:AI 很强,但它也会"胡说八道"
你一定用过 ChatGPT、Copilot 或者 Stable Diffusion。它们能写论文、补代码、画插图,看起来无所不能。但如果你问 GPT 一个上周刚发布的 API 接口叫什么,它大概率会一本正经地编一个不存在的名字——这就是所谓的"幻觉"(hallucination)。
问题不止于此。大模型的知识冻结在训练截止日期,无法自动更新;对冷门领域(长尾知识)覆盖不足;训练数据可能泄露隐私;而且模型越大,训练和推理成本越高。这些问题在实际部署中尤为突出——你不可能每次有新知识就重新训练一个百亿参数的模型。
有没有一种方法,让模型在回答之前先"翻翻书",从外部数据源里找到相关资料,再据此生成答案?这就是 检索增强生成(Retrieval-Augmented Generation, RAG) 的核心思路。北京大学 Zhao 等人在综述论文 "Retrieval-Augmented Generation for AI-Generated Content: A Survey" 中,系统梳理了 RAG 的基础范式、增强技巧和跨模态应用。本文将以这篇综述为蓝本,带你从零建立 RAG 的完整认知。
一、AIGC 的强大与"痛点":为什么需要 RAG
AIGC(AI-Generated Content)泛指由生成式模型产出的内容,涵盖文本(GPT、LLaMA)、图像(DALL-E、Stable Diffusion)、视频(Sora)等多种模态。这些模型依赖海量参数存储知识——可以理解为把整个图书馆"压缩"进了神经网络的权重里。
但"参数记忆"有四个天然短板:
知识过时:模型训练后,世界还在变化,新知识无法自动写入。
长尾盲区:冷门实体、小众 API、罕见病例等低频知识覆盖不足。
隐私风险:训练数据中的敏感信息可能被模型"记住"并泄露。
成本高昂:为了覆盖更多知识而不断扩大模型参数,训练和推理开销剧增。
RAG 的解法很直觉:给模型配一个外挂的"非参数记忆"(non-parametric memory)。你可以把它想象成考试时允许翻阅的参考资料——模型不需要把所有知识都"背"进参数里,只需要在回答时知道去哪里查、怎么查。这个外挂记忆就是一个可检索的数据仓库——可以是文档库、知识图谱、代码仓库,甚至是图片集。它易于更新(改文档比重新训练模型便宜得多)、能容纳海量长尾知识、可以通过权限控制隔离敏感数据,还能通过"用检索代替生成"来降低推理成本。
简而言之,RAG 让模型从"闭卷考试"变成了"开卷考试"。
二、RAG 是什么:一条最小可行流水线
一个最基本的 RAG 流程可以拆成五步:
输入查询(Query):用户提出问题或给出生成指令。
检索 Top-k(Retrieve):检索器在数据源中找到最相关的 k 条结果。
增强(Augment):将检索结果与原始查询融合,形成增强后的输入。
生成(Generate):生成器基于增强输入产出最终结果。
可选后处理(Post-process):对输出进行改写、重排或验证。
其中,检索器是关键。综述将检索方法分为三类:
稀疏检索(Sparse Retrieval):基于词频统计,如 BM25、TF-IDF。用倒排索引实现高效查找,是大规模网页搜索的经典基线。优点是无需训练、可解释性强;缺点是无法捕捉语义相似性。
稠密检索(Dense Retrieval):用预训练模型(如 BERT)将查询和文档编码为稠密向量,通过余弦相似度等度量计算相关性。需要构建近似最近邻(ANN)索引(如 HNSW、DiskANN)来加速搜索。语义理解能力强,但需要训练数据和 GPU 资源。
其他方法:包括编辑距离、抽象语法树(AST)匹配、知识图谱的 k-hop 邻居搜索、命名实体识别(NER)等。
Tip:对于大多数文本 RAG 场景,BM25 + Dense Retrieval 的混合检索(Hybrid Retrieval)是一个稳健的起点。稀疏检索擅长精确关键词匹配,稠密检索擅长语义泛化,二者互补。
三、生成器与检索器:你在系统里能换哪些"发动机"
RAG 是一个"检索器 + 生成器"的组合系统,两个模块都可以独立替换。
生成器侧:
Transformer:当前主流,GPT、LLaMA、BART 等均属此类,擅长序列到序列任务。
LSTM:早期序列模型,在部分代码生成和摘要任务中仍有使用。
扩散模型(Diffusion Model):图像和音频生成的主力,如 Stable Diffusion。
