Tokenizer 分片(tokenization)和 Embedding 都是在把“离散的文字”转换成“模型能处理的数字表示”,所以看起来相似。但它们处在 LLM 输入流程的不同阶段,解决的问题完全不同。

可以先看一条典型 LLM 流程:

文本
 ↓
Tokenizer(分片 + 编号)
 ↓
Token IDs
 ↓
Embedding(查表变向量)
 ↓
向量序列
 ↓
Transformer
 ↓
输出 Token IDs
 ↓
Tokenizer 解码
 ↓
文本

1. Tokenizer 做什么:把文字切成“单位”

Tokenizer 的任务是:

把人类语言切成模型词汇表里的基本单位。

例如一句话:

我喜欢人工智能

可能被切成:

["我", "喜欢", "人工", "智能"]

或者:

["我", "喜", "欢", "人工", "智能"]

英文可能:

"unbelievable"

切成:

["un", "believ", "able"]

这些 token 会被映射成整数:

["我", "喜欢", "人工", "智能"]

↓

[2345, 7821, 9134, 5567]

这些数字叫:

Token ID

注意:

Token ID 本身没有语义。

比如:

苹果 = 3456
香蕉 = 9821
汽车 = 1234

3456 并不比 9821 更“小”,数字大小没有意义。



2. Embedding 做什么:把 Token ID 变成有意义的向量

Embedding 的任务是:

把离散编号转换成连续空间里的语义向量。

例如:

Token ID:

苹果 = 3456

经过 Embedding:

3456
 ↓
[0.12, -0.53, 0.87, ..., 0.22]

可能是一个 4096 维向量。

这个向量里的数字表达:

  • 和水果相关
  • 和食物相关
  • 和甜味相关
  • 和植物相关

类似:

苹果向量
[0.12,0.54,-0.33,...]

香蕉向量
[0.15,0.51,-0.30,...]

汽车向量
[-0.71,0.22,0.89,...]

苹果和香蕉在向量空间里距离比较近,汽车比较远。



3. 两者之间的关系

因为两者都是“编码”。

可以类比:

Tokenizer:

像身份证系统:

张三 → 身份证号 123456
李四 → 身份证号 987654

只是给一个唯一编号。

Embedding:

像建立人物画像:

123456 →
[年龄,职业,兴趣,性格,...]

开始有信息。


换句话:

Tokenizer Embedding
输入 文字 Token ID
输出 数字编号 高维向量
是否包含语义 ❌ 没有 ✅ 有
是否训练 通常固定 模型学习
目的 切分语言 理解语言
例子 “人工智能”→[123,456] 123→[0.2,-0.5,…]


4. Embedding 本质上是什么?

很多人不知道:

Embedding 层其实就是一个巨大的查表矩阵。

假设:

词表大小:

Vocabulary = 100,000 tokens

模型维度:

Hidden size = 4096

那么 Embedding 矩阵:

100000 × 4096

类似:

             维度
token       1     2     3    ...
--------------------------------
苹果       0.2  -0.4  0.7
香蕉       0.3  -0.3  0.6
汽车      -0.8   0.1  0.9
...

输入:

苹果 token id = 1234

实际上就是:

Embedding_matrix[1234]

取出那一行。



5. Tokenizer 的分片会影响 Embedding 吗?

会,而且影响很大。

例如:

Tokenizer A

人工智能
↓
["人工智能"]

Embedding 学习:

人工智能 → 一个整体概念

Tokenizer B

人工智能
↓
["人工", "智能"]

Embedding 学习:

人工 → 人类制造
智能 → 能力

模型需要自己组合:

人工 + 智能 = AI概念

所以 tokenizer 设计会影响:

  • 模型效率
  • 上下文长度
  • 多语言能力
  • 中文表现
  • 训练成本


6. 一个更深的联系:Embedding 也能反过来表示 Token

很多现代 LLM 有:

Token Embedding

和:

Output Projection

有时共享权重(weight tying):

Token ID
    ↓
Embedding矩阵
    ↓
Transformer
    ↓
同一个矩阵反推
    ↓
Token概率

所以 Tokenizer 和 Embedding 在模型结构上是紧密连接的。



总结

可以记成:

Tokenizer 负责回答:“这句话由哪些基本单位组成?”
Embedding 负责回答:“这些单位在数学空间里是什么意思?”

或者:

Tokenizer = 分词 + 编号(字典)
Embedding = 把编号变成含义(向量)

核心:它们都是离散符号 → 数字表示的过程,只是 Tokenizer 产生的是“索引”,Embedding 产生的是“语义空间中的坐标”。

更多推荐