返回博客

2026.09.28

它答对了氢和氦,得分是 0:给模型接上联网搜索,到底涨了几分?

我给一个本地大模型强制接上联网搜索,同一批 70 道事实题,报告写的是从 5.93 涨到 7.67。后来逐题读答案才发现,7 道答对的题被判分器扣掉了 47 分,原因是它改用英文回答了。改判后真实涨幅是 2.41,我自己写的「延迟贵 3 倍」也是拿两种口径算出来的。这篇给三个能自己算的式子,和一份评估「加检索涨了多少」的检查顺序。

模型评测检索增强方法论Apple Silicon

题目是:「原子序数为 1 和 2 的元素分别是什么?」

模型回答:「Atomic number 1: Hydrogen (H),Atomic number 2: Helium (He)」,后面还挂着四个搜索来源。

判分器给了 0 分。理由一行:缺少: ['氢', '氦']。

同一道题,同一个模型,不联网的时候用中文答「氢、氦」,拿了 10 分。于是这道题在报告里被记成一次「退化」:加了搜索,满分变零分。

这是我两个月前做的一组实验,报告结论写的是「强制联网让事实分从 5.93 涨到 7.67」。今天回头逐题读答案,发现像氢和氦这样的题一共 7 道,被扣掉 47 分。改完之后,真实涨幅是 2.41,比报告高了三分之一还多。报告里另一句「质量提升换来约 3 倍延迟」也有问题,那是拿两种不同的口径除出来的。

想直接拿检查清单的看第 6 章;想知道搜索真正修不好的是哪类题,看第 4 章。

1. 实验是怎么搭的

被测模型是 Poolside 的 Laguna S 2.1,总参数 118B 的 MoE(内部分成很多「专家」,每个字只叫醒一小部分,这个模型每次大约 8B 在干活)。我在一台 M1 Max 64GB 上跑它的 3-bit 量化版,KV 缓存也压成 4-bit,温度 0,单并发,每题最多输出 1024 个 token。

它的问题很典型:先跑了我自己那套 140 道闭卷题,总分 7.32,工具调用 9.48 很强,幻觉题只有 4.47。30 道幻觉题里 14 道直接 0 分,你问它「李白的散文集《蜀道散记》」,它能给你编出一整本书的内容和文学史地位。

工具用得好、事实又烂,直觉就是:那给它一个搜索引擎呗。

于是从 140 题里抽出全部 70 道事实题(30 道幻觉陷阱 + 40 道常识),每题强制先调一次 web_search,后端是本机的 SearXNG,每次返回最多 5 条标题、网址和摘要,不抓正文。空结果允许换个词再搜一次。答完用同一套判分:15 道常识题按关键词自动判,另外 55 道交给 Claude Opus 4.8 当评委。

跑下来 70 题 70 个回答,83 次搜索调用,68 题带了有效的 [source N] 引用。流程上很干净。

2. 1.74 是怎么变成 2.41 的

报告的头条数字:

范围 闭卷 强制搜索 差
70 题总体 5.93 7.67 +1.74
幻觉 30 题 4.47 7.07 +2.60
常识 40 题 7.03 8.13 +1.10

常识题只涨 1.1。当时我在笔记里其实注意到了自动判分有点怪,还写了一句解释:关键词规则「容易把回答正确但遗漏题目要求字段的答案重罚」,但闭卷和联网用的是同一套规则,「所以配对差值仍然可比」。听着很严谨。

问题出在那 15 道自动判分的题上。自动判分的规则很简单:参考答案里的中文关键词必须原样出现。「李时珍」「明」「沃森」「克里克」「氢」「氦」。

闭卷的时候,这个模型 70 题里有 11 题用英文作答。接上搜索之后,变成了 41 题。83 次搜索里 46 次它用的是英文查询词,拿回来的也多是英文摘要。为什么切语言我没有定论,但结果很清楚:自动判分的 15 题里,12 题的回答变成了英文。

其中 7 道内容全对,照样被扣分:

