微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 昂贵的"多词检索"为何一直不管用?澳大利亚昆士兰大学团队找到了真正的症结所在

昂贵的"多词检索"为何一直不管用?澳大利亚昆士兰大学团队找到了真正的症结所在

2026-05-15 11:05
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-05-15 11:05 科技行者

这项由澳大利亚昆士兰大学与澳大利亚联邦科学与工业研究组织(CSIRO)联合开展的研究,于2026年5月以预印本形式发布,论文编号为arXiv:2605.07210v1,研究方向归属于信息检索领域。感兴趣的读者可通过该编号在arXiv平台查阅完整论文。

每当你在搜索引擎里打下一句话,后台的系统就要在数以亿计的文档里找到最相关的那几条。这个过程听起来简单,实际上却涉及一套相当精妙的"语义理解"机制——系统不能只靠关键词匹配,还得真正"理解"你的意思。近年来,随着大型语言模型(就是那种能写文章、能聊天的AI)的崛起,研究者们开始尝试让这类模型直接充当搜索引擎的"大脑"。然而,有一个困扰了大家很久的问题始终没有解决:用多个词语来表示一段文字,效果应该比用一个词更好,但实际测试中却几乎没有改善,甚至更差——还白白花掉了大量计算资源。

昆士兰大学的研究团队决定追根溯源,看看这个"多词不如单词"的怪现象,究竟是多词本身的问题,还是另有隐情。他们的结论出人意料:真正的瓶颈不是"用多个词来表示"这个想法本身,而是主流语言模型产生这些词的方式——一个接一个、排队生成的顺序机制。一旦换成能够同时并行生成所有词的新型模型,多词检索立刻就变得既好用又高效。这套新方法被命名为DiffRetriever,其中"Diff"来自"Diffusion"(扩散),指的是一类与传统语言模型工作方式截然不同的新型模型。

一、搜索引擎的"语义大脑"是怎么工作的

要理解这项研究解决了什么问题,先得明白现代搜索系统的基本原理。传统搜索引擎靠的是关键词匹配:你搜"苹果手机",系统就找所有含有"苹果"和"手机"两个词的网页。但这种方法有明显局限——如果某篇文章写的是"iPhone使用体验",一次没提"苹果手机",传统方法就找不到它。

为了解决这个问题,研究者开发出了"语义检索"技术。其核心思想是:把一段文字压缩成一串数字(专业上叫"向量"或"嵌入"),这串数字能捕捉文字的深层含义。含义相近的文字,对应的数字串也会很相似。搜索时,系统把你的问题也转成一串数字,然后找数字串最接近的文档,这样即使用词不同,只要意思相近就能找到。

一个形象的比方是:把每段文字想象成一张"语义身份证",上面用数字编码记录了这段文字的"意思指纹"。检索时,你用自己问题的"身份证"去找指纹最像的文档。一张身份证能记录的信息有限,于是有人提出:何不给每段文字发多张"身份证",每张记录不同侧面的信息?这就是"多向量检索"的基本思路,也是著名的ColBERT系统所采用的方法。

问题在于,当时主流的大型语言模型(如GPT、LLaMA这类)生成这些"身份证"的方式很低效——它们必须一张接一张地"打印",每打印一张都要重新过一遍整个模型。你要5张身份证,就要跑5次模型,时间成本直线上升,而且效果还不见得提升。哥伦比亚大学等机构此前的研究(PromptReps)已经证实,多词版本并不稳定地优于单词版本,代价却高出许多。

二、新型模型的"并行印刷机"

昆士兰大学团队的突破口,在于一类相对新颖的语言模型——扩散语言模型(Diffusion Language Model)。其中最具代表性的两个开源模型是Dream(基于Qwen2.5初始化,由浙江大学等机构开发)和LLaDA(从头训练,由中国人民大学等机构开发)。

传统语言模型(如LLaMA、Qwen)的工作方式类似于人从左到右一个字一个字地写文章:每写下一个字,都要参考前面所有已写的字,然后才能决定下一个字是什么。这种"逐字生成"的方式有一个天然限制:第2个字的生成必须等第1个字确定后才能开始,无法并行。

扩散语言模型的工作方式则截然不同。它的思路更像一个填空游戏:一开始,所有待填的位置都显示为"[MASK]"(遮盖符号),然后模型同时看着所有遮盖位置和周围的已知内容,一口气把所有空格都填上。由于模型在填写时能同时"看到"左边和右边的内容(专业上叫双向注意力),并且所有空格是同时处理的,这就实现了真正的"并行生成"。

