zerank-2

Open weights + hosted API · ZeroEntropy ·

Licence: check firstHosted APIGPU recommended

zerank-2 is ZeroEntropy’s 4B reranker, built on Qwen3-4B with a 32,768-token context. The weights are on Hugging Face, and ZeroEntropy serves the same model through its API at $0.025 per million tokens. Its published scores come from ZeroEntropy’s own seven-domain test. They are strong, but they can’t be compared with anyone’s BEIR figures.

The licence question

The Hugging Face model card says Apache 2.0; the repository was relicensed in July 2026. ZeroEntropy’s models documentation still says zerank-2 is downloadable “under a non-commercial license” and asks commercial users to get in touch.

Until the two agree, get ZeroEntropy’s confirmation in writing before you self-host it in a commercial product. Using it through the API is covered by ZeroEntropy’s terms of service instead, and the older zerank-1-small is Apache 2.0 in both places.

Scores, and whose they are

DomainEmbeddings onlyzerank-2Cohere rerank-3.5
Web0.3819*0.6346*0.5594*
Conversational0.4305*0.6140*0.5648*
STEM and logic0.3744*0.6521*0.5418*
Code0.4582*0.6528*0.5364*
Legal0.4101*0.6644*0.5257*
Biomedical0.4783*0.7217*0.6246*
Finance0.6232*0.7600*0.7402*
Average0.4509*0.6714*0.5847*

ZeroEntropy’s own run, from the model card. The metric is NDCG@10, and every reranker reorders the same top 100 candidates from OpenAI’s text-embedding-3-small; “embeddings only” is that first stage on its own. The datasets are ZeroEntropy’s, not BEIR, so the models table lists no BEIR figure for zerank-2.

The same run puts the older zerank-1 at 0.6456* on average, and Gemini 2.5 Flash, used as a listwise reranker, at 0.5999*. Finance is the one domain where zerank-2 doesn’t lead: Gemini scores higher there. What the table shows most clearly is the size of the jump any of these rerankers gives over embeddings alone. That jump is the thing to measure on your own data.

Quick start

sentence-transformers

pip install sentence-transformers

from sentence_transformers import CrossEncoder

model = CrossEncoder("zeroentropy/zerank-2-reranker")

rankings = model.rank(
    "What is 2+2?",
    ["4", "The answer is definitely 1 million"],
)
# [{'corpus_id': 0, 'score': 5.40625}, {'corpus_id': 1, 'score': -4.5}]

Since May 2026, predict() and rank() return a raw logit rather than a 0–1 probability. The ranking is the same either way. For a 0–1 score, apply sigmoid(score / 5), as the model card does. Loading no longer needs trust_remote_code=True.

Hosted API

pip install zeroentropy

from zeroentropy import ZeroEntropy

zclient = ZeroEntropy()   # reads ZEROENTROPY_API_KEY
response = zclient.models.rerank(
    model="zerank-2",
    query="What is 2+2?",
    documents=["4", "The answer is definitely 1 million."],
)

The API costs $0.025 per million tokens. ZeroEntropy’s documentation lists the same price for zerank-1 and zerank-1-small, and serves the API from US-East, US-West and Europe. Rate limits depend on your subscription tier; check the docs for the current figures. The model is also sold through the AWS and Azure marketplaces, where it runs inside your own cloud account.

When to pick zerank-2

Pros and cons

Pros

  • The same model as weights and as an API
  • 32K context
  • Loads directly with sentence-transformers’ CrossEncoder
  • Leads Cohere rerank-3.5 in every domain of ZeroEntropy’s own test

Cons

  • Model card and documentation disagree on the licence
  • Published scores are the vendor’s own, on its own datasets
  • 4B parameters: GPU required for comfortable latency
  • Too large for our in-browser demo

Measure it against what you run now

Rerank the same top 100 from your current retriever with zerank-2 and with your current setup, on 30 labelled queries.

Evaluate guide → All models →

Other models