JevRanker
Open Jev-style 0.6B decision model plugged into BlitzRank and Reranker-Guided Search, scoring k candidates per match in one pass.
Overview
JevRanker studies what changes when the comparison step inside search-based rerankers is a Jev-style decision model instead of a generative LLM. Rerankers differ in which documents they compare and in what order, but all need one primitive: order a small window of candidates for a query. A Jev-style model answers that with one forward pass over k candidate paths, zero decoded tokens and a calibrated distribution.
The repository trains one shared model, based on NanoJev's Qwen3-0.6B trained on T2Ranking, and plugs it into BlitzRank's tournament graph and Reranker-Guided Search (RGS) through a common decide() interface. No hosted API is called. On 100 T2Ranking dev queries with BM25 top-100 pools, the README reports nDCG@10 of 0.6309 with the trained model in the tournament versus 0.3845 for BM25 alone and 0.2162 for the same 0.6B model decoding a RankGPT listwise prompt, at about 34 ms per match instead of roughly 790 ms. Documentation is in English and Chinese.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which of these k candidate passages is most relevant to the query? | — |
How it works
- First stage retrieves a candidate pool (e.g. BM25 top-100)
- Reranker algorithm (BlitzRank or RGS) selects windows of k candidates
- Decision model scores the window in one forward pass
- Algorithm aggregates match outcomes into a final ranking
Strengths
- No decoded tokens and much lower latency per match than generative listwise prompting
- Self-hosted small model, no API cost
- Shared interface makes reranker algorithms comparable
Caveats
- Evaluated on one dataset (T2Ranking, Chinese passages)
- RGS gains over simple sliding window are small in reported tables
- Research code
At a glance
- Type
- Service
- Status
- research
- Language
- Python
- Runtime
- PyTorch research code
- Has code
- yes
Use cases and integrations
How curated lists describe it
Retrieval and RAG: an open-source port of Jev's typed-decision format ([NanoJev](https://github.com/TianyuCodings/NanoJev)'s Qwen3-0.6B, trained on T2Ranking, no hosted API call) that replaces the LLM comparator inside two published search rerankers, BlitzRank's tournament graph and Reranker-Guided Search, where each match is one `Choice` scored over k candidate paths in a single forward pass with zero decoded tokens, reaching 0.6309 nDCG@10 on T2Ranking dev against 0.2162 for the same 0.6B decoding a RankGPT listwise prompt, at 34 ms instead of 752 ms per match and 8.6-9.4x lower per-query latency inside RGS.
yibie/awesome-jev
Frequently asked questions
Does it call TypeSafe's Jev?
No. It uses an open 0.6B Jev-style model trained on T2Ranking, run locally.
How much better is it than generative reranking?
On the reported setup, nDCG@10 0.6309 versus 0.2162 for the same model size decoding a RankGPT prompt, and much faster per match.
Which rerankers does it support?
BlitzRank's tournament graph and Reranker-Guided Search.
Related projects
Training-free local decision layer fusing four readings from two frozen Qwen models, auto-releasing only when readings agree.
BenchmarkresearchPython- jev-rerank★ 17
Jev as a calibrated reranker: query plus up to 30 documents in one call, one relevance Noul per document, benchmarked on BEIR.
ProjectbetaPython Milvus-based multi-hop graph RAG library where two-stage Jev Noul scoring selects relations and reranks passages.
LibrarybetaPythonCompares Jev's zero-shot reranking with specialist rerankers on MS MARCO passage and document benchmarks and a TREC WSJ transfer test.
ProjectresearchPythonLocal-first knowledge search with BM25 shortlisting and Jev Noul reranking by default, seven selectable pipelines and cited answers.
AppbetaPythonProfile matching that encodes preference criteria as Clef or Jev decision vectors, retrieves with HNSW and checks rules both ways.
BenchmarkresearchPython