当检索模型从单向量编码扩展到 MultiVectorEncoder,评测工作也应该随之改变。Sentence Transformers 6.0 已支持 ColBERT 风格的多向量模型:模型不再把整段文本压缩成一个向量,而是保留多个词元级向量,在检索阶段通过晚期交互完成查询与文档的匹配。对企业工程团队来说,这意味着“命中率更高”不应再是唯一结论,系统是否值得上线,还要看它覆盖了哪些查询、排序是否稳定,以及新增的存储和计算成本是否可接受。

先明确:多向量模型改变了什么
传统稠密检索通常为一条查询和一篇文档分别生成单个向量,再通过向量相似度进行匹配。这样的压缩方式效率较高,但文档中的多个条件、局部事实和细粒度对应关系,可能会被汇总到一个表示中,导致检索结果更偏向整体主题,而不是准确回应查询中的每个要求。
ColBERT 风格的多向量模型则保留多个词元级表示。评分时,查询中的每个词元会与文档中的多个词元进行交互,并根据最相关的对应关系形成整体分数,这类机制通常被称为 MaxSim。它既保留了语义匹配能力,也能关注文档中的具体片段,因此更适合包含多个限定条件、专有表达或局部证据的查询。
但“表达更细”并不等于“任何场景都更优”。向量数量增加后,索引体积、构建过程和检索计算都会发生变化。企业评测的重点,应该从比较一个分数,转向判断质量收益是否足以抵消系统成本。
第一维:召回覆盖,而不只是命中率
召回评测首先要回答一个实际问题:真正有用的文档是否进入了候选集合。
可以继续记录 Recall@K、MRR 或 NDCG 等指标,但不能只看一个汇总数字。企业知识库中的查询往往类型差异很大,至少应把测试集按查询特征拆开观察。例如,单一事实查询、多条件查询、带有版本或时间限制的查询、需要定位文档局部片段的查询,都可能对模型提出不同要求。
多向量模型的价值,往往体现在“相关信息只占文档一小部分”的场景中。若查询同时要求满足多个条件,单向量模型可能因为整体语义相近而召回一篇并不完整匹配的文档;多向量模型则有机会利用更细粒度的局部对应关系。不过,这种可能性必须通过企业自己的标注集验证,不能直接把模型架构优势当成线上收益。
评测记录中,建议同时保留以下信息:
- 查询所属类型以及业务来源;
- 相关文档是否进入前若干名候选;
- 首个相关结果出现的位置;
- 需要多个证据时,候选集合是否覆盖全部关键证据;
- 没有合适结果时,系统是否能够保持低置信度,而不是返回看似相关的内容。
其中,“覆盖全部关键证据”比单纯统计是否出现一篇相关文档更接近复杂知识问答的实际需求。
第二维:结果排序是否真的更好
召回到相关文档,并不代表排序已经达到可用水平。对于检索增强生成系统,排在前面的结果会直接影响后续上下文,因此还需要检查相关文档的位置、相互之间的顺序,以及排序结果是否容易被表面相似内容干扰。
排序评测可以围绕三个问题展开。第一,最相关的证据是否排在前面;第二,多个条件对应的证据是否被合理安排;第三,排名是否在不同查询改写之间保持稳定。比如,用户只是调整了查询中的语序或表达方式,结果却大幅变化,就说明系统可能仍然依赖某些表面特征。
不要只记录最终的 NDCG 或 MRR。对于每条查询,还应保存候选文档、排名、模型分数和人工判断。这样才能区分问题究竟出在“相关文档没有被召回”,还是“相关文档被召回后排序靠后”。前者需要检查编码和索引,后者则可能需要调整晚期交互、候选规模或后续重排流程。
第三维:延迟要拆开测量
多向量检索的延迟不能只看接口从请求到响应的总耗时。总延迟至少应该拆成查询编码、索引检索、候选评分和结果整理等阶段,并分别记录平均值与高分位延迟。
这种拆分很重要,因为多向量模型的瓶颈未必出现在同一位置。查询编码可能与普通向量模型相近,但候选与多组向量之间的交互会增加计算;索引规模扩大后,数据读取和缓存行为也可能发生变化。若只看平均响应时间,偶发的长尾延迟很容易被掩盖,而企业用户通常更容易感受到长尾请求造成的等待。
测试时应固定查询集、并发条件、硬件环境、索引状态和候选数量。对于冷启动、缓存命中和缓存未命中等情况,也应分开记录。只有在相同条件下比较,才能判断多向量模型增加的是稳定开销,还是主要增加了特定场景下的长尾风险。
第四维:资源消耗要和质量收益放在一起看
多向量编码最直观的成本是存储。单个文档不再只对应一个向量,索引中需要保存更多向量表示,因此索引体积、构建时间和更新成本都可能增加。资料中也明确提到,晚期交互模型的主要权衡之一就是更大的索引体积。
评测时,资源指标不应只写成“占用更多”这样的结论,而要形成可追踪的记录。可以为每次实验保存文档数量、索引大小、构建耗时、增量更新耗时、查询侧显存或内存占用,以及并发条件下的资源变化。不同模型必须使用同一批文档、相同的切分策略和一致的索引配置,否则比较结果会受到数据处理方式影响。
更关键的是,不要把资源指标与效果指标分开看。某个模型如果只带来很小的排序改善,却显著增加索引维护复杂度,未必适合所有知识库;如果它主要改善复杂查询和关键业务问答,那么就应该进一步计算这部分查询的收益,而不是用全量平均数将它抹平。
第五维:专门测试复杂查询
复杂查询是多向量模型最值得单独验证的部分。企业评测集不应只由短、明确、单一意图的问题组成,否则很难观察模型在真实使用中的差异。
可以从已有业务日志或人工编写的问题中,抽取包含多个条件、多个实体、限定范围和局部证据要求的查询。评测人员需要提前标记:一个查询包含哪些必要条件,哪些文档只能算部分相关,哪些结果虽然主题相近却缺少关键依据。
判断结果时,不妨把“完全满足”“部分满足”和“不相关”分开记录。这样的标注能帮助团队识别一种常见误区:模型可能提高了主题相关性,却没有提高对全部条件的覆盖。对于需要多个来源共同回答的问题,还应记录每个必要证据是否都出现在候选结果中,以及它们的排名是否足以进入后续上下文窗口。
复杂查询也要包含负面样本,例如条件冲突、范围不匹配或只有一个条件相似的文档。否则系统可能因为多向量匹配更细,而返回大量“部分正确但不能使用”的结果。

