Sentence Transformers 介绍多向量(晚交互)嵌入模型

Sentence Transformers v6.0 新增 MultiVectorEncoder,正式支持 ColBERT 风格的多向量晚交互检索。与将整段文本压缩为单个向量的传统嵌入模型不同,多向量模型会保留令牌级表示,并通过 MaxSim 完成查询与文档匹配。

Hugging Face Blog 于 2026 年 8 月 18 日发表文章,介绍 Sentence Transformers v6.0 新增的 MultiVectorEncoder。这是该库继稠密模型、稀疏模型和重排模型之后支持的第四类模型,面向 ColBERT 风格的晚交互检索。

Sentence Transformers 介绍多向量(晚交互)嵌入模型主题相关图片
来自网络

传统稠密嵌入模型通常把整段文本压缩为一个固定长度向量,再通过点积或余弦相似度完成匹配。多向量模型则为每个令牌保留一个向量,并在查询阶段使用 MaxSim 进行计算:查询中的每个令牌都会寻找文档令牌中相似度最高的匹配,随后将这些最高分相加。这样可以保留更细粒度的令牌级匹配信息,尤其适合包含专有名词、产品编号或多个具体条件的查询。

Sentence Transformers 表示,新的 MultiVectorEncoder 可以直接加载 PyLate、Stanford-NLP ColBERT 等格式的检查点,部分 ColPali 系列模型也可通过相同 API 用于视觉文档检索。开发者可以使用 encode_query()encode_document() 分别处理查询与文档,再通过 model.similarity() 计算 MaxSim 分数。对于规模较小的语料库,可以直接进行穷举匹配;对于更大规模的数据,则需要使用支持多向量索引的检索系统,或采用“稠密召回加多向量重排”的两阶段方案。

多向量检索的主要代价是索引体积。文章给出的示例中,4874 个 Natural Questions 段落经过 LateOn 编码后产生 608414 个令牌向量,使用 float32 存储约需 311.5 MB,明显高于单向量索引。不过,文章也提到,PLAID 等压缩索引可以将这批向量压缩至约 92 MB。对于希望在检索质量和部署成本之间取得平衡的应用,多向量模型提供了介于稠密双编码器与交叉编码器之间的选择。

安装方面,文本多向量模型可以通过 pip install -U sentence-transformers 获取。Sentence Transformers v6.0 要求使用 Transformers 5.x、PyTorch 2.2 及以上版本,以及 huggingface-hub 1.x。需要处理页面图像的视觉文档检索场景时,还应安装带图像依赖的版本。需要注意的是,多向量模型的文档长度上限、查询扩展和需要跳过的令牌等配置会随检查点变化,部署前应检查模型自身配置。