讨论大模型与小模型的差距时,很多人直觉上觉得小模型欠缺的是推理能力。但小模型其实很早就已具备逻辑推理能力,已经能够处理不少逻辑任务;Schaeffer et al. 2023 指出很多所谓的断崖式涌现只是度量方式带来的假象,推理能力并非大模型的专属。真正随参数规模拉开差距、成为小模型短板的,是知识存储容量。知识容量 scaling law 研究 KCSL 发现,语言模型大约能且仅能存储每参数 2 bits 知识;一个 7B 模型能存下约 14B bits,按论文估计这个容量超过英文维基与教科书的总和,而小模型能装下的事实只是大模型的一小部分。拉开小模型与前沿模型差距的,更多在于模型究竟存下了多少事实,而不是会不会推理。
这让测量模型到底知道多少事实成了绕不开的问题,但在工程上回答它并不容易。做系统的人没法直接翻开权重去排查某条具体事实,也很难分清模型答错一道事实题,究竟是训练语料里没学过,还是这次提问没能取出来。论文开场便举了这样一道题:哪个著名乐队在 Boardwalk 俱乐部演了第一场演出?答案是 Oasis。模型答不出这道题,很可能只是这次没有想起来,而不是权重里一片空白。
Google Research 在 ICML 2026(poster,OpenReview)发表的论文 Empty Shelves or Lost Keys? 正面测试了这个问题,Google Research 博客 2026-08-12 发布。作者团队使用公开数据集 WikiProfile 中的 2150 条维基事实,在 13 个模型上测试了大约 450 万条回复。作者测得,前沿模型对这批事实的编码率达到 95–98%,知识几乎全部存进了权重;但闭卷直接提问的失败率依然有 26–34%,即便开启思考也还有 11–12% 答不出来。
模型答错事实题通常有两种不同的病因。第一种是存储失败,知识本身在训练时没有固化到权重里,语料里没出现过或者出现了没学进去,参数里没有这条事实;第二种是访问失败,知识已经固化在权重里,但这次提问时模型没能把它取出来,问法和当初学会这句话的场景对不上。货架空了是没存进去,钥匙丢了是存了没取出来。
两种病症需要完全相反的药方。存储问题花钱在数据和参数上;访问问题则要把预算花在提问方式、核验机制、思考开销以及检索触发条件上。现有评测通常把两种失败记在同一个错号上,导致大家下意识去买第一种药,把钱花错方向。
单看几个百分比并不够,这是厂商发表的论文,用的是单一维基基准。让这项研究立得住的,是作者团队设计问法的心思:每一个测试选择都在堵住一条模型可以赖账的出口。下文把存储与提取的检验逻辑理清楚,后面的工程推论才立得住脚。
直接翻开大模型的权重去查找某条事实、检验知识有没有固化进去,在工程上并不现实。论文退而求其次,选择复刻模型在预训练时最熟悉的状态:把维基百科原文贴给它,截断在答案出现的前一刻,看它能不能顺着往下接。模型平时正是靠这种上下文接龙训练出来的,在最熟悉的情境下能接出答案,就足以证明参数里存有这份记忆。这是行为测试里最接近直接检查存储的手段。
这把测量存储的尺子,作者故意放得很松。测试包含接句子和贴原文提问两种变体,模型只要答对其中一道就算通过,而且全程关掉思考。对照组把门槛立得足够低,诊断存储缺失时才能足够保守:如果连贴着原文都接不上后半句,断定它没存进去才站得住脚。作者测得,前沿模型在这把松尺子下的编码率达到 95–98%,知识存储接近饱和。这套设计堵住的第一条误诊出口,就是怀疑模型其实没见过这条数据。
对照组把尺子放得很松,实验组就必须把尺子收得很严。在闭卷知识测试里,作者抽掉了全部原文,正着问和倒着问各出两道同义改写的题目,一共四道题,模型必须全部答对才算掌握。
同义改写这一对题,堵住的是模型没听懂这种问法的辩解。闭卷直接问事实题,模型一旦答错,最大的干扰变量就是措辞:测试者很难分清究竟是参数里没存这条事实,还是模型存了、只是不适应这种提问字眼。如果模型仅仅是不适应某种特定措辞,换一种说法成绩就会上下起伏;如果模型真正记住了这项事实,无论措辞怎么改,它都应该能稳定答对。同一道题换两种说法,正是为了把措辞这个变量控制住,把没听懂措辞与没存进去或存了取不出区分开来。作者进行了 104 次统计检验,确认同义改写对答题表现没有显著影响,证明成绩并不随措辞起伏。措辞变量排除之后,没听懂就不再是借口,四道题的真正考验完全落在提问方向上。
模型在预训练时顺着原文语序把事实学进参数,正向提问顺应了这种先后顺序,提取链路短;倒问把语序颠倒过来,偏离了预训练时的语言上下文,提取链路变长,也最容易中断。正问能答对,证明模型确实存下了这条事实;倒问答不上,则说明模型这次没能取出来。倒问成了最容易触发提取失败的场景,而同义改写负责排除没听懂措辞的干扰,两者配合,才把没存进去、没听懂与存了取不出干净地分开。
倒问失败还存在另一个更深的怀疑:模型是不是从来没有存下双向关联,也就是 2023 年以来讨论很多的 reversal curse。论文用选择题堵住了这条退路:把同样的题目做成四选一,将正确答案直接摆在面前。测试结果显示,所有模型在闭卷自主生成时倒问都比正问差,可一旦换成选择题,有 9 个模型的倒问成绩反而比正问更好。人在日常生活中也是如此,能从四个选项里一眼指认出正确名字,谁也不会断定他完全没有这段记忆。这种生成与选择题的对照,2024 年 NeurIPS 的 Delving into the Reversal Curse 已经做过分析,这篇论文则是把它搬进了真实的维基百科事实与更大规模的模型里。
在这把严尺子下,作者测得前沿模型闭卷直接提问的失败率落在 26–34%。不过这里有个必须讲清的前提:一边用松尺子量存储,一边用严尺子考提取,两者之间的缺口在逻辑上必然会出现,任何松紧尺度的对比都能得出数字差。这个差值里有多少反映了模型的真实状态,又有多少来自尺子的人为设定,仅靠论文内部的数据无法彻底剥离。真正经得起推敲的是这个缺口展现出来的变化形态,而不是它具体的绝对大小。
第一个站得住脚的形态,是冷门事实与热门事实的差距分化。冷门事实与热门事实在编码阶段的差距只有 5 个点上下,但在闭卷直接召回时,两者的差距迅速拉大到 20 个点以上。以 Gemini-3-Pro 为例,闭卷召回率在热门事实上有 84.6%,到了冷门事实直接滑落到 63.3%。如果两把尺子的松紧只是人为制造的数字假象,冷门和热门的差距理应同步起落。存储缺失解释不了这种分化,提取通路的受阻才解释得通。
这个现象直接触及了日常的默认归因。很多工程师看到模型答不出冷门知识,第一反应往往是训练语料见得少、模型没存进去,应当继续加数据。实验数据给出的结论正好相反:冷门事实大部分已经存进参数,编码水平与热门事实相差无几,真正卡住的是提取过程。盲目堆砌语料并不是对症的解法。
第二个形态出现在模型参数扩展的过程中。Gemma3 系列从 1B 扩到 27B,编码失败率从 85% 一路降到 23%,但在剩下的错误里,提取失败所占的比例持续上升。模型体量变大确实能把货架塞得更满,然而取货的通道并没有随之拓宽。扩大参数修好的是存储,修不好访问。对于像 Gemma3 1B 这样编码失败率高达 85% 的小模型,扩参数和加数据确实是正确的药方;但当模型规模扩大、编码趋于饱和之后,主要的瓶颈就从存储转向了访问。
WikiProfile 选取的全部都是单跳事实。诸如 Extreme 哪张专辑排到第 10 这类问题,中间没有任何逻辑推导链条,按常理思考机制派不上用场。然而作者测得,只要开启思考,前沿模型就能救回 40–65% 已经编码却在闭卷直接提问时答错的事实;相比之下,对那些一开始就没存进去的事实,思考只能救回 5–15%,开启思考后的残余失败率收窄到了 11–12%。
这个分组统计堵住的猜想,是认为思考只是让模型多碰运气,或者从其他关联知识里绕路硬推。如果思考纯靠碰运气或绕路,它对存进去和没存进去的内容应该一视同仁,但数据呈现出明显的偏向性。另一项佐证是输出的一致性:开启思考之后,模型在同一道题上的多次采样结果反而更集中,方差明显收缩。这表明思考在这里起的是检索作用,帮模型在权重里翻找已经存进去的记忆。
同组研究人员在六月发布的 Thinking to Recall(COLM 2026,arXiv 2603.09906)做了更彻底的检验。他们把思考过程中的推导文字全部替换成无意义的重复句,结果发现仅仅增加前向计算的 token 数量,就能帮助模型想起单跳事实。这背后的机制主要是计算缓冲与事实启动:更多的中间 token 为注意力机制提供了更多寻址机会,前文吐出的相关词汇又顺便充当了唤起正确答案的线索,与复杂的逻辑推演并无关联。
对于搭建系统的工程师来说,这一步直接给出了成本账本。思考确实是一味对症的药,但它的收益集中在已经编码的事实上。盲目对所有请求开启思考只是一种浪费,而要在真正需要翻找记忆时精准触发,又要求模型知道自己这次能不能取出来。这种元认知能力,论文并没有给出答案。
用户在线上问了一个公开百科事实,模型回答不知道,或者给出了错误的名字。面对这类回答失败,很多人习惯性地推断模型没有学过这条知识,随后急着去补充训练语料、做微调,或者立刻接入外部搜索。但在调整系统之前,首先应当分清病因:这条事实到底是没有存进权重,还是存进去了却在这次提问中遇到了提取阻碍。存储缺失和提取受阻对应着完全不同的优化方向,也决定了预算应当投向哪里。
排查生产环境中的事实性问题时,可以顺着四个具体的维度做对照检查。第一是覆盖情况,检查内部知识库或预训练数据到底有没有收录这条事实。第二是访问通路,尝试换一种问法或者反向提问,观察模型能不能顺畅答出。第三是再认能力,把几个候选答案摆在模型面前做单选题,测试模型能不能认出正确选项。第四是时效与私有属性,确认这项事实属于公开常识,还是属于随时变动的最新动态与团队私有数据。日常排查中如果只盯住第一项覆盖范围,容易误以为数据进了语料就万事大吉,其实线上遇到的大量故障都出在第二项的访问通路上。
如果遇到的是公开百科事实,线上与线下的探测应当遵循由廉价到昂贵的阶梯逐步推进。第一步先做低成本探测。工程师可以尝试调整提问语序,或者在提示词中提供少量上下文线索。这一步只消耗常规生成的计算开销,成本极低;如果换个说法模型就能答对,说明知识早已存在参数里,只是刚才的提问链路受阻。
第二步引入选项核验。如果调整问法后依然答不上,可以把模型生成的几个候选词做成单选题让它挑选。只要模型具备再认能力,准确率通常会明显回升,这一步同样不需要调用外部系统。
第三步再考虑开启思考。如果低成本探测和选项核验都没能唤醒记忆,开启思考能帮模型在权重里翻找单跳事实。但思考过程会消耗大量中间 token,计算成本远高于普通生成,不能无差别全量铺开,只适合留给高价值请求。
第四步才是触发外部检索。如果模型经过多轮探测与思考依然无法作答,说明这条事实大概率没有存进参数,这时调用检索系统引入外部上下文才是合理的选择。
对于团队私有业务数据和最新的时效事实,处理逻辑则完全不同。这类知识天然不存在于模型的预训练权重中,对它们做层层探测只会白白浪费算力。系统一旦识别出这类请求,应当直接接入检索,跳过全部权重探测流程。
这套分诊逻辑与检索增强(RAG)构成了互补关系。RAG 专门用来补充模型参数里原本没有的内容,解决私有文档与实时变动的获取问题;这套诊断则负责疏通模型权重里已经存下、却因为问法偏离没能取出的公开百科事实。两者的目标都是解决访问受阻,前者向外部知识库要增量,后者向已有模型权重调取存量。
目前许多自适应检索方案(例如 Self-RAG 或 Adaptive-RAG)尝试通过设计判断机制来决定何时触发检索。它们通常直接观察模型眼下能不能答出问题,一旦模型答不出就立刻发起检索。这种做法把没存进去和存了没取出混在同一个开关里。模型答不出公开事实往往只是提问方式不对,换个线索就能唤醒;如果不加区分直接调用检索,不仅额外增加了检索延迟与上下文处理开销,还掩盖了提问链路本身存在的提取缺陷。
下一次在生产环境中遇到模型答错事实题,不妨先退一步查清根因:它是真的没存进去,还是存了但这次没能取出来。针对这两种不同的病症,手里拿出的应当是两张完全不同的预算表。