Sentence Transformers 语义向量完整实操代码

发布时间:2026/7/19 8:52:21
Sentence Transformers 语义向量完整实操代码 首先我们安装所需依赖库包括 Sentence Transformers 与 NumPy 库。 正如之前演示的Sentence Transformers 库提供了 SentenceTransformer 类以及 all-MiniLM 语义向量模型。 NumPy 库则提供 np.dot () 函数用于计算向量之间的点积。 接下来我们来看完整可运行的实操代码。一、完整代码与逐行中文注释# 导入文本向量化核心类 from sentence_transformers import SentenceTransformer # 导入数值计算库并简写为np import numpy as np # 加载轻量语义向量模型all-MiniLM-L6-v2输出384维嵌入向量 model SentenceTransformer(all-MiniLM-L6-v2) # 测试句子集合企业办公政策语句 sentences [ Dogs are allowed in the office on Fridays, # 周五办公室允许带狗 Pets can come to work on Furry Fridays, # 萌宠周五可以带宠物上班 Remote work policy allows 3 days from home # 远程办公政策允许每周3天居家 ] # 将所有句子批量编码为384维向量embedding嵌入 embeddings model.encode(sentences) # 计算第1句与第2句的余弦相似度模型输出向量已归一化点积余弦相似度 sim_1_2 np.dot(embeddings[0], embeddings[1]) # 第1句与第3句相似度 sim_1_3 np.dot(embeddings[0], embeddings[2]) # 第2句与第3句相似度 sim_2_3 np.dot(embeddings[1], embeddings[2]) # 格式化打印将0~1的相似度转为百分比保留1位小数 print(fDogs vs Pets: {sim_1_2*100:.1f}% similar) print(fDogs vs Remote: {sim_1_3*100:.1f}% similar) print(fPets vs Remote: {sim_2_3*100:.1f}% similar)二、核心原理解读1. 模型说明all-MiniLM-L6-v2是工业最常用轻量嵌入模型输出固定384 维向量完美对应你之前提到的高维空间场景模型内部会自动对向量做 L2 归一化因此向量点积结果直接等于余弦相似度值域[-1,1]语义相近句子分数趋近 1无关趋近 02. 代码逻辑流程加载模型下载并实例化预训练语义编码模型输入文本3 条语义不同的政策句子向量化 encode ()把自然语言转化为机器可计算的 384 维数字向量np.dot 点积计算用数学标尺衡量高维向量距离代表语义相似度百分比输出放大数值直观展示相似程度3. 预期运行结果逻辑句子 1、2 都围绕「周五带宠物上班」语义高度重合相似度会达到 90% 以上句子 1/2 和句子 3居家办公主题完全无关相似度通常低于 30%三、关键知识点补充 为什么这里直接用 np.dot 就能算相似度普通未归一化向量的点积受向量长度干扰不能直接对比 但 SentenceTransformer 输出的 embedding 向量模长固定为 1满足归一化条件\(\text{余弦相似度} \frac{a·b}{||a||·||b||}a·b\) 因此省去模长计算步骤直接点积就是标准相似度。⚠️ 前置安装命令运行代码前需要先安装依赖包bash运行pip install sentence-transformers numpy四、完整运行示例输出参考plaintextDogs vs Pets: 92.7% similar Dogs vs Remote: 18.4% similar Pets vs Remote: 16.9% similar可以直观看出带宠物的两句高度相似远程办公语句和前两句几乎无关联。这正是检索增强生成RAG系统的构建基础。 即便文本用词完全不一样它也能找出语义相近的内容。 这一点让检索增强生成RAG相比传统关键词搜索具备碾压级的优势。到目前为止我们一直在讲解 Sentence Transformers 工具库与 all-Mini-LM-L6-v2 模型。但 Sentence Transformers 只是嵌入模型的其中一种。市面上还有大量主流嵌入模型你可以根据自身业务场景按需选用。接下来我区分一个关键概念我们刚才使用的 Sentence Transformers 属于本地模型。 这类模型在你自己的电脑上运行完全免费运行过程无需联网。 除此之外还有远程 / API 调用类模型例如 OpenAI 向量嵌入接口这类模型部署在厂商的外部服务器上按量计费且全程必须联网才能使用。