YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

model_card = f"""--- license: apache-2.0 base_model: tomaarsen/Qwen3-Reranker-0.6B-seq-cls tags: - sentence-transformers - cross-encoder - reranker - text-ranking - recruitment language: - en - uk - multilingual pipeline_tag: text-ranking

CV Reranker — Qwen3-Reranker-0.6B fine-tuned

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.

Results

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%

Training

  • Loss: CachedMultipleNegativesRankingLoss (pairwise ranking)
  • Data: 1,209 (vacancy, positive CV, hard negative CV) triples
  • Hard negatives: mined from dense/BM25 retrieval tops, scored low by an LLM judge
  • Hyperparameters: lr 1e-5, effective batch 16, 3 epochs, max_length 512, bf16

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.

Usage

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)

Limitations

  • Tuned specifically for CV↔vacancy matching; not a general-purpose reranker
  • Golden set is small (10 vacancies) — metrics carry meaningful variance
  • Training data skews toward tech roles; niche and non-English categories are underrepresented """

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 завантажено")

Downloads last month
9
Safetensors
Model size
0.6B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support