同一批题,几套商业 RAG 系统的答对率全挤在 97.0% 到 98.0% 之间。这个区间的读法很直接:只要它肯开口,97% 以上是对的,几套系统看不出区别。换个指标再排一次,最低 16.7%,最高 98.1%,六倍。
一个评测,两个数,两种排序。这篇讲完,你会拿到一个关于"分母和正负号"的心智模型——它决定了你能在榜上看见什么、看不见什么。
(先顺一句:这是八月底挂在 arXiv 上的一篇,标题里挂着 hallucination,但从它端出来的那三件套看,重点不在"幻觉是怎么产生的",在"你的评测为什么看不见幻觉"。这个区分后面会变得挺要紧。)
分数怎么算,排名就先定了
先说这套分怎么算,因为它比模型本身更能决定排名。
你见过的绝大部分"准确率",分母是题库总量,不是答题量。答对分子加一,答错分子不动,弃答——分子分母都不动。
说人话就是:在这套算法下,弃答是纯亏的。你每弃掉一道题,就白扔一次拿分的机会。反过来,只要蒙对的概率不是零,瞎蒙的期望贡献就是正的。所以一个什么题都答的系统,在这张榜上永远不会输给一个挑着答的系统。不是因为它更准,是规则在奖励它多开口。
你可能会问,那把分母换成答题量不就完了,答对除以答过的。我本来也打算这么一笔带过,写到这里自己算了一遍,发现不对,收回上面那句话。
换分母确实治住了蒙题:答错会拉低比例,弃答不拉,所以只有自认为比平均线更有把握时才划算开口。它没治住的是另一件事——这条线是相对的,它跟着系统自己的表现浮动,同一个系统换套题库门槛就挪一次,两个系统之间也没法直接比。而且它只关心"答过的题里对了几成",完全不管你压根没碰的那些。
所以真正要动的是分子的正负号。这篇论文给的分是:答对 +1,答错 -4,弃答 0。
我第一次看到 -4 觉得这数挺随手,于是翻了它的参数扫描——论文把惩罚从 k=1 一路试到 k=9 重算了一遍,排序翻转没变。所以要紧的不是赔率定得多狠,是"答错要付代价"这件事本身在不在场。
至于 4 这个具体数字什么来头,论文没明说。我自己的读法是:+1 和 -4 摆一起,期望归零的临界点落在 80%,这套分实际是在要求系统自认为有八成把握才开口。这是我的读法,不是作者的原话,别当成定论。
还有一点得说清楚,免得被理解反了:弃答拿 0 分不是加分。一个全弃答的系统就是 0 分。这套分不是要把系统训怂,它要的是答满、答准、没材料的时候闭嘴,三件事一起做到。
金丝雀不是考题,是探针
这个框架里我最喜欢的一件东西是 knowledge-gap canaries。
金丝雀这个比喻是从矿里借来的:矿工带鸟下井,鸟比人先死,鸟一死就知道该撤了。放到这里,就是往题库里混一批"答案确定不在知识库里"的问题。它们不考系统会不会答,考它会不会闭嘴。系统对金丝雀开口,就说明这一句不是从检索到的材料里读出来的。
举个例子。假设你的知识库是公司内部定价表,只覆盖 2024 年之后的型号,那"2023 年某个型号卖多少钱"就是一只天然的金丝雀——它长得跟一条正常查询一模一样,答案确实不在库里。
这里最容易被搞混的是:金丝雀答对了也不免责。有人会说它答对了啊。答对恰恰更说明问题——它手里根本没有能支撑这个答案的材料,那个数字是从参数记忆里背出来的。矿里那只鸟只负责报警,这里的金丝雀答对了反而更糟,类比到这儿就该收了。对有知识库的系统,要求从来不是"答案对不对",是"答案有没有出处"。这两件事现在被混着算了。
这个设计还有个我很欣赏的地方:它便宜。判一道普通题要判对错,判一道金丝雀只要看它开没开口,不需要语义判分,不需要模型裁判,一个布尔值就够了。
回到开头那两个数
用 SimpleQA-Verified,一千道题,每道重复三次,三个不同家族的裁判盲评,一致率 98.9%。另外挂了一个完全不检索的基线当参照。
开口答题的时候,几套系统的答对率落在 97.0% 到 98.0%。也就是说"找到材料、读对材料"这一段,几套商业系统之间基本没有区分度了,大家都会。金丝雀违规率 16.7% 到 98.1%。
你排的那个榜,区分度全压在一个它们都能做对的项目上。
我不想把这读成"第一名很好"。16.7% 这个数本身也不好看——六分之一的概率,对着根本不存在的内容张口就来,放在任何对外产品上都不算小事。这套评测的价值不是让你挑出第一名,是让你看见这张卷子上还有一道你以前没出的题。
三类失败,第三类是新东西
归因管道把失败拆成三类:检索没找到、找到了但答错,还有第三类——本来该闭嘴却开了口。
前两类是老话题,能力问题,换模型、调切块、加 rerank,都在这两个盘子里转。第三类不是能力问题。系统不是没本事答对,是压根没被要求过在没材料的时候停下来。
这个区分的用处在于,两者的修法完全不同。检索和生成的失败,你调的是检索器和模型。弃答策略的失败,你调的是"不许凭记忆答"这条规矩有没有真的被装上。具体每家 pipeline 怎么实现的我不知道,但从机制上看,多数系统里这条规矩只是一句系统提示,不是一个被单独约束过的目标。提示是被希望遵守的,约束是被训练或者被外部护栏强制的,这中间差着好几层。
(附带一个好处:论文把代码、配置、逐次请求的日志和三个裁判的逐条投票全放出来了。这类论文的价值全在这儿——它的结论是一个关于"分该怎么算"的结论,只给结论不给原始打分的评测,你没法确认它自己有没有被自己那套分骗一遍。)
所以说到底,这篇在量的东西压成一句话:一个 RAG 系统的对外可信度,上限不是它答对了多少,是它在没材料的时候闭嘴的概率。这两个量在现在的榜上不共用一个分母,所以你从答对率里再怎么挑,也挑不出后面那个。
再往下是另一个坑:这种边界感到底能从模型里训出来,还是必须在系统外面再包一层人来当裁判。这条留到下次展开。
