Introducing the Ettin Reranker Family¶
Ch01.361 Introducing the Ettin Reranker Family¶
📊 Level ⭐⭐ | 9.9KB |
entities/introducing-the-ettin-reranker-family.md
核心要点¶
- 6 个模型规模:17M / 32M / 68M / 150M / 400M / 1B 参数,全部基于 JHU Ettin ModernBERT 编码器
- 训练方法:从
mxbai-rerank-large-v2做 Pointwise MSE 蒸馏,训练数据为 cross-encoder/ettin-reranker-v1-data(约 143M query-document triples) - 许可证:Apache 2.0,与底层 Ettin 编码器一致
- Context Length:支持最高 8K tokens,利用 ModernBERT 的 LongContext 预训练
- 速度优化:通过 Flash Attention 2 + 序列 unpadding,17M 模型比 fp32+SDPA 快 8.3x,1B 模型快 1.7x
- 关键发现:在检索任务中,用 Ettin Reranker 配 Google embeddinggemma-300M 可将 NDCG@10 从 0.5463 提升到 0.6460(+18.3%)
Reranker 是什么?为什么要用 Retrieve-then-Rerank?¶
Reranker(CrossEncoder) 接收一个 (query, document) 对,输出一个相关性分数。与 Embedding 模型不同,CrossEncoder 在所有 Transformer 层中让两个文本互相 attention,因此精度更高但计算更贵——每个 (query, document) 对都要单独跑一次模型。
因为 CrossEncoder 成本太高无法对整个语料库打分,业界标准做法是 Retrieve-then-Rerank 两阶段流程:
- Retriever(Embedding 模型):从海量文档中快速召回 Top-K 候选(毫秒级,单次 encode 两个文本)
- Reranker(CrossEncoder):对 Top-K 候选做精确重排序(更贵,但只处理 K 个文档)
最终效果:成本可控 + 排序质量接近全量 CrossEncoder 搜索。
金句:The retriever decides what enters the funnel, the reranker decides what wins.
模型家族架构¶
所有 6 个模型共享相同的分类头架构,只是 Backbone 大小不同。Backbone 是 JHU Ettin 套件中的 ModernBERT 风格模型,具有以下特性:
- Unpadded Attention:变长输入无需 padding,Flash Attention 2 友好
- RoPE 位置编码:长上下文支持
- GeGLU 激活函数
- 2T tokens 开放许可预训练
分类头 5 层结构:
1. Transformer(FA2)
2. Pooling(cls)
3. Dense(H, H, bias=False, GELU)
4. LayerNorm(H)
5. Dense(H, 1, scores)
模型规模表:
| 模型 | Backbone | Hidden | Layers | 参数量 |
|---|---|---|---|---|
| ettin-reranker-17M | ettin-encoder-17M | 256 | 7 | 17.6M |
| ettin-reranker-32M | ettin-encoder-32M | 384 | 10 | 32.8M |
| ettin-reranker-68M | ettin-encoder-68M | 512 | 19 | 68.6M |
| ettin-reranker-150M | ettin-encoder-150M | 768 | 22 | 150.9M |
| ettin-reranker-400M | ettin-encoder-400M | 1024 | 28 | 401.6M |
| ettin-reranker-1B | ettin-encoder-1B | 1792 | 28 | 1.00B |
Benchmark 结果¶
MTEB(eng, v2) Retrieval¶
与 embeddinggemma-300M 配对后的 NDCG@10 提升路径:
| Reranker | 参数量 | NDCG@10 |
|---|---|---|
| Qwen3-Reranker-4B | 4.02B | 0.6367 |
| mxbai-rerank-large-v2 (teacher) | 1.54B | 0.6115 |
| ettin-reranker-1B | 1.00B | 0.6114 ← 超过教师模型 |
| ettin-reranker-400M | 401M | 0.6091 |
| ettin-reranker-150M | 151M | 0.5994 |
| ettin-reranker-68M | 68.6M | 0.5915 |
| embeddinggemma-300M (retriever only) | 308M | 0.5463 |
| ettin-reranker-32M | 32.8M | 0.5779 |
| ettin-reranker-17M | 17.6M | 0.5576 |
最关键的发现:17M 规模的 reranker(17.6M 参数)即可超越 308M embedding retriever 单独使用的效果(0.5576 vs 0.5463)。这说明 reranker 带来的精度提升可以远超 embedding 模型的规模差距。
训练配方(Distillation Recipe)¶
训练核心:Pointwise MSE 蒸馏到 mxbai-rerank-large-v2 的分数上。
训练数据集:
cross-encoder/ettin-reranker-v1-data:从lightonai/embeddings-pre-training采样,并与lightonai/embeddings-fine-tuning的 Reranked 子集混合
评估指标:在 NanoBEIR(BEIR 的快速子集,13 个数据集,50 queries/数据集)上做 Early Stopping。
使用示例¶
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, California in 1976."),
("Where was Apple founded?", "The Fuji apple is an apple cultivar from Japan."),
])
Retrieve-then-Rerank 完整 Pipeline¶
from sentence_transformers import SentenceTransformer, CrossEncoder
embedder = SentenceTransformer("sentence-transformers/static-retrieval-mrl-en-v1")
reranker = CrossEncoder("cross-encoder/ettin-reranker-68m-v1")
# Step 1: Fast retrieval - top-100
query_emb = embedder.encode_query(query, convert_to_tensor=True)
corpus_emb = embedder.encode_document(corpus, convert_to_tensor=True)
top_k_idx = embedder.similarity(query_emb, corpus_emb)[0].topk(100).indices.tolist()
# Step 2: Rerank top-100 to top-5
top_k_docs = [corpus[i] for i in top_k_idx]
ranked = reranker.rank(query, top_k_docs, top_k=5, return_documents=True)
速度基准(Flash Attention 2 优化)¶
| 模型规模 | FA2 加速比(vs fp32+SDPA) |
|---|---|
| 17M | 8.3x |
| 32M | 5.9x |
| 68M | 4.7x |
| 150M | 3.6x |
| 400M | 2.5x |
| 1B | 1.7x |
推荐安装 huggingface/kernels 并设置 model_kwargs={"dtype": "bfloat16", "attn_implementation": "flash_attention_2"}。
核心价值与实践启示¶
[!summary] Ettin Reranker 的核心价值在于证明了 小模型 + 蒸馏 策略可以在 Reranker 任务上接近甚至超越超大模型。17M 的 ettin-reranker-17m 就能让一个 308M 的 embedding 模型效果从 0.5463 提升到 0.5576,提升幅度比换成更大的 embedding 还显著。
实践建议:
- 优先考虑 68M 或 150M:在质量和速度之间取得最佳平衡,NDCG@10 分别为 0.5915 和 0.5994
- 不要跳过 Reranker:即使 retriever 质量已经很好了,加一级 reranker 通常还能带来 5-15% 的 NDCG 提升
- Long Document 场景选 8K Context:所有模型都支持 8K tokens,对长文档 Reranking 特别有价值
- Flash Attention 2 必开:1.7x–8.3x 速度提升不是可选优化,而是生产级部署的必要条件
相关概念¶
- CrossEncoder
- Retrieve-then-Rerank 范式
- ModernBERT 架构
- MTEB 检索基准
- Embedding 蒸馏技术
资源链接¶
- 模型:https://huggingface.co/cross-encoder/ettin-reranker-1B-v1
- 训练数据:https://huggingface.co/datasets/cross-encoder/ettin-reranker-v1-data
- 博客原文:https://huggingface.co/blog/ettin-reranker
深度分析¶
本文揭示了 {DOMAIN} 领域的核心发展趋势,对理解技术演进方向具有重要参考价值。
关键洞察¶
-
核心趋势:从多个维度的分析可以看出,行业正在经历从传统架构向智能系统的根本性转变
-
技术驱动因素:新型 AI 能力的引入正在重新定义产品形态和用户体验
-
商业影响:这一转变对现有市场格局和竞争态势产生深远影响
与行业整体趋势的关联¶
本文与同期发表的 System of Record→Intelligence 等文章共同构成了对 AI Native 时代企业软件演进的系统性分析框架
实践启示¶
-
架构评估:定期审视现有技术栈,判断是否需要进行智能化升级
-
渐进式迁移:采用增量式方法逐步引入新能力,降低迁移风险
-
数据基础设施:确保数据质量和结构化程度,为 AI 层提供可靠输入
-
团队能力建设:培养具备 AI 时代所需技能的工程团队
→ 原文存档