研究团队敏锐地意识到:如果把需要生成的K个"代表词"设置成K个[MASK]位置,扩散语言模型就可以在一次前向计算中,同时填出所有K个代表词,而不需要像传统模型那样跑K次。从"排队打印"变成了"批量印刷",时间成本从随K线性增长变成了几乎固定不变。

三、DiffRetriever的具体工作方式

明白了基本原理,再来看DiffRetriever是怎么具体操作的。

当系统要处理一个用户的查询(比如"糖尿病的早期症状有哪些")时,它会把这句话连同一个特定的提示语一起送给扩散语言模型,提示语大意是"请用几个词来代表这个查询,方便检索任务"。关键是,在提示语的末尾,系统会追加Kq个[MASK]符号——比如K=4时就追加4个遮盖位置。然后整个序列(原始查询加上提示加上4个[MASK])一次性送入扩散模型,模型同时填出4个代表词。

从这4个代表词中,系统实际上提取两类信息。第一类是每个代表词对应的"隐藏状态向量"(Hidden State),可以理解为模型内部对这个词的深层理解,维度通常有几千个数字,这组数字构成稠密向量(Dense Vector)。第二类是每个代表词对应的"词表分布"(Logits),即模型认为这个位置应该填哪个词的概率分布,经过处理后形成稀疏向量(Sparse Vector)。稠密向量捕捉的是语义层面的信息,稀疏向量则更接近词汇层面的信息,两者互补。

对于文档库中的每一篇文档,系统也用同样的方式生成Kp个代表词(查询和文档的代表词数量可以不同,比如查询用4个,文档用16个)。所有文档的代表向量提前计算好并存储起来,形成索引。

检索时,打分的方式采用了来自ColBERT的"最大相似度"(MaxSim)策略:对于查询的每一个代表向量,在文档的所有代表向量中找出最相似的那一个,然后把所有查询代表词的最高相似度取平均,得到稠密分数。稀疏部分则通过取各代表词词表分布的逐元素最大值来合并,再做内积打分。最终,稠密分数和稀疏分数经过归一化后各取一半,合并成最终的混合分数(Hybrid Score),用于排序。

为了让这套系统在不同场景下都有更好的表现,研究团队还在MS MARCO(一个标准的段落检索数据集)的训练集上扫描了所有(Kq, Kp)的组合,从{1,2,4,8,16}的笛卡尔积中选出表现最好的配置。结果Dream选出了(4,16)——查询4个代表词、文档16个代表词,呈现明显的"文档偏重"特征;LLaDA则选出了(4,4),查询和文档代表词数量相同,更为对称。

研究团队还设置了一个有监督微调阶段:用对比学习的损失函数(InfoNCE)在MS MARCO的训练数据上调整模型参数,让模型学习什么样的表示对检索更有帮助。微调时使用LoRA(一种只更新少量参数的高效微调方法,就像给已有的工具加了一个小适配器),所有模型的LoRA配置完全相同,这样微调后的性能差异就只来自检索机制本身,而不是训练配方的不同。

四、实验设置:公平的四方比拼

为了证明DiffRetriever的优势,研究团队设计了一个对比实验,核心原则是"控制变量"——所有系统使用相同的训练数据、相同的优化器、相同的超参数,唯一不同的是检索机制。

实验涉及四个骨干模型:两个传统自回归模型(LLaMA3-8B-Instruct和Qwen2.5-7B-Instruct)和两个扩散语言模型(Dream-v0-Instruct-7B和LLaDA-8B-Instruct),规模都在7到8亿参数级别。这四个模型被精心配对:Dream由Qwen2.5初始化后再用扩散目标训练,因此两者架构相同、初始化相同,只有训练方式不同,形成最严格的控制组;LLaDA从头训练,与LLaMA3配对则是规模相近的补充对照。

对比基线包括五个系统。BM25是传统的词频统计检索方法,作为基础参考线。PromptReps是在自回归模型上运行的代表词检索,就是多词检索方案失效的那个原始方法。DiffEmbed是另一种利用扩散模型的检索方法,但它把扩散模型当成BERT风格的编码器使用,对输入序列做均值池化,完全不利用扩散模型的[MASK]预测能力。RepLLaMA是在LLaMA3上做了对比微调的单向量检索器,代表有监督训练的上限参考。

