Astronoo - 返回首页
X(新窗口) Bluesky(新窗口) Pinterest(新窗口)
中文 English Français Español Português 日本語 Deutsch
最后更新:2026 年 10 月 15 日

Token:大型语言模型的基本单位

被切分为 token 的文本流穿过人工神经网络,随后形成回答

云端 token 化过程示意图:将单词、词的部分和标点转换为训练字典中引用的数字 token。
图片来源:astronoo.com(新窗口):AI 生成图像,公有领域。

科学摘要

本文介绍token,即大型语言模型(LLM)所操作文本的基本单位。在任何计算之前,文本由分词器切分为片段(完整单词、词的部分、标点、数字),每个片段对应训练前固定字典中的一个编号。该字典依据在超大型语料库中观察到的频率构建,例如通过字节对编码。示例"Explique-moi la photosynthèse simplement."被 Mistral 的 Tekken 分词器切分为 9 个 token,而被 Mistral 7B 的分词器切分为 13 个 token:切分取决于模型。本文考察这种切分所揭示的内容、它在上下文长度、计算成本以及模型局限中的作用,随后讨论通过嵌入从编号到向量的转变。

什么是 token,为什么 AI 不读单词?

转换为数字的文本片段

token 是文本的一个片段:一个完整单词、词的一部分、一个标点符号或一个数字。LLM 从不接收字母或单词,而是接收一串数字,每个数字在数万条目的字典中指定一个 token。

使用 Mistral 的 Tekken 分词器,句子"Explique-moi la photosynthèse simplement."变为 9 个 token:Expl | ique | -moi | _la | _photos | ynth | èse | _simplement | .(符号 _ 表示一个空格,附加在其后的 token 上)。罕见单词"photosynthèse"由三个片段重建,而"simplement"则构成单个 token。因此,token 是模型的计算单位,而非单词。

值得一看

继续探索宇宙的这些主题:

Token:LLM 的基本单位

文本的片段,而非单词

LLM既不读字母也不读单词:它读的是token。 token 是文本的一个片段,可以是完整单词、词的一部分、标点符号或数字。 每个 token 对应训练前固定字典中的一个编号。 让我们以句子"Explique-moi la photosynthèse simplement."作为提示。

各分词器对"Explique-moi la photosynthèse simplement."的切分
分词器字典(token)句子的 token 数"photosynthèse"的切分
Tekken(Mistral NeMo)≈ 131,00093:_photos + ynth + èse
GPT-4o(o200k_base)≈ 200,00093:_photos + ynth + èse
Grok(xAI)未公布93:_photos + ynth + èse
DeepSeek V3≈ 129,000103:_photos + ynth + èse
Gemma 3(Google)≈ 262,000103:_photos + ynth + èse
GPT-4(cl100k_base)≈ 100,000114:_photos + ynth + è + se
Llama 3 和 3.1(Meta)≈ 128,000114:_photos + ynth + è + se
Qwen3(阿里巴巴)≈ 152,000114:_photos + ynth + è + se
Mistral 7B(SentencePiece)32,768134:_photos + yn + th + èse

符号 _ 表示一个空格,附加在其后的 token 上。字典大小已四舍五入。大字典倾向于缩短文本,但并非总是如此:Gemma 3(≈ 262,000 个 token)对此句产生 10 个 token,而 Tekken(≈ 131,000)产生 9 个。切分还取决于构建字典所用的语言和语料库。

比较所揭示的内容

表中的八个分词器读取同一个句子,但切分方式不同。这些差异展示了 token 的真正含义。

因此,token 不是稳定的语言单位:它取决于每个模型的字典。只有少数几个点是恒定的,如附加在后继单词上的空格、孤立的标点,或"Explique"被切为Expl和ique。

为什么要这样切分?

字典在训练前通过字节对编码等方法构建:从字符开始,然后反复合并语料库中最频繁的字符对。常见序列成为完整 token,罕见序列保持为片段。这是一种折衷:大字典缩短文本但加重模型负担,小字典加长待处理的序列。

因此,同一文本在不同模型中的切分方式不同。Mistral 7B 的 SentencePiece 分词器,其字典约含 32,000 个 token,对同一句子产生 13 个 token而非 9 个。实际上,上下文窗口和 AI 服务的计费以 token 计量,而语料库中出现较少的语言通常需要更多 token 来表达相同内容。

从 token 到数字

模型只接收数字列表:60,795、2,508、33,001、1,427、17,159、20,602、24,380、37,507、1,046。这些数字只是字典中的地址,本身没有任何含义。在下一步嵌入中,每个数字被替换为训练期间学到的数千个数字组成的向量。因此,模型从不"看到""photosynthèse"的字母,这解释了它难以数出单词字母数的原因。

嵌入:从数字到向量

数字没有意义

分词后,模型持有一个数字列表。然而,在我们示例中指定 token _photos 的数字 17,159 只是字典中的一个地址:它既不比 17,160 更近,也不比 90,000 更近。为了计算,模型需要一种接近性反映使用相似性的表示。这就是嵌入的作用。

学到的向量表

嵌入是一个巨大的表格,包含字典中每个 token 一行。每一行是一个向量,即数千个数字的列表。要从数字到向量,模型只需读取相应的行:

