02 - Token 与 Tokenizer:模型如何“读懂“文字
这是"从 LLM 到 Agent Skill"系列的第二篇。上一篇我们讲了 LLM 的本质是"文字接龙",但模型不认识汉字——它只认识数字。那么文字是怎么变成数字的?这就要聊 Token 和 Tokenizer。
一、一个根本问题:模型不识字
你有没有想过一个很基本的问题:
大语言模型里面全是矩阵运算、浮点数乘法——这玩意儿怎么处理"床前明月光"五个汉字?
答案是:它处理不了。
模型不认识汉字。模型只认识数字。所以在你输入的每一个字到达模型内部之前,它必须被"翻译"成数字。
这个翻译官,就叫 Tokenizer。
二、Tokenizer 是什么?
Tokenizer(分词器) 是连接人类语言和机器语言的一座桥梁。它做两件事:
人类文字 ──编码(Encode)──→ 数字(Token ID) 数字(Token ID) ──解码(Decode)──→ 人类文字
2.1 编码(Encode)
当你在 ChatGPT 里输入"你好,世界",在你按下发送键之后、模型开始计算之前,Tokenizer 会先把这 5 个字变成一串数字,例如:
"你好,世界" → [12345, 678, 91011]
这串数字进入模型内部进行矩阵运算,模型预测出下一个 Token ID,再由 Tokenizer 解码回汉字,呈现在你眼前。
2.2 解码(Decode)
模型输出的也是一串数字。Tokenizer 负责反向翻译:
[12345, 678, 91011] → "你好,世界"
同样的 Tokenizer,同一套编码/解码规则,确保输入和输出使用相同的"语言"。
三、Token:文本的最小单位
3.1 Token ≠ 词
Token 是 AI 处理文本的最小基本单元。
这里有一个最常见的误区:Token 就是"词语"。不是的。
Token 和词不是一一对应的。Tokenizer 有自己的切分规则,而这个规则是模型在训练过程中自己"学会"的,不是人工定义的。
举个例子:
| 文本 | 可能的 Token 切分 |
|---|---|
| "程序员" | [程序, 员] 或 [程序员] (看模型) |
| "running" | [run, ning] |
| "unbelievable" | [un, believe, able] |
Tokenizer 会把常见词或词根作为一个 Token,把罕见词拆成更小的子词(subword)。
3.2 中英文的 Token 差异
一个很有用的经验公式:
| 语言 | 1 个 Token 大约等于 |
|---|---|
| 英文 | ~0.75 个单词 |
| 中文 | ~1.5~2 个汉字 |
也就是说,同样的信息量,中文比英文消耗更多 Token。这是一些中文 AI 应用成本更高的原因之一。
四、为什么 Token 这么重要?
你可能觉得 Token 只是一个底层技术细节。但实际上,它在应用层面有三个直接影响:
4.1 计费
绝大多数大模型 API 都按 Token 计费。你输入的 Token(Input Token)和模型输出的 Token(Output Token)都算钱。
知道了中英文的 Token 差异,你就明白为什么优化 Prompt 的长度能直接省钱。
4.2 能力上限
模型的 Context Window 是用 Token 数量来衡量的。比如一个模型的 Context Window 是 128K Token,翻译成中文大约是 19 万~25 万汉字。
超过这个长度,模型就"看不见"了。
4.3 生成质量
模型生成文本的过程,就是逐个 Token 预测的过程。一些你看到的"AI 胡言乱语",本质上是预测链条中某一个 Token 走偏了,然后偏差在后续的接龙中不断放大。
五、常见 Tokenizer 与在线工具
不同模型使用不同的 Tokenizer,切分结果也不同。常见的 Tokenizer 包括:
| Tokenizer | 使用者 |
|---|---|
| cl100k_base | GPT-4 / GPT-3.5 |
| o200k_base | GPT-4o |
| Claude Tokenizer | Claude 系列 |
你可以用在线工具直观感受 Token 的切分:
-
OpenAI Tokenizer:platform.openai.com/tokenizer
-
Tiktokenizer:tiktokenizer.vercel.app (开源可视化工具)
随便输入一段文本,你就能看到它被切成了多少个 Token、每个 Token 是什么。
六、一个具体的例子
我们以中文"我爱吃苹果"为例,某 Tokenizer 可能这样处理:
原文:我爱吃苹果 Token 1: "我" → ID: 23412 Token 2: "爱" → ID: 18903 Token 3: "吃" → ID: 3321 Token 4: "苹果" → ID: 45021 ← 注意,这里"苹果"是一个 Token,没有被拆成"苹"+"果"
再看英文"unstoppable":
Token 1: "un" → ID: 489 Token 2: "stop" → ID: 1245 Token 3: "pable" → ID: 28934 ← 被拆成了 3 个子词
这就是子词分词(Subword Tokenization)——把罕见词拆成更小的常见片段。
七、总结
Token 和 Tokenizer 是连接人类和 AI 的翻译层。记住三点:
-
模型只认数字,Tokenizer 负责把文字变成数字(编码),再把数字变回文字(解码)。
-
Token 是文本的最小处理单元,不等于"词",切分规则由模型自己学习。
-
Token 直接影响计费、能力上限和生成质量,是理解和优化 AI 应用的基础。
下一篇,我们聊聊 LLM 的"记忆"是怎么一回事——Context 与 Context Window。
本系列文章:
-
LLM 大语言模型
-
Token 与 Tokenizer ← 你在这里
-
Context 与 Context Window(待发布)
-
Prompt 提示词(待发布)
-
Tool 工具调用(待发布)
-
MCP 模型上下文协议(待发布)
-
Agent 智能体(待发布)
-
Agent Skill(待发布)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)