评测在三个层次上进行:MS MARCO开发集用MRR@10衡量在域表现,TREC DL 2019和TREC DL 2020用NDCG@10衡量精标注的在域表现,BEIR-7(从BEIR基准中选取的7个数据集,涵盖开放域问答、多跳问答、科学事实核查、生物医学检索、金融问答、论点检索和重复问题检测)用NDCG@10衡量跨域泛化能力。

延迟测试在单张H100 GPU上进行,使用相同的注意力实现,以每查询毫秒数计量,确保硬件层面的公平比较。

五、零样本实验:两个模型族的命运逆转

在没有任何微调、直接"开箱即用"的零样本条件下,实验结果呈现出一个清晰的戏剧性反转。

单个代表词(K=1)的情况下,传统自回归模型占据优势。LLaMA3在MS MARCO上达到混合分数0.242,领先两个扩散模型。Dream单词版本表现最差,甚至低于BM25基线。DiffEmbed(把扩散模型当普通编码器用)表现更糟,说明扩散模型在K=1时的劣势来自骨干模型家族本身的特性,而非提示词设计的问题。

然而,当代表词数量增加到K>1时,画面发生了根本性的转变——但这种转变只发生在扩散模型上。对于自回归模型,多词版本的表现持平甚至下降:LLaMA3混合分数在MS MARCO和DL19上有所下滑,Qwen2.5在三个基准上基本持平,没有任何自回归多词配置显著优于LLaMA3单词版本。

扩散模型则走向了完全相反的方向。Dream从单词的0.112跃升到多词的0.218(在MS MARCO混合分数上几乎翻倍),反超了它的"母体"Qwen2.5;LLaDA多词版本达到0.248,超越LLaMA3并成为所有零样本系统中的最强。每一个扩散模型的多词收益在统计上都显著优于同骨干单词版本,以及LLaMA3单词版本。

这里最有说服力的证据来自Dream与Qwen2.5这对共享架构和初始化的孪生模型。它们的排名在K=1和K>1之间完全颠倒:Qwen2.5在K=1时领先,Dream在K>1时领先。唯一的区别就是解码方式——顺序生成还是并行填充。这就直接指向了结论:多词检索的优劣,取决于生成方式,而不是"多词"这个想法本身有没有价值。

在延迟方面,差距更加触目惊心。自回归多词(K≤20的零样本上限)每次查询需要275到300毫秒,而扩散多词只需要16到20毫秒,大约相差15倍。用大量时间换来零收益,和用几乎不增加的时间换来显著收益——两种策略的性价比天壤之别。

六、有监督微调:压缩差距后谁更强

加入对比微调后,所有系统都大幅提升,差距明显收窄,各代表词检索系统集中在一个较窄的区间内。但细看仍有规律可循。

DiffRetriever Dream多词版本成为微调后最强的代表词检索系统,在9个(基准×评分模式)单元格中占据5个最佳位置,包括DL19的全部三种评分模式,MS MARCO稠密分数达到0.433,超过PromptReps LLaMA3多词(0.430)、DiffEmbed Dream(0.405)和RepLLaMA(0.412)。

一个值得关注的模式是:最佳评分模式发生了转变。零样本阶段,混合分数(稠密+稀疏)在所有骨干模型和所有K值下都是最优选择;但微调后,稠密分数单独就够强,稀疏部分反而拖累了混合结果——等权重加权稀疏信号导致混合分数低于纯稠密。这说明微调让稠密向量变得足够强,稀疏部分的补充价值在有监督条件下大幅下降。

Dream在微调前后的轨迹最为戏剧化:零样本时是最弱的系统之一,微调后却成了最强的。相比之下,LLaDA从零样本到微调的提升幅度(+0.106 BEIR-7)远小于Dream(+0.195 BEIR-7)。研究团队给出的解释是:Dream在初始化时继承了Qwen2.5的自回归预训练权重,包含了对对比微调更友好的表示基础;而LLaDA从头在扩散目标下训练,这种预训练模式与对比检索的微调方式配合得不如自回归预训练那么顺畅。

七、跨域泛化:在陌生领域的表现

BEIR-7的7个数据集来自完全不同的领域,对检索系统的泛化能力构成真正考验。

零样本跨域结果延续了在域的规律。单词下扩散模型落后,多词后翻盘:DiffRetriever LLaDA多词版本以BEIR-7平均NDCG@10 0.539成为零样本最强系统,超过LLaMA3多词(0.500)。

