Downloads · 30 days
9
15% of all-time downloads
Driulik/cv_reranker_qwen
cv_reranker_qwen is a machine learning model from Driulik. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
modelcard = f"""--- license: apache-2.0 basemodel: tomaarsen/Qwen3-Reranker-0.6B-seq-cls tags: - sentence-transformers - cross-encoder - reranker - text-ranking - recruitment language: - en - uk - multilingual pipelin…
Downloads · 30 days
9
15% of all-time downloads
All-time downloads
62
Public
Parameters
596M
2.4 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors2.4 GB · 100%
From the Hugging Face model README
model_card = f"""--- license: apache-2.0 base_model: tomaarsen/Qwen3-Reranker-0.6B-seq-cls tags:
Cross-encoder reranker for matching CVs to job vacancies. Fine-tuned from
tomaarsen/Qwen3-Reranker-0.6B-seq-cls on recruitment domain data.
Used as the second stage of a retrieve-then-rerank pipeline: dense retrieval narrows 200k+ CVs to top-30, this model reorders them into a final top-10.
Evaluated on a held-out human-labeled golden set (10 vacancies, 0-3 graded relevance). The model never saw these vacancies during training.
| Metric | Baseline | Fine-tuned | Δ |
|---|---|---|---|
| NDCG@10 | 0.3244 | 0.5649 | +74% |
| MAP@10 | 0.0808 | 0.2056 | +154% |
| MRR@10 | 0.3560 | 0.6333 | +78% |
| Recall@10 | 0.1644 | 0.2349 | +43% |
| Precision@10 | 0.1500 | 0.2800 | +87% |
A distillation stage was also tested (BCE regression against Qwen3-Reranker soft scores) but degraded performance across all metrics — the fine-tuned student had already surpassed the teacher, so distillation pulled it back toward weaker behavior. This checkpoint is the pairwise-only model.
from sentence_transformers import CrossEncoder
model = CrossEncoder("{REPO_ID}")
vacancy = "Senior Python Developer. Requirements: 5+ years Python, FastAPI, PostgreSQL, Docker."
cvs = [
"Role: Senior Backend Engineer\\nSkills: Python, FastAPI, PostgreSQL, Docker, AWS...",
"Role: Marketing Manager\\nSkills: SEO, content strategy...",
]
scores = model.predict([[vacancy, cv] for cv in cvs])
ranked = sorted(zip(cvs, scores), key=lambda x: x[1], reverse=True)
with open("/tmp/README.md", "w") as f: f.write(model_card)
api.upload_file( path_or_fileobj="/tmp/README.md", path_in_repo="README.md", repo_id=REPO_ID, ) print("✅ Model card завантажено")