Cheon Reranker 0.6B v1
A reranker for legal and administrative document search, built on Qwen3-0.6B.
- Base: Qwen3-0.6B (Apache-2.0)
- Params: ~609M total
- Weights:
model.safetensors, fp32
Usage
Loads straight into AutoModel with trust_remote_code=True. The included
modeling_cheon_reranker.py is a from-scratch reimplementation of the forward
pass (no training code) — checked against the original checkpoint on random
inputs, max difference 2.4e-07, i.e. floating-point noise.
import torch
from transformers import AutoModel, AutoTokenizer
repo = "cheonai/cheon-reranker-0.6b-v1"
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModel.from_pretrained(repo, trust_remote_code=True, torch_dtype=torch.float32)
model.eval()
# Query + candidates go into one sequence. Track each candidate's token span
# as you build it instead of hardcoding positions. Candidates don't need to
# share a language - the tokenizer and span logic don't care.
query = "query: 이 사건의 처리 기한은 언제까지인가요?\n"
candidates = [
"candidate (en): The appeal must be filed within 30 days of the decision.",
"candidate (ko): 이의신청은 처분을 안 날부터 30일 이내에 제기해야 합니다.",
"candidate (zh): 上诉必须在裁定后30天内提出。",
"candidate (ja): 不服申立ては、決定を知った日から30日以内に行う必要があります。",
]
ids = tok(query, add_special_tokens=False)["input_ids"]
doc_spans = []
for text in candidates:
piece = tok(text, add_special_tokens=False)["input_ids"]
start = len(ids)
ids += piece
doc_spans.append((start, len(ids)))
input_ids = torch.tensor([ids])
attention_mask = torch.ones_like(input_ids)
corpus_ids = [0] * len(candidates) # optional per-candidate corpus/collection tag
with torch.no_grad():
scores = model(
input_ids=input_ids,
attention_mask=attention_mask,
doc_spans=doc_spans,
corpus_ids=corpus_ids,
)
print(scores) # higher = more relevant
How you actually build the prompt (query/candidate layout, candidate selection, chunking long documents) is left to you — that's pipeline-specific and not part of this repo. The cheon-reranker cookbook has one way to do it: a small Python package and runnable recipes.
Benchmarks
nDCG@10 on AutoRAGRetrieval from MTEB(kor): 114 questions over finance, public-sector, healthcare, legal and commerce documents. Every model was run from its public checkpoint under the same evaluation harness, and a score is reported only if it reproduces the model's official number within ±0.003 where one exists.
| Model | Parameters | nDCG@10 |
|---|---|---|
| jina-reranker-v3.5 | 0.6B | 0.98381 |
| jina-reranker-v3 | 0.6B | 0.97734 |
| Qwen3-Reranker-4B | 4B | 0.97065 |
| Cheon Reranker 0.6B v1 | 0.609B | 0.96648 |
| bge-reranker-v2-m3 | 0.568B | 0.96627 |
| Qwen3-Reranker-8B | 8B | 0.95462 |
| mxbai-rerank-large-v2 | 1.5B | 0.95311 |
| zerank-2 | 4.022B | 0.94361 |
At 0.609B parameters it ranks above Qwen3-Reranker-8B, zerank-2 and mxbai-rerank-large-v2, models 2.5 to 13 times its size.
Limitations
- Candidate order can change the scores; pass candidates in your first stage's order.
- Scores rank candidates within one call; they are not probabilities.
- Weights are fp32 — expect more memory and latency than an fp16/bf16 model this size.
- Training data, optimization, and prompt-construction details aren't included here — only the weights and the forward pass.
License
CC-BY-NC-4.0 — research and evaluation only. Contact us for commercial use. The base model (Qwen3-0.6B) is Apache-2.0, but this fine-tune (learned weights) is ours and ships under the license above.