Embedding:让计算机理解语义的原理

Embedding:让计算机理解语义的原理
cuizhenjieEmbedding:让计算机理解语义的原理
你搜索”手机坏了怎么修”,关键词检索只能找到包含”手机”和”维修”的文档。但如果文档写的是”设备故障维修流程”,意思完全一样,却搜不到。
Embedding 解决了这个问题。
为什么关键词检索不够用
同义词问题
- 用户说:”手机坏了怎么修”
- 知识库写:”设备故障维修流程”
- 关键词检索:❌ 匹配不上
一词多义问题
“苹果”可能是水果,也可能是 Apple 品牌。关键词检索无法判断上下文。
上下文理解问题
“我不想要了,但已经拆了包装”问的是退货政策,不是包装说明。
向量:让计算机理解语义
核心思想
把文本映射到高维空间中,让语义相近的文本在空间中距离相近。
示例
1 | "七天无理由退货" → [0.0234, -0.0156, 0.0891, ...] |
上图中,距离用余弦相似度衡量。
相似度计算:余弦相似度
核心概念
衡量两个向量的”方向”有多接近:
- 1.0:语义完全相同
- 0:语义完全无关
- -1.0:语义完全相反
经验阈值
| 相似度范围 | 含义 |
|---|---|
| 0.9 ~ 1.0 | 高度相关,几乎同一意思 |
| 0.7 ~ 0.9 | 明显相关,主题一致 |
| 0.5 ~ 0.7 | 有一定关联 |
| 0.3 ~ 0.5 | 关联很弱 |
| 0.0 ~ 0.3 | 基本无关 |
主流 Embedding 模型对比
| 模型 | 向量维度 | 中文效果 | 部署方式 |
|---|---|---|---|
| text-embedding-v3 | 1024/768 | 优秀 | 云端 API |
| BGE-large-zh | 1024 | 优秀 | 本地/API |
| BGE-M3 | 1024 | 优秀 | 本地/API |
| Qwen3-Embedding-8B | 4096 | 优秀 | 本地/API |
| GTE-large-zh | 1024 | 优秀 | 本地/API |
中文场景推荐:BGE-M3(性价比)或 Qwen3-Embedding(精度更高)
模型选型建议
什么时候选云端 API
- 项目初期,想快速验证效果
- 团队没有 GPU 资源
- 对数据安全要求不高
什么时候选本地部署
- 数据量大(每天数十万+)
- 对数据安全有严格要求(数据不出域)
- 对延迟敏感(内网调用更快)
在 RAG 流程中的位置
1 | 文本块 → [Embedding 模型] → 向量 → 向量数据库 |
Embedding 是 RAG 的核心纽带:文档和用户问题使用同一个模型向量化,才能保证”问的是退货,召回的也是退货”。
实战:使用 BGE-M3 进行向量化
1 | from sentence_transformers import SentenceTransformer |
相关阅读:








