what is rag in ai model

接入与开发

用工程视角讲清 RAG 是什么、它怎么给大模型补知识,并给出评估与上线前该确认的几件事。

查资料时看到 RAG 这个词,一会儿说它是检索、一会儿说它是架构、一会儿又说它能治幻觉,越看越糊。这篇不堆概念,先把 RAG 在大模型里到底扮演什么角色讲明白,再落到你怎么判断自己该不该上、上线前要盯住哪几个指标。想算具体成本或看模型能力数字,去站内对应页面按当时的数字核对。

查资料时看到 RAG 这个词,一会儿说它是检索、一会儿说它是架构、一会儿又说它能治幻觉,越看越糊。这篇不堆概念,先把 RAG 在大模型里到底扮演什么角色讲明白,再落到你怎么判断自己该不该上、上线前要盯住哪几个指标。

如果你只是想算算调用成本、或者对比各家模型的能力档位,那不用在这篇文章里找答案,去站内对应页面按当时的数字核对就行。这里只讲判断标准和可执行动作。

一句话说清 RAG 在做什么

RAG 就是「先查资料再回答」。你把用户的问题拿去自己的资料库里找相关片段,再把找到的片段和原问题一起交给模型生成答案。模型的权重没有任何变化,它只是多了一份临时塞给它的上下文参考。

检索 Retrieval
从你的资料库里找出与问题最相关的若干片段,这一步决定模型能看到什么
增强 Augmented
把检索到的片段拼进提示词,让模型带着这份材料作答
生成 Generation
模型基于问题和材料输出答案,理想情况下还标注引用来源

它解决的是三类问题:知识时效(训练数据截止后的新信息)、私有资料(你公司内部文档)、事实出处(答案能不能溯源)。它不是让模型变聪明,推理能力该弱还是弱。

一次 RAG 请求的链路长什么样

  1. 进料端文档清洗、切块、算向量、写进向量库。这步的质量直接决定后面天花板,切块切碎了后面的召回再好也白搭。
  2. 查询端把问题向量化,召回若干候选片段,必要时做重排,再把筛选后的片段拼进提示词。
  3. 生成端模型基于拼进来的片段作答。最好要求它标注引用来源,这样出问题能回溯到具体片段。
  4. 排查顺序答非所问先查切块,答得空泛先查召回条数,答得离谱先查模型有没有照片段说。

这条链路里最容易出问题的不是模型,是进料端。很多团队一上来就调模型参数,结果发现是文档切得稀碎、或者向量库压根没更新。

怎么判断你的场景该不该上 RAG

场景特征适合上 RAG不适合上 RAG
回答依据必须依据内部文档、政策、产品手册任务本身不依赖外部事实
任务类型客服问答、知识库检索、合规查询写代码、做数学、改写文案
资料更新资料会持续更新,改一次文档就能生效资料基本不动,且格式要求极严
可溯源性需要标注答案出处不需要溯源,答对就行

和微调的分工也要想清楚:知识频繁变、要求可溯源,就走 RAG;要固定语气和输出格式,再考虑微调。两者不冲突,可以叠着用。

和 Agent 的边界在于:需要多步决策、动态调工具才轮到 Agent,RAG 只负责把资料端上桌,不做决策。

上线前必须盯的几件工程事

  • 先做一批固定测试问题,每次改动切块或提示词都跑一遍,别靠感觉判断变好没变好。
  • 把召回条数、上下文长度和超时设成可调参数,别写死在代码里,线上出问题能快速回退。
  • 记录每次请求命中了哪些片段,出问题才有得复盘,不然只能猜。
  • 成本按 token 算,检索塞太多片段会推高单次开销,去站内成本计算页按当时口径估算。
  • 给模型加一句「只根据提供的资料回答,资料里没有就说不知道」,能压住一部分瞎编。

上线前还要确认一件事:你的资料库有没有权限隔离。内部不同角色的文档混在一个库里,检索时可能把不该给某人看的片段召回出来。这不是模型的问题,是检索层要管的。

下一步想对比不同中转站的实际响应和稳定性,去站内测速页跑一轮,再回来看你的 RAG 链路该压哪一环。

常见问题

RAG 和直接微调模型有什么区别?

RAG 是把资料临时喂给模型,模型权重不变,资料更新只要更新库;微调是把知识或风格写进权重,改起来要重新训练。多数「资料会变、要能溯源」的场景先上 RAG,等格式和语气要求稳定了再考虑微调。

用了 RAG 就不会胡说八道了吗?

不会。如果召回没找到对的片段,或者提示词没约束模型只能用片段回答,它照样会编。要做的是要求模型标注引用、找不到资料就明说没有,再配一批测试问题定期验证。

RAG 的效果主要卡在哪一步?

多数时候卡在进料:文档没清洗干净、切块切碎或切太粗,后面再好的模型也救不回来。先看切块粒度和召回质量,再去看模型选型,顺序别反。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。