Model reference · open weights
ettin-reranker is an open-weight embedding model from cross-encoder. ettin-reranker-68m-v1 (FP32) weighs 136 MB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the cross-encoder/ettin-reranker-68m-v1 model card, 2026-10-01
What it is
| Released by | cross-encoder |
|---|---|
| Released | 2026-05-15 |
| Parameters | 68M |
| VRAM | 136 MB for the weights |
What it runs on
| Card | Runs | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
Builds
| Build | Params | Precision | Weights | Smallest setup |
|---|---|---|---|---|
| ettin-reranker-68m-v1 (above) ↗ | 68M | FP32 | 136 MB | RTX 3060 12 GB |
| ettin-reranker-32m-v1 ↗ | 32M | FP32 | 64 MB | RTX 3060 12 GB |
| ettin-reranker-17m-v1 ↗ | 17M | FP32 | 34 MB | RTX 3060 12 GB |
| ettin-reranker-150m-v1 ↗ | 149M | FP32 | 298 MB | RTX 3060 12 GB |
| ettin-reranker-400m-v1 ↗ | 395M | FP32 | 790 MB | RTX 3060 12 GB |
| ettin-reranker-1b-v1 ↗ | 1.0B | FP32 | 2.1 GB | RTX 3060 12 GB |
From the model card
This is a Cross Encoder model finetuned from jhu-clsp/ettin-encoder-68m on the cross-encoder/ettin-reranker-v1-data dataset using the sentence-transformers library. It computes scores for pairs of texts, which can be used for text reranking and semantic search.
See the release blogpost for details on the training recipe, evaluation results, and speed benchmarks against other public rerankers. The Evaluation section below also has the headline numbers.
CrossEncoder(
(0): Transformer({'transformer_task': 'feature-extraction', 'modality_config': {'text': {'method': 'forward', 'method_output_name': 'last_hidden_state'}}, 'module_output_name': 'token_embeddings', 'architecture': 'ModernBertModel'})
(1): Pooling({'embedding_dimension': 512, 'pooling_mode': 'cls', 'include_prompt': True})
(2): Dense({'in_features': 512, 'out_features': 512, 'bias': False, 'activation_function': 'torch.nn.modules.activation.GELU', 'module_input_name': 'sentence_embedding', 'module_output_name': 'sentence_embedding'})
(3): LayerNorm({'dimension': 512})
(4): Dense({'in_features': 512, 'out_features': 1, 'bias': True, 'activation_function': 'torch.nn.modules.linear.Identity', 'module_input_name': 'sentence_embedding', 'module_output_name': 'scores'})
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import CrossEncoder
# Download from the 🤗 Hub
model = CrossEncoder(
"cross-encoder/ettin-reranker-68m-v1",
model_kwargs={"dtype": "bfloat16", "attn_implementation": "flash_attention_2"}, # Optional: pip install kernels
)
# Get scores for pairs of inputs
query = "Which planet is known as the Red Planet?"
passages = [
"Venus is often called Earth's twin because of its similar size and proximity.",
"Mars, known for its reddish appearance, is often referred to as the Red Planet.",
"Jupiter, the largest planet in our solar system, has a prominent red spot.",
"Saturn, famous for its rings, is sometimes mistaken for the Red Planet.",
]
scores = model.predict([(query, passage) for passage in passages])
print(scores)
# [ 6.375 11.5 7.625 10.4375]
# Or rank passages by relevance to a single query
ranked = model.rank(query, passages)
print(ranked)
# [{'corpus_id': 1, 'score': np.float32(11.5)}, ...]
Each model in the ettin-reranker-v1 family was evaluated on the full MTEB(eng, v2) Retrieval benchmark (10 tasks, top-100 reranked) using MTEB's two-stage reranking flow, pairing each reranker with six embedding models that span the speed/quality spectrum.
The dashed retriever-only line in each chart below is the headline number to beat. Anything below it means the reranker actively hurts the pipeline on average:
Mean NDCG@10 over the 6 embedder pairings, sorted by MTEB. The released ettin-reranker-v1 family is in bold, and the teacher mixedbread-ai/mxbai-rerank-large-v2 is underlined.
| Reranker | Params | MTEB(eng, v2) Retrieval NDCG@10 |
|---|---|---|
Qwen/Qwen3-Reranker-4B† | 4.02B | 0.6367 |
mixedbread-ai/mxbai-rerank-large-v2 | 1.54B | 0.6115 |
cross-encoder/ettin-reranker-1b-v1 | 1.00B | 0.6114 |
cross-encoder/ettin-reranker-400m-v1 | 401M | 0.6091 |
cross-encoder/ettin-reranker-150m-v1 | 151M | 0.5994 |
Qwen/Qwen3-Reranker-0.6B | 596M | 0.5940 |
mixedbread-ai/mxbai-rerank-base-v2 | 494M | 0.5920 |
cross-encoder/ettin-reranker-68m-v1 | 68.6M | 0.5915 |
jinaai/jina-reranker-m0 | 2.44B | 0.5856 |
Alibaba-NLP/gte-reranker-modernbert-base | 150M | 0.5843 |
cross-encoder/ettin-reranker-32m-v1 | 32.8M | 0.5779 |
| [`ibm-granite/granite-embedding-reranker-english-r2 |
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.
Benchmarks
As published on the model card: the maker's own numbers, not measured by AxForge.
| Task | Dataset | Metric | Score |
|---|---|---|---|
| Cross Encoder Reranking | NanoMSMARCO R100 | Map | 0.617 |
| Cross Encoder Reranking | NanoMSMARCO R100 | Mrr@10 | 0.613 |
| Cross Encoder Reranking | NanoMSMARCO R100 | Ndcg@10 | 0.683 |
| Cross Encoder Reranking | NanoNFCorpus R100 | Map | 0.372 |
| Cross Encoder Reranking | NanoNFCorpus R100 | Mrr@10 | 0.562 |
| Cross Encoder Reranking | NanoNFCorpus R100 | Ndcg@10 | 0.407 |
| Cross Encoder Reranking | NanoNQ R100 | Map | 0.722 |
| Cross Encoder Reranking | NanoNQ R100 | Mrr@10 | 0.753 |
| Cross Encoder Reranking | NanoNQ R100 | Ndcg@10 | 0.775 |
| Cross Encoder Reranking | NanoFiQA2018 R100 | Map | 0.538 |
| Cross Encoder Reranking | NanoFiQA2018 R100 | Mrr@10 | 0.652 |
| Cross Encoder Reranking | NanoFiQA2018 R100 | Ndcg@10 | 0.591 |
| Cross Encoder Reranking | NanoTouche2020 R100 | Map | 0.477 |
| Cross Encoder Reranking | NanoTouche2020 R100 | Mrr@10 | 0.826 |
| Cross Encoder Reranking | NanoTouche2020 R100 | Ndcg@10 | 0.563 |
| Cross Encoder Reranking | NanoSciFact R100 | Map | 0.702 |
| Cross Encoder Reranking | NanoSciFact R100 | Mrr@10 | 0.700 |
| Cross Encoder Reranking | NanoSciFact R100 | Ndcg@10 | 0.746 |
| Cross Encoder Reranking | NanoHotpotQA R100 | Map | 0.932 |
| Cross Encoder Reranking | NanoHotpotQA R100 | Mrr@10 | 0.990 |
| Cross Encoder Reranking | NanoHotpotQA R100 | Ndcg@10 | 0.958 |
| Cross Encoder Reranking | NanoArguAna R100 | Map | 0.574 |
| Cross Encoder Reranking | NanoArguAna R100 | Mrr@10 | 0.575 |
| Cross Encoder Reranking | NanoArguAna R100 | Ndcg@10 | 0.688 |