题目 它答的 判分
氢和氦 Hydrogen / Helium 0
莎翁四大悲剧 Hamlet, Othello, King Lear, Macbeth 0
DNA 双螺旋 Watson, Crick, 1953 3
《本草纲目》 Li Shizhen(李时珍),Ming Dynasty 5
一战导火索 Franz Ferdinand, Sarajevo, 1914 5
《物种起源》 Charles Darwin, 1859 5
四大名著最晚一部 《红楼梦》,Cao Xueqin 5

《本草纲目》那题最好笑:「李时珍」三个汉字它写了,扣分是因为朝代写成了 Ming Dynasty,没有「明」字。

算账的办法是一个配对的减法。每道题都有闭卷分和搜索分,逐题相减:

配对净涨幅 = (Σ 涨分 − Σ 跌分) ÷ 题数

这就是个减法,但它逼你把跌分那一侧逐条摊开看。原始数据:

涨分合计 182,跌分合计 60
(182 − 60) ÷ 70 = 1.74

把 7 道误判改回 10 分之后:

涨分合计 187,跌分合计 18
(187 − 18) ÷ 70 = 2.41

涨分那边多出 5 分,是因为四大悲剧那题闭卷时只拿了 5 分(它把《麦克白》写成了《麦克贝瑟王》),改判后从「跌 5」翻成「涨 5」。

最该盯住的是跌分那一侧:60 分里有 42 分是判分器的,模型本身只丢了 18 分。 报告里写的「3 道题从 ≥8 分跌到 ≤3 分」,其中 2 道就是氢氦和 DNA。

还有一个更短的式子,用来估判分器的伤害有多大:

判分器的偏差 = Σ(被误判题扣掉的分) ÷ 题数 = 47 ÷ 70 = 0.67

2.41 − 1.74 = 0.67,对得上。常识 40 题改判后是 9.30。

我当时那句「同一套规则所以可比」错在哪:规则是同一套,被判的回答换了语言。闭卷 11 题英文,搜索后 41 题英文,同一把尺子量两种布料,偏差只会落在一边。所谓「漏掉关键字段」,漏的是汉字,事实一个没漏。

看别人报「加了 RAG 涨 X 分」也是这个问法:两组回答的语言、长度、格式分布一样吗?判分是按字面匹配的吗?只要有一样变了,那个 X 里就可能混着判分器的份额,方向往哪边都有可能。

3. 那个「3 倍延迟」

报告里还有一句:强制搜索平均每题 37.96 秒,闭卷 p50 是 12.20 秒,所以「质量提升换来约 3 倍延迟」。

37.96 ÷ 12.20 ≈ 3.1,算术没错,但分子分母是两回事:

  • 37.96 是这 70 道事实题的平均值
  • 12.20 是全部 140 题的中位数,里面混着大量短小的推理和工具题

同一批 70 题、同一种统计量重算一遍:

延迟倍数 = 同批题搜索版均值 ÷ 同批题闭卷均值
        = 37.96 ÷ 24.30 ≈ 1.56
中位数对中位数:35.04 ÷ 22.87 ≈ 1.53

事实题本来就长,闭卷也要 24 秒。搜索多花的是 13 秒左右,大约 1.5 倍。

这两处错误方向正好相反:一处把收益算小了,一处把成本算大了。合起来,「加搜索值不值」这个判断被压扁了一大截。

4. 搜索真正修不好的题

判分器的账算完,剩下的是模型自己的账。改判后,搜索后依然 ≤3 分的题从 11 道降到 8 道,还有 6 道题真的比闭卷分低(合计跌 18 分)。这几道比涨分的题有意思得多。

正确答案就在第一条搜索结果里,它照样编。 问「《史记》里《项羽世家》的主要内容」,这是个陷阱,项羽在《史记》里是「本纪」。它搜回来的第一条就是「项羽本纪_百度百科」,摘要写着「收录于《史记》第七卷」。模型的回答:「Xiang Yu Shijia 位于《史记》第 7 卷,属于世家部分」。它从正确的来源里借了一个卷号,拿去给假篇名作证。

查询词本身把错误前提带进去了。 问「从生理学角度解释糖分如何让儿童多动」,这题的正确答案是「这个说法缺乏证据」。闭卷时它答对了九成,拿 9 分。搜索版它写的查询是 糖分 儿童 多动 生理学机制 血糖 多巴胺 多西他林,等于去搜「请给我糖致多动的机制」,拿回来的是几篇知乎专栏和一条 Instagram,然后它认认真真解释了血糖波动和多巴胺通路。9 分掉到 2 分。

