What is reranking?
What is reranking? It is a second stage after retrieval. A fast ranker, such as BM25, first returns a short candidate list. A slower model then reorders those candidates, and does not walk the whole index. XERJ's rerank stage once shipped at 0.3822 nDCG@10, then scored 0.8299 after a fix.
Key number: XERJ's rerank stage once shipped scoring 0.3822 nDCG@10 while plain BM25 scored 0.7750. Fixed, it scored 0.8299. (as of 2026-10-18 · source: /blog/does-xerj-beat-jev)
TL;DR Reranking is a second stage after retrieval. A fast ranker returns a short candidate list. A slower model then reorders those candidates, and does not walk the whole index again.
Retrieve first, then reorder
1. First stage
A fast ranker, such as BM25, retrieves a short candidate list from the whole index.
2. Second stage
A slower reranker looks at those candidates again and reorders them. It does not walk the whole index.
3. A published miss, then a fix
XERJ's rerank stage once shipped scoring 0.3822 nDCG@10 while plain BM25 scored 0.7750. One request shape was wrong. Fixed, it scored 0.8299. The loss stayed in the post.
4. When to skip it
If the first stage already puts the right passage first, a second stage may not be worth the cost. The rc.80 gates recorded which features passed and which failed.
Act as a coding agent. Read https://xerj.org/llms.txt, install XERJ, start a local node, index one folder I point you to, and run one search so I can see a cited passage.
How it works
The first stage has to be cheap enough to search a large index. BM25 is a usual choice. It returns a short list, for example the top tens or hundreds of passages.
The second stage looks only at that list. It can use a slower model, because the list is small. The output is the same passages in a new order. Nothing new is retrieved.
How XERJ uses it
XERJ can rerank a first-stage list. The published post about that feature is honest about a miss. In the Does XERJ beat Jev? post, the rerank stage shipped scoring 0.3822 nDCG@10 while plain BM25 scored 0.7750. One request shape was wrong. Fixed, it scored 0.8299. The loss stayed in the post.
This page does not add a new run. For first-stage retrieval, see BM25 and hybrid search.
History and research
A widely cited early method is Nogueira and Cho, Passage Re-ranking with BERT (arXiv:1901.04085, 2019). That paper shows a pretrained language model can reorder a candidate list for question answering.
XERJ's published numbers above are from the product post, not from that paper.
Guides
See rerank search results with a calibrated judge, Cohere RAG with XERJ and the Cohere integration.
Related terms
BM25, hybrid search, and reciprocal rank fusion.
FAQ
What is reranking?
It is a second-stage step that reorders a short candidate list from a first-stage retriever, such as BM25, without walking the whole index again.
How is this different from hybrid search?
Hybrid search merges two first-stage lists. Reranking takes one candidate list and reorders it. You can use both, in that order.
What numbers has XERJ published?
Rerank once shipped at 0.3822 nDCG@10 while plain BM25 scored 0.7750. One request shape was wrong. Fixed, it scored 0.8299. The loss stayed in the post.
When should I skip reranking?
If the first stage already puts the right passage first, a second stage may not be worth the cost. The published rc.80 gates recorded which features passed and which failed.
Evidence
- XERJ's rerank stage once shipped scoring 0.3822 nDCG@10 while plain BM25 scored 0.7750. Fixed, it scored 0.8299. — /blog/does-xerj-beat-jev
Related
- What is hybrid search?
- BM25 vs vector search
- Jev measured, wire spoken
- How to run hybrid search in XERJ
- What is agentic memory? · same intent: Science
- What is context engineering? · same intent: Science
- What is Corpus Hub? · same intent: Science