GLInt:基于几何匹配的硬负样本挖掘,提升晚期交互检索性能
引言
晚期交互检索模型(如ColBERT)的评分机制与传统的稠密检索有本质区别。稠密检索将查询和文档各压缩为一个向量,直接比较;而晚期交互模型保留多个token向量,在评分时才进行交互。这种差异通常被视为推理时的优势,但在数据构建阶段同样至关重要。
硬负样本挖掘本身就是一个排序问题。给定查询和已知相关文档,挖掘器需要寻找看似相关但实际不相关的文档作为训练负样本。如果挖掘器与学生模型的相似度判断不一致,训练样本可能无法提供有效的区分度。
独立的相关工作(如Athrael的MaxSim挖掘实验)已经得出了类似的结论:几何匹配的选择有助于晚期交互学生模型。本文从相同的问题出发,但更关注整个数据管道多向量化后的连锁反应:评分分布压缩、稠密空间阈值失效、假阴性暴露增加、过滤消耗浅层候选池,以及蒸馏中的几何问题。
在深入之前,先明确几个术语:正样本是数据集明确标注与查询相关的文档;负样本是训练中视为不相关的文档;硬负样本是检索器评分高但实际不相关的文档;假阴性是实际相关但被当作负样本的文档,通常因为标注不完整。
挖掘器越擅长寻找语义相关的文档,就越接近“负样本”本身不确定的边界。
训练流程的简要概览如下:
| 模型或训练阶段 | BEIR-15平均nDCG@10 |
|---|---|
| LateOn-unsupervised(起点) | 50.11 |
| 使用BiCA增强LightOn-embeddings-fine-tune进行SFT | 50.03 |
| Jina教师+混合KL/InfoNCE蒸馏(仅MS MARCO) | 54.58 |
| GLInt | 57.43 |
1. MaxSim空间中的挖掘
对于晚期交互检索器,查询和文档由token向量集合表示。遵循ColBERT的评分公式,简化的MaxSim分数为:
S(q,d) = Σ_i max_j cos(q_i, d_j)
每个查询token选择其最佳匹配的文档token,并将这些匹配求和。
使几何特性变得具体的是检索候选池内分数的分布。
| 评分函数 | 正样本 | 最佳候选 | 最差候选 | 候选跨度/正样本 |
|---|---|---|---|---|
| MaxSim | 14.83 | 14.91 | 14.71 | 0.014 (1.4%) |
| 稠密(DenseOn) | 0.49 | 0.59 | 0.45 | 0.079 (7.9%) |
| BM25 | 5.45 | 9.30 | 4.21 | 0.935 (93.5%) |

