--- language: - el - en license: other license_name: nvidia-open-model-license base_model: nvidia/llama-nemotron-rerank-1b-v2 pipeline_tag: text-ranking library_name: transformers tags: - greek - english - reranker - cross-encoder - rag - nemotron model-index: - name: Sophea-Nemo-Reranker results: - task: type: text-ranking name: Greek+English reranking (5 domains, rerank top-50) dataset: type: retrieval name: Internal Greek+English retrieval benchmark metrics: - type: nDCG@10 name: nDCG@10 (mean of 5 domains) value: 0.8172 - type: recall@10 name: Recall@10 (mean of 5 domains) value: 0.9267 ---
KIEFERSA
Sophea-Nemo-Reranker
Greek + English cross-encoder reranker — fine-tuned NVIDIA Llama-Nemotron-Rerank-1B-v2
**Sophea-Nemo-Reranker** is a Greek + English **cross-encoder reranker**, fine-tuned from **[NVIDIA llama-nemotron-rerank-1b-v2](https://huggingface.co/nvidia/llama-nemotron-rerank-1b-v2)** for Greek and English reranking. It is the second (precision) stage of a two-stage Greek RAG stack; the matching first stage is **[Sophea-Nemo-Embedding](https://huggingface.co/KIEFERSA/Sophea-Nemo-Embedding)**. - **Creator:** Kiefer SA - **Base model:** `nvidia/llama-nemotron-rerank-1b-v2` (`LlamaBidirectionalForSequenceClassification`, **bidirectional**, single relevance logit; `trust_remote_code`) - **Languages:** Greek + English - **Input template:** a single sequence — `question:{q} \n \n passage:{p}` - **Training:** BCE on labeled (query, doc) pairs, 1 epoch, max-len 4096, bf16 > **Greek is out-of-distribution for the base.** The base reranker lists 26 languages and **Greek is > not one of them** — this fine-tune adapts its trained relevance head to Greek. ## Why it matters — base vs fine-tuned Reranking the fixed top-50 candidates over 5 domains (nDCG@10), the fine-tune improves on the base Nemotron reranker **on every domain**: ![Greek+English reranking — base vs fine-tuned](base_vs_ft.png)
metric Val Energy Legal Finance Medical Mean
nDCG@10 — base0.7930.7410.9660.7020.6510.770
nDCG@10 — fine-tuned0.8740.7800.9690.7540.7090.817
Δ nDCG@10+0.081+0.039+0.004+0.052+0.058+0.047
Recall@10 — base0.9530.8470.9930.8530.7730.884
Recall@10 — fine-tuned0.9930.8730.9870.9070.8730.927
**Read.** Mean **nDCG@10 0.770 → 0.817 (+0.047)**, better on all five domains, with the largest gains on the hardest ones (medical +0.06, finance +0.05, val +0.08). In the two-stage stack it is also the strongest reranker we measured — edging a fine-tuned Qwen3-0.6B cross-encoder and beating the base by a clear margin. ## Size comparison — vs base Qwen3-Reranker (off-the-shelf) Reranking the same fixed top-50 candidates, same protocol (150 queries/domain), nDCG@10 — your **fine-tuned 1B** reranker **edges the base Qwen3-Reranker-8B** and clearly beats 4B / 0.6B, at a fraction of the size:
model Val Energy Legal Finance Medical Mean
Sophea-Nemo-Reranker (ours · 1B · fine-tuned)0.8740.7800.9690.7540.7090.817
Qwen3-Reranker-8B (base, off-the-shelf)0.8580.7960.9750.7630.6720.813
Qwen3-Reranker-4B (base, off-the-shelf)0.8650.7820.9660.7350.6470.799
Qwen3-Reranker-0.6B (base, off-the-shelf)0.8120.7460.9600.6920.6340.769
**Read.** Mean nDCG@10 **0.817** (ours, 1B) vs **0.813** (Qwen3-Reranker-8B), **0.799** (4B), **0.769** (0.6B) — and ours is strongest on the hardest domain (medical 0.709 vs 8B's 0.672). A small, Greek-tuned model beats a general reranker 8× its size. ## End-to-end two-stage pipeline The two models are designed to run **together**: the embedder retrieves the top-50 candidates, the reranker re-orders them. Measured end-to-end on the same 5-domain Greek+English eval (150 queries/set, correct `query:`/`passage:` prompts): ![End-to-end two-stage stack — embedder alone vs + reranker](stack.png)
metric Val Energy Legal Finance Medical Mean
nDCG@10 — embedder alone0.8630.8020.9390.7020.6890.799
nDCG@10 — + reranker (stack)0.8670.7800.9760.7630.7030.818
Δ from reranking+0.004-0.022+0.037+0.061+0.013+0.019
Recall@10 — full stack0.9870.8730.9930.9200.8600.927
**Read.** The full stack reaches **mean nDCG@10 0.818** (Recall@10 0.927) — the strongest configuration measured. The reranker adds the most where the embedder is weakest (**finance +0.061, legal +0.037**), i.e. it sharpens precision on the hard cases. On **energy** it slightly regresses (-0.022) and on `val` the gain is marginal, because the embedder alone is already very strong there and leaves little headroom — for the easiest, already-high-recall domains you can skip the rerank stage if latency matters. ## Usage (transformers) ```python import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification name = "KIEFERSA/Sophea-Nemo-Reranker" tok = AutoTokenizer.from_pretrained(name, trust_remote_code=True) model = AutoModelForSequenceClassification.from_pretrained( name, num_labels=1, dtype=torch.bfloat16, trust_remote_code=True).eval() def score(query, passage): text = f"question:{query} \n \n passage:{passage}" enc = tok(text, return_tensors="pt", truncation=True, max_length=4096) with torch.no_grad(): return model(**enc).logits.squeeze(-1).item() # higher = more relevant # rank a candidate list by descending score ``` Feed the base's own `question:/passage:` template — it has a **trained** relevance head, so matching its template adapts that head rather than fighting it. Needs `trust_remote_code=True`. ## Serving with vLLM ```bash vllm serve KIEFERSA/Sophea-Nemo-Reranker --runner pooling --trust-remote-code ``` Exposes `/rerank`, `/v1/rerank` (Jina), `/v2/rerank` (Cohere) and `/score`: ```bash curl http://localhost:8000/rerank -H 'Content-Type: application/json' -d '{ "model": "KIEFERSA/Sophea-Nemo-Reranker", "query": "Ποια είναι η πρωτεύουσα της Ελλάδας;", "documents": ["Η Αθήνα είναι η πρωτεύουσα της Ελλάδας.", "Το Παρίσι είναι στη Γαλλία."] }' ``` ## License Fine-tune of `nvidia/llama-nemotron-rerank-1b-v2` — governed by the **NVIDIA Open Model License** and the **Llama 3.2 Community License**; commercial use permitted under those terms (note: **not** Apache-2.0). Review the base model's license before use.