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 从公开仓库中收录这些内容。

举报或申请下架