Cross-Encoder
3 秒看懂
Cross-Encoder 是一種將兩段文本拼接後整體輸入一個 Transformer 編碼器、直接輸出一個相關性分數的模型架構。它與 Bi-Encoder(雙塔)的核心區別在於:Cross-Encoder 在 Transformer 內部的每一層自注意力(self-attention)中都能看到 query 和 document 的全部 token,從而實現深度互動。精度高,但推論時無法預計算文件表示,速度慢一個數量級以上——因此在工業界主要用於 reranking(重排序) 階段,而非第一輪檢索。
3 分鐘產業解釋
為什麼需要 Cross-Encoder?
現代檢索系統(搜尋引擎、RAG 問答、推薦系統)普遍採用兩階段管線(two-stage pipeline):
- 第一階段:召回(Retrieval)——從百萬級候選池中快速篩選出數百條候選結果。速度優先,常用 BM25(關鍵詞匹配)、Bi-Encoder(雙塔向量檢索)或混合方案。
- 第二階段:重排序(Reranking)——對召回的數百條候選精打細算,給出精準排序。精度優先,這正是 Cross-Encoder 的主戰場。
Cross-Encoder 的價值在於:它是精度-成本曲線的上界參考。在給定候選集規模(通常 50–1000 條)下,Cross-Encoder 的排序質量顯著優於 Bi-Encoder,代價是推論延遲從微秒級提升到毫秒-十毫秒級。
產業位置
在 RAG(Retrieval-Augmented Generation)管線中,Cross-Encoder 承接”粗篩→精排→生成”的中間環節。當前主流做法:
使用者 Query → BM25/Bi-Encoder 召回 Top-K → Cross-Encoder Rerank → Top-K' → LLM 生成
Cohere Rerank、Jina Reranker、Voyage AI 等 API 均提供 Cross-Encoder 級別的重排序服務,按查詢次數計費。在企業級搜尋/問答場景,這一環往往是準確率提升最大且成本可控的槓桿點。
15 分鐘專家深入
架構本質
Cross-Encoder 本身並不是一種全新的網路結構,而是一種輸入範式(input paradigm)。它通常複用 Encoder-only Transformer(如 BERT、RoBERTa、DeBERTa 等),將 query 和 document 拼接為單一輸入序列:
[CLS] query tokens [SEP] document tokens [SEP]
模型最後一層的 [CLS] 隱狀態通過一個線性層對映為標量相關性得分。
與 Bi-Encoder 的本質差異
| 維度 | Bi-Encoder(雙塔) | Cross-Encoder |
|---|---|---|
| 輸入方式 | query 和 doc 各自獨立編碼 | query 和 doc 拼接後聯合編碼 |
| 注意力範圍 | 各自內部 self-attention | query-doc 之間全層交叉注意力 |
| 文件表示可否預計算 | ✅ 可離線計算並索引 | ❌ 必須線上逐對計算 |
| 檢索複雜度 | O(N + M),可近似 O(1) ANN | O(N × M) |
| 典型應用場景 | 第一輪召回 | 第二輪重排序 |
| 精度(以 MRR@10 或 NDCG@10 衡量) | 較低 | 顯著更高 |
| 單次推論延遲(GPU,base 模型,512 token) | ~1–5 ms | ~5–50 ms/對 |
關鍵洞察:Bi-Encoder 丟失了 token 級別的細粒度互動。一個 query token 無法在編碼階段”看到”任何 document token,反之亦然——只能通過最終向量的點積做全域性壓縮匹配。Cross-Encoder 沒有這個瓶頸。
為什麼精度高?
Transformer 自注意力在每一層計算:
\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V
當 query 和 document 拼接輸入時,$Q$、$K$ 矩陣橫跨兩個文本的所有 token。這意味著:
- 第 1 層開始,每個 query token 就能 attend 到每個 document token,反之亦然。
- 到第 $L$ 層,資訊已經過 $L$ 輪交叉融合,模型可以捕捉複雜的匹配模式(如否定、因果、推論鏈)。
- Bi-Encoder 僅有 單次點積 作為資訊瓶頸(information bottleneck),其表達能力遠弱於此。
推論成本的量級差異
設候選文件池大小為 $M$,查詢數為 $N$:
- Bi-Encoder:文件側編碼一次(離線),總計算 ≈
M \cdot C_{\text{doc}} + N \cdot C_{\text{query}},線上檢索可用 FAISS/ScaNN 等 ANN 索引,O(\log M)或 $O(1)$ 量級。 - Cross-Encoder:每對 (query, document) 需要完整前向傳播一次,線上總計算 ≈
N \times M \times C_{\text{pair}}。
因此 Cross-Encoder 只能用於小規模候選集的精排,不能用於百萬級語料庫的直接檢索。
技術原理
模型架構(以 BERT-base 為例)
┌─────────────────────────────────────────────────────┐
│ Input: [CLS] q1 q2 ... qn [SEP] d1 d2 ... dm [SEP]│
│ ↓ Token Embedding + Segment Embedding │
│ ┌───────────────────────────────────────────┐ │
│ │ Transformer Encoder Layer × 12 (base) │ │
│ │ - Multi-Head Self-Attention (full span) │ │
│ │ - Feed-Forward Network │ │
│ │ - LayerNorm + Residual │ │
│ └───────────────────────────────────────────┘ │
│ ↓ │
│ [CLS] hidden state (768-d for base) │
│ ↓ │
│ Linear(768 → 1) → sigmoid → relevance score ∈ [0,1]│
└─────────────────────────────────────────────────────┘
輸入表示:
- Token Embedding + Position Embedding + Segment Embedding(query 段標記為 0,document 段標記為 1,是 Cross-Encoder 區分兩段文本的關鍵訊號)
- 最大輸入長度通常 256–512 token(受計算量制約)
輸出頭:
- Pointwise:單樣本得分,用 sigmoid + BCELoss 訓練
- Pairwise:用 Margin-based Loss(如 BCE on score difference 或 Triplet Loss),訓練時輸入 (query, positive, negative) 三元組
- Listwise:對同一 query 的多候選做 softmax + CrossEntropy(更貼近排序目標)
訓練資料範式
典型的監督訊號來源:
- 人工標註:TREC、MS MARCO 等資料集提供的 query-document 相關性標籤
- 弱監督:BM25 或 Bi-Encoder 的 Top-K 結果作為正樣本(偽標籤)
- 知識蒸餾:用更大的 Cross-Encoder(或 LLM-based reranker)的輸出分數作為 soft label,訓練更小更快的 Cross-Encoder——這是當前工業界高頻使用的策略
- 對比學習輔助:在 Cross-Encoder 訓練中加入對比損失作為正則化
推論最佳化技術
由於 Cross-Encoder 無法預計算,推論最佳化極為關鍵:
| 技術 | 說明 |
|---|---|
| Dynamic Batching | 將同一 batch 內多個 (query, doc) pair 一起推論 |
| ONNX / TensorRT 量化 | INT8 量化可降低延遲 2-4×,精度損失通常可控 |
| Early Exit | 淺層即可判斷”明顯不相關”的 pair 提前退出,節省計算 |
| Truncation 策略 | 對 document 截斷到前 128/256 token,降低序列長度(犧牲少量精度) |
| Flash Attention | 降低長序列的視訊記憶體和計算開銷 |
| Speculative Reranking | 先用輕量模型粗排,再用完整 Cross-Encoder 對 Top-K’ 精排 |
技術演進史
| 時間 | 里程碑 | 說明 |
|---|---|---|
| ~2000s | BM25 / TF-IDF | 純詞法匹配,無語義理解 |
| 2013–2015 | Word2Vec / GloVe | 早期語義匹配:平均詞向量 + cosine,表達力有限 |
| 2015–2018 | CNN/LSTM-based Sentence Pair Models | ESIM、DecompAttention 等,NLI 任務推動 pair modeling |
| 2018.10 | BERT 釋出 | Encoder-only 架構 + NSP 預訓練天然適配句對任務 |
| 2019 | Sentence-BERT (Reimers & Gurevych) | 明確對比 Bi-Encoder vs Cross-Encoder 範式;在 STS/MNLI 等任務建立基準 |
| 2019 | MS MARCO Leaderboard 催化 | 大規模檢索基準推動 BERT Cross-Encoder 在 reranking 上成為 SOTA |
| 2020 | DeBERTa / ELECTRA | 更強的預訓練目標帶來 Cross-Encoder 精度進一步提升 |
| 2020–2021 | 蒸餾潮 | MiniLM、TinyBERT 等將 Cross-Encoder 蒸餾為更小模型 |
| 2022 | ColBERT v2 / Late Interaction | 介於 Bi-Encoder 和 Cross-Encoder 之間的折中方案出現 |
| 2023–2024 | LLM-as-Reranker | 用 GPT-4、Cohere Command 等 LLM 做 listwise reranking,精度高但成本高 |
| 2024–2025 | 開源 Cross-Encoder 蒸餾自 LLM | 如 RankGPT 思路→開源蒸餾模型,平衡精度與成本 |
產業趨勢:Cross-Encoder 作為 reranker 的核心範式地位未被撼動,但 LLM-based reranker 在特定場景開始替代傳統 Cross-Encoder,催生”LLM 教師 → Cross-Encoder 學生”的蒸餾範式。
技術路線對比
| 維度 | BM25 | Bi-Encoder | Cross-Encoder | Late Interaction (如 ColBERT) | LLM-based Reranker |
|---|---|---|---|---|---|
| 語義能力 | 無(詞法) | 中等 | 強 | 中強 | 最強 |
| 互動粒度 | 詞匹配 | 向量點積(全域性) | token-to-token(全層) | token-to-token(僅最後一層) | 生成式推論 |
| 可預計算 | ✅ 倒排索引 | ✅ 向量索引 | ❌ | ✅(token-level 向量索引) | ❌ |
| 線上延遲(Top-100 rerank, GPU) | <1 ms | <5 ms | 5–50 ms | 10–30 ms | 100–2000+ ms |
| 典型 NDCG@10(MS MARCO Passage, 大致量級) | ~0.23 [估算] | ~0.34 [估算] | ~0.39–0.41 [估算] | ~0.37 [估算] | ~0.42+ [估算] |
| 部署成本 | 極低 | 低(GPU 推論 + ANN 索引) | 中(GPU 密集推論) | 中高(大索引 + 推論) | 高(LLM 推論) |
| 適用規模 | 百萬–十億級 | 百萬–十億級 | 百–千級候選 | 百萬級(折中) | 十–百級候選 |
注:NDCG@10 數字為不同論文/公開排行榜中大致量級的估算,不同資料集、模型大小差異顯著,此處僅用於定性對比。
上下游
上游:依賴什麼?
- 預訓練 Encoder 模型:BERT、RoBERTa、DeBERTa、ELECTRA、ModernBERT 等。預訓練質量直接決定 Cross-Encoder 上限。
- 訓練資料:標註好的 query-document 相關性對。MS MARCO(約 50 萬 query,約 880 萬 passage)、TREC DL 是標準基準。
- 第一階段檢索器:Cross-Encoder 自身無法檢索,必須依賴 BM25 / Bi-Encoder / 混合方案先召回候選。
- 推論硬體:GPU(NVIDIA A100/H100 等)對高吞吐 reranking 至關重要;邊緣/端側可用量化後的小模型。
下游:被什麼使用?
- RAG 管線:ChatGPT with retrieval、企業搜尋、知識庫問答的 reranking 環節
- 搜尋引擎:Google/Bing 的 Learning-to-Rank 模組中,Cross-Encoder 類模型是候選排序器之一
- 推薦系統:多模態或文本側的精排模型借鑑 Cross-Encoder 思路
- 對話系統:候選回覆選擇 / 對話檢索
- 程式碼搜尋:CodeBERT-based Cross-Encoder 用於 query-to-code reranking
關鍵指標
| 指標 | 含義 | 典型範圍 |
|---|---|---|
| MRR@10 | 前 10 結果中首個正確結果的倒數排名均值 | MS MARCO 上 0.35–0.41 [估算,模型相關] |
| NDCG@10 | 前 10 結果的歸一化折扣累計增益 | TREC DL 上 0.65–0.75 [估算] |
| Latency (p50/p99) | 單次 rerank 的中位數/尾部延遲 | GPU 上 5–50 ms/pair(base 模型) |
| Throughput | 每秒可 rerank 的 pair 數 | 取決於 batch size、模型大小、序列長度、硬體 |
| Model Size | 引數量 | 22M (MiniLM-L6) → 340M (DeBERTa-large) |
| Max Input Length | 支援的最大拼接序列長度 | 通常 256–512 token |
| Rerank Depth (K) | 從召回階段接收的候選數 | 典型 50–1000 |
供需與市場資料
⚠️ 以下為定性分析和公開可得資訊的彙總,非精確市場資料。
需求側
- RAG 市場爆發:幾乎所有企業級 AI 應用都包含檢索增強環節,Cross-Encoder reranking 是精度提升的標準配置。
- 搜尋/廣告:Google、Bing、百度等搜尋引擎的排序模組中大量使用 Cross-Encoder 或其變體。
- API 呼叫量:Cohere Rerank、Jina Reranker 等 SaaS 產品以 API 計費,反映下游需求旺盛。
供給側
- 開源模型:
sentence-transformers庫提供豐富的預訓練 Cross-Encoder 模型(如cross-encoder/ms-marco-MiniLM-L-6-v2等),大幅降低使用門檻。 - 商業 API:Cohere Rerank、Voyage AI、Jina AI 等提供託管服務。
- 推論成本:一個 base 模型在 A100 上 rerank 100 條候選的延遲約 10–30 ms(估算),成本約 $0.001–0.01/query 級別(自部署,不含硬體折舊)。
競爭格局
Cross-Encoder 面臨來自兩個方向的競爭:
- LLM-based Reranker:GPT-4o / Command R+ 直接做 listwise reranking,精度可能更高但成本高 10–100×。
- Late Interaction 模型(如 ColBERT):在保持一定精度的同時支援預計算,延遲接近 Bi-Encoder。
代表公司與資本對映
| 公司/組織 | 產品/貢獻 | 說明 |
|---|---|---|
| Cohere | Rerank API | 商業化 Cross-Encoder reranking 的代表,B 輪融資估值超 $50B [公開報道] |
| Jina AI | Jina Reranker / jina-reranker-v2 | 開源 + 商業 API 雙模式 |
| Voyage AI | Reranker API | 獲得融資,專注嵌入與重排序 |
| Hugging Face | sentence-transformers 庫 | 開源 Cross-Encoder 訓練/推論架構的事實標準 |
| Microsoft | MiniLM、DeBERTa | 提供高效 Cross-Encoder 的基礎模型 |
| BERT → 私有排序模型 | 搜尋排序中的 Cross-Encoder 思路 | |
| Meta | ColBERT 相關研究 | Late Interaction 路線的推動者 |
投資邏輯
看好因素
- RAG 管線中的剛需環節:只要 LLM 依賴檢索增強,Cross-Encoder(或其衍生)reranking 就是不可或缺的精度層。
- 價效比優勢明顯:相比 LLM-based reranker,Cross-Encoder 的推論成本低 1–2 個數量級,適合高 QPS 場景。
- 蒸餾範式打通”大型模型 → 小模型”的產業路徑:用 LLM 的排序知識蒸餾到輕量 Cross-Encoder,兼顧精度和成本。
- API 化趨勢:Reranking-as-a-Service 模式正在形成,如 Cohere Rerank。
風險因素
- 被 LLM 端到端替代:如果未來 LLM 推論成本大幅下降(如 100×),直接用 LLM 做 reranking 可能使獨立 Cross-Encoder 層變得多餘。
- 被 Late Interaction 替代:ColBERT 等方案在精度和延遲之間有更好的 trade-off,可能蠶食 Cross-Encoder 的份額。
- 頭部效應:開源模型(sentence-transformers 生態)高度可用,商業化壁壘有限。
常見誤讀糾偏
誤讀 1:「Cross-Encoder 是一種獨立的網路架構」
糾偏:Cross-Encoder 不是一種新架構,而是一種輸入範式。它複用標準的 Encoder-only Transformer(BERT、RoBERTa 等),關鍵區別在於將兩段文本拼接輸入以實現交叉注意力,而非改變網路結構本身。真正改變架構的創新(如 ColBERT 的 token-level late interaction)才是新架構。
誤讀 2:「Cross-Encoder 可以替代 Bi-Encoder 做大規模檢索」
糾偏:不行。Cross-Encoder 的推論複雜度是 O(N \times M)($N$ 查詢 × $M$ 文件),無法預計算文件表示。對於百萬級語料庫,即使用最激進的量化和硬體最佳化,線上逐對計算也不現實。Cross-Encoder 只適合對 Bi-Encoder/BM25 已召回的少量候選(通常 50–1000)做精排。它與 Bi-Encoder 是互補關係,不是替代關係。
誤讀 3:「Segment Embedding 不重要,去掉也行」
糾偏:在 Cross-Encoder 中,Segment Embedding(token type embedding)是告訴模型哪些 token 屬於 query、哪些屬於 document 的唯一結構化訊號。雖然位置編碼在理論上也能部分割槽分,但實驗表明去掉 Segment Embedding 通常會帶來可測量的精度下降,尤其在短 query + 長 document 的典型場景下。
誤讀 4:「Cross-Encoder 只能做二分類(相關/不相關)」
糾偏:輸出頭的設計靈活。可以是二分類(sigmoid),也可以是迴歸(連續相關性分數),還可以用 listwise softmax 對多個候選同時打分並歸一化。訓練方式也多樣化:pointwise、pairwise、listwise loss 各有適用場景,listwise 在排序目標上通常更優。
學習路徑
入門(1–2 天)
- 閱讀 Sentence-BERT 論文(Reimers & Gurevych, 2019)——建立 Bi-Encoder vs Cross-Encoder 的基本概念
- 使用
sentence-transformers庫的 Cross-Encoder 示例跑通推論和評估 - 在 MS MARCO 資料集上評估一個預訓練 Cross-Encoder 的 MRR@10
進階(1–2 周)
- 閱讀 ColBERT 論文(Khattab & Zaharia, 2020)——理解 Late Interaction 作為折中方案
- 閱讀 RankGPT / LLM-based Reranking 相關工作——理解 LLM 教師蒸餾到 Cross-Encoder 的範式
- 自己實現 Cross-Encoder 的 pairwise/listwise 訓練迴圈
- 嘗試 ONNX 量化和 TensorRT 部署,測量 latency 吞吐
專家(持續追蹤)
- 追蹤 MTEB Reranking 排行榜上的最新模型
- 研究 multi-vector / late interaction 方案(ColBERTv2、PLAID 等)對 Cross-Encoder 的替代潛力
- 關注 LLM 推論成本曲線——這是決定 Cross-Encoder 長期競爭力的關鍵變數
一句話總結
Cross-Encoder 以 token 級全層交叉注意力 換取排序精度的上界,以無法預計算的 $O(NM)$ 代價限定在 reranking 環節——它是 RAG 管線中精度-成本 trade-off 最優的重排序方案,但其長期地位取決於 LLM 推論成本下降和 Late Interaction 技術的演進。
延伸閱讀與來源
- Reimers & Gurevych (2019): Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks — 奠定 Bi-Encoder vs Cross-Encoder 對比架構
- Nogueira & Cho (2019): Passage Re-ranking with BERT — BERT Cross-Encoder 在 passage reranking 上的早期應用
- Khattab & Zaharia (2020): ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT — Late Interaction 折中方案
- Sun et al. (2023): Is ChatGPT Good at Search? Investigating Large Language Models as Re-Ranking Agent (RankGPT) — LLM-based reranking
- sentence-transformers 文件(https://www.sbert.net/cross_encoder.html)— 實踐入口
- MTEB Leaderboard(https://huggingface.co/spaces/mteb/leaderboard)— 模型評測排行
- MS MARCO Leaderboard(https://microsoft.github.io/msmarco/)— 檢索/reranking 基準
- ⚠️ 本頁中的 benchmark 數字和市場資料為基於公開資訊的估算,非精確定量資料,具體數值因模型版本、資料集版本、評測設定而異。