跳到主内容
快讯直播
AI智模界
AI 词典

交叉编码器:把问题和文档拼在一起打分的模型

一句话定义:交叉编码器(Cross-Encoder)是一种把「查询」和「候选文档」拼成一段文本、一起送进模型、直接输出相关度分数的模型结构。

它怎么工作

假设你在做一个知识库搜索,用户问「报销多久能到账」,候选文档是「差旅费报销流程说明」。

双编码器AI 词典:Bi-Encoder">Bi-Encoder)的做法是:问题和文档各走各的,分别压成一个向量,再算两个向量的余弦相似度。好处是文档向量可以提前算好存进向量库,搜索时只算问题的向量,快。

交叉编码器的做法完全不同,它把两段文本拼成一句:

```

[CLS] 报销多久能到账 [SEP] 差旅费报销流程说明…… [SEP]

```

整段丢进 Transformer,让「报销」这个词和文档里的「报销」「到账」「T+7 个工作日」在每一层注意力里直接互相看见。最后模型输出一个分数,比如 0.87,表示这段文档和这个问题有多相关。

打个比方:双编码器像两个人各自写一份自我介绍,然后你比对两份简历像不像;交叉编码器像把两个人拉到同一张桌子上当面聊,谁跟谁合适,一眼就看出来了。显然当面聊更准,但你不可能让一个人跟一万个人都当面聊一遍。

关键取舍

维度双编码器 Bi-Encoder交叉编码器 Cross-Encoder
输入形式查询、文档分别编码查询+文档拼接后一起编码
能否预计算能,文档向量可离线存好不能,每对组合都要现算
一次能评多少百万级向量里做近似检索通常几十到几百条候选
精度较低,两段文本从未交互明显更高
典型角色召回(Recall)重排(Rerank)

所以工程上常见的组合是两阶段:先用向量检索或 BM25 这类便宜方法,从百万文档里粗筛出 50~100 条候选;再用交叉编码器对这几十条逐一打分,重新排序后取前几条交给大模型生成答案。第一阶段的活儿是「别漏」,第二阶段的活儿是「排准」。

和相邻概念的区别

  • 和双编码器的区别如上,核心是「有没有让查询和文档在模型内部交互」。
  • 和「重排模型(Reranker)」不是并列关系:交叉编码器是实现重排最常见的一种结构,重排是它扮演的角色。也有用大模型直接打分做重排的做法。
  • 和「相似度打分」不同:交叉编码器输出的是任务相关的相关度,不是对称的语义相似度。它需要针对具体任务训练过,不能指望拿一个通用模型直接当万能裁判。

对从业者的实际意义

1. 如果你的 RAG 系统「检索出来的东西明明在里面,就是排不到前面」,加一层交叉编码器往往是性价比最高的一步改动,通常比换更大的向量模型见效更直接。

2. 成本要算清楚:延迟大致随候选数量线性增长。候选从 100 降到 50,延迟减半,精度可能只掉一点点,这个旋钮值得调。

3. 中文场景下优先选在你所在领域数据上微调过的版本;通用预训练权重直接拿来用,效果常常不如预期。

具体模型选型、显存占用、吞吐数据随版本和硬件变化很大,实际以官方页面和你的压测结果为准。

一句话记住:交叉编码器是「精算师」——算得准,但一次只能算一笔账,所以它站在检索流水线的最后一段,而不是第一段。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。