用 Sentence Transformers 训练与微调多向量嵌入模型
Sentence Transformers v6.0 引入 MultiVectorEncoder,支持 ColBERT 式后交互检索的完整训练流程。本文按其官方教程梳理模型、数据、损失、评估与训练器各组件,并复述作者在医学检索上的对比实验结果与配置经验。
多向量模型与微调动机
据 Hugging Face 官方博客(2026 年 8 月 26 日),Sentence Transformers 的 v6.0 更新新增第四种模型类型 MultiVectorEncoder,用于 ColBERT 式后交互检索,并附带完整训练方案。
- 稠密模型:把整段文本压缩为一个向量,相似度是一次点积。
- 多向量模型:每个 token 保留一个小向量,用 MaxSim 打分——每个查询 token 找最佳匹配的文档 token,再求和。token 级匹配保留细粒度信号,通常检索更强,但索引更大。
原文给出的微调理由:领域词汇、查询风格与相关性定义不同,少量领域数据即可见效;另外许多公开检索模型按短文本配置(经典 ColBERT 检查点截断 180 或 300 token,部分稠密模型为 256 或 512),长文档会被静默丢弃。作者在平均 941 token 的医学评测上测得这种截断最多损失 0.24 NDCG@10。
训练组件
训练由六部分组成:模型、数据集、损失函数、训练参数(可选)、评估器(可选)、训练器。
模型起点
- 微调已有检查点:加载时建议 fp32;需检查并解除每任务长度上限(如
query_length、document_length),解除后回退到 tokenizer 的model_max_length。作者还设置了标点 skiplist,称其在该数据上索引缩小 9.6%。 - 从基础 transformer 新建:会在 Transformer 后接随机初始化的 128 维 token 级投影、MultiVectorMask 与 Normalize,必须训练后才能使用。经典 ColBERT 技巧(
[MASK]查询扩展、[Q]/[D]前缀、长度上限、标点 skiplist)默认关闭。
原文给出六种起点的对比(25k 医学问答对训练,1,000 题对 50,000 段落评测):mLateOn-unsupervised 从 0.9087 升至 0.9398;mLateOn 从 0.9277 到 0.9319;LateOn-unsupervised 从 0.9026 到 0.9206;LateOn 反而从 0.9185 降至 0.9105;GTE-ModernColBERT-v1 从 0.9198 降至 0.9007;在 gte-modernbert-base 上加新投影头达到 0.9177。作者结论是:优先选监督训练前的检查点,其次强检索骨干加新头,从完整检查点继续最弱。
数据与损失
数据使用 datasets.Dataset 或 DatasetDict,可从 Hub 或本地 CSV/JSON 等加载。格式须与损失函数匹配:需要标签时列名为 label 或 score;其余列按顺序视为输入——第一列作查询,后续列作文档;知识蒸馏格式为(查询、若干候选文档、教师分数列表)。
问答/查询-段落对常用 MultiVectorMultipleNegativesRankingLoss(批内负样本),实践中用其 GradCache 版本 CachedMultiVectorMultipleNegativesRankingLoss 解耦显存与有效批大小;mini_batch_size 控制每块文档数,mini_batch_num_tokens 按 token 预算分块,适合长度差异大的场景。原文提醒:多向量对比损失默认 scale=1.0,不要照搬稠密模型的 20.0,否则 softmax 饱和、梯度消失。
训练参数与评估
示例配置包括 1 个 epoch、有效批大小 128、学习率 1e-4(扫描 5e-6 至 2e-4 后选择)、NO_DUPLICATES 批采样、bf16,并通过 prompts 显式把检查点的 [Q]/[D] 标记映射到训练列。作者刻意不设 max_length:512 token 训练约快 2 倍但损失约 0.015 NDCG@10,且该差距不随数据增加而缩小。
内置评估器包括信息检索、NanoBEIR、三元组、重排与蒸馏五类;领域微调应以自建留出数据的 MultiVectorInformationRetrievalEvaluator 为主。原文建议加入干扰段落避免分数饱和——仅用 1 万金标段落时几乎都超过 0.97。
实验结果
全文脚本在单张 RTX 3090 上训练 14.5 小时得到 multi-vector-encoder/mLateOn-medical,作者称其在该医学检索评测上超过其找到的所有通用检索模型(稠密、稀疏、词法、多向量)。这是作者自述的单次实验,数据与配置依赖原文,不宜外推为普遍性能。
来源与核对说明
- Hugging Face 官方博客 ↗https://huggingface.co/blog/train-multi-vector-encoder
本文经 AI 整理及独立自动校对,未做运行验证;自动校对仍可能遗漏问题,请以原始资料为准。
这篇内容对你有帮助吗?
点赞人数由服务器记录,收藏保存在当前浏览器。