Sentence Transformers

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

作者 orchestra-research773a52944ba4MIT13K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫3 個月前更新

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.

僅含說明AI & Agents
AI 產生的概覽

使用 Sentence Transformers Python 函式庫產生文字嵌入的參考指南,適用於搜尋、分群與 RAG。

功能
此技能是 Sentence Transformers Python 框架的說明性參考,涵蓋安裝、模型載入與嵌入產生。它示範如何計算餘弦相似度、執行語意搜尋、批次編碼文字,以及使用訓練樣本微調模型。它也列出常用的通用、多語言與領域專用模型,並提供 LangChain 與 LlamaIndex 的整合範例。
適用情境
當你需要在本機產生句子或文字嵌入,用於語意搜尋、分群、分類或檢索增強生成時使用。它也可用於在預訓練嵌入模型之間做選擇,或針對特定領域微調模型。
執行需求
需要安裝 Python 以及 sentence-transformers、transformers 和 torch 套件;GPU 為選用,但可加快編碼速度。模型需從 Hugging Face 下載,因此首次使用需要網路存取。此技能不含指令碼,只有說明文件與一個模型參考檔案。

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

來源與署名

來源:orchestra-research/ai-research-skills位於15-rag/sentence-transformers提交773a529

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架