整个MaxSim候选池的分数窗口仅围绕正样本基线约1.4%。每个检索到的文档都匹配了许多查询token,因此每个文档都获得了可观的分数下限。有用的差异被压缩在一个狭窄的区间内。
当正样本感知的硬负样本挖掘进入时,这一点变得重要。NV-Retriever推广了正样本感知的挖掘规则,将候选分数与已知正样本分数进行比较。简化形式为:当 score(query, candidate) > threshold × score(query, positive) 时拒绝候选。
这个想法是合理的:如果挖掘的候选分数接近标注的正样本,它可能本身是相关的,不应作为负样本。
隐藏的假设是候选与正样本分数的比率是一个稳定的量。但在MaxSim池中,它并不稳定。
| 比率阈值 | 保留的负样本数(MaxSim,共50) | 保留的负样本数(稠密,共50) |
|---|---|---|
| 0.95 | 0.0 | 23.3 |
| 0.99 | 20.7 | 26.8 |
| 1.02 | 50.0 | 29.6 |
在0.95时,截止值低于最差的候选,因此所有候选都被拒绝。在1.02时,所有候选都存活。几个百分点的移动使规则从“全部移除”变为“全部保留”。
这比仅仅需要重新调整阈值更重要。统计量本身对于分数几何变得病态。MaxSim是token级最大值的总和,因此检索到的文档积累了可观的基线分数。硬候选之间的信息差异被压缩在该下限之上的小区域。
阈值并不因为表示为比率而与几何无关。
替代方案必须是基于排名的相对规则:用独立的MaxSim评判器对已知正样本和挖掘的候选进行评分,然后询问候选是否排名高于最佳已知正样本。
这保留了正样本感知挖掘的思想,同时将决策规则改为匹配候选被评判的几何。
在MaxSim空间中,重新推导每个常数。为稠密检索校准的阈值、温度、分数尺度和过滤规则不会自动转移。
2. 硬负样本、假阴性与过滤
第一次直接审计比较了同一对(查询,正样本)的多向量和稠密负样本,由独立的重新排序器评分。
| 负样本来源 | 平均硬度 | 假阴性率 |
|---|---|---|
| 多向量挖掘 | +0.011 | 11.6% |
| 稠密挖掘 | −0.046 | 5.9% |
多向量负样本的硬度高出0.057,且假阴性率约为两倍。硬度是重新排序器对负样本的平均相关性分数,在同一列表传递中与正样本一起评分;假阴性率是这些负样本中得分高于正样本的比例。
这些不是独立的现象。token级检索器更擅长找到与查询证据结构对齐的段落。这正是它找到困难干扰项的方式,也是它找到未标注但回答查询的段落的方式。
更硬的负样本和假阴性是同一行为的两个方面。更强的挖掘器更接近“负样本”标签不确定的边界。
使用独立的晚期交互评判器的第二次审计发现,原始挖掘池顶部的加权假阴性率为17.6%。在Natural Questions和MS MARCO中问题尤其严重,最高排名的挖掘候选通常得分高于标注的正样本。
最终的过滤管道使用GTE-ModernColBERT-v1作为晚期交互评判器。对于每个查询,它使用MaxSim对已知正样本和挖掘的候选进行评分,拒绝任何排名高于最佳已知正样本的候选,并从该边界下方的分数带中采样负样本。
为了测试这是否真的减少了假阴性,我使用了单独的模型jina-reranker-v3.5作为独立的事后审计器。Jina不参与构建过滤数据集,仅用于比较原始池和几何匹配池。
| 数据集版本 | 加权假阴性暴露 | 正样本排名第一 |
|---|---|---|
| 原始多向量数据 | 12.2% | 64.7% |
| 几何匹配评判数据 | 3.8% | 84.7% |
假阴性暴露减少了69%。模型按预期方向改进:相对于无监督基线的损伤从−4.79降至−2.66。
过滤是必要的,但它创造了下一个问题。我的第一次挖掘运行每个查询仅保留前80个候选。LateOn稠密配方挖掘到2048深度,相差25倍。一旦排名高于正样本的候选被否决,浅层多向量池通常几乎没有有用的材料,尤其是在MS MARCO和NQ中。
重新挖掘到2048深度,同时保持训练配方不变,将诊断损伤从−2.66降至−1.02。这是任何负样本选择变化中最大的改进。
| 变化 | 诊断均值差异 |
|---|---|
| 池深度:80 → 2,048 | +1.54 |
| 更软的分数带 | +0.28 |
| 每行负样本数:7 → 10 | −0.03 |
| 上采样上限 | −0.03 |
| 深度池上的排名扩展 | −0.39 |
| 添加评判的BM25候选流 | −0.02 |
模式比我预期的更清晰。更硬并不单调更好。 故意在更硬的排名上扩展样本使迁移变差。硬度有一个内部最优值。
一旦池足够深并通过相同的评判器,确切的采样规则就不那么重要了。甚至添加评判的BM25流,在过滤前贡献了非常不同的候选,结果仅变化−0.02。
最重要的是,除非控制池深度,否则挖掘方法之间的比较没有意义。前80挖掘器和前2048挖掘器不在相同条件下测试。
一旦过滤是几何感知的,挖掘深度就成为训练配方的一部分。
更深的挖掘解决了每个查询的短缺,但没有解决跨数据集的不平衡。
评判否决从不同来源移除了非常不同的部分,导致幸存的SFT池严重偏向:MS MARCO占所有可用对的37.9%,而FiQA仅贡献0.3%。在这些原始比例上训练将主要保留不平衡。
因此,我使用 w_s = sqrt(usable_s) * (1 - FN risk_s) 对每个来源进行加权。
这两个术语做不同的工作。平方根是标准的α=0.5平滑,遵循稠密配方的相同约定。它给数据集大小带来递减的回报:一个来源有4倍多的幸存对,得到2倍的大小权重,而不是4倍。
第二个术语解释了基于计数的平滑无法看到的东西:并非每个幸存的配对都同样可信。具有高测量假阴性率的来源应贡献更少,即使它有大量可用行。
NQ和SQuAD v2使差异具体化。过滤后它们包含几乎相同数量的可用对:NQ为112,900,SQuAD v2为113,579。使用α=0.5平滑,它们接收几乎相同的目标,比率为1.003。
但它们的测量假阴性率完全不同。NQ为32.6%,而SQuAD v2仅为2.8%。将这些池视为等效将意味着花费NQ训练预算的很大一部分来教导模型推下可能实际回答查询的文档。
乘以(1 − FN risk)将比率移至1.45,因此SQuAD v2最终多出44%的行,尽管起始可用池几乎相同。
风险项故意在平方根之外:sqrt(usable) * (1 - FN risk) 而不是 sqrt(usable * (1 - FN risk))。平方根应抑制大小,而不是质量。如果污染放在平方根内,NQ的32.6%假阴性率会与数据集大小一起软化。NQ/SQuAD比率回落到约1.21,质量校正停止做太多。
数据集大小有递减的回报。缺陷率没有。
我也考虑过直接丢弃最脏的来源。那会丢弃太多。NQ在32.6%风险下仍然大部分是干净的,它代表自己的检索分布,后来的实验表明广度是整个项目中最强的杠杆之一。降权保持了覆盖,同时为污染付出更少。
平滑指数和风险校准都仅使用FiQA固定。没有使用BEIR评估组来调整配方。
| 来源 | FN风险 | 可用对 | 之前份额 | 写入行数 | 之后份额 | 上采样 |
|---|---|---|---|---|---|---|
| MS MARCO | 24.0% | 446,692 | 37.9% | 337,991 | 21.5% | 0.76× |
| TriviaQA | 8.4% | 238,126 | 20.2% | 297,619 | 19.0% | 1.25× |
| HotpotQA | 1.1% | 127,703 | 10.8% | 234,817 | 15.0% | 1.84× |
| FEVER | 2.8% | 124,063 | 10.5% | 227,340 | 14.5% | 1.84× |
| SQuAD v2 | 2.8% | 113,579 | 9.6% | 217,595 | 13.9% | 1.92× |
| NQ | 32.6% | 112,900 | 9.6% | 150,738 | 9.6% | 1.34× |
| BiCA | 0.4% | 12,069 | 1.0% | 72,885 | 4.6% | 6.04× |
| FiQA | 20.8% | 3,672 | 0.3% | 31,900 | 2.0% | 8.71× |
MS MARCO是唯一实际下采样的来源。其他一切都接受某种程度的上采样,但出于两个不同的原因。
平方根项将小来源向上拉。BiCA从幸存池的1.0%到最终SFT混合物的4.6%,尽管只有12,069个可用对。
风险项阻止脏来源随之上升。NQ和SQuAD v2以几乎相同的可用计数开始,但SQuAD v2接收多44%的行,因为其测量假阴性率大约低12倍。
上采样在这里不是字面上的行重复。每次发出一个(查询,正样本)对时,我从其幸存的候选带中随机重新采样7个负样本。因此,FiQA的8.71×并不意味着模型看到完全相同的例子九次。这意味着相同的查询-正样本对出现在大约九个不同的负样本集上。
表中还有一个警告,我直到后来才意识到。BiCA以19,997个原始行开始,但7,928个被丢弃,因为少于七个负样本通过评判否决。其候选池自然浅。
在每SFT行七个负样本时,这是可存活的。
在每蒸馏行32个候选时,则不是。
3. 从SFT到知识蒸馏
相同的压缩分数几何在从监督微调转向知识蒸馏时再次出现。
PyLate的默认蒸馏路径在应用softmax之前对每行教师分数进行最小-最大归一化。使用32个候选,得到的教师分布熵为3.437,而完全均匀分布为3.466。目标距离均匀99.2%。
添加教师温度τ=0.3重新锐化目标,将模型在诊断套件上提高了+0.36。
学生目标内部有第二个压缩点。晚期交互分数需要对查询token求和。平均token贡献再次压缩分数范围,因此温度1下32个候选的softmax变得几乎均匀。
挖掘部分的教训直接延续到蒸馏:一旦底层分数几何改变,相同的数值操作可以表现得非常不同。
我最初期望用作蒸馏教师的重新排序器很重要。在实践中,它几乎没有移动结果。
| 蒸馏配置 | 平均nDCG@10 |
|---|---|
| MS MARCO,BGE-Gemma教师 | 54.72 |
| MS MARCO,Jina教师 | 54.58 |
| 七源混合物,Jina教师 | 57.33 |
保持Jina教师和相同的目标,但将蒸馏数据从仅MS MARCO扩展到七个来源,将分数从54.58提高到57.33,增益+2.75。
七源混合物覆盖MS MARCO、Natural Questions、SQuAD v2、FEVER、HotpotQA、TriviaQA和FiQA。教师没有改变。目标没有改变。改变的是学生看到的硬排名问题的范围。
这大约是二十比一的效应大小差异:教师选择几乎无关紧要,而数据广度占了几乎所有的改进。
你蒸馏的分布可能比产生分数的模型重要得多。
BiCA使该结论的边界更加清晰。
我首先将生物医学引文数据集添加为第八个SFT来源。BiCA自然提供了足够的评判负样本用于七负样本SFT行,因此数据可以在不发明额外候选的情况下使用。一旦应用七源KD阶段,效果大致中性:完整BEIR均值+0.10。它没有在KD混合物提供的广度之外增加太多,但也没有损害模型。最终的GLInt检查点使用这个BiCA增强的SFT检查点。
将BiCA添加为第八个知识蒸馏来源是完全不同的结果。诊断均值从55.46降至54.03,损失−1.43,八个数据集中有七个变差。最大的下降在TREC-COVID、NFCorpus和SciFact,即BiCA本应帮助的科学和生物医学数据集。
| BiCA添加位置 | 候选构建 | 结果 |
|---|---|---|
| SFT | 每行七个评判负样本 | 在KD后大致中性:BEIR-15 +0.10 |
| KD | 固定32路候选列表 | 诊断均值−1.43 |
问题不是生物医学数据。而是固定的32路KD池。
BiCA每个查询仅提供约7.5个真实引文负样本,但列表式蒸馏格式需要32个候选。其余槽位用语料库中的随机文档填充。总共489,936个候选槽位(共639,904个)是随机填充,占77%。
在锐化的列表式目标下,这些随机文档不是无害的填充物。它们成为排名目标的一部分,教导学生区分琐碎容易的负样本,而不是解决硬候选之间的有意义歧义。
SFT结果表明BiCA本身是可用的。失败来自将自然浅的来源强制进入32路排名格式,并假装7.5个硬负样本加上24.5个随机文档形成有用的列表式任务。
数据广度的有用单位不是来源数量。而是它们贡献的硬排名问题的数量。
BiCA保留在GLInt使用的SFT路径中,但从最终的七源KD混合物中排除。
4. 最终结果
最终模型因此不是单一挖掘技巧的结果。它是管道中挖掘几何、假阴性过滤、候选深度、混合物构建和蒸馏设置都围绕晚期交互评分调整的终点。
BEIR-15。 下表报告了标准15个BEIR组的平均nDCG@10,CQADupStack在其子论坛上平均。
| 模型 | 平均 | 大小(M) | 嵌入维度 | ArguAna | CQADupstackRetrieval | ClimateFEVER | DBPedia | FEVER | FiQA2018 | HotpotQA | MSMARCO | NFCorpus | NQ | QuoraRetrieval | SCIDOCS | SciFact | TRECCOVID | Touche2020 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ColBERTv2 | 48.63 | 110 | 128 | 46.50 | 38.30 | 17.60 | 45.20 | 78.50 | 35.40 | 67.50 | 46.00 | 33.70 | 52.40 | 85.50 | 15.40 | 68.90 | 72.60 | 26.00 |
| Jina-ColBERT-v2 | 51.85 | 600 | 128 | 36.60 | 40.80 | 23.90 | 47.10 | 80.50 | 40.80 | 76.60 | 46.90 | 34.60 | 64.00 | 88.70 | 18.60 | 67.80 | 83.40 | 27.40 |
| ColBERT-small | 53.79 | 33 | 96 | 50.09 | 38.75 | 33.07 | 45.58 | 90.96 | 41.15 | 76.11 | 43.50 | 37.30 | 59.10 | 87.72 | 18.42 | 74.77 | 84.59 | 25.69 |
| GTE-ModernColBERT-v1 | 54.75 | 149 | 128 | 47.52 | 41.08 | 31.33 | 47.56 | 87.67 | 45.25 | 77.48 | 45.60 | 37.83 | 61.62 | 86.71 | 19.22 | 76.33 | 84.84 | 31.25 |
| ColBERT-Zero | 55.39 | 149 | 128 | 52.82 | 41.41 | 35.90 | 47.43 | 90.52 | 42.50 | 79.45 | 45.95 | 37.21 | 61.82 | 85.19 | 19.84 | 76.33 | 78.27 | 36.24 |
| LateOn-unsupervised | 50.11 | 149 | 128 | 43.12 | 47.71 | 18.76 | 43.36 | 65.74 | 51.94 | 68.17 | 37.51 | 37.15 | 58.41 | 89.48 | 21.13 | 76.89 | 69.81 | 22.53 |
| LateOn | 57.22 | 149 | 128 | 50.52 | 47.36 | 39.67 | 45.99 | 92.02 | 53.12 | 79.98 | 45.67 | 37.79 | 63.91 | 89.67 | 21.90 | 76.61 | 83.60 | 30.52 |
| GLInt | 57.43 | 149 | 128 | 52.38 | 46.49 | 34.17 | 47.68 | 92.45 | 50.85 | 82.54 | 46.38 | 37.51 | 68.03 | 90.08 | 20.65 | 77.13 | 84.78 | 30.26 |
GLInt达到57.43平均nDCG@10,而LateOn为57.22。它在ArguAna、DBPedia、FEVER、HotpotQA、MS MARCO、Natural Questions、Quora、SciFact和TREC-COVID上优于LateOn,以及整体平均。
BEIR-Decontaminated。 遵循LateOn,我也在BEIR-Decontaminated上评估了GLInt,该基准移除了已知污染,提供了跨14个BEIR组的泛化第二视图。
| 模型 | 平均 | ArguAna | ClimateFEVER | DBPedia | FEVER | FiQA2018 | HotpotQA | MS MARCO | NFCorpus | Natural Questions | Quora | SciDocs | SciFact | TREC-COVID | Touché-2020 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| GLInt | 62.50 | 51.67 | 36.35 | 42.50 | 92.89 | 56.88 | 81.16 | 72.70 | 26.21 | 94.97 | 92.06 | 22.02 | 89.07 | 81.51 | 34.97 |
| LateOn | 61.4 | 52.2 | 42.1 | 31.7 | 92.7 | 57.9 | 78.9 | 70.3 | 27.0 | 93.1 | 91.5 | 15.1 | 88.9 | 80.9 | 36.8 |
| DenseOn | 58.8 | 40.0 | 39.5 | 28.8 | 91.2 | 55.9 | 73.7 | 68.9 | 28.5 | 92.1 | 91.1 | 14.7 | 85.4 | 82.5 | 31.0 |
| pplx-embed-v1-0.6b | 59.7 | 43.7 | 42.4 | 28.4 | 91.1 | 55.2 | 73.5 | 71.9 | 28.0 | 91.6 | 91.5 | 15.4 | 89.0 | 83.7 | 30.0 |
| jina-v5-text-nano | 58.8 | 47.2 | 41.6 | 30.2 | 90.0 | 51.5 | 67.5 | 68.6 | 29.4 | 92.3 | 91.3 | 14.9 | 89.4 | 76.8 | 33.2 |
| harrier-oss-v1-0.6b | 58.0 | 47.4 | 25.7 | 31.3 | 80.7 | 50.1 | 71.4 | 73.4 | 27.9 | 90.0 | 90.9 | 17.1 | 90.7 | 81.8 | 33.3 |
| arctic-embed-l-v2 | 57.9 | 43.1 | 45.7 | 45.7 | 92.2 | 50.4 | 63.1 | 71.0 | 26.0 | 90.7 | 91.3 | 13.9 | 87.4 | 81.4 | 26.8 |
| bge-large-en-v1.5 | 57.3 | 46.0 | 39.0 | 28.9 | 87.6 | 49.3 | 75.2 | 68.9 | 29.8 | 85.9 | 91.3 | 14.0 | 86.5 | 72.7 | 26.9 |
| Qwen3-Embedding-0.6B | 57.0 | 48.4 | 38.0 | 25.3 | 86.4 | 49.1 | 62.2 | 63.6 | 25.8 | 88.3 | 90.0 | 15.3 | 85.5 | 87.9 | 31.8 |
| GTE-ModernBERT | 56.6 | 52.5 | 47.5 | 25.9 | 94.1 | 55.5 | 65.5 | 64.8 | 26.1 | 84.5 | 90.8 | 11.6 | 88.6 | 62.4 | 23.1 |
| bge-base-en-v1.5 | 56.2 | 45.6 | 32.9 | 26.7 | 86.8 | 44.5 | 72.7 | 66.8 | 27.4 | 85.6 | 91.1 | 13.8 | 87.6 | 76.6 | 28.1 |
| Nomic v1.5 | 55.9 | 35.8 | 43.5 | 28.8 | 86.8 | 44.7 | 72.7 | 67.4 | 24.4 | 85.1 | 87.2 | 12.7 | 83.3 | 80.7 | 29.4 |
| modernbert-embed-base | 55.6 | 36.5 | 37.8 | 24.7 | 87.8 | 46.0 | 62.7 | 65.3 | 24.3 | 89.3 | 89.9 | 12.9 | 85.5 | 82.7 | 33.1 |
| ColBERT-Zero | 60.0 | 54.5 | 36.8 | 33.0 | 90.5 | 46.6 | 77.8 | 74.2 | 26.6 | 91.1 | 88.3 | 14.2 | 89.5 | 75.3 | 40.9 |
| pplx-embed-v1-late-0.6b | 59.8 | 60.9 | 36.4 | 29.9 | 89.7 | 50.9 | 78.6 | 69.2 | 27.9 | 92.8 | 83.8 | 13.5 | 89.3 | 80.2 | 34.7 |
| GTE-ModernColBERT | 59.3 | 48.8 | 33.5 | 33.2 | 88.1 | 50.2 | 77.3 | 71.6 | 27.3 | 93.1 | 89.1 | 13.6 | 87.7 | 81.4 | 35.3 |
| colbert-small | 58.1 | 47.7 | 35.7 | 31.7 | 89.3 | 45.6 | 77.1 | 71.4 | 25.0 | 86.2 | 90.1 | 13.1 | 89.2 | 81.5 | 29.0 |

