当一句话的代价很高
在一些场景里,大模型说错一句话,代价可以忽略;在另一些场景里,代价高到不可接受。
一个专科问诊辅助系统,把并不存在的禁忌症讲得有鼻子有眼;一个金融合规问答,把早已废止的条款当成现行规定。这两个场景的共同点是:用户没有能力当场分辨真假,而错误会被当作专业结论直接采纳。
RAG(检索增强生成)几乎是所有人对付这类问题的第一反应:先去可信知识库检索,再让模型参考检索到的材料回答,而不是凭参数记忆瞎编。方向没错。但"接一个向量库"和"让大模型在复杂场景里不乱说",中间隔着一整套约束设计。
检索到了,不等于答对了
RAG 最大的误解,是把它当成一个检索问题,仿佛只要能找到正确材料,答案就正确了。
RAG 的本质,是把闭卷考试改成开卷考试:给模型发一份小抄,让它参考材料作答。但开卷考试也会考砸。小抄找对了,不代表抄对了、用对了。
把一次 RAG 回答拆开,至少有三个可以独立失败的环节。它们可以一高两低:检索很好,生成器却误读、扭曲了证据;或者答案读起来很对、很流畅,却没有任何检索材料支撑。
检索召回
该找到的材料,到底找到了没有
漏检 → 缺证据忠实度
有没有忠于材料,有没有超出材料自行发挥
脱离证据 → 编造答案相关性
答得切不切题,有没有跑偏
答非所问检索越多越准,是个错觉
直觉会说:多检索一点、把上下文给满,模型答得更准。复杂场景里,这个直觉是错的。
学术界一个反直觉的发现是:相关但非正解的文档,比完全不相关的文档更有害。完全跑题的材料,模型容易识别并忽略;似是而非的材料,模型会当真,被带偏。这和考试里最容易选错的,永远是那个看着眼熟的干扰项,是同一个道理。
与之配套的另一条:把上下文塞满,反而丢信息。长上下文里,模型对开头和结尾记得最牢,对中间段落明显走神,这被称为 lost in the middle。把关键证据埋在一长串材料的中间,约等于没给。
完全不相关
跑题明显,模型容易识别并忽略
害值 低相关但非正解
似是而非,被当真,把回答带偏
害值 高少量精准
证据集中,信噪比高,最优解
最优喂了资料,模型不一定听
还有一个更隐蔽的陷阱:很多人默认,只要把正确材料喂进去,模型就会照着说。事实并非如此。
当检索到的证据,和模型参数里的既有认知发生冲突时,模型不会无条件服从证据。研究发现,如果外部证据与模型记忆部分一致、部分冲突,会触发明显的确认偏误:它倾向于挑出和自己记忆一致的部分,忽略冲突的部分。而且,证据写得越自信、越连贯、越有说服力,越能压过模型记忆;措辞平淡的正确证据,反而推不动一个错误的先验。
这意味着,在高风险场景里,知识冲突消解必须被显式设计。哪些来源优先、冲突时信谁、过期内容如何剔除,都要落到机制里,而不是寄望于模型自觉。
降幻觉是一条递进的约束链
降幻觉从来不是"接个向量库"这一个开关,而是一条逐级叠加的约束链。Anthropic 公开过一组很说明问题的实测,在一个标准检索任务上,失败率随约束逐层叠加而下降。
一个经典例子:保温大棚和保温杯,在语义上很相近,纯向量检索可能把它们当成相关内容一起召回,引入幻觉。领域知识图谱可以沿实体之间真实的关系走,把这种似是而非的相关性约束掉。
最高难度:让它"不知道就说不知道"
约束设计里最难的一环,不是让模型多答对,而是让它在该闭嘴时闭嘴。
"如果材料里没有答案,就回答不知道",这条指令谁都会写,但真正做好极难,因为它会两头翻车。拒答做得太松,证据不足时模型照样编;做得太紧,塞进检索内容后,模型连本来会的也不敢答了,这是一种被检索内容干扰后的置信度崩坏。
每条结论可溯源,证据不足时明说"无法支持"
不是教它多说,是教它在边界内说
让大模型在复杂场景里不乱说,靠的不是更大的模型,也不是更大的向量库。
RAG 的真正价值,不在"检索",而在"给生成划边界":只让它在可信材料的范围内说话,材料不足时让它承认不知道,材料冲突时替它定好信谁。检索只是起点,约束才是工程。
一句话:RAG 不是教模型多说,而是教它在边界内说,并学会闭嘴。