你有没有想过,AI在做选择题的时候,脑子里到底在想什么?
比如客服系统要判断一条投诉该转给"账单部门""技术支持"还是"物流部门",或者智能助手要从一堆工具里挑一个来用。这种任务看起来简单,不就是从几个选项里挑一个嘛。但如果你真去扒拉现在主流AI系统的内部逻辑,会发现一件挺反常识的事:很多所谓的"决策模型",骨子里还是在做一件笨拙的事情,把问题和所有选项拼成一整段文字,塞进模型里,然后看哪个词的概率最高。
这事儿听起来没毛病,但只要你稍微往深里问几个问题,麻烦就全冒出来了。
选项换个顺序,答案会变吗?选项从3个变成300个,模型还认识吗?如果所有选项都不对,模型知道说"没有一个对"吗?同样一批候选工具,下一次换个新问题,还能不能不用重新算一遍?
新加坡国立大学的Qi Li和Xinchao Wang这篇论文,就是奔着这四个问题去的。他们给这个新系统起名叫Jeva,试图从根子上把这些毛病治好。
拼接式决策的四个老毛病
先说说问题出在哪。
现在很多开源的"系统一"模型,也就是那种不需要生成一堆推理文字、直接给出判断结果的快速决策模型,采用的是一种叫联合编码的做法。把问题状态和所有候选选项一股脑塞进同一段文本,走一遍语言模型的编码器,然后从输出的词概率里读答案。
系统一模型:指能够直接给出结构化判断(比如选择、是否、打分)而不需要生成长篇推理文字的AI决策模型,强调低延迟和直接性。
这个做法乍一看很自然,但它把三件本该分开的事情捆在了一起:语义理解、选项之间的相互比较、以及答案是否存在的判断。捆在一起的后果是什么?
论文里给出的数据很扎实。拿一个叫Typed Decisions的测试集来说,几个主流模型在选项顺序被打乱之后,答案翻车的比例相当高:JevK5翻车26.17%,InternDecision-4B翻车22.67%,连专门做校准优化的KEV-4B也有17%左右的翻车率。也就是说,差不多每四五道选择题里,就有一道题仅仅因为选项换了个排列顺序,模型给出的答案就变了。
这就好比你去考试,同一张卷子,只是把选择题的A、B、C、D选项打乱重排,分数居然能差出一大截。如果换个座位重新抄一遍这张卷子答案都能不一样,那这张卷子测的到底是你的知识水平,还是你蒙题时候的手气?
候选数量的问题更直接。很多基于固定答案符号表的实现,内部其实预设了一个有限的答案池子,候选选项一旦超过几十个甚至几百个,模型直接就不认了。论文测试中,InternDecision的两个版本在候选数达到128个之后,直接变成0%支持率,相当于直接罢工。
还有一个容易被忽略的隐患:很多系统把"所有候选选项里谁得分最高"和"候选选项里到底有没有一个靠谱答案"混为一谈。模型只会在给定的选项里做归一化打分,但从来没有真正回答过一个问题:这些选项里,是不是压根就没有一个是对的?
把这四件事拆开看,正是Jeva这篇论文想要解决的核心矛盾。
独立编码:把"认识"和"比较"分开
Jeva的第一个关键设计,是把问题状态和每个候选选项分开编码。
具体来说,系统用同一个共享的语言模型骨干,分别处理请求文本和每一个候选选项文本。请求文本走一个模板,候选选项走另一个模板,两者互不掺杂。也就是说,当模型在"理解"候选选项A是什么意思的时候,它完全不知道这次请求里还有候选选项B、C、D存在,更不知道当前的问题是什么。
语言模型骨干:指负责将文字转换成向量表示的核心神经网络组件,这里具体用的是Qwen3.5-4B。
这样做的好处立刻就能看出来。如果候选选项的内容是稳定不变的,比如一个工具注册表、一份文档库、一套标签词汇,那这些选项的向量表示就可以被提前算好、存起来,下次有新请求过来,直接拿现成的用,不用重新算。
这就好比一个大型图书馆,如果每次有读者来借书,图书管理员都得把全馆的书重新翻一遍、重新贴一遍标签,那工作效率得多低。独立编码相当于提前把每本书分类编目、贴好标签放在书架上,读者来了只需要根据自己的需求去查目录,不用等管理员现场重新整理全馆图书。如果不这样做,每一次新的借书请求都要把整个图书馆重新理一遍,书架越大,等待时间越长,这正是前面说的"候选数一多就跑不动"问题的根源。
但独立编码也带来一个新麻烦:选项之间互相不认识对方,那模型怎么知道该选谁呢?毕竟很多选择题的答案,恰恰取决于候选选项之间的相对关系,比如"技术支持"和"账单问题"放在一起时哪个更贴切,可能跟"技术支持"单独出现时完全不是一回事。
决策模块:让状态去"读"选项,而不是选项去"认识"彼此
这就引出了Jeva的第二个核心设计:一个轻量级的决策模块,专门负责把请求状态和候选选项池联系起来。
这个模块的工作方式是,只对请求状态做迭代更新,候选选项本身从头到尾保持不变,充当一个固定的"记忆库"。每一轮,请求状态会像做阅读理解一样,去关注记忆库里每个候选选项跟当前状态的相关程度,然后把这些相关信息汇总,更新自己的内部表示。候选选项本身一直稳坐不动。
这种机制在论文里叫候选条件状态细化,用的是注意力机制的变体,技术细节上引入了一个带熵正则化的权重分配规则,确保模型在关注某个选项的时候,不会把所有注意力都押宝在一个选项上,而是保留一定的"犹豫空间"。
候选条件状态细化:指决策模块只更新请求的内部状态表示,而保持候选选项向量不变的机制,使得状态能够根据当前候选集合调整自己的判断倾向。
论文里有一个很直观的实验验证了这套机制的价值。假设有候选项A、B、C两种版本C+和C-,当把C+替换成C-时,A和B之间的相对优势居然发生了反转,原本A更优,换了一个候选项之后反而B更优了。这是独立打分做不到的事情,因为独立打分里,A和B的得分计算完全不依赖于C是谁,加不加C、换成什么C,A和B的相对排名是不会变的。
这就像面试一个候选人,如果面试官的评判标准是孤立地给每个人打分,那换一个陪考的人进来,不应该影响原来两个人之间谁更强的判断。但现实中的招聘常常不是这样,有时候一个候选人显得优秀,恰恰是因为跟在场的其他候选人对比出来的。Jeva想捕捉的正是这种相对比较的效应,而独立打分的老办法,天生就做不到这一点。如果不引入这种状态细化机制,那些需要"参照系"才能做出的判断,模型就永远给不出正确答案,这也是为什么论文反复强调"单块决策模块就能实现偏好反转"是一件值得单独证明的事情。
覆盖率估计:把"没有答案"和"答案难选"分开
接下来是Jeva很巧妙的一个设计,覆盖率门控。
前面提到过,很多系统用归一化打分来表达候选项之间的相对优劣,但这个相对优劣跟"这批候选项里到底有没有一个是对的"完全是两码事。Jeva专门训练了一个独立的组件来回答后面这个问题,判断至少存在一个可接受候选项的概率。
覆盖率门控:一个独立估计"候选集合中是否存在正确答案"的概率模块,和候选项之间相互竞争的打分机制相互独立,用一个学习到的阈值和温度参数控制判断边界。
论文用一个很清楚的数学性质来说明这个设计的意义:在候选项的最高得分不变的前提下,往候选集里加入得分更低的新选项,不会影响覆盖率判断的结果。换句话说,加一堆明显不靠谱的选项进来,不应该动摇模型对"已有最佳选项到底靠不靠谱"的判断。而传统的那种在所有候选项(含一个显式的"无"选项)上统一做归一化的做法,恰恰做不到这一点,候选数一变,连带着"是否存在答案"这个判断都会跟着漂移,论文里专门用一个数学公式证明了这个漂移必然带着一个log K的负担,候选项越多,无中生有地被判定为"没有答案"的倾向就越强。
这就像医院的分诊台。一个病人挂号的时候,分诊护士首先要判断的是"这个病人需不需要看急诊",这跟"急诊科里哪个科室最适合接诊"是两个完全独立的问题。如果把这两件事混在一起做,比如说用候选科室的数量来反推病情轻重,那医院科室设置得越细致,病人反而越容易被误判成"轻症不用急诊",这显然是荒谬的。覆盖率门控做的就是把分诊和科室匹配拆开成两道独立的工序。
实际测试效果上,Jeva在Banking77这个含有3080条匹配请求的数据集上,null检测的AUROC达到98.66%,而对比的KEV-4B是93.61%,InternDecision-4B是84.27%,JevK5只有79.44%。换算一下,Jeva在约5%误判率的前提下,能识别出93.88%的"确实没有答案"的情况,这个数字相当亮眼。
AUROC:一种衡量二分类判断准确性的指标,数值越接近100%表示模型区分"有答案"和"无答案"的能力越强。
对称聚合与候选规模扩展
接下来说说Jeva如何应对候选数量变化的问题。
模块内部用的是对称聚合方式,也就是说,不管候选选项按什么顺序喂进去,决策模块处理它们的方式在数学上保证了结果不受顺序影响。论文给出了严谨的证明:固定住模型参数,用精确算术计算,打乱候选顺序只会相应地打乱输出概率的顺序,但最终的状态表示、null概率、以及打分类输出全都保持不变。
对称聚合:一种数学设计,保证模型处理一组无序候选集合时,输出结果不依赖于候选项在输入中的排列顺序。
实测数据直接印证了这个理论保证。在600道选择题上,原始顺序、倒序,以及若干随机打乱顺序下,Jeva的翻转率是0.00%,概率分布变化的均值只有3.17乘以10的负8次方,基本等同于完全不变。相比之下,表现最好的对比模型也有17%的翻转率。这是一个从"大概率稳定"到"数学上保证稳定"的质变。
至于候选数量能不能灵活扩展,关键在于Jeva的打分头是共享的,它不会因为候选数变多就需要重新定义输出空间,固定宽度和深度的情况下,计算开销随候选数线性增长,而不是触碰到某个硬编码的上限就直接崩掉。
在ToolRet这个基于工具检索场景构造的诊断测试上,候选数从32一路拉到2048个,Jeva全程完整支持,聚合准确率达到78.40%,而对比的JevK5虽然靠递归式逐个比较也能跑完全程,但准确率只有64.00%。更关键的是,在2048个候选项的极限测试下,经过批处理优化之后,Jeva的中位延迟从94.459秒降到12.040秒,提速达到7.85倍。
换个角度想这件事。如果一个系统的"做题能力"会随着选项变多而突然失效,那它其实没法用在真实世界里,因为现实世界的候选集合几乎永远在变大,不管是电商平台的商品库,还是企业内部的文档系统,数量只会越滚越多。一个只能应付16选1、换成2000选1就彻底歇菜的系统,本质上是个玩具。
缓存复用:候选不变就不用重新算
最后一个核心设计,是Jeva的缓存机制。
既然候选选项的向量表示是独立算出来的,跟具体哪次请求无关,那自然可以把这些算好的结果存起来,下次有新请求用到相同的候选项时,直接取现成的,不用重新跑一遍编码器。
论文设置了两种缓存方式。一种叫精确集合缓存,只有当新请求用到的候选集合跟之前完全一致(顺序也一样)时才命中。另一种叫混合缓存,更聪明一点,即便候选集合是全新组合的,只要里面有部分候选项之前出现过,也能直接复用那部分已经算好的结果,只对真正没见过的新选项重新计算。
精确集合缓存与混合缓存:前者要求候选集合完全一致才能复用计算结果,后者支持在候选集合重新组合、部分选项是新面孔的情况下,依然复用已有选项的计算结果。
实测数据相当惊人。在50条匹配的MLDR长文档查询上,候选复用率从0%、约50%到100%三档测试,当复用率达到100%时,混合缓存带来27.98倍的中位延迟加速比,p50延迟从2102.0毫秒直接降到75.1毫秒。即便是共享候选库的常规场景,Typed Decisions数据集上的延迟也从93.1毫秒降到46.6毫秒左右,避免了99.2%的候选项重复编码。
这就好比一个常年服务固定客户群的客服中心。如果每次客户来电,客服都要把整个产品手册、所有常见问题从头念一遍再回答,效率显然低得离谱。更合理的做法是,产品手册提前整理好、分门别类放在手边,客服只需要听清楚这次客户到底问的是什么,然后翻到对应那一页。候选项缓存干的正是这件事,把那些不随请求变化的内容提前准备好,真正花时间处理的,只有每次都不一样的那部分,也就是客户这次具体说了什么。如果没有这套缓存机制,每次新对话都要把整个产品库从头编码一遍,响应速度自然快不起来。
论文还专门验证了一点:所有缓存条件下,模型给出的决策结果完全不变,最大绝对概率差只有0.00736,几乎可以忽略不计。缓存加速的是计算过程,不是决策逻辑本身的妥协。
整体表现:一套方案打包解决四个问题
把这几块拼起来看整体效果。
Jeva-4B用的是Qwen3.5-4B作为语言骨干,只加了一个决策模块,通过LoRA微调,训练参数量只有1337万个,这个数字相对于一个完整的大模型来说非常轻量。
LoRA:一种低秩适配微调技术,只训练模型里一小部分额外参数,大幅降低训练和部署的开销,同时保留原始大模型的通用能力。
在通用评测套件上,Jeva在Banking77和MASSIVE两个数据集的多个候选数配置下,准确率都超过90%,在Mind2Web的跨任务、跨网站、跨领域三个子任务上分别拿到79.99%、62.25%、66.23%,是八项测试里七项的最佳表现。在Typed Decisions测试上,Jeva综合了Noul(是非判断)和Score(打分)两类任务,Noul的Brier分数(越低越好)只有0.0184,是所有对比模型里最低的,Score的MAE也是最低的0.2315。
这套系统把开头提出的四个毛病,顺序排颠倒、候选数量上限、无答案判断缺失、重复计算浪费,全都对应地给出了解法。独立编码解决了缓存复用问题,候选条件状态细化解决了相对比较的表达能力问题,覆盖率门控解决了答案存在性判断问题,对称聚合机制解决了顺序敏感性问题。
表格数据
| 测试项目 | Jeva-4B | 最佳对比模型 |
|---|---|---|
| Banking77 K=16 准确率 | **91.62%** | InternDecision-4B 75.03% |
| MASSIVE K=16 准确率 | **90.22%** | InternDecision-4B 75.79% |
| 候选顺序翻转率 | **0.00%** | KEV-4B 17.17% |
| null检测AUROC | **98.66%** | KEV-4B 93.61% |
| 2048候选延迟加速比 | **7.85倍** | - |
| 全量复用缓存加速比 | **27.98倍** | - |
写在后面
读完这篇论文,一个让我反复琢磨的地方是,Jeva其实没有提出什么惊天动地的新模型结构,它用的还是常规的注意力机制、还是常规的语言模型骨干,真正的创新发生在"怎么组织计算流程"这件事上。
这让我想起软件工程里一个老生常谈的概念,关注点分离。把语义理解、相互比较、答案存在性判断这三件常被混在一起处理的事情,用架构的方式物理隔开,而不是指望一个端到端模型自己隐式地学会区分这些概念。这种设计思路本身跟模型大小、参数规模没什么关系,它更像是一种工程纪律,一种对问题结构的诚实面对。
另一个值得留意的细节是,论文里那个候选选项被替换、导致两个未变选项之间偏好反转的几何证明,在决策表示空间里只用了二维向量就把道理讲清楚了。这说明有些看似复杂的模型行为,拆解到最本质的层面,其实可以用非常简洁的数学语言表达出来,复杂性往往来自工程实现的堆叠,而不是原理本身的晦涩。
这篇论文留下的一个问题是,当候选集合规模继续往上涨,涨到几十万甚至上百万的量级时,现在这种"候选记忆库"式的缓存方案是否还撑得住。论文测到2048个候选项为止,这个数字对工具调用、客服分流这类场景也许够用,但对一个要在百万级商品库里做决策的系统,答案可能还需要更多数据来验证。
Q&A
Q1:Jeva是什么?
A:Jeva是新加坡国立大学团队提出的决策原生架构,专门用来解决AI做选择题时的四个结构性问题:无法识别无答案情况、选项顺序影响判断、候选数量受限、以及无法跨请求复用计算。
Q2:Jeva和传统的联合编码决策模型有什么区别?
A:传统方法把问题和所有候选选项拼成一段文本一起处理,Jeva则用独立编码分别处理请求和每个候选项,再用轻量决策模块把两者联系起来,这样候选项的计算结果可以跨请求复用,且结果不受候选顺序影响。
Q3:Jeva在候选数量很多的场景下表现如何?
A:在2048个候选项的测试中,Jeva依然能完整支持并保持较高准确率,经过批处理优化后中位延迟相比未优化版本提速7.85倍,远超候选数超过128就直接失效的部分对比模型。







