SBERT · embeddings / semantic search / RAG / reranking · verified against sentence-transformers 5.x (2026)

sentence-transformers cheat sheet

Sentence Transformers (SBERT) computes dense, sparse and reranking embeddings for text (and, in v5, images/audio/video) — the backbone of semantic search, retrieval, RAG and clustering. Three model families: SentenceTransformer (bi-encoder, dense vectors), CrossEncoder (reranker, scores a pair), and SparseEncoder (learned sparse/lexical vectors, new in v5). Each has a matching Trainer. This sheet targets v5.x.

load & encode search / retrieval reranking (CrossEncoder) sparse (SparseEncoder) training gotcha most common

Verified 2026-08-24 against the official docs at sbert.net (Sentence Transformers 5.x) and the huggingface/sentence-transformers repo. Built on 🌐 Transformers; embedding models are pulled from the Hugging Face Hub.

Outline

Start with load & encode, then pick your task: dense search, reranking, or sparse retrieval — each with a training section.

Embed

  1. 1 · Install & load a model
  2. 2 · encode() & similarity()
  3. 3 · encode_query / encode_document

Search

  1. 4 · Semantic search & util
  2. 5 · Prompts & quantized embeddings

Rerank & sparse

  1. 6 · CrossEncoder — reranking
  2. 7 · SparseEncoder (v5)

Train

  1. 8 · SentenceTransformerTrainer
  2. 9 · Losses & data format

Reference

  1. 10 · Gotchas
  2. Worth memorizing

Embed

Load a bi-encoder and turn text into vectors.

1Install & load a modelv5.x
2encode() & similarity()text → vectors
3encode_query / encode_documentasymmetric search
5Prompts & quantized embeddingssmaller / faster

Rerank & Sparse

Two more model types: cross-encoders for precise reranking, sparse encoders for lexical retrieval.

6CrossEncoder — rerankingprecise, slower
7SparseEncodernew in v5

Train / Fine-tune

All three families share a Transformers-style Trainer. Fine-tuning on in-domain pairs is the biggest quality lever.

8SentenceTransformerTrainerthe loop
9Losses & data formatmatch them up

Gotchas

The traps that quietly wreck retrieval quality.

!Common gotchasread before shipping

Worth memorizing

3 model typesSentenceTransformer (dense), CrossEncoder (rerank), SparseEncoder (lexical, v5)
encode corpus onceencode_document to build the index, encode_query per request
retrieve then rerankbi-encoder fetches ~100, CrossEncoder reorders the top few
semantic_search = cos_sim + top-kbrute force is fine to ~1M; beyond that use FAISS/pgvector/Qdrant
use the model's promptsE5/BGE need query/passage prefixes; encode_query/document handle it
quantize to int8/binary4–32× smaller vectors for cheap storage & search
loss must match data shapeMultipleNegativesRankingLoss wants (anchor, positive) pairs
fine-tune on in-domain pairsthe single biggest quality win for your own corpus