AI SummaryTiebreakers 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
Health Signals
My Fox Den
Community Rating
Sign in to rate this booster