AI学习笔记
首页 > 大模型笔记 > 什么是 Token?把大模型的基本单位一次讲透
什么是 Token?把大模型的基本单位一次讲透

什么是 Token?把大模型的基本单位一次讲透

大模型笔记 · 2026-11-11 · AI学习笔记 整理
导读:看懂Token到底是什么、文本怎么被切成Token,并学会自己动手数一数。

我在刚接触大模型的时候,最懵的一个词就是 Token。各家文档都在说「上下文多少 Token」「按 Token 计费」,但就是没人正面回答一句:它到底是个啥?

后来我把这件事彻底搞明白之后才发现,Token 是理解大模型一切行为的地基。这篇文章我就把自己梳理清楚的思路完整讲一遍,争取让你看完就能自己动手验证。

先给一句话定义:Token 是模型眼里的「积木块」

大模型不认识汉字,也不认识英文单词,它只认识一串数字 ID。Tokenizer(分词器)会先把你的文本切成一小块一小块,每一块映射成一个数字 ID,这一小块就是一个 Token。

所以你可以把 Token 理解成:

  • 模型读写文本的最小单位
  • 一切计费、上下文长度、速率限制的度量单位
  • 一个 Token 通常对应一小段字符,而不是一个完整的字或词

这里有个反直觉的点:Token 既不等于「字」,也不等于「词」。一个英文单词可能被切成 2 到 3 个 Token,一个常见汉字可能占 1 个 Token,生僻字或组合可能占更多。

为什么要按 Token 切,而不是按字数算

我一开始也觉得按字数算不是更直观吗?后来理解了两点就释然了。

第一,词表(vocabulary)是有限的。分词器背后有一张几万到几十万条的「常用片段表」,遇到文本就按最长匹配的方式去切。太长的词、太生僻的词都会被拆成常见小片段。

第二,模型内部要对齐算力成本。序列越长,注意力计算越贵,用 Token 统一长度,才能公平地衡量「这一段输入到底有多长」。

所以 Token 的本质是「压缩效率和计算成本之间的折中」。

一段文本是怎么变成 Token 的:4 个步骤

我用流程的方式给你拆开看:

  1. 输入原始文本
  2. 分词器按预训练好的切分规则,切成若干片段
  3. 每个片段查表得到一个数字 ID
  4. 模型处理完后,把输出的 ID 再反查成片段,拼回文本给你看

有几个关键点你一定要记住:

  • 不同模型的 Tokenizer 不一样,同一段文字在不同模型里的 Token 数可以差很多
  • 中文、英文、代码、表情符号,切分密度都不一样
  • 常见词往往是 1 个 Token,罕见词会被拆成多个子词(subword)
  • 空格、换行、标点也占 Token,别忽略它们

自己动手数一数:3 步实测

看十篇解释不如自己跑一次代码。下面是最简单的验证方式,用开源的 tiktoken 举例(安装方式以官方为准)。

第 1 步:安装并载入分词器

import tiktoken

# 不同编码对应不同模型系列,具体对应关系以官方文档为准
enc = tiktoken.get_encoding("cl100k_base")

第 2 步:把文本切成 Token 并计数

text = "Hello, 大模型世界!"
tokens = enc.encode(text)

print("Token 列表:", tokens)
print("Token 数量:", len(tokens))
print("字符数量:", len(text))

第 3 步:反向还原,确认没丢信息

back = enc.decode(tokens)
print("还原结果:", back)
print("是否一致:", back == text)

跑完你就亲眼看到了:Token 数量和字符数量是两个完全不同的数字。如果你用的是开源模型,可以用 transformers 库里的 AutoTokenizer 做同样的实验,思路完全一样,只是加载方式换成对应模型的 tokenizer。

不同语言的 Token 直觉(经验值)

下面这张表是我用来快速估算的粗略直觉,注意是经验值,不同模型差异很大,精确数值一定要以你自己的实测为准。

文本类型大致感觉说明
英文常见文本约 4 个字符 ≈ 1 个 Token常见单词通常整词成 Token
中文常见文本约 1 到 2 个汉字 ≈ 1 个 Token高频词组可能合并成 1 个
代码变量名、符号往往被切碎缩进和空行也计数
表情符号可能占多个 Token别在提示里堆一堆 emoji
生僻字、错别字往往占更多 Token越少见切得越碎

看这张表你会发现:同样字数的中英文,Token 成本并不一样。这也是为什么你在做实际项目时,一定要针对自己的语料实测一次,而不是套用网上的固定系数。

为什么你非搞懂 Token 不可:3 个直接影响

影响面会发生什么你应该怎么做
上下文长度输入加输出的 Token 总和有上限长文档要先做摘要或分段
费用多数 API 按 Token 计量精简提示、去掉冗余模板
响应速度序列越长处理越慢控制输入长度,避免无用粘贴

一句话总结:Token 就是大模型世界的「度量衡」。不懂它,你就没法判断一次对话有多长、多贵、多快。

我踩过的 4 个常见误区

  • 误区一:以为 1 个 Token 等于 1 个汉字。实际上要看具体文本和具体模型。
  • 误区二:以为所有模型的 Token 数一样。换模型必须重新估算。
  • 误区三:以为只有正文算 Token。系统提示、历史对话、工具返回结果全都算。
  • 误区四:用字符数去申请上下文预算。一定要按 Token 换算并留出输出空间。

上手清单:今天就能做的 3 件事

  1. 挑一段你常用的提示词,用上面的代码数一数 Token
  2. 把同样的内容用另一套 Tokenizer 再数一次,感受差异
  3. 统计你最近一次长对话的总 Token,估算它在不同上下文上限下的占比

做完这三步,你对「模型的记忆边界」会有非常具体的感觉,后面学提示词、上下文管理都会顺很多。

写在最后

Token 是大模型最基础、也最容易被跳过的概念。它不复杂,但它决定了你能塞进多少资料、要花多少钱、模型答得快不快。建议你把这篇文章里的代码跑一遍,把抽象概念变成手上的真实数字。

常见问题 FAQ

Q:Token 会随模型更换而变化吗?
A:会。每个模型或模型系列都可能使用不同的 Tokenizer,同一段文字切出来的 Token 数会不一样。做预算或成本估算时,一定要换成你实际使用的那个模型的 Tokenizer 来实测,具体支持哪些编码以官方文档为准。
Q:一个 Token 大概是多少个汉字或英文单词?
A:这是个经验值:英文大约 4 个字符对应 1 个 Token,中文大约 1 到 2 个汉字对应 1 个 Token,但不同文本、不同模型差异都不小。我的建议是别背系数,直接用代码对你自己的语料实测一次。
Q:为什么我按字符数估算上下文总是超限?
A:因为上下文上限按 Token 计,而 Token 数几乎总是多于你直觉上的「字数」。再加上系统提示、历史对话和输出都要占用预算,建议按 Token 统计,并给输出预留充足空间,必要时先做摘要或分段处理。

相关文章