一文读懂大模型如何理解你的语言:Token与Embedding,建议收藏学习
你有没有想过:
当你在大模型对话框里敲下一句:「帮我写一份年终总结」,
在大模型眼里到底出现了什么呢?
对大模型来说,它不是在看「中文句子」,而是在看一串又一串数字。
这一篇,我们就用尽量不烧脑的方式,讲清楚两个核心概念:
✅ Token:AI 看世界的「字」
✅ Embedding:把语言变成坐标的「翻译器」
理解了这两个东西,你基本就搞懂了:
「AI 到底是怎么听懂你说的话的?」
一、AI 其实看不到「字」,只能看到数字
先说结论:
大模型看到的,从来不是「文字」,而是一串被编码过的数字。
从人类视角看,我们输入的是:
「帮我写一份年终总结,突出项目成果和个人成长。」
从模型视角看,这句话会经历大致这么几个阶段:
1. 字符级别
:帮 / 我 / 写 / 一 / 份 / …
2. 切成 Token
:「帮我」/「写」/「一份」/「年终」/「总结」/ …
3. 映射成编号
:[18293, 5021, 9304, 7216, 183, …](举例)
4. 转换成向量(Embedding)
:每个编号 → 一个高维向量
5. 送进大模型
:后面才是注意力、推理、生成等过程
这一篇文章就专门聚焦在第 2 步和第 4 步:
l 文本是怎么被切成 Token 的?
l 这些 Token 又是怎么变成 Embedding 向量的?
✅ 小结:
人看的是「字和句子」,模型看到的是一串编号和一堆向量。 Token 和 Embedding,就是把语言一步步变成这些数字的关键桥梁。

二、什么是 Token?——AI 世界里的「字」
1. Token 不是字,也不是词,是「介于两者之间的单位」
在人类世界里,我们习惯这样看语言:
l 英文
:字母 → 单词 → 句子
l 中文
:汉字 → 词语 → 句子
在大模型的世界里,多了一个非常关键的中间层:Token。
你可以暂时把它理解为:
为了让电脑「既不太细、也不太粗」地切分语言,
专门设计出来的一种**「最合适的单位」**。
一个 Token 可能是:
l 一个完整的英文单词:hello
l 一个汉字:帮
l 半个单词:inter、esting
l 一个标点:,、。、?
l 甚至是一个空格:" "(空格本身在英文里也是 Token)
严格一点说:
不同模型的 Token 规则不一样,
有的中文模型以「字」为主,有的会把高频词(比如「人工智能」「机器学习」)收成一个 Token,
但不会像语文课那样,一个个手工标注「词语」。
Token 不是自然语言里的「字」或「词」,
而是大模型自己定义的「看的单位」。
2. 为什么需要 Token 这种「怪异的单位」?
如果我们直接用「字」或「词」,会有很多问题:
只用「字」:
l 英文会被切得太碎:interesting → i / n / t / e / r / e / s / t / i / n / g
l 模型很难学到「单词级」的规律
只用「词」:
l 生僻词、专有名词太多:ChatGPT、DeepSeek、Qwen3…
l 词表可能大到存不下、算不动
Token 的目标,就是在这两者之间找一个平衡点:
l 高频、常见、很完整的词 → 尽量作为一个 Token
l 少见词、生造词 → 拆成若干 Token 来组合表示
l 中文则往往以「字」为基础,再把高频词组并在一起
三、Token 是怎么切出来的?——直白理解 BPE 思路
不同模型用的具体算法不完全一样,但都比较接近。
以常见的 **BPE(Byte Pair Encoding)**思路为例,可以这样理解:
BPE 做的事情,其实就是:
在海量文本里统计「谁总是挨着谁」,
然后把这些高频组合打包成新的单位。
1. 第一步:先从「最细」的单位开始
以英文为例,一开始我们只认识:
l 字母:a–z
l 标点:, . ? !
l 空格、数字等
所有文本先被拆成这些最小单位,比如:

2. 第二步:合并那些「经常腻在一起」的组合
算法会在大量语料里统计:
哪两个字符 / Token 总是频繁一起出现?
比如发现:
l i
和 n 很经常挨在一起 → 合并为 in
l in
和 g 也很常见 → 合并为 ing
l interest
整体也足够常见 → 可能进一步被合成为一个 Token
这就是 BPE 的核心:
不断把「最常一起出现的一对」合并成新的 Token,
有点像在语料库里办「团建相亲会」:
总在一起手牵手出现的,就发一张「合影」当作新 Token。
一直合到:词表大小达到预设上限,或者再合并收益不大为止。
补充说明:
现实里还有 WordPiece、SentencePiece、Unigram 等变体,
但核心思想都类似:
从小单位出发,根据统计规律,自动长出一套「刚刚好的」语言切分方式。
3. 对中文,大致会是这样:
中文没有天然空格,常见做法有两类(实际实现会更复杂,这里简化):
方法 1:按字切分 + 合并高频词组
l 初始单位:单个汉字
l 通过统计合并出:「年终」、「总结」、「人工智能」这类组合
方法 2:先做一次中文分词,再做 BPE 优化
l 用中文分词工具切出词语
l 再通过统计合并/拆分,适配不同场景
所以,一句**「帮我写一份年终总结」**可能会最终被切成:

有的是字,有的是词,全看当初训练 Token 词表的时候是怎么统计的。
四、从 Token 到编号:词表(Vocabulary)
模型不会直接存 "帮我"、"年终" 这样的字符串,而是维护一张巨大的词表(Vocabulary):
l 键(key)
:Token 字面形式,比如 "帮我"、"年终"、"AI"
l 值(value)
:一个整数编号,比如:18293、7216、305(示意)
当你输入一句话时,模型会做一件看上去很「机械」的事:
把所有 Token 替换成它们的编号 → 得到一长串整数。
例如:

到这一步为止,模型看到的是纯数字序列。
但问题来了:
数字之间没有天然的「近义」关系:
18293 并不「比」18294 更接近「总结」
纯编号无法表达「语义相似度」
我们需要再走一步,把这些编号变成可以比较远近的东西。
这一步,就是 Embedding 要完成的任务。
五、什么是 Embedding?——把词丢进「语义坐标系」
1. 想象一个超高维的「语义空间」
想象你有一个很大的空间(实际上维度通常是 512、768、1024、1536…):
l 某个方向表示「积极 vs 消极」
l 某个方向表示「时间相关 vs 空间相关」
l 某个方向表示「工作/学习 vs 娱乐」
l ……还有成百上千种抽象维度
每一个 Token,都会被映射到这个空间中的一个点。
这个点的位置,用一个向量来表示,也就是我们常说的:
Embedding 向量 / 语义向量
比如(示意):

于是:
l 「总结」会离「复盘」「报告」「汇总」比较近
l 「猫」会离「狗」「宠物」「猫咪」比较近
l 「申请加班」会离「项目」「deadline」「工作」比较近
注意:
这里的「积极/消极」「工作/娱乐」,只是为了方便理解的想象维度。
真正的维度是模型在训练中自己学出来的,
我们通常只能通过实验去猜某个方向大概对应什么含义。
核心规律:
l 距离近
→ 语义相似
l 方向相似
→ 语义相关
扫一扫,关注我们
感兴趣吗?
欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!