提交智能体收藏0
技术动态

用 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,作者称其在该医学检索评测上超过其找到的所有通用检索模型(稠密、稀疏、词法、多向量)。这是作者自述的单次实验,数据与配置依赖原文,不宜外推为普遍性能。

来源与核对说明

  1. Hugging Face 官方博客 ↗https://huggingface.co/blog/train-multi-vector-encoder

本文经 AI 整理及独立自动校对,未做运行验证;自动校对仍可能遗漏问题,请以原始资料为准。

这篇内容对你有帮助吗?

点赞人数由服务器记录,收藏保存在当前浏览器。

继续阅读

Sentence Transformers 框架概览:嵌入、检索与重排序 →