模型
嵌入(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- 结果(完整的结果下载地址)