Ch13 RAG修订于 二〇二六年七月六日

Cross-Encoder (交叉编码器)

概述

Cross-Encoder(交叉编码器)是一种将查询(Query)和文档(Document)同时输入同一个编码器进行联合编码的架构。与 Bi-Encoder 不同,Cross-Encoder 不对查询和文档进行独立编码,而是将两者拼接后一并送入 Transformer 模型,通过注意力机制让查询和文档在每一层都进行充分的交互。这种全交互设计使其精度最高,但速度最慢,通常用于 RAG 系统的重排序(Reranking)阶段。

工作原理

Cross-Encoder 的处理流程:

  1. 输入拼接:将 query 和 document 拼接为 [CLS] query [SEP] document [SEP]
  2. 联合编码:整个拼接序列一起送入 Transformer,自注意力机制在每个 token 之间计算
  3. 相关性分数:取 [CLS] token 的输出向量,通过一个线性层映射为相关性分数(0~1)
  4. 分类/回归:输出可用于二分类(相关/不相关)或回归(相关性分数)

数学表达

给定查询 和文档 ,Cross-Encoder 的输出为:

其中 表示拼接后的序列, 表示取分类 token 的输出。

与 Bi-Encoder 的详细对比

维度Cross-EncoderBi-Encoder
编码方式Query 和 Doc 同时输入,联合编码Query 和 Doc 分别独立编码
交互方式全交互(每层注意力覆盖所有 token)无交互(仅在最后点积/余弦相似度)
精度高(充分交互,捕获细粒度匹配)中等(独立编码,信息压缩)
推理速度极慢(每个 query-doc 对都要重新编码)快(文档可预先编码并存入向量库)
存储需求无需存储向量(在线计算)需要存储文档向量(离线索引)
计算复杂度
典型应用Reranking(重排序)Retrieval(召回)
支持的文档量数百到数千百万到数十亿
模型示例monoBERT, monoT5, RankLLaMASBERT, DPR, BGE, E5

注: 为查询数, 为文档数, 为序列长度。

在 RAG 中的应用

RAG 系统通常采用两阶段检索策略:

  1. 第一阶段(召回 / Retrieval):使用 Bi-Encoder 从海量文档中快速召回 Top-K 候选(如 K=100)
  2. 第二阶段(重排序 / Reranking):使用 Cross-Encoder 对 Top-K 候选逐一打分,重排序后取 Top-N(如 N=5)

这种组合既保证了速度(Bi-Encoder 处理海量文档),又保证了精度(Cross-Encoder 精细筛选)。

典型 Cross-Encoder 模型

模型基座参数量特点
monoBERTBERT-base110M最早的 Cross-Encoder 重排序模型
monoT5T5-base220M基于 Seq2Seq,输出”true/false”概率
RankT5T5-large770MmonoT5 的改进版,排序效果更好
RankLLaMALLaMA-7B7B基于 LLM 的重排序模型,2024 年 SOTA
BGE-Reranker-v2BGE-M3568M支持多语言,中文友好
Cohere Rerank v3专有未公开商业 API,效果优秀

2026 年趋势

  1. LLM 作为 Cross-Encoder:使用 GPT-4、Claude 等 LLM 直接进行 relevance judgment,通过 prompt 控制输出格式
  2. 多阶段级联:Bi-Encoder -> Cross-Encoder -> LLM 三级架构,每一级更精确但更慢
  3. 蒸馏优化:用 Cross-Encoder 作为教师模型,蒸馏训练 Bi-Encoder,提升召回阶段精度
  4. 延迟优化:模型量化、TensorRT 推理、连续批处理等技术大幅降低 Cross-Encoder 延迟

相关笔记

来源

关联9

知识图谱

局部图谱 · 点节点跳转