Sentence Transformers v6.0 新增多向量编码器,支持 ColBERT 式延迟交互检索
Sentence Transformers v6.0 加入第四种模型类型 MultiVectorEncoder,可直接加载 PyLate 与 Stanford-NLP ColBERT 检查点,用于 ColBERT 式延迟交互检索。文章说明 MaxSim 打分原理、索引体积代价、检索与重排用法,以及索引与可控成本的途径。
Sentence Transformers 是一个用于使用和训练嵌入与重排模型的 Python 库,应用于 RAG、语义搜索等场景。其 v6.0 更新新增第四种模型类型 MultiVectorEncoder,面向 ColBERT 式延迟交互检索:PyLate 检查点与 Stanford-NLP ColBERT 检查点可直接加载;colpali-engine 的视觉文档检索模型经补充配置后也可用,沿用与稠密、稀疏、重排模型一致的 API。
原理上,普通嵌入模型把整段文本压成一个向量;多向量模型为每个 token 保留一个向量(经典做法是投影到 128 维),查询与文档用 MaxSim 打分:对每个查询 token 取其与所有文档 token 的最高相似度,再对查询 token 求和。这样保留 token 级匹配信息,通常带来更强检索效果,但索引更大。
原文给出的一组对照:4,874 条 Natural Questions 段落经 lightonai/LateOn 编码得到 608,414 个 token 向量,平均每段 124.8 个,float32 约 311.5 MB;同一批次向量以 fast-plaid 索引存储约 92 MB。
使用上需注意:多向量模型是非对称的,查询与文档必须分别用 encode_query 与 encode_document,返回每个输入一个 (token 数, 维度) 的二维张量。查询是否补齐、长度上限、跳过的 token 都由检查点配置决定,可通过打印模型查看;document_length 会截断超长文本。
文中给出两条路线:小规模语料可对全部文档做穷举 MaxSim;更大规模可先用双编码器召回候选,再用多向量模型对少量候选重排,从而避免维护多向量索引。原文还列出支持原生多向量索引的向量数据库,并说明部分系统仅支持 MaxSim 重排。
来源与核对说明
- Hugging Face 官方博客 ↗https://huggingface.co/blog/multi-vector-encoder
本文经 AI 整理及独立自动校对,未做运行验证;自动校对仍可能遗漏问题,请以原始资料为准。
这篇内容对你有帮助吗?
点赞人数由服务器记录,收藏保存在当前浏览器。