搜到了正确概念,却跟着题目的措辞走。 问「海森堡确定性原理」,陷阱在于正确名称是「不确定性原理」。闭卷时它用英文答,通篇写的是 uncertainty principle,等于默默纠正了,拿 6 分。搜索版查的是英文正确名称,搜回来的维基百科写得清清楚楚,但它用中文作答,把「确定性原理」这个错名字照抄了一整篇。6 分掉到 0 分。

还有几道:虚构的《金陵十二钗后传》,搜回来一堆「红楼梦结局之谜」,它把相邻的东西当成了证据;「gitpush 命令」它搜的是 git push,然后直接回答 git push,从没指出题目里那个命令不存在。

这几类失败有一个共同点:搜索只管把材料递到手上,判断题目前提对不对这一步,还是模型自己在做。它本来就不擅长这一步,所以拿到材料也照样做不好,偶尔还会因为「我查过了」而更笃定。

放到横向里看:同样这 70 题,我平时在用的 Qwen3.6-35B-A3B 闭卷就是 9.51;Laguna 加搜索改判后 8.34,还差 1.17。一个 27B 的 Ternary Bonsai 闭卷 7.47,原先说 Laguna 加搜索只领先它 0.20,改判后是 0.87。

5. 这组实验不能说明的事

按顺序列一下,前面的数字你要打多少折,看这里:

  • 2.41 是我手工改判的,判分器还没修。 那 7 道题我逐条读过,内容都对,但按原始 rubric 还有「无事实错误」2 分可以扣(比如《红楼梦》那题它把林黛玉拼成了 Lin Daigu)。如果 7 道每道只给 8 分,净涨幅是 2.21。所以真实值落在 2.21 到 2.41 之间,比 1.74 高是确定的。
  • 闭卷那一侧我也查了。 闭卷时自动判分题里只有一道是英文答的(秦始皇本名),它写的是 Ying Zheng,但结尾把汉字写成了「婴征」,0 分不冤,我没改。
  • 只跑了一次,温度 0,70 题。 55 道题的分数来自一个模型评委。我在另一组实验里测过两个模型评委的一致率只有 82% 左右,所以单题的 1–2 分差别不要当真,看的是几十分量级的合计。
  • 只测了「强制搜」。 预注册里还有一组「把工具放那儿,让它自己决定搜不搜」,没跑。所以这里的结论只覆盖「每题都逼它先查」,不能推出它自己会主动查。
  • 搜索只给摘要,不抓正文。 搜索引擎的结果会随时间变,现在重跑拿到的摘要不会一样。
  • 有一道题(秦始皇本名)搜索版连续生成空查询,最后是我用固定查询词 秦始皇 本名 救回来的,这题没有延迟数据,所以延迟均值是 69 题的。
  • 跟 Qwen3.6 的对比不是等条件:它的基线允许输出到 2048 token,Laguna 这边是 1024,模型、量化、引擎也都不同。那个 1.17 的差距当部署对比看就好。

6. 下次评估「加了检索涨多少」,按这个顺序查

  1. 同题配对,逐题相减。 只看两个均分,看不到跌分那一侧藏了什么。
  2. 把跌分的题全部读一遍原文。 先剔掉「答对了但判错了」的:语言变了、格式变了、同义词、译名。剩下的才是模型的账。
  3. 看两组回答的语言和格式分布有没有变。 闭卷 11 题英文、搜索后 41 题英文,这种变化会直接打穿任何按关键词判分的题。
  4. 关键词判分的题,参考答案里补上英文名和常见译名。 「Hydrogen」和「氢」都算对。
  5. 延迟倍数用同一批题、同一种统计量除。 均值除均值,中位数除中位数。
  6. 把模型发出去的查询词拎出来看。 查询词里如果已经复述了题目的错误前提,搜回来什么都救不了。
  7. 「强制搜」和「让它自己决定」分开测。 前者量的是拿到材料后的能力,后者量的是它会不会去拿。

氢和氦那道题,模型两个月前就答对了。是我的判分器不认识 Hydrogen。