有勇气的牛排博客

SentenceTransformer 句子、段落、文本转换成向量 embedding

有勇气的牛排 118 AI大模型 2025-04-19 21:03:47

1 前言

1.1 摘要

SentenceTransformer是一个基于封装的高级库,专门用来将句子、段落、文本转换成向量(Embedding),方便于:

  • 文本相似度计算
  • 信息检索、
  • 聚类、分类
  • 向量数据库(Milvus、FAISS)
  • 问答系统、聊天机器人

它是Hugging Face的Transformers和PyTorch的一种高级封装。

1.2 它和普通BERT有什么区别🤔

特性 SentenceTransformer 普通 Transformers(如 BERT)
输入 整句或多句 单个句子
输出 一个固定维度向量 每个词一个向量,CLS输出不一定稳定
适用场景 相似度、检索、匹配等 分类、NER、QA等任务
使用方便度 ✅ 高度封装 ❌需要手动处理向量、聚合等

2 常用模型推荐

模型名称 向量维度 模型大小 内存占用(加载后) 特点
all-MiniLM-L6-v2 384 ~80MB ~400MB 🚀 快速、轻量,适合中文和英文
paraphrase-MiniLM-L6-v2 384 ~80MB ~400MB 英文表现好、语义相似度强
multi-qa-MiniLM-L6-cos-v1 384 ~80MB ~400MB 多语言问答优化版本
all-mpnet-base-v2 768 ~420MB ~1.3GB 精度更高,英文效果佳
paraphrase-multilingual-MiniLM-L12-v2 384 ~190MB ~800MB 多语言支持(包括中文)
distiluse-base-multilingual-cased-v2 512 ~230MB ~1GB 多语言支持、效果稳定
LaBSE 768 ~1.3GB ~2.5GB 跨语言最佳选择(谷歌出品)

阿里的开源模型推荐(中文向量)

模型名称 来源 向量维度 模型大小 加载内存 (CPU) 显存占用 (GPU) 特点
GanymedeNil/text2vec-base-chinese 阿里达摩院&社区维护 768 ~400MB ~1.2GB ~1.4GB 🔥 中文相似度表现优异,经典款
shibing624/text2vec-base-multilingual 阿里社区衍生 768 ~400MB ~1.2GB ~1.4GB 多语言兼容(中英等)
damotext/sbert-chinese-general-v2 阿里达摩院 768 ~420MB ~1.2GB ~1.4GB 精度高,适合通用相似度
Alibaba-NLP/gte-base-zh 阿里 768 ~420MB ~1.2GB ~1.4GB 适合中文搜索、问答等场景
damotext/bge-large-zh-v1.5 阿里达摩院 BGE 系列 1024 ~1.2GB ~3.5GB ~4.5GB 🔥 精度最强,适合召回、RAG
模型名称 向量维度 模型磁盘大小 部署后内存占用(估算) 特点
BAAI/bge-small-zh-v1.5 512 ~150MB ≈ 700MB 📦 轻量,适合在线部署,性能与速度平衡
BAAI/bge-base-zh-v1.5 768 ~400MB ≈ 1.7GB 🧠 通用性好,适合中等负载搜索、召回
BAAI/bge-large-zh-v1.5 1024 ~1.2GB ⚠️ ≈ 4.8GB 🚀 精度高,适合 RAG、大规模召回、问答任务

3 文本向量化案例

sentence-transformers==4.1.0 huggingface_hub[hf_xet]
from sentence_transformers import SentenceTransformer, util # 加载模型 model = SentenceTransformer('all-MiniLM-L6-v2') # 编码两个句子为向量 emb1 = model.encode("你好吗?") emb2 = model.encode("你最近怎么样?") # 计算相似度(余弦相似度) similarity = util.cos_sim(emb1, emb2) print(similarity) # 输出一个相似度分数(越接近 1 越相似)

模型1测试

SentenceTransformer文本向量化案例

模型2测试

image.png


留言

专栏
文章
加入群聊