Sentence Transformer
Sentence Transformer 是一个专门用于将句子、短语或短文转换成高维向量(也称为嵌入)的深度学习框架。其核心思想是让语义相似的句子在向量空间中的距离很近,而语义不同的句子距离很远,从而可以通过计算向量之间的余弦相似度或欧氏距离来判断句子的语义相似程度。该框架基于强大的预训练 Transformer 模型(如 BERT、RoBERTa)构建,并通过池化策略(如均值池化、CLS 池化)将所有单词的向量聚合成一个固定大小的句子级向量。它广泛应用于语义搜索、文本聚类、句子分类、信息检索以及检索增强生成(RAG)等场景。
依赖与鉴权
使用前,请确保已安装 @seekdb/sentence-transformer 软件包。
-
sentence-transformers库封装了模型加载、编码等核心功能。 -
Sentence Transformer 通常在本地运行,首次使用指定模型时,其预训练权重会自动从 Hugging Face Hub 下载并缓存到本地,无需额外的 API 密钥鉴权。
示例:创建 SentenceTransformer Embedding Function
调用 new SentenceTransformerEmbeddingFunction() 构造函数,并传入配置对象来初始化嵌入函数。
import { SentenceTransformerEmbeddingFunction } from "@seekdb/sentence-transformer";
const ef = new SentenceTransformerEmbeddingFunction({
// all-MiniLM-L6-v2 模型是一个轻量且高效的通用模型,适合大多数场景。
modelName: "Xenova/all-MiniLM-L6-v2",
device: "cpu",
normalizeEmbeddings: false,
});
配置项说明:
- modelName:Sentence Transformer 模型名称(默认:
Xenova/all-MiniLM-L6-v2) - device:运行设备(默认:
"cpu") - normalizeEmbeddings:对输出向量进行归一化(默认:
false) - kwargs:可选,任务管道选项,可序列化为 JSON。