Sentence Transformers

orchestra-research/ai-research-skills/15-rag/sentence-transformers

by orchestra-research773a52944ba4MIT13K starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 3 months ago

Framework for state-of-the-art sentence, text, and image embeddings. Provides 5000+ pre-trained models for semantic similarity, clustering, and retrieval. Supports multilingual, domain-specific, and multimodal models. Use for generating embeddings for RAG, semantic search, or similarity tasks. Best for production embedding generation.

Instructions onlyAI & Agents
AI-generated overview

Reference guide for using the Sentence Transformers Python library to generate text embeddings for search, clustering, and RAG.

What it does
This skill is an instructional reference for the Sentence Transformers Python framework, covering installation, model loading, and embedding generation. It shows how to compute cosine similarity, run semantic search, batch-encode text, and fine-tune models with training examples. It also lists popular general, multilingual, and domain-specific models, plus integration snippets for LangChain and LlamaIndex.
When to use it
Use it when you need to generate sentence or text embeddings locally for semantic search, clustering, classification, or retrieval-augmented generation. It is also useful when choosing among pre-trained embedding models or fine-tuning one for a specific domain.
Requirements
Requires Python with the sentence-transformers, transformers, and torch packages installed; a GPU is optional but speeds up encoding. Models are downloaded from Hugging Face, so network access is needed for first use. The skill ships no scripts, only instructions and a model reference file.

Sentence Transformers - State-of-the-Art Embeddings

Python framework for sentence and text embeddings using transformers.

When to use Sentence Transformers

Use when:

  • Need high-quality embeddings for RAG
  • Semantic similarity and search
  • Text clustering and classification
  • Multilingual embeddings (100+ languages)
  • Running embeddings locally (no API)
  • Cost-effective alternative to OpenAI embeddings

Metrics:

  • 15,700+ GitHub stars
  • 5000+ pre-trained models
  • 100+ languages supported
  • Based on PyTorch/Transformers

Use alternatives instead:

  • OpenAI Embeddings: Need API-based, highest quality
  • Instructor: Task-specific instructions
  • Cohere Embed: Managed service

Quick start

Installation

bash
pip install sentence-transformers

Basic usage

python
from sentence_transformers import SentenceTransformer
# Load modelmodel = SentenceTransformer('all-MiniLM-L6-v2')
# Generate embeddingssentences = [    "This is an example sentence",    "Each sentence is converted to a vector"]
embeddings = model.encode(sentences)print(embeddings.shape)  # (2, 384)
# Cosine similarityfrom sentence_transformers.util import cos_simsimilarity = cos_sim(embeddings[0], embeddings[1])print(f"Similarity: {similarity.item():.4f}")

Popular models

General purpose

python
# Fast, good quality (384 dim)model = SentenceTransformer('all-MiniLM-L6-v2')
# Better quality (768 dim)model = SentenceTransformer('all-mpnet-base-v2')
# Best quality (1024 dim, slower)model = SentenceTransformer('all-roberta-large-v1')

Multilingual

python
# 50+ languagesmodel = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
# 100+ languagesmodel = SentenceTransformer('paraphrase-multilingual-mpnet-base-v2')

Domain-specific

python
# Legal domainmodel = SentenceTransformer('nlpaueb/legal-bert-base-uncased')
# Scientific papersmodel = SentenceTransformer('allenai/specter')
# Codemodel = SentenceTransformer('microsoft/codebert-base')

Semantic search

python
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('all-MiniLM-L6-v2')
# Corpuscorpus = [    "Python is a programming language",    "Machine learning uses algorithms",    "Neural networks are powerful"]
# Encode corpuscorpus_embeddings = model.encode(corpus, convert_to_tensor=True)
# Queryquery = "What is Python?"query_embedding = model.encode(query, convert_to_tensor=True)
# Find most similarhits = util.semantic_search(query_embedding, corpus_embeddings, top_k=3)print(hits)

Similarity computation

python
# Cosine similaritysimilarity = util.cos_sim(embedding1, embedding2)
# Dot productsimilarity = util.dot_score(embedding1, embedding2)
# Pairwise cosine similaritysimilarities = util.cos_sim(embeddings, embeddings)

Batch encoding

python
# Efficient batch processingsentences = ["sentence 1", "sentence 2", ...] * 1000
embeddings = model.encode(    sentences,    batch_size=32,    show_progress_bar=True,    convert_to_tensor=False  # or True for PyTorch tensors)

Fine-tuning

python
from sentence_transformers import InputExample, lossesfrom torch.utils.data import DataLoader
# Training datatrain_examples = [    InputExample(texts=['sentence 1', 'sentence 2'], label=0.8),    InputExample(texts=['sentence 3', 'sentence 4'], label=0.3),]
train_dataloader = DataLoader(train_examples, batch_size=16)
# Loss functiontrain_loss = losses.CosineSimilarityLoss(model)
# Trainmodel.fit(    train_objectives=[(train_dataloader, train_loss)],    epochs=10,    warmup_steps=100)
# Savemodel.save('my-finetuned-model')

LangChain integration

python
from langchain_community.embeddings import HuggingFaceEmbeddings
embeddings = HuggingFaceEmbeddings(    model_name="sentence-transformers/all-mpnet-base-v2")
# Use with vector storesfrom langchain_chroma import Chroma
vectorstore = Chroma.from_documents(    documents=docs,    embedding=embeddings)

LlamaIndex integration

python
from llama_index.embeddings.huggingface import HuggingFaceEmbedding
embed_model = HuggingFaceEmbedding(    model_name="sentence-transformers/all-mpnet-base-v2")
from llama_index.core import SettingsSettings.embed_model = embed_model
# Use in indexindex = VectorStoreIndex.from_documents(documents)

Model selection guide

ModelDimensionsSpeedQualityUse Case
all-MiniLM-L6-v2384FastGoodGeneral, prototyping
all-mpnet-base-v2768MediumBetterProduction RAG
all-roberta-large-v11024SlowBestHigh accuracy needed
paraphrase-multilingual768MediumGoodMultilingual

Best practices

  1. Start with all-MiniLM-L6-v2 - Good baseline
  2. Normalize embeddings - Better for cosine similarity
  3. Use GPU if available - 10× faster encoding
  4. Batch encoding - More efficient
  5. Cache embeddings - Expensive to recompute
  6. Fine-tune for domain - Improves quality
  7. Test different models - Quality varies by task
  8. Monitor memory - Large models need more RAM

Performance

ModelSpeed (sentences/sec)MemoryDimension
MiniLM~2000120MB384
MPNet~600420MB768
RoBERTa~3001.3GB1024

Resources

Source and attribution

Source:orchestra-research/ai-research-skillsin15-rag/sentence-transformersat commit773a529

License: MIT

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal