快速上手文本向量模型 Sentence-Transformers
sentence-transformers 是一个极为强大的 Python 库,用于将文本转换成向量(embeddings),广泛应用于语义搜索、文本相似度、问答系统、向量数据库(如 Qdrant)等场景。
本篇将手把手教你完成以下内容:
✅ 安装 Sentence-Transformers(含依赖环境说明)
🔍 模型选择与加载
🧪 简单向量测试(含维度与余弦相似度)
🧠 模型适配建议(结合 Qdrant 等向量库)
✅ 一、环境准备与安装说明
如果你已经有一个 Python 项目环境,推荐在 虚拟环境 中安装:
pip install sentence-transformers
安装说明:
-
自动依赖安装:它会自动安装 transformers、torch、scikit-learn 等依赖。
-
✅ 不需要 GPU 也可以正常使用(默认使用 CPU)。
-
建议使用 Python 3.8–3.11 版本(3.13 有些库还不完全支持)。
-
模型会自动下载哦
📌 你可以通过以下方式检查安装结果:
pip list | grep sentence-transformers
或在 Python 交互环境中测试导入:
from sentence_transformers import SentenceTransformer
运行一段向量化文本的代码会自动下载模型,如下图:
🔍 二、加载模型并生成文本向量
from sentence_transformers import SentenceTransformermodel = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')# 示例文本
sentence1 = "Tokyo is the capital of Japan."
sentence2 = "Kyoto used to be Japan's capital."# 向量化
vec1 = model.encode(sentence1)
vec2 = model.encode(sentence2)print("向量维度:", len(vec1))
print("前五维:", vec1[:5])
🧪 三、计算余弦相似度(文本语义相似度)
from sklearn.metrics.pairwise import cosine_similarity
import numpy as npsimilarity = cosine_similarity([vec1], [vec2])
print("句子相似度(cosine):", similarity[0][0])
🔢 输出是一个 0.0~1.0 之间的值,越接近 1 表示语义越相似。
🧠 四、推荐模型列表(不同任务适配)
模型名称 | 支持语言 | 维度 | 适合场景 |
---|---|---|---|
paraphrase-MiniLM-L6-v2 | 英文 | 384 | 快速语义相似度、推荐 |
paraphrase-multilingual-MiniLM-L12-v2 | 多语种 | 384 | 多语言文本搜索(推荐!) |
all-mpnet-base-v2 | 英文 | 768 | 高精度检索(稍慢) |
e5-small-v2 / e5-base-v2 | 英文 | 384 / 768 | 搜索引擎优化 |
如果你和 Qdrant 搭配使用,建议选用 384 维模型,如 MiniLM 系列,更省空间、速度更快。
🎯 Bonus:批量编码文本
sentences = ["I love Python.", "Python is great for machine learning.", "Tokyo is in Japan."]
vectors = model.encode(sentences)print("共编码 %d 条文本,每条向量维度:%d" % (len(vectors), len(vectors[0])))
🚀 实战建议(结合 Qdrant 等向量数据库)
-
使用 sentence-transformers 将文本向量化后可存入 Qdrant、FAISS、Milvus 等数据库;
-
建议统一模型后再建立数据库索引,避免向量维度不一致;
-
可配合 score_threshold 设置查询置信度;
-
若部署在服务器端,可将模型持久化加载,加快响应速度。
📌 总结
项目 | 内容 |
---|---|
安装命令 | pip install sentence-transformers |
最常用模型 | paraphrase-multilingual-MiniLM-L12-v2(多语言,384维) |
相似度计算 | 使用 cosine_similarity() |
搭配推荐 | 向量数据库(Qdrant、FAISS)、语义检索、名称匹配系统等 |