mist models

mist-reranker-22.7M

A compact, fast English cross-encoder reranker. It scores a (query, passage) pair directly and reorders the top-k candidates from a first-stage retriever — the second stage of a search / RAG pipeline. At ~22.7M parameters it runs comfortably on a single modest GPU or CPU, and recovers most of the ranking quality of rerankers an order of magnitude larger.

📄 Model details

Property mist-reranker-22.7M
Type Cross-encoder reranker (single relevance score)
Total parameters ~22.7M
Backbone cross-encoder/ms-marco-MiniLM-L6-v2 (MiniLM-L6-H384)
Layers 6
Hidden size 384
Vocabulary size 30,522
Output 2-class logits → relevance = softmax(logits)[:, 1]
Max sequence length 512
Training precision BF16
Language English
License Apache-2.0

Training: fine-tuned on olaverse/reranker-general-en-llm-judged (pairs-graded, 844k pairs) with a hybrid objective — binary cross-entropy on the LLM-judge relevance label, plus an auxiliary term distilling the continuous teacher score from BAAI/bge-reranker-v2-m3.

🏃 How to run

Install sentence-transformers:

pip install -U sentence-transformers

This is a 2-class head, so relevance is the positive-class probability, softmax(logits)[:, 1]:

import torch
from sentence_transformers import CrossEncoder

model = CrossEncoder("olaverse/mist-reranker-22.7M")

query = "who wrote hamlet"
passages = [
    "Hamlet is a tragedy written by William Shakespeare around 1600.",
    "The capital of France is Paris.",
    "Macbeth is one of Shakespeare's shortest tragedies.",
]

logits = model.predict([[query, p] for p in passages], convert_to_tensor=True)
scores = torch.softmax(logits, dim=-1)[:, 1]          # relevance = P(relevant)

for p, s in sorted(zip(passages, scores.tolist()), key=lambda x: -x[1]):
    print(f"{s:.4f}  {p}")

To rerank a retrieved candidate list, score every candidate against the query and sort by the relevance score descending. Keep query first and passage second in each pair — the model is trained on that order.

📈 Performance

NanoBEIR (NanoNQ, NanoHotpotQA, NanoFEVER), NDCG@10. Every reranker reorders the same candidate sets; the candidate order before reranking (first-stage floor) scores 0.7126.

Model Params NDCG@10
BAAI/bge-reranker-v2-m3 ~568M 0.9058
cross-encoder/ms-marco-MiniLM-L12-v2 ~33M 0.8670
mist-reranker-22.7M ~22.7M 0.8543
cross-encoder/ms-marco-MiniLM-L6-v2 ~22.7M 0.8495
BAAI/bge-reranker-base ~278M 0.8238
mixedbread-ai/mxbai-rerank-xsmall-v1 ~70M 0.8184
first-stage floor (no reranker) 0.7126

At 22.7M it lifts NDCG@10 by +0.14 over the first-stage candidate order, beats bge-reranker-base (12× larger) and mxbai-rerank-xsmall-v1, and closes most of the gap to its bge-reranker-v2-m3 teacher.

License

Released under Apache-2.0.

Citation

@misc{mist-reranker-22.7M,
  title  = {mist-reranker-22.7M},
  author = {Olaverse},
  year   = {2026},
  url    = {https://huggingface.co/olaverse/mist-reranker-22.7M}
}
Downloads last month
33
Safetensors
Model size
22.7M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for olaverse/mist-reranker-22.7M

Dataset used to train olaverse/mist-reranker-22.7M

Collection including olaverse/mist-reranker-22.7M

Evaluation results

  • NDCG@10 on NanoBEIR (NanoNQ, NanoHotpotQA, NanoFEVER)
    self-reported
    0.854