一套可执行的评测记录方式
建议把评测记录设计成“实验级”和“查询级”两层,而不是只保存一个最终分数。
实验级记录用于描述这次测试的整体条件,包括模型类型、模型版本、文档切分方式、索引配置、候选规模、硬件环境、并发设置和测试数据版本。这样做可以避免几周后无法解释“同一个模型为什么测出了不同结果”。
查询级记录则保存每条查询的原文、查询类别、相关文档标注、候选排名、模型分数、阶段延迟和错误类型。错误类型最好区分为召回失败、排序错误、部分条件满足、重复内容干扰、延迟超出预期和资源异常,而不是简单标记为“正确”或“错误”。
最后,将结果整理成按查询类型分组的对比表。表格至少应同时包含召回覆盖、排序质量、平均延迟、长尾延迟、索引体积、构建或更新成本,以及复杂查询的单独结果。若还要接入生成式问答,则另行记录上下文充分性和答案依据情况,不要用生成答案的质量替代检索本身的评测。
如何据此做上线判断
如果多向量模型只在少量边缘查询上改善排序,却让索引维护和线上延迟明显变复杂,工程团队可以考虑继续使用单向量方案,或只把多向量模型放在特定查询路径上。相反,如果它稳定改善了包含多条件和局部证据要求的查询,而且资源成本在现有架构可承受范围内,就有理由进一步进行小范围灰度验证。
评测结论最好写成带条件的判断,而不是笼统地宣布某种模型“更强”。例如,明确指出它在哪类查询上改善了召回或排序,代价体现在哪些资源指标,以及哪些查询仍然没有解决。这样形成的记录,既能帮助模型选型,也能为后续索引扩容、缓存设计和数据集迭代提供依据。
多向量编码带来的不是一个需要追逐的单一分数,而是一种更细粒度的检索能力。企业真正需要评估的,是这种能力是否覆盖了自己的关键查询,以及它是否值得承担相应的存储、延迟和运维成本。



