最近又有人问,RAG 到底解决了什么。
简单说,它让模型先查资料再开口,不是全靠脑子里记着的那点东西。
问题是,查到的资料本身可以是错的。
八月底有篇论文就是冲着这件事来的。ReliableRAG,arXiv 编号 2608.25487,主分类 cs.CL,九个作者,第一作者 Jinpu Jiang。背景就这些,一句带过。
我挑它,是因为它讲清楚了一件我一直没想明白的事。你把正确的文档喂进去,它照样能给你一个读起来很像样的错误答案。
原因不复杂。它太信任检索回来的东西了。
它挑的靶子是"多跳"
多跳,就是那种要连着走好几步的问题。第一步查到的信息,是第二步的前提。
这类问题最脆。检索出来的文档里混进一段看着相关、其实是编的,整条链就跟着歪。走三步,错三步。
论文里管这叫"欺骗性错误信息"。不是一眼能看出的假消息,是跟问题沾边、读着通顺、事实是错的那种。
点评:这个区分很关键。以前防的是查不到,现在要防的是查到了错的。后者难对付得多,因为它在语义上完全通顺。
它的做法,是把文档拆成三元组
ReliableRAG 从源文档里抽信息片段,组织成结构化三元组。主体、关系、客体,一条一条摆出来。
然后给每条打分。分数由两部分合成:三元组跟问题的语义相关性,加上三元组自身的可信度。
接着只留前 K 个既可靠又不重复的三元组,其余丢掉。
最后拿这 K 条自回归地往下搭推理链。一步一步走,尽量让每一步都踩在留下来的证据上。
点评:思路不算新,但"可靠且不冗余"这个约束我认。RAG 翻车很多时候不是信息太少,是同类信息塞太多。自相矛盾的那一条混在里头,模型偏偏挑了它。
补充一句,可信度具体怎么算,这篇我只看到一半。方法给的是相关性和可信度的组合量化,可信度的来源我没完全吃透。先放在这里,搞明白再补。
结果
三个多跳问答数据集上都跑了,比现有方法好。论文还提了注入欺骗性错误信息之后,事实可靠性和鲁棒性都有提升。
它自己说是首个用细粒度三元组评估做这件事的框架。
点评:这类"首个"我一般打折看,学术圈每篇都想抢这个词。但方向是对的。从整段文档信不信,降到一条信息信不信,粒度确实细了一档。
对普通人意味着什么
大部分人不会去搭 RAG,但大部分人都在往 AI 里塞资料。塞文档、塞笔记、塞会议记录、塞一堆存下来的网页。
里面只要有一条是错的,而那条错得还挺像样,模型不会替你分辨。它会顺着往下推,推得还特别流畅。
所以建议就一句:喂资料的时候宁少勿杂。三条确定对的,比三十条不知道对错的强。
还有,别整段整段地喂。你自己都说不清哪一句是关键,它更说不清。
有个老话题可以顺手接上。上下文里塞的东西越多,模型对中间那段的注意力越容易散。这跟这篇的发现有几分像,是一个问题的两面。一边是它没看见,一边是它看见了,但不知道该信哪条。
最后自我打脸一下
我上面说宁少勿杂,真做起来,我自己也经常把一整个文件夹拖进去。省事,而且大部分时候确实没事。
出问题的那几次,回头翻,基本都是里面混了一条我自己没读完的东西。
说到底,这篇论文对我最大的用处不是那个框架。是它把"模型胡说"这口锅,从模型身上挪回了喂料的人身上。
这个挪动挺重要。它意味着你不用等一个更强的模型来救你,你自己现在就能做点什么。
本周就这些。
上面有任何一条你试过、或者觉得我讲错了,欢迎告诉我。那篇的方法部分要是谁读懂了,更欢迎回来讲一遍。
下周见。
