大模型---RAG

张开发
2026/4/16 10:19:20 15 分钟阅读

分享文章

大模型---RAG
目录1.什么是RAG2.RAG的作用3.RAG的基本流程(1)索引构建(2)在线问答4.RAG与微调的关系1.什么是RAGRAG(Retrieval-Augmented Generation)把参数化记忆(模型权重里学到的知识)和非参数化记忆(外部知识库/文档索引)结合起来,在生成答案前先检索相关文档,再把检索结果作为条件输入给生成模型。参考论文:2005.11401如下图所示,给定输入x,系统先用”检索器”去外部文档库里找相关文档z,再把“输入+检索到的文档”一起交给生成器产生输出y;训练时,检索器和生成器可以进行端到端联合优化。左边绿色框为检索器,不同任务的输入都先进入Query Encoder,被编码成一个查询向量q(x),论文中,RAG的检索器基于DPR(Dense Passage Retriever),采用双塔结构:q(x)是编码查询,d(z)是编码文档,文中通过它们的向量相似度来判断相关性,也就是说,查询向量和文档向量越接近,文档越可能被检索出来。图中间的MIPS(Maximum Inner Product Search),表示系统会在文档索引里,寻找与查询向量 q(x) 内积最大的那些文档向量 d(z),也就是找top-k最相关文档。Document Index 是 RAG 的非参数化记忆,论文中,RAG 的非参数记忆是一个dense vector index of Wikipedia,也就是把 Wikipedia 文档做成向量索引,供检索器访问。右边蓝色框为生成器,检索器找到相关文档以后,这些文档会和原始输入一起送入右边的Generator​(论文里使用的是一个预训练的seq2seq模型),并且把输入x和检索到的文档z做拼接,然后让生成器输出答案 y。系统不是假设只有一个文档绝对正确,其把检索到的文档z当作一个潜变量(latent variable),对top-k文档分别计算生成概率,再把这些概率按检索器给出的做加权求和,也就是图中标的“Marginalize”训练时,梯度不仅更新生成器,也会回传到查询编码器q,也就是检索器的一部分。为了避免频繁重建整个文档索引,他们在训练时固定了文档编码器和索引,只微调查询编码器和生成器。2.RAG的作用仅靠参数记忆有天然边界:① 参数记忆不够新:模型训练截止后,后来的事实、公司政策、内部知识、最新价格、最新文档,它都不知道。RAG特别适合回答不在模型训练数据里的问题,比如公司内部文档、最新项目资料等;② 参数记忆不够准:即使模型“知道一些”,也可能在细节上编造。RAG的价值就是给模型外部依据,让回答有 grounding。③ 参数记忆不够私有:RAG 的一个关键好处就是能在查询时注入你的私有数据,而不是重新训练模型。3.RAG的基本流程最标准的RAG可以拆成两个阶段:索引构建以及在线问答(1)索引构建流程:收集文档--解析文档--切块(chunki

更多文章