开源Hugging Face Blog·原文 2026年8月26日本站收录 2026年9月7日

Sentence Transformers v6.0新增多向量模型训练,单张RTX 3090微调即可超越通用检索模型

Sentence Transformers库v6.0引入MultiVectorEncoder,用于ColBERT风格的多向量(延迟交互)检索模型训练。Hugging Face博客展示了用 4.4M医学问答对微调mLateOn模型,14.5 小时训练后其医学检索性能超过所有对比的通用检索模型。

Sentence Transformers库v6.0引入了第四种模型类型MultiVectorEncoder,用于ColBERT风格的多向量(延迟交互)检索模型训练,并提供了完整的训练指导。据Hugging Face博客文章,作者使用 4.4M条医学问答对,在单张RTX 3090上训练了 14.5 小时,得到的模型在医学检索评估上(NDCG@10 为 0.9398)超过了所有对比的通用检索模型。

多向量模型的工作原理与微调价值

多向量模型(延迟交互或ColBERT风格)不像密集嵌入模型那样将整个文本压缩为单个向量,而是为每个token保留一个小向量,并通过MaxSim算子对查询与文档评分:每个查询token找到其最佳匹配的文档token,然后将得分相加。这种token级匹配保留了单向量平均化时丢失的细粒度信号,通常能带来更强的检索性能,但代价是更大的索引。

微调能显著提升多向量模型在特定领域(领域词汇、查询风格、相关性定义不同)的检索性能。作者指出,大多数已发布的检索模型是针对短文本配置的,例如经典ColBERT checkpoint将文档截断在 180 或 300 token,许多密集模型截断在 256 或 512 token。对于平均 941 token的医学段落,这种截断在作者评估中造成了最高 0.24 NDCG@10 的性能损失,远超模型架构间的差异。

作者强调,自己的领域(如医学、法律、金融或公司内部文档)可能没有官方微调模型,但可自行构建,在消费级GPU上数小时内即可完成。

微调起始点的选择与实验结果

作者在 25k医学问答对上用相同配方测试了六种起始点,并在 5 万段落语料上评估了 1000 个保留问题:

结果显示,未经监督的checkpoint(如lightonai/mLateOn-unsupervised)领域适应能力远强于其已完成监督微调的版本,尽管起始分数较低,但最终超越了它们(例如mLateOn-unsupervised从零样本 0.9087 提升到 0.9398)。相反,已完成的checkpoint(如lightonai/mLateOn)几乎不动甚至倒退(从 0.9277 到 0.9319,LightOn甚至下降)。

从头构建时,可在任意基础transformer上附加随机初始化的token级投影(Dense输出维度 128),并搭配MultiVectorMask和Normalize模块。作者实验发现,在强检索预训练主干(如gte-modernbert-base)上放置新投影头,仅用 25k训练对就能达到接近现有checkpoint的效果(NDCG@10 0.9177)。

作者建议:优先选择带pre-supervised checkpoint的模型;其次是在强检索主干上使用新投影头;最不推荐从完全微调好的checkpoint继续微调。

  • 起始点 | 零样本NDCG@10 | 25k对后NDCG@10 | 变化
  • lightonai/mLateOn-unsupervised | 0.9087 | 0.9398 | +0.0311
  • lightonai/mLateOn | 0.9277 | 0.9319 | +0.0042
  • lightonai/LateOn-unsupervised | 0.9026 | 0.9206 | +0.0180
  • lightonai/LateOn | 0.9185 | 0.9105 | -0.0080
  • lightonai/GTE-ModernColBERT-v1 | 0.9198 | 0.9007 | -0.0191
  • gte-modernbert-base上新投影头 | - | 0.9177 | -

训练组件与关键技术细节

训练使用MultiVectorEncoderTrainer,数据可采用Hugging Face Hub或本地数据(CSV、JSON、Parquet等)。示例数据集tomaarsen/miriad-4.4M-split包含 4.4M医学问题和包含答案的源段落(平均 941 token)。数据格式必须与损失函数匹配:常见问答对使用MultiVectorMultipleNegativesRankingLoss,其中批次内其他文档充当负样本。

由于批量大会增强训练,作者推荐使用GradCache变体CachedMultiVectorMultipleNegativesRankingLoss——它将有效批次大小与GPU显存解耦(本例中有效对比批次为 128,mini-batch编码块大小为 16,可进一步降低内存)。作者提醒,多向量对比损失默认scale=1.0(密集嵌入默认 20.0),因为MaxSim得分范围约为 [0, query_length],过大的scale会饱和softmax并杀死梯度。

训练时需显式传入模型自带的标记(prompts),如查询列用 [Q],文档列用 [D]。此外,许多checkpoint带有文档长度上限(如 300 或 512 token),可通过将model[0].query_length和document_length设为None来解除,以利用完整上下文。作者还通过添加标点符号skiplist(仅过滤文档端的标点token)将索引大小缩减了 9.6%,同时略微提升质量。其他组件包括MultiVectorEncoderTrainingArguments(学习率、批次大小、日志等)和回调函数。

作者明确:从新投影头训练代码索引等细节在配套博客中说明;经典ColBERT技巧(如 [MASK] 查询扩展)并非必须,作者测试未发现可衡量影响。

信息来源

Hugging Face Blog原始来源