乐于分享
好东西不私藏

把文档丢给模型,并不等于做了 RAG,我觉得这个误会太常见了

把文档丢给模型,并不等于做了 RAG,我觉得这个误会太常见了

把文档丢给模型,并不等于做了 RAG,我觉得这个误会太常见了
有一次聊天,对方说,他们公司「已经上 RAG 了」
我问了一句:具体怎么上的?
他说:就是把产品手册 PDF 丢进对话框,让模型照着答。
我当时没反驳。
但我心里其实很清楚:如果只是把整份 PDF 一次性塞进当前对话里,这通常还不算工程里常说的那种 RAG。
“如果只是把整份 PDF 一次性喂进当前对话里,这通常不算典型意义上的 RAG;如果只是把整份文档直接塞进当前上下文里,那更像长上下文注入,而不是典型 RAG。真正的 RAG,更关键的是系统会不会在回答前先检索,再生成。”
这种方式,更像是一次性把资料塞给模型。有用,也能work。但它和「RAG」这个词背后那套东西,不是一回事。

先把 RAG 这个词说清楚

RAG 是 Retrieval-Augmented Generation 的缩写,中文常叫「检索增强生成」
说得直白一点,就是:
先从你的资料里,把和问题相关的那一小段找出来再把这些片段,当作上下文交给模型让模型基于这些内容来回答、总结、改写注意这里的关键词:先检索,再生成。
它不是「模型突然变聪明了」,也不是「模型把整本书都背下来了」。它更像:给模型一个「可以回头翻的抽屉」。每次回答前,先从抽屉里抽出几页最相关的纸,再动笔。
如果你只是把整份 PDF 一次性贴进对话里,那确实也「增强」了上下文。但那往往是一次性的、手动的、不可复用的流程。和工程里常说的 RAG,还差着好几步。

为什么很多人觉得「把文档塞进去」就等于 RAG?

因为表面上,结果看起来很像。
模型好像看过你的资料回答里能提到你的产品名甚至能引用条款里的句子
于是大家很容易把「有效果」「有系统」混成同一个词。
但真正做 RAG 的人,脑子里想的往往是另一套问题:
资料存在哪怎么切成适合检索的小块用户一句话进来,怎么变成检索查询搜出来的十条里,哪三条真的该进上下文进了上下文之后,怎么避免模型胡编没出现过的内容
这些问题,不是「把文件拖进对话框」能自动回答的。

检索、切块、注入,各自在干什么?

工程上未必每个人都用同样的分法,但大致都会绕不开这几件事:资料怎么切、怎么找、怎么放进生成过程里。名字可以不同,但逻辑大致是这样。
  1. 第一层是切块:
资料很少是「一整块刚好能搜」的形态。PDF、Wiki、工单、代码注释,都要先变成更小的单元。太小没语义,太大检索不准。这里就已经是工程判断了。
2. 第二层是检索:
用户的问题来了,不是直接把问题扔给向量库就结束。用什么embedding、怎么过滤权限、要不要混合关键词检索,都会影响「抽屉里抽出来的是不是对的纸」
3. 第三层是注入与约束:
搜出来的片段怎么拼进 prompt、怎么写系统提示让模型「只依据引用作答」、查不到时怎么说「不知道」。这一步决定的是:幻觉少一点,还是多一点。
所以 RAG 不是单一动作。它是一串动作连起来的结果。

RAG 和 MCP,听起来都像在「接外部」,差别在哪?

这两个词这两年都很热,也确实都和「模型外面的世界」有关。但如果把它们压成同一个平面,后面就会越聊越乱。
我现在的理解是:

“MCP 更偏通路,解决模型怎么接到外部工具和系统;RAG 更偏材料,解决回答前怎么把相关信息找出来并交给模型。”

比如用 MCP 去读一份实时更新的文档源,再在服务端做检索,把检索结果喂给模型。也可以各干各的。但没有 MCP,不代表不能做 RAG。做了 MCP,也不等于自动有了好用的 RAG。

做不好的时候,问题往往不在「模型不够强」

我慢慢观察到一个挺典型的现象。
检索不准切块太粗或太碎上下文塞太多旧信息没有出处标注没有「查无此人」时的兜底话术
这些问题堆在一起,最后表现成一句话:「模型又在胡说。」
但根因可能从头到尾都不在模型本身。它在你的资料结构、检索策略、以及你怎么约束生成。
搞懂 Token 计费那两篇之后,我反而更信一件事:成本不只是算力账,使用方式也是账。RAG 也一样。它不是买了向量库就结束。它是一整套「怎么让模型在正确的纸上写字」的习惯。

写到最后

把 PDF 丢进对话框,当然是一种用法。有时候也够了。
但如果团队对外说「我们已经上了 RAG」,我会希望那个词背后,至少真的有人想过:
资料怎么更新检索怎么评估错误答案怎么追
不是因为名词有多高级。而是因为当 AI 真的进入业务场景以后,含糊的词,最后都会变成含糊的责任。
把概念拆清楚,不是为了较真。是为了下次讨论的时候,大家说的是同一件事。

如果你认同这样的表达,欢迎把文章转发给身边正在学习 AI 的朋友。愿每一次阅读,都不是信息的堆积,而是真正理解的开始。