Sentence Transformers

5.3.0 · active · verified Tue Mar 17

Framework for computing dense sentence/text/image embeddings using transformer models. Primary use cases: semantic search, semantic similarity, clustering, and reranking. Wraps transformers and provides SentenceTransformer (embedding), CrossEncoder (reranker), and SparseEncoder (sparse embedding) classes. 15,000+ pretrained models on HF Hub. Now officially maintained by Hugging Face (Tom Aarsen) after transfer from UKP Lab/TU Darmstadt. Package name: sentence-transformers (hyphen). Import name: sentence_transformers (underscore).

Warnings

Install

Imports

Quickstart

encode() returns float32 numpy arrays by default. Pass convert_to_tensor=True for PyTorch tensors. Models are cached in HF_HOME after first download. all-MiniLM-L6-v2 is 384-dim, fast, and good for general use.

from sentence_transformers import SentenceTransformer, util
import numpy as np

# Load model (downloads on first use, ~90MB for MiniLM)
model = SentenceTransformer("all-MiniLM-L6-v2")

# Encode sentences → numpy float32 arrays by default
sentences = [
    "The cat sat on the mat.",
    "A feline rested on a rug.",
    "The stock market crashed today."
]
embeddings = model.encode(sentences)  # shape: (3, 384)
print(embeddings.shape)

# Cosine similarity
cosine_scores = util.cos_sim(embeddings[0], embeddings[1:])
print(cosine_scores)  # similar pair scores higher

# Return torch tensors instead of numpy
embeddings_tensor = model.encode(sentences, convert_to_tensor=True)

# Semantic search
query_embedding = model.encode("Where did the cat sleep?", convert_to_tensor=True)
hits = util.semantic_search(query_embedding, embeddings_tensor, top_k=2)
print(hits)

view raw JSON →