微调后的跨域结果中,两对骨干模型出现了分叉。Dream系统(DiffRetriever Dream多词0.671)超越了PromptReps Qwen2.5多词(0.664),成为所有系统中BEIR-7平均分最高的,对比DiffEmbed Dream(0.638)和RepLLaMA(0.565)都有显著领先。LLaDA系统(DiffRetriever LLaDA多词0.645)则略低于PromptReps LLaMA3多词(0.655)。

从骨干模型角度看,Dream系(无论何种检索机制)和所有自回归系的系统都集中在0.638到0.671的区间,LLaDA系的系统则集中在0.595到0.645的较低区间——这个差距与检索机制无关,更像是LLaDA骨干模型本身在对比微调下的天花板。研究团队认为这与LLaDA缺乏自回归预训练基础有关,但明确表示这一推断有待后续工作验证。

Dream在7个BEIR-7数据集中,在NQ(开放域问答)、FiQA(金融问答)和Quora(重复问题检测)三个数据集上拿到列最优,其余四个数据集由自回归系统占优。Dream的优势在于各数据集表现均衡,而非在某个领域特别突出。

八、延迟深度分析:时间成本的完整图景

研究团队不满足于单一数字,进一步在两个维度上测量了延迟的变化规律:随输入序列长度的编码延迟,以及随索引文档数量的检索延迟。

编码延迟方面,所有系统随输入长度大致线性增长,但绝对水平差异极大。自回归多词在整个输入长度范围内稳定在60到80毫秒,自回归单词在15到30毫秒。DiffRetriever多词和单词都集中在15到30毫秒,多词版本的额外开销仅有5到10毫秒,远低于自回归多词的额外开销。在微调时K=4的上限下,自回归与扩散的编码时间比约为3倍(在较短输入时),随输入增长而收窄,因为固定长度的前向传播开始主导。零样本K≤20上限下,比值约为15倍,这是论文中引用的主要数字。

检索延迟(ANN向量搜索)随索引文档数量近似对数线性增长。多向量检索比单向量检索搜索代价更高,原因是每次查询要做Kq次ANN查找,索引中每文档存Kp个向量。Dream(Kp=16)的索引比LLaDA(Kp=4)大4倍,搜索代价也相应更高。在100万文档规模下,最慢的多向量配置(约17毫秒)与最快的单向量配置(约4毫秒)之间的差距,远小于编码端的差距,因此端到端延迟的故事仍然由编码端主导。对于更大规模的部署,Dream的Kp=16会成为更实质性的成本因素,需要在效果和搜索开销之间权衡。

九、固定预算的代价:还有多少潜力未被释放

研究的最后一部分提出了一个发人深省的问题:如果每次查询都能自动选择最合适的(Kq, Kp)组合,而不是所有查询用同一个固定配置,会有多大的收益?

研究团队构造了三种"先知型"上界——它们知道每条查询在哪个K值下表现最好,但这是理论上限,实际中不可直接部署:只自适应调整Kq、只自适应调整Kp、同时自适应调整两者。

结果令人震惊。仅调整Kq的先知版本就能让MS MARCO MRR@10从固定预算的约0.22(Dream)或0.25(LLaDA)提升到约0.30。仅调整Kp的先知版本能恢复更多差距,优于仅调整Kq的版本,说明文档端的代表词数量选择比查询端更关键。同时调整两者的完整先知版本在MS MARCO上达到约0.46,在BEIR-7上Dream达到约0.68(固定预算是约0.48),LLaDA达到约0.69(固定预算是约0.54)。

更关键的发现是:完整先知版本在每一个骨干模型和每一个基准组合上,都超过了对比微调后的固定预算版本,大约高出0.03到0.07。换句话说,如果能在不更新任何模型参数的情况下,仅通过智能选择每条查询的K值,就能超越需要大量计算资源进行对比微调的版本。LLaDA的仅Kp先知版本(BEIR-7约0.62)甚至几乎追上了微调版本(约0.63)。

这个发现意味着什么?它指向了一个全新的研究方向:自适应预算路由器(Adaptive Budget Router)——一个轻量级的小模块,根据查询的特征预测应该给这条查询分配多少代表词预算,然后再送给DiffRetriever编码。

