使用预训练的 Sentence Transformer 模型将句子列表编码为嵌入向量的最简单方法包括三个关键步骤:安装库,加载模型,并应用其 encode
方法。Sentence Transformers 是一个基于 PyTorch 和 Hugging Face Transformers 构建的 Python 库,提供了易于使用的工具来生成文本的密集向量表示(嵌入)。像 all-MiniLM-L6-v2
或 paraphrase-multilingual-Mpnet-base-v2
这样的预训练模型针对语义搜索或聚类等任务进行了优化,并且可以用最少的设置进行加载。encode
方法自动处理分词,模型推理和输出格式化,将句子转换为固定长度的嵌入向量。
要开始使用,请使用 pip install sentence-transformers
安装该库。接下来,导入 SentenceTransformer
类并加载预训练的模型。例如,model = SentenceTransformer('all-MiniLM-L6-v2')
初始化一个适用于通用用途的轻量级模型。 如果您正在使用启用 GPU 的环境,添加 device='cuda'
可以加快处理速度。模型的 encode
方法接受字符串列表,并返回一个 NumPy 数组(如果指定,则返回 PyTorch 张量),其中每行对应一个句子的嵌入向量。 例如,embeddings = model.encode(['Hello world', 'How are you?'])
生成两个 384 维向量(使用 all-MiniLM-L6-v2
)。 这种方法不需要手动配置分词器或后处理,即使对于 NLP 新手开发人员也可以访问。
实际考虑因素包括用于大型数据集的批处理和用于相似度比较的归一化嵌入向量。 默认情况下,encode
一次处理所有句子,但您可以指定 batch_size
来管理内存使用量。 例如,embeddings = model.encode(sentences, batch_size=32)
每次处理 32 个句子。 如果您计划计算嵌入向量之间的余弦相似度,请设置 normalize_embeddings=True
以确保向量是单位长度。 可以使用 convert_to_tensor=True
(对于 PyTorch)控制输出格式,或者将其保留为 NumPy 数组。 这种方法在简单性和灵活性之间取得了平衡,使开发人员能够以最少的代码将语义嵌入向量集成到诸如搜索引擎或推荐系统之类的应用程序中。