在本节中,您将了解基于SentenceTransformers框架生成文本嵌入式内容的最方便选项之一。
在您探索和熟悉嵌入式的使用时,建议您使用 SentenceTransformers,因为该框架下的可用模型可以安装在您的电脑上,在没有 GPU 的情况下性能也相当不错,而且可以免费使用。
安装句子转换器
SentenceTransformers 框架作为 Python 软件包安装。确保已激活 Python 虚拟环境,然后在终端上运行以下命令来安装此框架:
与往常一样,在项目中添加新的依赖项时,最好更新一下需求文件:
选择型号
接下来的任务是决定使用哪种机器学习模型来生成嵌入。文档中有一份预训练模型列表。由于 SentenceTransformers 是一个非常流行的框架,因此也有与该框架无直接关系的研究人员创建的兼容模型。要查看可使用模型的完整列表,您可以查看 HuggingFace 上的SentenceTransformers标签。
就本教程而言,在选择模型时无需考虑太多,因为任何模型都足够了。SentenceTransformers 文档包括以下关于其预训练模型的说明:
"全*模型在所有可用的训练数据(超过 10 亿对训练数据)上进行训练,设计为通用模型。全 mpnet-base-v2 型号的质量最好,而全-MiniLM-L6-v2 的速度快 5 倍,但质量仍然很好。"
这似乎表明,他们的all-MiniLM-L6-v2 型号是一个不错的选择,在速度和质量之间提供了很好的折衷,因此我们使用这个型号。在表格中找到该型号,然后单击"info" 图标,查看有关该型号的信息。

关于您选择的模型,有一个有趣的细节值得注意,那就是生成的嵌入长度,或者换句话说,生成的向量有多少个数字或维度。这一点很重要,因为它直接影响到您所需的存储量。all-MiniLM-L6-v2 的情况下,生成的向量有 384 个维度。
加载模型
下面的 Python 代码演示了如何加载模型。您可以在 Python shell 中进行尝试。
第一次执行此操作时,模型将被下载并安装到虚拟环境中,因此调用可能需要一些时间才能返回。模型安装完毕后,将其实例化不需要太长时间。
生成嵌入
模型实例化后,就可以生成嵌入了。为此,请将源文本传递给model.encode() 方法:
结果是一个数组,包含了构成嵌入的所有数字。正如您所记得的,所选模型生成的嵌入有 384 个维度,因此这是embedding 数组的长度。