Sentence Transformers 库由 Nils Reimers 和 Iryna Gurevych 开发,他们是德国达姆施塔特工业大学 UKP 实验室的研究人员。该库旨在简化句子嵌入的创建和使用——句子嵌入是一种捕获语义含义的文本数字表示。 它的开发根植于他们 2019 年的研究论文 *Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks*。这项工作解决了像 BERT 这样的预训练模型的局限性,BERT 在 token 级别的任务(例如,命名实体识别)中非常有效,但难以生成高质量的句子嵌入以进行语义相似度比较等任务。该库提供了对其研究的实际实现,使开发人员能够生成针对句子级别任务优化的嵌入。
Sentence Transformers 背后的原始研究侧重于调整类 BERT 模型,以高效地生成有意义的句子嵌入。 Reimers 和 Gurevych 引入了一种*暹罗网络*架构,其中两个相同的基于 BERT 的模型并行处理成对的句子。 这些模型的输出使用池化策略(例如,token 嵌入的平均池化)进行组合,然后使用对比损失函数或三重损失函数进行微调。 例如,三重损失训练模型以确保锚定句子的嵌入比非相似(负)句子的嵌入更接近语义相似(正)句子的嵌入。 这种方法允许模型学习细微的语义关系。 该论文证明了相对于原始 BERT 嵌入的显着改进,在语义文本相似度 (STS) 和聚类任务等基准上实现了最先进的结果。 诸如在训练期间使用余弦相似度目标之类的特定技术使嵌入可以直接用于相似度比较,而无需进一步的后处理。
该库的影响源于其可访问性和灵活性。 它基于 PyTorch 构建并与 Hugging Face 的 Transformers 集成,提供针对语义搜索、释义检测和多语言检索等任务优化的预训练模型(例如,all-mpnet-base-v2
)。 开发人员可以使用最少的代码在自定义数据集上微调这些模型——例如,使用 SentenceTransformer('model_name')
加载模型并使用 model.fit()
训练它。 该库还支持高级功能,如多任务学习和动态池化。 通过抽象底层研究的复杂性,Sentence Transformers 已成为需要语义理解的应用程序的首选工具,从匹配用户意图的聊天机器人到集群相似内容的推荐系统。 它的成功在于弥合了学术研究和现实世界可用性之间的差距。