AI 通关攻略 · 第 2 关 | Embedding:让 AI "读懂"文字的秘密
故事从一个问题说起
要让 LLM 处理文字,第一步是把文字转成数字。但"文字转数字"这件事远比想象中复杂。
直接用字符编码(如 UTF-8 的数字 97 = 'a')行不行?不行。 因为这样编码完全丢失了语义信息——"狗"和"猫"在语义上是近义词,但它们的字符编码可能差得很远。
我们需要的是:让语义相近的词,在数字空间里距离也相近。
这就是 Embedding 要解决的问题。
1. 什么是 Embedding?
Embedding(嵌入)是将高维离散数据(文字、图片、声音等)映射到一个连续的低维向量空间的过程。
在 LLM 领域,Embedding 就是:把每个 token 映射为一个固定长度的数字向量(一串浮点数)。
简单理解:Embedding 就像给每个词发一张"身份证"——这张身份证上的数字不是随机编的,而是根据词的含义精心设计的。含义相近的词,它们的"身份证号码"也相近。
2. Embedding 是怎么生成的?
2.1 训练出来的,不是人工定义的
早期的词向量(如 Word2Vec、GloVe)是通过在大规模文本上训练得来的——让词的向量能预测它周围的词(类似"观其伴,知其义")。
现代 LLM 的 Embedding 更加强大:
- 每个 token 的 Embedding 在进入 Transformer 之前就已经初始化
- 经过层层 Attention 的处理,每个 token 的向量会不断被上下文所"更新"
- 最终,LLM 内部每个 token 都有一个上下文感知的向量表示
换句话说:同一个词在不同上下文里,最终的向量是不同的。"苹果"在"吃苹果"和"买苹果股票"中的含义完全不同,经过 Transformer 处理后的向量也会有所区分。
2.2 向量的维度
一个 token 的 Embedding 向量通常有 512、768、1024、1280、4096 等维度。
维度越高,能表达的语义信息越丰富,但计算成本也越大。
3. 向量空间的核心特性
Embedding 向量空间有几个极其重要的特性,理解它们才能理解为什么 Embedding 这么强大:
3.1 语义相似性
在向量空间中,距离近的词 = 语义相近的词。
可以用余弦相似度来衡量:
相似度 = cos(向量A, 向量B)
- 相似度 = 1(完全相同)
- 相似度 = 0(完全不相关)
- 相似度 = -1(完全相反)
例子:
"国王"和"王后"的余弦相似度很高,"国王"和"香蕉"的相似度几乎为 0。
3.2 语义运算
Embedding 空间支持"语义加减法":
"国王" - "男人" + "女人" ≈ "王后"
"巴黎" - "法国" + "日本" ≈ "东京"
这叫语义向量运算,是 Embedding 强大能力的直观体现。
4. Embedding 模型
不是只有 LLM 才有 Embedding。专门用于生成 Embedding 的模型叫 Embedding Model。
常见 Embedding 模型
| 模型 | 公司 | 维度 | 特点 |
|---|---|---|---|
| text-embedding-3-large | OpenAI | 3072 | 最新一代,效果好 |
| text-embedding-ada-002 | OpenAI | 1536 | 经典,稳定 |
| Cohere Embed | Cohere | 1024 | 多语言支持强 |
| BGE | 国产开源 | 1024 | 开源免费,中文友好 |
| M3E | 国产开源 | 768 | 开源免费,轻量 |
Embedding Model vs LLM
| 对比项 | Embedding Model | LLM |
|---|---|---|
| 用途 | 将文本转为向量 | 生成文本 |
| 输出 | 固定维度的向量 | 变化的文本序列 |
| 计算量 | 相对较小 | 非常大 |
| 典型场景 | 语义搜索、相似度计算、RAG | 对话、写作、推理 |
5. Embedding 的实际应用
5.1 语义搜索(Semantic Search)
传统搜索是关键词匹配("搜索'苹果'就只返回包含'苹果'的文档")。
语义搜索基于 Embedding:
- 把用户的问题转成向量
- 在向量数据库中找最相似的文档向量
- 返回对应的文档
例子:用户问"怎么种水果",Embedding 搜索能找到包含"果树栽培"的文档,即使文档里没有"水果"这个词。
5.2 RAG(Retrieval-Augmented Generation,检索增强生成)
RAG 是 Embedding 最重要的应用场景之一:
- 把知识库文档切成小块,每块转成向量存入向量数据库
- 用户提问时,把问题转成向量,检索最相关的文档块
- 把检索结果 + 用户问题一起发给 LLM,让它基于真实资料回答
5.3 文本分类 / 聚类
把文本转成向量后,可以做:
- 相似文档的自动聚类
- 垃圾邮件识别(正常邮件 vs 垃圾邮件向量差异大)
- 情感分析(好评 vs 差评的向量分布不同)
5.4 推荐系统
用户兴趣和内容的向量相似度高,就推荐。这也是抖音、抖音推荐算法的底层逻辑之一。
6. Embedding 的局限
6.1 丢失的信息
Embedding 是对语义的"有损压缩"。一整篇文章被压缩成 1024 个浮点数,必然丢失大量细节。
例子:Embedding 可以区分"红色的苹果"和"绿色的苹果",但可能无法区分"稍微有点红的苹果"和"比较红的苹果"。
6.2 Embedding 质量依赖模型
Embedding 模型本身的理解能力决定了向量的质量。一个弱的 Embedding 模型生成的向量,语义相似性会很差。
6.3 跨语言问题
不同语言的 Embedding 空间不同。"Hello"和"你好"在中文 Embedding 模型里可能距离很远。跨语言应用需要专门的多语言 Embedding 模型。
7. 一张图理解 Embedding
文字 → Embedding Model → 向量 → 存入向量数据库
用户问题 → Embedding Model → 向量 → 相似度搜索 → 检索结果
8. 总结
| 问题 | 答案 |
|---|---|
| Embedding 是什么? | 把文字/图片等转为固定维度向量的技术 |
| 核心特性是什么? | 语义相近的东西,向量距离也近 |
| 有什么用? | 语义搜索、RAG、分类、推荐 |
| 和 LLM 是什么关系? | Embedding 是 LLM 的输入层,LLM 内部也有大量 Embedding 计算 |
| 和向量数据库是什么关系? | 向量数据库是存储和检索 Embedding 向量的基础设施 |