文本向量化(Embedding)模型
📚 文本向量化(Embedding)模型知识总结
1. ✅ 什么是文本向量化(Embedding)?
➡️ 定义
将文本(单词、句子、段落、文档)通过特定模型映射为 稠密向量(Dense Vector),用于表示文本的 语义信息。
➡️ 为什么需要?
- 计算机不理解自然语言,只能理解数字。
- 向量化后可以:
- 相似度计算(语义检索、聚类)
- 分类任务(情感分析、标签分类)
- 问答系统(向量检索+大模型)
- 推荐系统(基于语义的推荐)
2. ✅ 向量化的核心任务
场景 | 目标 | 技术路径 |
---|
文本相似度 | 判断文本之间语义是否相似 | 向量表示 + 相似度计算 |
信息检索 | 检索与查询语义相关的文档 | 向量索引 + 相似度排名 |
文本分类 | 判断文本属于哪个类别 | 向量表示 + 分类模型(ML/DL) |
问答系统(RAG) | 基于知识库回答用户提问 | 向量搜索 + 大模型生成 |
多模态分析 | 跨模态(图片、视频、音频)表示统一 | 跨模态向量模型(CLIP) |
3. ✅ 常见的文本向量模型分类
3.1 静态词向量(单词级别,已过时但基础)
模型 | 特点 | 缺点 |
---|
Word2Vec | 词向量,能表达词之间相似性 | 不能解决多义词问题 |
GloVe | 结合全局与局部信息 | 表达能力弱 |
FastText | 子词嵌入,处理 OOV 词更好 | 表达句子无能为力 |
3.2 句子/文档级别嵌入(现代主流)
模型 | 简介 | 适用语言 |
---|
SBERT | 基于BERT,优化为句子嵌入 | 多语言 |
SimCSE | 无监督/有监督句子嵌入 | 英文为主,部分中文 |
Text2Vec | 中文优化的句子嵌入模型 | 中文 |
M3E | 中英文双语句向量模型 | 中英文 |
BGE | 专为检索优化的通用嵌入模型 | 中文/英文 |
3.3 多模态向量模型(图文/视频/音频)
模型 | 简介 | 适用场景 |
---|
CLIP | 图文对齐嵌入 | 图文搜索 |
OFA | 图文、OCR、VQA多模态任务 | 更复杂 |
BLIP | 图文生成/理解 | 多模态任务 |
4. ✅ 主流文本嵌入模型介绍
4.1 BGE(BAAI General Embedding)系列
- 出自:北京智源研究院(BAAI)
- 版本:
bge-small
(256维,轻量)bge-base
(768维,效果平衡)bge-large
(1024维,效果最优)
- 亮点:
- 针对检索任务优化
- 多语言支持(M3版本)
- 文本检索与RAG问答强项
- 适合场景:知识库、问答系统、相似度计算
4.2 M3E
- 出自:Moka AI
- 优势:
- 版本:
moka-ai/m3e-small
(CPU友好)moka-ai/m3e-base
/ m3e-large
- 适合场景:信息检索、分类、知识库
4.3 Text2Vec
- 出自:Shibing624(开源社区)
- 专注中文优化
- 优势:
- 轻量级(低内存/CPU可用)
- 适合中文分类、相似度任务
- 场景:资源有限的中文文本任务
4.4 GTE (General Text Embedding)
- 出自:Google
- 覆盖多语言
- 版本:
gte-small
gte-base
gte-large
- 场景:多语言检索、分类
4.5 MiniLM / SBERT
- 适合英语任务
- 模型小,计算快
- SBERT更适合做相似度匹配
5. ✅ 文档向量化处理流程
➡️ 文档预处理
- 文件加载
PDF
:PyMuPDF、pdfminer、PyPDFLoaderWord
:python-docx文本
:标准读取
- 清洗
- 切分
- 按段落、句子、字符切分
- 推荐使用
LangChain
的 RecursiveCharacterTextSplitter
➡️ 嵌入生成
from langchain.embeddings import HuggingFaceEmbeddings
embedding_model = HuggingFaceEmbeddings(model_name="BAAI/bge-large-zh")
vectors = embedding_model.embed_documents(text_chunks)
6. ✅ 向量检索/存储(向量数据库)
常见数据库
名称 | 特点 | 推荐场景 |
---|
FAISS | 轻量,单机快速 | 小型应用 |
Milvus | 分布式,支持亿级数据 | 企业级 |
Chroma | 快速上手,支持多模态 | 轻量应用 |
Weaviate | 自动化管理,带API | 快速构建 |
基本流程
- 文档 → 嵌入向量
- 存入向量库
- 查询时:
7. ✅ 模型评估指标和方法
➡️ 常用指标
指标 | 含义 |
---|
Recall@K | 前K个结果中包含正确答案比例 |
MRR | Mean Reciprocal Rank |
NDCG | 排名质量衡量 |
➡️ 评估方法
- 构造问答对 / 检索对
- 生成查询向量,查找相似向量
- 计算准确率/召回率/排名指标
- 比较不同模型效果
8. ✅ 模型选型建议(总结)
场景 | 推荐模型 | 推荐数据库 |
---|
中文RAG检索 | BGE-Large-zh / M3E | FAISS/Milvus |
英文或多语言检索 | M3E / GTE | FAISS/Weaviate |
中小型项目,轻量需求 | Text2Vec / M3E-small | Chroma/FAISS |
跨模态搜索(图文) | Taiyi-CLIP / OpenAI-CLIP | Milvus/Weaviate |
9. ✅ 推荐资源
➡️ 开源模型地址
BAAI/BGE
: https://huggingface.co/BAAI/bge-large-zhM3E
: https://huggingface.co/moka-ai/m3e-baseText2Vec
: https://huggingface.co/shibing624/text2vec-base-chineseGTE
: https://huggingface.co/models?search=gteTaiyi-CLIP
: https://huggingface.co/IDEA-CCNL/Taiyi-CLIP-Roberta-large-326M-Chinese
➡️ 向量数据库
- FAISS:https://github.com/facebookresearch/faiss
- Milvus:https://milvus.io/
- Chroma:https://github.com/chroma-core/chroma
- Weaviate:https://weaviate.io/
10. ✅ 未来趋势
- 更轻量化和高效的多语言模型
- 多模态嵌入统一化(文本、图片、视频等)
- 向量数据库自动优化(智能索引、混合搜索)
- 私有化RAG系统与大模型紧密集成
🚀 总结一句话
如果做中文知识检索和问答系统,用 BGE
系列准没错!
如果是多语言或者轻量级部署,M3E
和 Text2Vec
是很好的选择!
跨模态搜索就上 CLIP
或 Taiyi-CLIP
!