_photos(编号 17,159)→ [0.021 ; −0.134 ; 0.087 ; … ; 0.052]

这些值是虚构的,真实列表例如包含 4,096 个数字。它们不是人类编写的:它们是训练期间调整的系数,与注意力系数一样。对于含 131,072 个 token 的字典和 4,096 个数字的向量,此表本身就代表约 5.37 亿个系数。

随使用而靠近的向量

在训练过程中,用于相似上下文的 token 获得相邻的向量。_simplement的向量因此更接近可比副词而非专有名词的向量。这个空间有数千个维度:无法绘制,但可以测量距离和角度。

一个 token 的向量在其任何环境中总是相同的。ynth这样的片段本身没有意义:是下一步——注意力——将其与_photos和èse关联,以重建"photosynthèse"。

token 的顺序

由于相同的 token 在任何地方都给出相同的向量,还必须指示其在句中的位置,因为"猫吃老鼠"与"老鼠吃猫"含义不同。根据模型不同,这些信息或被添加到向量中,或(如今最常见)以旋转形式在注意力层内部应用。

模型接收的内容

我们示例中的 9 个数字因此变为 9 个向量,即 9 行 4,096 列的表,也就是 36,864 个数字。正是这个矩阵,而非文本,进入 Transformer 模块。

发送到 Transformer 模块的矩阵片段:9 个 token × 4,096 个维度(示例值)
序号Token编号维度 1维度 2维度 3维度 4…维度 4,096
1Expl60,7950.01300.0121−0.0297−0.0022…0.0085
2ique2,5080.0064−0.0154−0.01130.0039…−0.0185
3-moi33,001−0.0031−0.02550.0001−0.0199…0.0013
4_la1,4270.02070.02120.0177−0.0262…0.0086
5_photos17,159−0.0090−0.02080.00280.0111…0.0343
6ynth20,602−0.00430.0203−0.0563−0.0060…−0.0005
7èse24,380−0.01030.0161−0.00430.0160…0.0167
8_simplement37,507−0.0164−0.0030−0.0016−0.0035…−0.0138
9.1,046−0.01340.0071−0.0151−0.0090…0.0133

4,096 列中仅显示了 5 列,即总共 9 × 4,096 = 36,864 个数字。这些值是示例性的:它们具有真实嵌入的数量级(小的正或负数,约为百分之一),但并非取自某个特定模型。在真实模型中,它们不限于 −1 到 1 的区间。

参考文献

FAQ:LLM 中的 token

什么是 token?

token 是 LLM 所操作文本的单位:频繁单词、词的一部分、标点符号或数字。每个 token 对应模型字典中的一个编号。

token 是一个单词吗?

不一定。非常频繁的单词通常构成单个 token,而罕见单词则被切分为片段。在我们的示例中,"photosynthèse"给出三个 token,"simplement"给出一个。单词前的空格通常包含在 token 中。

一个单词或一页需要多少 token?

这取决于语言、文本和分词器。在法语中,通常每词计算 1.3 到 2 个 token。我们的示例句在 Tekken 下为 5 词 9 token,在 Mistral 7B 的分词器下为 13 个 token。

谁决定 token 的切分?

分词器,一个独立于神经网络的组件。其字典在训练前构建,例如使用字节对编码方法,反复合并语料库中最频繁的字符对。此后保持固定。

为什么同一文本在不同模型中的 token 数不同?

因为每个模型都有自己的字典,大小和内容不同。较大的字典缩短文本,较小的字典加长文本。因此,token 编号在不同模型之间不可比较。

为什么 AI 服务以 token 计费?

因为 token 是模型的计算单位。上下文窗口(模型一次能读取的文本量)和许多服务的计费以 token 计量,计算时间随其数量增加而增长。

token 有意义吗?

本身没有意义。其编号只是字典中的一个地址。意义出现在下一步嵌入中,它将每个编号替换为训练期间学到的数千个数字组成的向量,随后出现在将 token 相互关联的注意力层中。

为什么 LLM 难以数出单词的字母数?

因为它不"看到"字母:它操作 token。它无法访问"photosynthèse"的字母,只能访问三个片段_photos、ynth和èse。

🏠

本类别探索内容

从提示词到回答的旅程:LLM的幕后
Token:大型语言模型的基本单位
AI的不同学习类型
自主人工智能:当机器变得自主
AI做不到的事情
人工智能与天文学:理解AI助手的角色
AI工具:如何选择?

人工智能:噪声制造者与即将破裂的认知泡沫
生成式人工智能 vs 通用人工智能:模仿的终点与意识的起点在哪里?
人工网络 vs 生物网络:两个系统,一种共同架构
人脑与人工智能:相似与差异
AlphaGo vs AlphaGo Zero:人工智能的一场革命
智能机器的下一步
生命涌现的第一步
从生物神经元到形式神经元:大脑的简化
人工智能:巨人主义的爆炸
当AI模型用自己的数据训练时,它们会发疯!
机器如何变得智能
人工智能:人类的真正威胁还是机遇?
机器如何以类似人类的方式理解、解释和生成语言?
人工神经网络是如何工作的?