sentence-transformers

GitHub
18.5k 2.8k 简单 1 次阅读 今天Apache-2.0语言模型开发框架
AI 解读 由 AI 自动生成,仅供参考

sentence-transformers 是一个专为处理文本语义而设计的开源框架,能够轻松生成高质量的文本向量(Embeddings)。它核心解决了计算机难以直接理解自然语言含义的难题,通过将句子、段落甚至整篇文档转化为数值向量,让机器可以高效地计算文本间的相似度、进行语义搜索或识别复述内容。

这款工具非常适合开发者、数据科学家及 AI 研究人员使用。无论是需要构建智能问答系统、推荐引擎,还是进行大规模文本数据挖掘,sentence-transformers 都能提供强大的支持。其独特亮点在于极高的易用性与丰富的生态:用户仅需几行代码即可调用 Hugging Face 上超过 15,000 个预训练模型,其中包含众多在权威评测榜(MTEB)上表现顶尖的模型。此外,它不仅支持稠密向量检索,还集成了重排序(Reranker)和稀疏编码功能,并允许用户基于自有数据轻松微调或从头训练定制模型,灵活适配各种特定业务场景。配合对 PyTorch 的深度优化,它能帮助团队快速将先进的自然语言处理能力落地到实际应用中。

使用场景

某电商平台的客服团队每天需处理数千条用户咨询,急需从历史工单库中快速匹配相似问题以辅助人工回复。

没有 sentence-transformers 时

  • 只能依赖传统的关键词匹配(如 TF-IDF),无法识别“发货慢”与“物流延迟”这类语义相同但用词不同的问题,导致大量相关工单被遗漏。
  • 面对海量历史数据,计算相似度需要逐条比对,响应时间长达数秒甚至更久,无法满足实时辅助需求。
  • 缺乏现成的高质量预训练模型,团队需从零收集数据并训练深度学习模型,开发周期长且对算法能力要求极高。
  • 系统难以适应多变的口语化表达,用户稍微改变句式或加入语气词,匹配准确率便大幅下降。

使用 sentence-transformers 后

  • 利用其内置的 SOTA 预训练模型,将文本转化为稠密向量,轻松捕捉深层语义,精准关联不同表述的相似问题。
  • 结合向量数据库实现毫秒级检索,即便在百万级工单库中也能瞬间返回最相关的历史案例,大幅提升客服效率。
  • 直接调用 Hugging Face 上超过 15,000 个微调好的模型(如 all-MiniLM-L6-v2),无需从头训练,几行代码即可部署高精度服务。
  • 对口语、同义词及句式变化具有极强的鲁棒性,显著提升了复杂场景下的意图识别准确率。

sentence-transformers 通过极简的 API 将前沿的文本嵌入技术转化为生产力,让语义搜索在工程落地中变得高效且低成本。

运行环境要求

GPU
  • 非必需
  • 若使用 GPU/CUDA,需安装与系统匹配的 CUDA 版本的 PyTorch(具体版本需参考 PyTorch 官方安装指南),未指定具体显卡型号或显存大小
内存

未说明

依赖
notes该工具支持在 CPU 上运行,也可通过安装对应 CUDA 版本的 PyTorch 来启用 GPU 加速。提供超过 15,000 个预训练模型可供下载。建议使用 pip 或 conda 进行安装。
python3.10+
torch>=1.11.0
transformers>=4.34.0
sentence-transformers hero image

快速开始

HF 模型 GitHub - 许可证 PyPI - Python 版本 PyPI - 包版本 文档 - GitHub.io

Sentence Transformers:嵌入、检索与重排序

该框架提供了一种简便的方法来计算嵌入,以便访问、使用和训练最先进的嵌入模型及重排序模型。它可以用于通过 Sentence Transformer 模型计算嵌入(快速入门),使用交叉编码器(即重排序器)模型计算相似度分数(快速入门),或使用稀疏编码器模型生成稀疏嵌入(快速入门)。这为广泛的应用打开了大门,包括语义搜索语义文本相似性以及释义挖掘

在 🤗 Hugging Face 上提供了超过15,000 个预训练的 Sentence Transformers 模型,可供立即使用,其中包括许多来自MTEB 大规模文本嵌入基准排行榜的最先进模型。此外,使用 Sentence Transformers 轻松训练或微调您自己的嵌入模型重排序模型稀疏编码器模型,使您能够为特定用例创建自定义模型。

有关完整文档,请参阅**www.SBERT.net**。

安装

我们建议使用Python 3.10+PyTorch 1.11.0+transformers v4.34.0+

使用 pip 安装

pip install -U sentence-transformers

使用 conda 安装

conda install -c conda-forge sentence-transformers

从源代码安装

或者,您也可以从仓库克隆最新版本,并直接从源代码进行安装:

pip install -e .

带有 CUDA 的 PyTorch

如果您希望使用 GPU / CUDA,则必须安装与之匹配的 CUDA 版本的 PyTorch。请按照PyTorch - 开始使用中的说明进一步了解如何安装 PyTorch。

入门

请参阅我们文档中的快速入门

嵌入模型

首先下载一个预训练的嵌入模型,即 Sentence Transformer 模型。

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")

然后将一些文本提供给模型。

