跳到主要内容
版本:V1.1.0

Sentence Transformer

Sentence Transformer 是一个专门用于将句子、短语或短文转换成高维向量(也称为嵌入)的深度学习框架。其核心思想是让语义相似的句子在向量空间中的距离很近,而语义不同的句子距离很远,从而可以通过计算向量之间的余弦相似度或欧氏距离来判断句子的语义相似程度。该框架基于强大的预训练 Transformer 模型(如BERT、RoBERTa)构建,并通过池化策略(如均值池化、CLS池化)将所有单词的向量聚合成一个固定大小的句子级向量。它广泛应用于语义搜索、文本聚类、句子分类、信息检索以及检索增强生成(RAG)等场景。

依赖与鉴权

使用前,请确保已安装 pyseekdb 和 sentence-transformers 库。

  • sentence-transformers 库封装了模型加载、编码等核心功能。

  • Sentence Transformer 通常在本地运行,首次使用指定模型时,其预训练权重会自动从 Hugging Face Hub 下载并缓存到本地,无需额外的 API 密钥鉴权。

示例:创建 SentenceTransformer Embedding Function

在代码中导入并初始化 SentenceTransformerEmbeddingFunction。指定模型名称即可快速初始化。all-MiniLM-L6-v2 模型是一个轻量且高效的通用模型,适合大多数场景。

from pyseekdb.utils.embedding_functions import SentenceTransformerEmbeddingFunction

ef = SentenceTransformerEmbeddingFunction(model_name="all-MiniLM-L6-v2")
db = pyseekdb.Client(
path="./seekdb.db"
)
collection = db.create_collection(name="my_collection", embedding_function=ef)

参数说明:

  • model_name:Sentence Transformer 模型名称,例如 all-MiniLM-L6-v2paraphrase-multilingual-MiniLM-L12-v2

  • name:集合的名称,是必选参数,默认为 my_collection

  • embedding_function:嵌入函数,通常是一个将文本转换为向量的模型函数,默认为 ef