模型嵌入(Embedding)
的工作原理是将文本、图像和视频转换为称为向量(Vectors)
的浮点数数组,这种向量(称为嵌入向量
或Embedding
)能够捕捉数据的语义或特征信息,使计算机更容易处理和分析复杂的关系。
介绍
Embedding Model(嵌入模型)
是一种将高维、离散的数据(如文字、图像、音频等)转换为低维、连续的向量表示的机器学习模型。
核心概念
向量表示
- 将文本、图像等非结构化数据转换为数值向量(例如,一个词变为一个 300 维的向量)
- 例如:通过嵌入模型,
猫
可能表示为 [0.2, -0.5, 0.7, ...]
,而狗
的向量可能与之接近
语义保留
:语义相似的词(如汽车
和卡车
)在向量空间中的距离较近,语义无关的词(如苹果
和宇宙
)则距离较远
降维
:将原始高维数据(如 One-Hot 编码的千万维词表)压缩为低维稠密向量,提升计算效率
Embedding 模型的工作原理
训练目标
通过大量数据学习规律
- 例如,Word2Vec 通过预测上下文词(Skip-Gram)或根据上下文预测中心词(CBOW)来训练
- BERT 等模型通过掩码语言模型(Masked Language Model)学习上下文相关的嵌入
输入与输出
- 输入:离散符号(如单词、句子、图片像素)
- 输出:固定长度的向量,隐含语义或特征信息
Embedding 模型的优势
解决稀疏性
:相比 One-Hot 编码,低维向量更高效
泛化能力
:相似语义的数据在向量空间中聚集,提升模型泛化性
跨模态应用
:文本、图像、音频均可嵌入到同一空间(如 CLIP 模型)
应用场景
通过 Embedding 模型,计算机能更理解
数据的内在关联,成为现代 AI(如大语言模型)的核心技术之一
语义搜索
:将搜索词和文档转换为向量,通过相似度匹配结果(如 ChatGPT 的检索增强生成)
- 搜索
如何做蛋糕
,匹配到包含烘焙指南
的文档
词向量
:king - man + woman ≈ queen
推荐系统
:用用户和商品的嵌入向量预测兴趣匹配度
文本分类
:将文本转为向量后,用分类模型判断情感、主题等
机器翻译
:捕捉跨语言语义关系(如cat
和猫
向量接近)
常见的 Embedding 模型
Model Name |
Performance Sentence Embeddings (14 Datasets) |
Performance Semantic Search (6 Datasets) |
Avg. Performance |
Speed |
Model Size |
all-mpnet-base-v2 |
69.57 |
57.02 |
63.30 |
2800 |
420 MB |
multi-qa-mpnet-base-dot-v1 |
66.76 |
57.60 |
62.18 |
2800 |
420 MB |
all-distilroberta-v1 |
68.73 |
50.94 |
59.84 |
4000 |
290 MB |
all-MiniLM-L12-v2 |
68.70 |
50.82 |
59.76 |
7500 |
120 MB |
multi-qa-distilbert-cos-v1 |
65.98 |
52.83 |
59.41 |
4000 |
250 MB |
all-MiniLM-L6-v2 |
68.06 |
49.54 |
58.80 |
14200 |
80 MB |
multi-qa-MiniLM-L6-cos-v1 |
64.33 |
51.83 |
58.08 |
14200 |
80 MB |
paraphrase-multilingual-mpnet-base-v2 |
65.83 |
41.68 |
53.75 |
2500 |
970 MB |
paraphrase-albert-small-v2 |
64.46 |
40.04 |
52.25 |
5000 |
43 MB |
paraphrase-multilingual-MiniLM-L12-v2 |
64.25 |
39.19 |
51.72 |
7500 |
420 MB |
paraphrase-MiniLM-L3-v2 |
62.29 |
39.19 |
50.74 |
19000 |
61 MB |
distiluse-base-multilingual-cased-v1 |
61.30 |
29.87 |
45.59 |
4000 |
480 MB |
distiluse-base-multilingual-cased-v2 |
60.18 |
27.35 |
43.77 |
4000 |
480 MB |
说明:
- The all-* models where trained on all available training data (more than 1 billion training pairs) and are designed as general purpose models
- The all-mpnet-base-v2 model provides the best quality, while all-MiniLM-L6-v2 is 5 times faster and still offers good quality
实现方法&模型
词嵌入(Word Embedding)
:
Word2Vec
:生成静态词向量(如银行
在不同语境中向量相同)
GloVe
:基于全局词频统计的嵌入
上下文相关嵌入
:
BERT
:生成动态词向量(如苹果
在吃苹果
和苹果公司
中向量不同)
GPT
:基于 Transformer 的解码器结构,生成文本的嵌入表示
句子/段落嵌入
:
Sentence-BERT
:将句子映射为向量,用于语义相似度计算
Instructor
:支持多任务的文本嵌入模型
模型名称 |
向量维度 |
最大行数 |
单行最大处理 Token 数 |
GPT-1 |
768 |
- |
- |
GPT-2 |
1600 |
- |
- |
GPT-3 |
12288 |
- |
- |
DeepSeek v3 |
7168 |
- |
- |
text-embedding-v3 |
1,024(默认)、768 或 512 |
10 |
8,192 |
text-embedding-v2、text-embedding-v1 |
1,536 |
25 |
2,048 |
text-embedding-async-v2、text-embedding-async-v1 |
1,536 |
100,000 |
2,048 |
说明:
Embedding API 调用示例
- 以阿里云接口为例
embedding_demo1.py
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果您没有配置环境变量,请在此处用您的API Key进行替换
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1" # 百炼服务的base_url
)
completion = client.embeddings.create(
model="text-embedding-v3",
input='测试embedding字符串',
dimensions=1024, # 指定向量维度(仅 text-embedding-v3 支持该参数)
encoding_format="float"
)
print(completion.model_dump_json())
pip install openai
python3 embedding_demo1.py
{
"data": [
{
"embedding": [
-0.06671106070280075,
0.012732073664665222,
...
0.05693344399333
],
"index": 0,
"object": "embedding"
}
],
"model": "text-embedding-v3",
"object": "list",
"usage": {
"prompt_tokens": 6,
"total_tokens": 6
},
"id": "909822eb-aaba-9c4a-af47-8ac31a94b0dd"
}