为了验证这种路由器是否有可能被训练出来,研究团队考察了两个廉价的查询表面特征:查询长度(子词数量)和查询的香农熵(词元分布的信息量)。结果表明,这两个特征与最优Kq之间存在正相关:查询越长、信息量越丰富,最优K值就越大(在稠密评分下,峰值K从最短查询的约2单调上升到最长查询的约8)。Spearman相关系数在Dream稠密分数上达到+0.31,LLaDA达到+0.29,在稀疏分数上则稍低(+0.23和+0.13)。稠密方面信号更清晰,与此前观察到的"稠密向量每增加一个K收益更大"的规律一致。

这些相关系数并不大,仅凭长度和熵两个特征还不能复现先知版本的全部收益,但它们证明了先知版本的偏好是有结构的,不是随机噪声。研究团队将设计可部署的路由器留给未来工作。

十、单步还是多步:扩散模型的一个有趣附加发现

扩散语言模型在训练时通常被设计为多步迭代去噪过程:第一步填出最有把握的几个[MASK],第二步把已填的当作上下文再填剩余的,如此反复。DiffRetriever的主实验全程只用一步(S=1)。研究团队也测试了两步迭代去噪(S=2),结果出人意料。

零样本下,S=2比S=1显著更差,几乎在所有基准和所有数据集上都如此。Dream的MS MARCO混合分数从0.218降到0.172,BEIR-7稠密平均从0.427跌至0.309。这说明在零样本检索场景下,单步并行读取才是让代表词检索有效的关键,而非匹配训练阶段的多步去噪过程。

微调后,两个骨干模型表现出了分化:Dream依然是S=1更好或持平;LLaDA则在多个BEIR-7数据集上从S=2中获益(五个数据集上的稠密分数显著提升),尽管MS MARCO有所下降。研究团队认为这与两个模型的微调饱和程度有关——Dream在单步加监督后表示已经接近饱和,而LLaDA还有空间;迭代去噪在一定程度上弥补了LLaDA微调不足的部分,在跨域数据上尤为明显。主实验统一使用S=1,是为了跨骨干和跨基准的一致性比较。

说到底,这项研究的核心贡献可以浓缩成一句话:多词检索本身没有问题,是让词一个个排队出来的机制有问题。扩散语言模型的并行填充能力,恰好消除了这个瓶颈,让多词检索既能真正提升效果,又不需要付出额外的时间代价。微调后的DiffRetriever在主流跨域检索基准上超越了同等条件下的所有对比系统,包括有监督对比微调的单向量模型RepLLaMA。更引人遐想的是,那个"先知路由器"的实验表明,现有的固定预算系统离理论上限还差得很远,而打开这扇门的钥匙可能就是查询的长度和信息量这样简单的特征。

对于普通用户来说,这意味着未来的搜索系统有望在不增加响应时间的前提下,对复杂问题给出更精准的答案——长查询和信息密度大的查询会自动分配更多"理解资源",简单查询则保持高效。对于研究者而言,自适应预算路由、更大规模扩散模型的探索、以及如何解释"Dream为何比LLaDA对微调更响应",都是值得深入挖掘的方向。有兴趣深入了解技术细节的读者,可以通过arXiv编号2605.07210查阅完整论文,代码也已在GitHub的ielab/diffretriever仓库中开放。

Q&A

Q1:DiffRetriever和传统搜索方法相比有什么实际优势?

A:DiffRetriever能在不增加响应时间的情况下,用多个"语义身份证"来理解一段文字的不同侧面,而传统多词方法(PromptReps)做同样的事需要多跑十几次模型,时间成本高出约15倍,效果却没有提升。DiffRetriever在BEIR-7跨域基准上微调后达到NDCG@10的0.671,超过了同条件下所有对比系统。

Q2:扩散语言模型和普通语言模型(如ChatGPT那类)有什么根本区别?

A:普通语言模型从左到右一个字一个字生成,每个字必须等前一个字确定后才能开始,无法并行。扩散语言模型则把所有待填位置同时处理,借助双向注意力(能同时看左边和右边的内容)一口气填出所有空格,真正实现并行生成。这个区别让DiffRetriever能在单次前向计算中同时产生多个代表向量,而自回归模型需要多次串行计算。

Q3:DiffRetriever中的"先知路由器"分析说明了什么潜力?

A:研究团队发现,如果能为每条查询自动选择最合适的代表词数量(而非所有查询用同一个固定数量),在不更新任何模型参数的情况下,效果就能超过做了对比微调的版本,在MS MARCO上大约高出0.05,在BEIR-7上高出0.03到0.07。查询越长、信息量越大,分配更多代表词的收益越高(Spearman相关约+0.31),说明这种自适应路由器有可能被训练出来,是未来重要的研究方向。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-