GLInt在此评估中达到平均62.50,而LateOn为61.4。
5. 大规模挖掘
以上所有内容都假设完整的多向量挖掘在计算上是可行的。因此,工程问题是如何检索深度MaxSim池,而不将数据构建变成多天的瓶颈。
我将精确暴力MaxSim与通过PyLate的Rust fast-plaid实现的PLAID和WARP进行了比较。基准使用250,000个文档,以精确MaxSim为参考。
| 后端 | Recall@50 | 吞吐量 | 发货排名带的分数与精确比较 |
|---|---|---|---|
| 精确MaxSim | 1.000 | 20查询/秒 | 地面真值 |
| fast-plaid (nfs=2048) | 0.851 | 54–80查询/秒 | −0.01% |
| WARP,默认,8线程 | 0.642 | 371查询/秒 | 0.00% |
乍一看,WARP的召回率看起来很差:它错过了精确前50的三分之一以上。然而,对于硬负样本挖掘,集合重叠不是我最终关心的指标。
由于MaxSim候选分布如此压缩,排名50和200可能是近并列。Recall@50严重惩罚将一个近并列文档与另一个交换,即使两者作为训练负样本同样有用。WARP返回的候选在进入训练的实际排名带中与精确候选具有几乎相同的MaxSim分数。
这使得WARP比fast-plaid快约四倍:整个作业约四小时墙钟时间,而不是十六小时。
分数比较使用了每个后端自我报告的分数,这些分数在不同配置中并不完全可比。严格的精确比较将采用每个后端返回的文档ID,并用精确MaxSim重新评分。我没有运行那个详尽的重新评分,因此我将分数等价结果视为工程信号,而不是精确基准。
对于挖掘,分数等价的近并列比精确的前50 ID重叠更重要。
实际分工是:
- WARP用于挖掘,其中近并列替换是可接受的,吞吐量占主导。
- fast-plaid用于评估,其中精确的顶级排名身份对nDCG很重要,并且我希望与其他晚期交互模型的评估设置一致。
附录:未成功的实验
在最终模型收敛后,我尝试了一系列后训练和继续训练的想法,旨在提取进一步的改进。它们都没有整体工作。
| 尝试 | 结果 |
|---|---|
| 推理时[MASK]查询扩展 | −4.92至−5.93 |
| 训练扩展向量 | −0.92 |
| 静态语料库IDF token加权 | −1.17 |
| 学习查询token门 | −0.18 |
| PLAID前100的精确MaxSim重新评分 | −0.78 |
| LLM生成的证据扩展 | −3.53 |
| 语料库接地共识反馈 | −0.36 |
| 短形式Nomic KD继续 | −0.57 |
| 与该检查点的均匀模型汤 | −0.09 |
| 最优传输自蒸馏 | 0.25 vs 55.46:完全崩溃 |
失败分为三个有用的类别。
添加查询内容改变了MaxSim评分的对象。 推理时[MASK]扩展、训练扩展向量、LLM生成的证据和语料库接地反馈都向查询添加了向量。这个家族在精神上与查询和伪文档扩展方法(如HyDE)相关,但在基于和的MaxSim评分器下,添加的向量不是无害的上下文:它们接收自己的最佳文档token匹配并改变分数预算。
检索器开始回答扩展而不是原始查询。短查询数据集如TREC-COVID、Quora和FiQA受到最严重的打击,因为添加的向量在最终查询表示中占更大比例。
重新加权收敛的评分器几乎没有提供改进空间。 静态IDF加权、学习token门、精确候选重新评分和模型平均产生小或负的变化。检查点已经在其原生评分器下收敛。事后重新加权该几何主要扰乱了已经内部一致的解决方案。
模型汤实验遵循了Model Soups的检查点平均思想,但在这种情况下,与Nomic继续检查点的均匀汤仍然是−0.09。
精确重新评分值得具体澄清:实验重新评分了PLAID现有的前100。它可以改变它们的顺序,但不能恢复PLAID从未返回的精确MaxSim文档。负面结果拒绝了廉价的重新排名技巧,而不是精确穷举检索。
自派生目标可以在没有外部锚的情况下崩溃。 最优传输实验使用模型自己的token相似性矩阵来创建分离的传输目标。目标是鼓励查询token在文档中分布证据,而不是折叠到几个强匹配上。
损失平滑下降,但检索崩溃到平均0.25。
分离目标防止梯度流过它,但并没有防止目标随学生改变。一旦模型的分数变得均匀,其传输目标也变得均匀,创建一个自洽的退化解决方案。自蒸馏方法如DINO和SwAV使用额外的机制来避免这种崩溃。我的目标没有金正样本、冻结教师、参考模型、居中机制或交叉视图锚,因此它可以最小化自己,同时学习检索不到任何东西。
参考资料和资源
模型和数据集
- LateOn和LateOn-unsupervised:监督参考和无监督起点检查点。
- MS MARCO BGE-Gemma分数:原生知识蒸馏数据集和教师分数。
- jina-reranker-v3.5:替代列表式教师和独立事后审计器。
- GTE-ModernColBERT