YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
EXAMI Domain Reranker Adapters
Domain-specific LoRA adapters for Qwen/Qwen3-VL-Reranker-2B, covering the 24 EXAMI
domains. Built from the spec in RERANKER_TRAINING_PLAN.md (custom pointwise yes/no
trainer; LoRA r=32/Ξ±=64 attention-only, 1 epoch, lr 2e-4; hard negatives mined with
Qwen3-VL-Embedding-2B; synthetic queries via Claude Sonnet 4.6).
Design: 5 adapters + base for the Math/CS/IT cluster
21 of 24 domains are served by 5 adapters. Mathematics, Computer_Science, and Information_Technology are routed to the BASE reranker (no adapter) β see "Math cluster" below.
| Adapter | Domains | Hard-eval MRR (base β adapter) |
|---|---|---|
| physical-sci-eng | Physics, Chemistry, Engineering, Earth_and_Environmental_Sciences | 0.961 β 0.985 |
| life-health | Biology, Medicine, Agriculture_and_Veterinary | 0.954 β 0.998 |
| social-behavioral | Psychology, Economics, Social_Sciences, Education | 0.973 β 0.988 |
| business-law-prof | Business, Law, Communications_Journalism_and_Information, Services | 0.968 β 0.990 |
| humanities-arts | History, Philosophy, Literature, Religion_and_Theology, Art_and_Design, Music | 0.890 β 0.985 |
Biggest per-domain lifts (R@1, baseβadapter, 1+99 hard distractors): Religion 0.70β0.93, Music 0.72β0.97, Literature 0.76β0.98, Agriculture 0.85β0.99, Art 0.85β1.00.
Math cluster β base (evidence)
On 1+99 hard-distractor eval:
- Mathematics: base R@1 0.96 vs fine-tuned 0.91 β fine-tuning (grouped and dedicated) consistently degrades Math. Math passages are highly interrelated, so embedding-mined "hard negatives" are often actually valid answers; pointwise training then teaches the model to reject relevant passages. Base is the best Math reranker.
- Computer_Science: base R@1 0.99 β already at ceiling; an adapter adds nothing.
- Information_Technology: base R@1 0.94 β solid on base. (Only domain with mild adapter upside ~0.94β1.0; a dedicated IT adapter could be added if that gain is worth it.)
Usage
from rerank import DomainReranker # needs rr_common.py alongside
rr = DomainReranker("pipeline_config.json")
results = rr.rerank("Biology", "How do vaccines create immunity?", [doc1, doc2, ...])
# domains mapped to None (Math/CS/IT) automatically use the base reranker.
Scoring = sigmoid(logit_yes - logit_no) on the model's native judge prompt; results pass
the two-signal cutoff (floor 0.05 + largest-gap) from the deployment doc.
Files
<adapter>/β LoRA weights (adapter_model.safetensors, ~49 MB) + tokenizerpipeline_config.jsonβ base model, 24-domainβadapter map (Math/CS/IT β null = base), evalrerank.py,rr_common.pyβ inference + scoringeval_hard/*.jsonβ full hard-eval metrics per adapter