Skip to content
Skill

train-sentence-transformers

by huggingface

AI Summary

Tiebreakers when the request is ambiguous: "embedding model" / "vector search" / "similarity" → [SentenceTransformer]. "rerank" / "ranker" / "two-stage" → [CrossEncoder]. "SPLADE" / "sparse" / "inverted index" → [SparseEncoder]. If still unclear, ask. Override only if the user specifies otherwise: T

Install

Copy this and paste it into Claude Code, Cursor, or any AI assistant:

I want to install the "train-sentence-transformers" skill in my project.

Please run this command in my terminal:
# Install skill into your project (28 files)
mkdir -p .claude/skills/train-sentence-transformers && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/SKILL.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/SKILL.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/base_model_selection.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/base_model_selection.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/dataset_formats.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/dataset_formats.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/evaluators_cross_encoder.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/evaluators_cross_encoder.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/hardware_guide.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/hardware_guide.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/hf_jobs_execution.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/hf_jobs_execution.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/losses_cross_encoder.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/losses_cross_encoder.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/losses_sentence_transformer.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/losses_sentence_transformer.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/losses_sparse_encoder.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/losses_sparse_encoder.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/model_architectures.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/model_architectures.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/prompts_and_instructions.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/prompts_and_instructions.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/training_args.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/training_args.md" && mkdir -p .claude/skills/train-sentence-transformers/references && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/references/troubleshooting.md "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/references/troubleshooting.md" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/mine_hard_negatives.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/mine_hard_negatives.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py" && mkdir -p .claude/skills/train-sentence-transformers/scripts && curl --retry 3 --retry-delay 2 --retry-all-errors -o .claude/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py "https://raw.githubusercontent.com/huggingface/skills/main/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py"

Then restart Claude Code (or reload the window in Cursor) so the skill is picked up.

Description

Train or fine-tune sentence-transformers models across `SentenceTransformer` (bi-encoder; dense or static embedding model; for retrieval, similarity, clustering, classification, paraphrase mining, dedup, multimodal), `CrossEncoder` (reranker; pair scoring for two-stage retrieval / pair classification), and `SparseEncoder` (SPLADE, sparse embedding model; for learned-sparse retrieval). Covers loss selection, hard-negative mining, evaluators, distillation, LoRA, Matryoshka, and Hugging Face Hub publishing. Use for any sentence-transformers training task.

Prerequisites

`bash pip install "sentence-transformers[train]>=5.0" # add [train,image] / [audio] / [video] for [SentenceTransformer] multimodal pip install trackio # optional tracker; or wandb / tensorboard / mlflow hf auth login # or set HF_TOKEN with write scope (for Hub push) ` GPU strongly recommended. CPU works only for demos and [SentenceTransformer] StaticEmbedding.

Train a sentence-transformers Model

This SKILL.md is a router, not a manual. It tells you which references and example scripts to load for your task. The actual content — recommended losses, evaluators, training-script structure, model selection, training-arg knobs, troubleshooting — lives in references/ and scripts/. Do not synthesize a training script from this file alone. Open the per-type production template (scripts/train_<type>_example.py) and copy it as your starting point. The templates contain load-bearing scaffolding (autocast helper, model-card class, logger silencing list, force=True, seed, TF32, version-compatible imports, named-evaluator metric handling) that prior agent runs have repeatedly missed when rolling their own from a synthesized snippet.

1. Identify the model type

| Tag | Class | What it does | When to pick | |---|---|---|---| | [SentenceTransformer] | SentenceTransformer (bi-encoder) | Maps each input to a fixed-dim dense vector | Retrieval, similarity, clustering, classification, paraphrase mining, dedup | | [CrossEncoder] | CrossEncoder (reranker) | Scores (query, passage) pairs jointly | Two-stage retrieval (rerank top-100 from bi-encoder), pair classification | | [SparseEncoder] | SparseEncoder (SPLADE) | Sparse vectors over the vocabulary | Learned-sparse retrieval, inverted-index backends (Elasticsearch / OpenSearch / Lucene) | Tiebreakers when the request is ambiguous: "embedding model" / "vector search" / "similarity" → [SentenceTransformer]. "rerank" / "ranker" / "two-stage" → [CrossEncoder]. "SPLADE" / "sparse" / "inverted index" → [SparseEncoder]. If still unclear, ask.

2. Required reading

Read these in full before writing any code. Do not triage by perceived relevance.

Discussion

0/2000
Loading comments...

Health Signals

MaintenanceCommitted Yesterday
Active
Adoption1K+ stars on GitHub
10.7k ★ · Popular
DocsREADME + description
Well-documented

GitHub Signals

Stars10.7k
Forks703
Issues28
UpdatedYesterday
View on GitHub
Apache-2.0 License

My Fox Den

Community Rating

Sign in to rate this booster

Works With

Claude Code