核心概念
重排器(Reranker / Cross-Encoder)是資訊檢索管線中的第二層精篩元件。它不負責從千萬文件中找到候選,而是對已檢索出的 Top-K 結果做細粒度的相關性重新排序。
2026 年 5 月 19 日,Hugging Face 研究員 Tom Aarsen 發布 Ettin Reranker 家族——六個從 17M 到 1B 參數不等的重排器,全部基於 Johns Hopkins NLP 實驗室的 Ettin ModernBERT 編碼器訓練,並同步公開 1.43 億訓練三元組與完整訓練腳本(Apache 2.0)。
嵌入模型 vs 重排器
| 特性 | 嵌入模型(Bi-Encoder) | 重排器(Cross-Encoder) |
|---|---|---|
| 編碼方式 | 查詢與文件各自獨立編碼 | 查詢 + 文件聯合編碼 |
| 速度 | 快(向量可預先計算) | 慢(每對都要跑一次) |
| 精度 | 較低 | 較高 |
生產實踐是兩層串聯:嵌入模型基礎與選型 負責從大語料快速取回 Top-100 候選,再讓重排器精篩,最終呈現 Top-5 或 Top-10。這正是 RAG 檢索增強生成架構 中「檢索後重排」步驟的核心。
六個模型規格
| 模型 | 參數量 | 隱藏層 | 層數 |
|---|---|---|---|
| ettin-reranker-17m-v1 | 17.6M | 256 | 7 |
| ettin-reranker-32m-v1 | 32.8M | 384 | 10 |
| ettin-reranker-68m-v1 | 68.6M | 512 | 19 |
| ettin-reranker-150m-v1 | 150.9M | 768 | 22 |
| ettin-reranker-400m-v1 | 401.6M | 1024 | 28 |
| ettin-reranker-1b-v1 | 1.00B | 1792 | 28 |
關鍵要點
架構創新:無填充 Transformer + Flash Attention 2
傳統 BERT 系模型批次推論時需對不等長序列做 padding,Flash Attention 2 在 padded 輸入上無法發揮完整效能。Ettin Reranker 使用模塊化 Transformer 元件支援序列 unpadding,讓 FA2 只對有效 token 做計算、跳過填充位置,帶來:
| 模型大小 | bf16+FA2 unpadded 加速(vs fp32 基準) |
|---|---|
| 17M | 1.71× |
| 68M | 3.60× |
| 150M | 4.83× |
| 400M | 6.53× |
| 1B | 8.26× |
評測:每個尺寸都是同規模 SOTA
MTEB (eng, v2) Retrieval NDCG@10 關鍵對比:
- 17M(0.5576)超越 33M 的 ms-marco-MiniLM-L12-v2(0.5066)
- 32M(0.5779)超越 568M 的 BAAI/bge-reranker-v2-m3,參數量縮 17 倍
- 1B(0.6114)幾乎追平 1.54B 教師模型(0.6115)
H100 推論吞吐量(pairs/s)也全面領先:
- 17M:7,517(對比教師 387,快 19 倍)
- 150M:3,237(對比同尺寸競品 1,418,快 2.3 倍)
- 1B:928(對比教師 387,快 2.4 倍)
更多推論加速技術細節可參考 非同步連續批次推論:LLM 推論的 CPU/GPU 並行加速。
訓練方法:刻意簡單的單階段 MSE 蒸餾
損失函數只用 MSELoss,直接對教師(mxbai-rerank-large-v2,1.54B)的原始 logits 做均方誤差,不做任何縮放。資料集共 1.43 億條 (query, document, teacher_score) 三元組。
採樣策略(每個查詢從 2,048 個候選中取 256 個):
- 32 個正例 + 最難負例
- 32 個中等難度負例(從排名中段區域採樣)
這種「量化-錨點」採樣讓模型同時學到正例識別與難例區分,且每個模型只跑 1 個 epoch,主要調整學習率與批次大小。
評估方法方面,Open ASR Leaderboard:私有測試集對抗基準污染 提到的基準污染問題同樣值得注意——Ettin 使用 NanoBEIR 做動態驗證,部分抵禦污染風險。
尺寸選型建議
| 場景 | 推薦 | 理由 |
|---|---|---|
| CPU / 邊緣裝置 | 17M | CPU 吞吐 267 pairs/s |
| 成本敏感雲端服務 | 68M | NDCG@10=0.5915,超越 596M Qwen3 |
| 高精度需求 | 400M 或 1B | 接近最強教師水準 |
實務應用
from sentence_transformers import CrossEncoder
model = CrossEncoder("cross-encoder/ettin-reranker-32m-v1")
scores = model.predict([
("Where was Apple founded?", "Apple Inc. was founded in Cupertino..."),
("Where was Apple founded?", "The Fuji apple is an apple cultivar..."),
])
# [11.39, 2.97] — 分數越高越相關
若啟用 Flash Attention 2 加速:
model = CrossEncoder(
"cross-encoder/ettin-reranker-32m-v1",
model_kwargs={"dtype": "bfloat16", "attn_implementation": "flash_attention_2"},
)
與 Hugging Face 推論供應商生態系:DeepInfra 整合實錄 所描述的推論服務架構搭配,可讓重排器在不部署本地 GPU 的情況下直接接入 HF Inference API;搭配 Granite Embedding Multilingual R2:開源多語言嵌入的效能突破 等開源嵌入模型,可建立完整的開源雙層檢索管線。
延伸觀點
從近期研究看,Ettin Reranker 的發布符合 RAG 領域幾個更廣泛的收斂共識。
跨編碼器對比雙編碼器的優勢已有充分實證。 多篇 2024-2025 年研究(包括電商知識圖譜上的 RAG 管線比較)均確認,加入 Cross-Encoder 重排後的 Hit@1 可提升 20% 以上,且在不同的底層檢索器(BM25、FAISS dense retrieval)上效果一致。Ettin 家族的 MTEB 數據與此吻合——即便是最小的 17M 模型,也能對嵌入模型的召回結果做有意義的重排精篩。
專化重排器優於通用 LLM 重排。 這是多篇論文的共同發現,理由在於:LLM 作為重排器時推論成本高(每對都需要完整 prompt),且沒有針對相關性判斷優化。Ettin 的 68M 模型在 MTEB 上超越 596M 的 Qwen3-Reranker-0.6B,再次驗證「專化小模型 > 通用大模型」的規律在重排任務上同樣成立。
新興架構方向:Set-Encoder(集合式編碼器)。 點式(Pointwise)Cross-Encoder 的限制是每個文件獨立評分,無法建模文件間的相對關係。近年出現的 Set-Encoder 架構透過置換不變(permutation-invariant)的注意力機制,在單次前向傳播中同時處理所有候選文件,並讓文件之間相互注意。這讓 Ettin 目前的設計仍有改進空間——未來若引入文件間交互,可進一步提升難例排序精度。
Ettin 的最大貢獻是基礎設施層的開放。 相比精度數字,更值得關注的是 1.43 億訓練三元組的完整開源——這是目前公開規模最大的重排器訓練資料集之一,為後續研究者提供了可直接複現、可繼續蒸餾的基礎,降低了自訓重排器的門檻。
反向連結
以下頁面引用了本頁:
- Granite Embedding Multilingual R2:開源多語言嵌入的效能突破(文章精選)
- Hugging Face 推論供應商生態系:DeepInfra 整合實錄(文章精選)
- Open ASR Leaderboard:私有測試集對抗基準污染(文章精選)
- RAG 檢索增強生成架構(技術與AI)
- 嵌入模型基礎與選型(技術與AI)