sentences = [
    "今天的天气真好。",
    "外面阳光明媚!",
    "他开车去了体育场。",
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# => (3, 384)

就这样完成了。我们现在有了包含嵌入的 NumPy 数组,每个文本对应一个。我们可以使用这些嵌入来计算相似度。

similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[1.0000, 0.6660, 0.1046],
#         [0.6660, 1.0000, 0.1411],
#         [0.1046, 0.1411, 1.0000]])

重排序模型

首先下载一个预训练的重排序模型,即交叉编码器模型。

from sentence_transformers import CrossEncoder

# 1. 加载一个预训练的交叉编码器模型
model = CrossEncoder("cross-encoder/ms-marco-MiniLM-L6-v2")

然后将一些文本提供给模型。

# 用于预测相似度分数的文本
query = "柏林有多少人居住?"
passages = [
    "柏林在891.82平方公里的区域内有3,520,031名注册居民。",
    "柏林每年约有1.35亿游客到访,使其成为欧盟访问量最大的城市之一。",
    "2013年,约有60万名柏林人注册加入了2,300多个体育和健身俱乐部。",
]

# 2a. 预测文本对的得分
scores = model.predict([(query, passage) for passage in passages])
print(scores)
# => [8.607139 5.506266 6.352977]

现在就可以开始了。您还可以使用model.rank来避免手动进行重排序:

# 2b. 对查询的段落列表进行排名
ranks = model.rank(query, passages, return_documents=True)

print("查询:", query)
for rank in ranks:
    print(f"- #{rank['corpus_id']} ({rank['score']:.2f}):{rank['text']}")
"""
查询:柏林有多少人居住?
- #0 (8.61):柏林在891.82平方公里的区域内有3,520,031名注册居民。
- #2 (6.35):2013年,约有60万名柏林人注册加入了2,300多个体育和健身俱乐部。
- #1 (5.51):柏林每年约有1.35亿游客到访,使其成为欧盟访问量最大的城市之一。
"""

稀疏编码器模型

首先下载一个预训练的稀疏嵌入模型,即稀疏编码器模型。


from sentence_transformers import SparseEncoder

# 1. 加载一个预训练的稀疏编码器模型
model = SparseEncoder("naver/splade-cocondenser-ensembledistil")

# 要编码的句子
sentences = [
    "今天的天气真好。",
    "外面阳光明媚!",
    "他开车去了体育场。",
]

# 2. 通过调用 model.encode() 计算稀疏嵌入
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 30522] - 具有词汇表大小维度的稀疏表示

# 3. 计算嵌入之间的相似度
similarities = model.similarity(embeddings, embeddings)
print(similarities)
# tensor([[   35.629,     9.154,     0.098],

#         [    9.154,    27.478,     0.019],
#         [    0.098,     0.019,    29.553]])

# 4. 检查稀疏性统计信息
stats = SparseEncoder.sparsity(embeddings)
print(f"稀疏度: {stats['sparsity_ratio']:.2%}")
# 稀疏度: 99.84%

预训练模型

我们提供了涵盖100多种语言的大量预训练模型。其中一些是通用模型,而另一些则针对特定应用场景生成嵌入。

训练

该框架允许您微调自己的句子嵌入方法,从而获得特定任务的句子嵌入。为了满足您的具体需求,您可以选择多种不同的选项来构建理想的句子嵌入。

不同类型的训练中的一些亮点包括:

  • 支持多种Transformer网络,包括BERT、RoBERTa、XLM-R、DistilBERT、Electra、BART等。
  • 多语言和多任务学习。
  • 在训练过程中进行评估以找到最优模型。
  • 嵌入模型提供20多种损失函数,重排序器模型提供10多种损失函数,稀疏嵌入模型也提供10多种损失函数,使您可以针对语义搜索、释义挖掘、语义相似度比较、聚类、三元组损失、对比损失等任务对模型进行优化。

应用示例

您可以使用此框架实现以下功能:

以及更多其他应用场景。

有关所有示例,请参阅examples/sentence_transformer/applications

开发环境搭建

将仓库(或其分支)克隆到您的机器后,在虚拟环境中运行以下命令:

python -m pip install -e ".[dev]"
pre-commit install

要测试您的更改,请运行:

pytest

引用与作者

如果您觉得本仓库对您有所帮助,请随时引用我们的论文《Sentence-BERT:基于孪生BERT网络的句子嵌入》:

@inproceedings{reimers-2019-sentence-bert,
    title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2019",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/1908.10084",
}

如果您使用的是多语言模型,请随时引用我们的论文《利用知识蒸馏将单语句嵌入转化为多语言句嵌入》:

@inproceedings{reimers-2020-multilingual-sentence-bert,
    title = "Making Monolingual Sentence Embeddings Multilingual using Knowledge Distillation",
    author = "Reimers, Nils and Gurevych, Iryna",
    booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing",
    month = "11",
    year = "2020",
    publisher = "Association for Computational Linguistics",
    url = "https://arxiv.org/abs/2004.09813",
}

请参阅出版物,了解我们整合到SentenceTransformers中的各类研究成果。

维护者

维护者:Tom Aarsen,🤗 Hugging Face

如果遇到任何问题(尽管不应该出现),或者您有其他疑问,请随时提交 Issue。


本项目最初由达姆施塔特工业大学的 无处不在的知识处理(UKP)实验室 开发。我们感谢他们在该领域所做的基础性工作以及持续的贡献。

本仓库包含实验性软件,仅用于提供相关论文的更多背景信息。

版本历史

v5.4.12026/04/14
v5.4.02026/04/09
v5.3.02026/03/12
v5.2.32026/02/17
v5.2.22026/01/27
v5.2.12026/01/26
v5.2.02025/12/11
v5.1.22025/10/22
v5.1.12025/09/22
v5.1.02025/08/06
v5.0.02025/07/01
v4.1.02025/04/15
v4.0.22025/04/03
v4.0.12025/03/26
v3.4.12025/01/29
v3.4.02025/01/23
v3.3.12024/11/18
v3.3.02024/11/11
v3.2.12024/10/21
v3.2.02024/10/10

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

156.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|5天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|5天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架