这项由韩国高丽大学(Korea University)及其人类启发人工智能研究院(Human-inspired AI Research)联合开展的研究,发表于2026年第49届国际ACM SIGIR信息检索研究与发展会议(SIGIR '26),会议时间为2026年7月20日至24日,地点为澳大利亚墨尔本。论文预印本编号为arXiv:2604.04734,有兴趣深入了解的读者可通过该编号查询完整论文。
**当你向搜索引擎提问,背后发生了什么?**
每当你在搜索框里敲下一个问题,互联网背后有一套精密的机器在飞速运转。粗略来说,这套机制分为两个阶段:第一步是"海选",从数以亿计的网页中快速筛选出几百个候选结果;第二步是"精排",从这几百个候选中仔细甄别,给出真正最相关的答案。
完成第一步"海选"任务的,就是本文的主角——**稠密检索模型(Dense Retrieval Model)**。通俗地说,这类模型会把每一篇文章压缩成一个高维数字向量,就像给每篇文章做一张"基因指纹",然后通过比较问题和文章的"基因指纹"有多相似,来判断相关性。这种方式速度极快,适合大规模检索。
然而,把一整篇文章压缩进一个向量,难免会丢失很多细节。正因如此,稠密检索模型在精度上往往逊于那些能够逐字逐句比对问题与文章的精排模型(称为"交叉编码器")。好比说,一个能把整本书浓缩成一句话摘要的人,在理解能力上自然比不过一个能逐字通读全书的人。
为了弥补这个差距,研究人员发明了一种叫**知识蒸馏(Knowledge Distillation)**的训练方法。道理很简单:让精排模型这位"读书达人"扮演"老师",给各种文章打分,评出哪篇最相关、哪篇次之、哪篇完全无关;再让稠密检索模型这个"学生"努力学习老师的打分习惯。这样,学生虽然不能像老师那样精读全书,却能从老师的评价体系中汲取智慧,大幅提升检索质量。
问题是:老师打了那么多分,学生到底该学哪些样本?
韩国高丽大学的研究团队发现,在如何选择"学习材料"这件事上,过去的方法存在一个根本性的盲区。而正是这个盲区,可能悄悄地拉低了整个检索系统的水平。
一、为什么只盯着"最难的题目"可能适得其反
在知识蒸馏的训练过程中,研究人员一直有一个主流共识:要给学生挑选"难题"来练习,也就是选择那些对检索模型来说难以区分的负样本,行话叫**"难负样本"(Hard Negatives)**。
这背后的逻辑乍听起来很有道理——就像备考时专攻错题集,哪里不会就练哪里,效率最高。具体操作上,常见的做法是取检索器初步召回的排名靠前的文档(retriever-top),或者直接取教师模型打分最高的若干个负样本(reranker-top),作为训练数据。
然而,韩国高丽大学的团队提出了一个反直觉的问题:如果你在考试备考时,只专注于最难的那几道题,你真的能把整门课都学扎实吗?
答案未必是肯定的。假设你在准备一场音乐考试,老师对所有曲目都有细致的品味评价——从"完全听不下去"到"还凑合"再到"非常精彩",构成一个完整的喜好光谱。但如果你作为学生只拿到老师对"几首最难区分的中等水平曲目"的评分,你能真正学会老师的品味标准吗?你只了解了老师喜好光谱中间那一小段,对于极好和极差的作品,你依然一无所知。
这正是当前主流方法的问题所在。通过只挑选难负样本(无论是检索器认为最难的,还是精排老师给分最高的),模型接触到的其实只是老师评分分布中的一个狭窄切片。学生从未见过老师如何评价"明显无关"的文档,也没有见过老师如何评价"中等相关"的文档,更没有从整体上理解老师的完整偏好结构。
这种训练方式的后果是:模型在处理训练数据分布内的问题时还凑合,但一旦遇到训练时没见过的新领域或新类型问题(即"域外泛化"问题),就会明显表现变差。
高丽大学团队由此提出了一个核心命题:**知识蒸馏的本质,不是让学生做难题,而是让学生完整地理解老师的整体评分逻辑。** 要实现这一点,训练样本必须均匀地覆盖老师打分的整个范围,而不是集中在某一个区间。
二、"老师的评分单":一个关于分数分布的思考实验
为了更直觉地理解这个问题,不妨把整个过程类比成一位美食评论家(老师模型)给一百道菜打分的场景。
这位美食评论家非常严苛,会给每道菜打一个从0到1的分数:0分代表"简直难以下咽",1分代表"人间极品"。现在,你想培训一个新厨师(学生模型),让他学会这位评论家的口味标准。
过去常见的做法是这样的:只给新厨师看那些得分在0.6到0.8之间的菜(这些菜是评论家觉得"还不错但有些差强人意"的难以区分的中等菜肴)。这相当于"只盯最难的题目"——评论家对这些菜的区分判断,确实包含了最微妙的信息。
然而,新厨师从来没见过那些得0.1分的"难吃透顶"的菜,也没见过那些得0.95分的"令人惊艳"的菜。他对这位评论家口味的理解是残缺的、片面的。当他以后遇到一道全新的菜,可能就无法准确判断评论家会打几分。
高丽大学团队的方案是:**把这一百道菜的分数均匀地切成8段,从每一段中各抽一道菜给新厨师看。** 这样,从最难吃到最好吃,每个分数区间都有代表。新厨师虽然只见了8道菜,却对评论家的整体口味图谱有了完整的认识。
这就是他们提出的**分层抽样(Stratified Sampling)**的核心思想。
三、分层抽样:如何在数学上"复刻"老师的完整口味
研究团队将这一直觉想法转化为了严密的算法。具体操作如下:
对于每一个用户查询,系统首先准备一个包含200篇候选负样本文档的候选池(下文会介绍这个候选池是怎么建立的)。然后,用"精排老师"——在这项研究中使用的是当前最强大的语言模型之一Qwen3-Reranker-8B——给这200篇文档以及那1篇正样本文档(共201篇)打分。
为了让不同查询之间的分数具有可比性,研究团队对每条查询的所有分数进行了"最小-最大归一化"处理,将所有分数统一映射到0到1之间。这样,每条查询下,最高分的文档得1分,最低分的得0分,其他文档的分数按比例分布在中间。
接下来是分层抽样的核心步骤。假设要从200篇负样本中选出K篇(默认K=8)。研究团队会在0到1之间均匀设置K个"锚点"——如果K=8,锚点就是0、1/7、2/7、3/7、4/7、5/7、6/7、1这8个数值。然后,从200篇文档中,分别找出得分最接近每个锚点的那篇文档,将这K篇文档作为最终的训练样本。
这个过程是完全确定性的,不依赖随机性,也不需要调整任何参数。简单来说就是:把老师的评分光谱均匀切成K段,从每一段各取一个最具代表性的文档。
为了验证这种方法的效果,研究团队精心设计了一个受控实验环境:用Qwen3-Embedding-8B检索每条查询的前100篇文档,再从整个语料库中随机抽取另外100篇文档(排除已检索到的),合并成200篇候选池。这样设计的目的是让候选池同时包含"难"样本(检索器认为相关的文档)和"容易"样本(随机抽取的,大概率和查询无关),从而覆盖完整的难度范围。
在这200篇候选文档的基础上,研究团队比较了六种不同的抽样策略:取检索器排名最高的K篇(retriever-top),取精排老师打分最高的K篇负样本(reranker-top),取精排老师打分最低的K篇(low),取分数中间段的K篇(mid),随机抽取K篇(random),以及本文提出的分层抽样(stratified)。
四、严格的双阶段训练:让实验结果更可信
为了确保实验结论的可靠性,研究团队设计了严格的双阶段训练流程,将模型本身的能力和训练数据的影响分离开来。
第一阶段叫做**对比学习(Contrastive Learning)**。研究团队用MS MARCO这个大型信息检索训练数据集(包含880万篇文档和53.2万条查询),对三种不同的基础编码器模型进行预训练,分别是bert-base-uncased、distilbert-base-uncased和co-condenser-marco。这个阶段只用查询本身对应的正样本和同一批次内其他查询的文档作为负样本(即"批内负样本"),不使用任何专门挖掘的难负样本。目的是让三种模型都先具备基本的文本匹配能力,处于同一起跑线上。
第二阶段才是**知识蒸馏(Knowledge Distillation)**阶段。以第一阶段训练好的模型为起点,研究团队用不同的抽样策略构建训练数据,并分别使用两种不同的损失函数——KL散度(KL-divergence)和MarginMSE——来训练模型学习老师的打分偏好。
KL散度是一种"分布匹配"的方法,目标是让学生模型给一组文档打出的分数分布尽量接近老师打出的分数分布;MarginMSE则是一种"差值回归"的方法,目标是让学生模型正确学习正样本和每个负样本之间的分数差距。两种方法各有特点,组合使用可以更全面地评估不同抽样策略的效果。
整个实验使用批大小1024进行对比学习,批大小16进行知识蒸馏,最大序列长度512,均值池化,学习率2e-5,每个阶段训练1个轮次。
五、实验数据说话:分层抽样的全面胜出
实验结果以一张大表格的形式呈现,覆盖了三种模型(bert、distilbert、co-condenser)和两种损失函数(KL散度、MarginMSE)的组合,共6种模型配置,每种配置下测试了六种抽样策略。评估指标包括域内评估(MS MARCO开发集上的MRR@10和Recall@1000,以及TREC深度学习赛道2019的nDCG@10)和域外评估(BEIR基准的13个数据集上的平均nDCG@10)。
结果展现出相当一致的规律。分层抽样(stratified)和随机抽样(random)在几乎所有配置下都排在前两名,而偏向某一极端的策略——无论是只选高分的reranker-top、只选低分的low,还是只选检索器靠前结果的retriever-top——往往表现欠佳,有时甚至严重失效。
以最强的基础模型co-condenser为例,在KL散度损失下,分层抽样在MS MARCO Dev上的MRR@10达到了0.313,Recall@1000达到0.959,TREC DL 19的nDCG@10为0.587,域外BEIR-13的nDCG@10为0.365,全面领先其他策略。检索器顶部策略(retriever-top)在BEIR上的表现是0.319,与分层抽样相差0.046;而精排器顶部策略(reranker-top)的BEIR表现是0.334,乍看还凑合,但在MarginMSE损失下,reranker-top直接导致co-condenser模型完全崩溃——MRR@10仅为0.006,连随机水平都不如,堪称"训练崩溃"的典型案例。相比之下,同样条件下分层抽样的MRR@10为0.307,表现稳健。
这种MarginMSE下的"崩溃现象"尤其值得关注。研究团队的解释是:MarginMSE是一种回归型目标函数,对训练数据中的分布偏差和噪声更为敏感。当你只给模型看精排器打分最高的那些负样本时,这批文档的分数都非常接近,彼此之间的差距微乎其微;模型在试图拟合这些几乎没有差异的分数时,很容易陷入数值不稳定的困境,最终导致训练失败。相反,分层抽样提供了从高到低均匀分布的分数,模型能够从清晰的分数差异中学到有意义的排序信号,训练过程因此保持稳定。
六、用数字证明:分层抽样最完整地还原了老师的"品味地图"
为了从理论层面解释为什么分层抽样效果最好,研究团队对六种策略生成的训练数据进行了统计分析,计算了三个衡量分数分布多样性的指标:覆盖度(Coverage,即所选文档分数的最大值与最小值之差)、熵(Entropy,衡量分数分布的均匀程度,用8个等宽区间的香农熵计算)、标准差(Standard Deviation,衡量分数的离散程度)。
统计结果印证了直觉判断。分层抽样在三个指标上全部排名第一:覆盖度0.990,熵1.523,标准差0.359。这意味着分层抽样选出的文档横跨了老师评分的几乎整个范围(从最低分附近到最高分附近),且在各个区间上分布相对均匀,分数彼此之间差异显著。
排名第二的随机抽样虽然也有一定的多样性(覆盖度0.759,熵1.270,标准差0.295),但因为随机性的存在,有时会凑巧覆盖分布较广,有时则会不幸集中在某一区间,导致性能不稳定。
而中间段策略(mid)的覆盖度只有0.323,检索器顶部策略(retriever-top)更是只有0.196,精排器顶部策略(reranker-top)仅为0.106,低分策略(low)则低到了0.046。这些策略的熵和标准差同样极低,说明它们选出的文档在老师评分分布上非常集中,只展示了老师品味图谱的一个极小片段。
最关键的发现是:三个多样性指标的排名与实际检索性能的排名高度一致。这种一致性强有力地说明,保留老师评分分布的多样性,才是知识蒸馏取得良好泛化效果的真正关键所在。
七、K值变化下的稳健性:随着数据增多,优势愈发明显
研究团队还测试了当训练样本数量K从4变化到8再到16时,各策略的性能表现如何变化,使用distilbert-base作为骨干模型,同时测试了KL散度和MarginMSE两种损失函数。
实验图表揭示了分层抽样的另一个重要优势:**对K值的变化具有高度稳健性**。无论K等于4、8还是16,分层抽样的表现始终处于所有策略的最前列,不会因为K值的变动而出现忽高忽低的波动。
检索器顶部和精排器顶部策略则表现不稳定,在某些K值下崩溃,在另一些K值下勉强凑合,缺乏可预测性。随机抽样在K=4时的域外表现略强于分层抽样,这可以理解为:当K非常小时,随机偶尔会碰巧选出分布较广的几个点,而分层抽样用4个点覆盖整个范围时,每个区间的代表性还不够充分。
然而一旦K增大,分层抽样的系统性优势就变得越来越明显。这是因为随着K增大,分层抽样会越来越密地填满评分光谱上的空白,每新增一个样本都带来了一个之前从未见过的新区间的信息,学习信号是真正互补的。而随机抽样在K增大时,很可能出现大量重复覆盖同一个分数区间的样本,新增样本提供的额外信息越来越少,边际效益递减。
在所有实验配置中,性能峰值出现在MarginMSE损失、K=16、分层抽样的组合下:TREC DL 19的nDCG@10达到0.531,BEIR的nDCG@10达到0.343。这进一步说明,当训练数据能够更完整地呈现老师的评分分布时,回归型目标函数能够从中提取出更精准的学习信号。
说到底,这项研究讲述了一个关于"学习方式"的故事。过去,大家都觉得给检索模型训练时应该专攻难题,多做那些容易搞混的例子。高丽大学的团队却用严谨的实验告诉我们:真正重要的不是难题的数量,而是你能否完整地接触到老师对事物评价的全貌。
就好比学一位美食评论家的口味,光盯着那些他觉得"还行但差一点点"的菜是不够的,你还需要知道他觉得"极好"的是什么样,觉得"难吃透顶"的又是什么样。只有把整个品味谱系都摸清了,才算真正学到了精髓。
这个发现的实际意义不容小觑。现如今,几乎所有的互联网搜索引擎、企业内部知识库检索、学术文献搜索,背后都有稠密检索模型在工作。训练这些模型时,如果采用分层抽样这个简单而免参数的方法来构建训练数据,就能在不增加任何计算复杂度的情况下,显著提升检索系统在各类场景下的准确度和鲁棒性。
分层抽样本身的操作极为简单:把教师模型的评分均匀切段,每段取一个最接近中点的文档就行了,不需要复杂的调度算法,不需要课程学习,也不需要动态调整任何超参数。这对于工业界的工程师来说,是一个难得的"低成本高回报"的改进方案。
当然,这项研究也留下了一些值得继续探索的问题。实验中的候选池是人工构建的受控环境,真实工业场景中的候选文档质量和分布可能更为复杂多变。分层抽样在更大规模、更多样化候选池中的表现如何,以及是否可以与动态负样本挖掘等方法结合,都是值得进一步研究的方向。你是否也在思考:如果同时对候选池的构成方式也进行优化,会带来多大的性能提升?
有兴趣深入了解实验细节和完整数据的读者,可以通过arXiv编号2604.04734查阅这篇论文的全文。
Q&A
Q1:知识蒸馏在信息检索中具体是怎么工作的?
A:知识蒸馏在信息检索中的工作方式是:让一个精排能力强但计算慢的"教师模型"(通常是交叉编码器)给一批候选文档打分,反映它对每篇文档与查询相关性的判断;然后让一个速度快但精度稍低的"学生模型"(稠密检索器)学习模仿教师的这些打分结果。学生通过最小化自己与教师之间的分数差异(用KL散度或MarginMSE等损失函数衡量),逐渐习得教师的排序偏好,从而在保持高速检索效率的同时,尽可能接近精排模型的准确度。
Q2:分层抽样和随机抽样有什么本质区别?
A:随机抽样是从候选文档中不加区分地随机选取,运气好时可能碰巧覆盖整个分数范围,运气不好时则可能集中在某一区间,结果不稳定。分层抽样则是先将教师的评分范围均匀切成K段,再从每段中各取一个最具代表性的文档,保证每个分数区间都有且仅有一个代表,结果完全确定、不依赖随机性。统计数据显示,分层抽样的分数覆盖度(0.990)、熵(1.523)和标准差(0.359)均高于随机抽样,且在实验中表现更稳定,随K值变化时波动也更小。
Q3:为什么只用精排器打分最高的负样本训练会导致模型崩溃?
A:精排器打分最高的负样本意味着这些文档与正样本非常接近,彼此之间的分数差异极小。当使用MarginMSE这种需要拟合正负样本分数差值的回归型损失函数时,这些几乎相同的分数差值会让模型陷入数值不稳定,因为模型要从近乎为零的差值中学习有意义的排序信号,极易出现梯度问题。在co-condenser模型搭配MarginMSE损失的实验中,这种策略导致MRR@10仅为0.006,模型几乎完全失去了检索能力,而分层抽样在同等条件下达到了0.307,充分说明分数分布多样性对训练稳定性至关重要。
热门跟贴