大模型 Token 是什么?“词元”又是啥?—— 一篇让你彻底搞懂的“AI货币”指南
大模型 Token 是什么?“词元”又是啥?—— 一篇让你彻底搞懂的“AI货币”指南
- 大模型 Token 是什么?“词元”又是啥?—— 一篇让你彻底搞懂的“AI货币”指南
- 0. 一个让你秒懂的比喻:Token 就是乐高积木🧱
- 1. 从最基础的问题开始:AI 是怎么“看懂”文字的?
- 2. Token 到底长什么样?—— 看三个真实例子
- 例子 1:英文句子
- 例子 2:中文句子
- 例子 3:长英文单词
- 3. 为什么 Token 这么重要?—— 它是 AI 的“燃料”“钱”“速度表”
- 3.1 上下文长度(AI 的“短期记忆”)
- 3.2 计费单位(AI 的“钱”)
- 3.3 生成速度(AI 的“打字速度”)
- 4. 中文 vs 英文:谁更费 Token?
- 5. Token 是怎么切出来的?—— 聊聊“分词器”
- 6. 小白常见疑问(FAQ)
- Q1:一个汉字一定是一个 token 吗?
- Q2:标点符号算 token 吗?
- Q3:数字怎么算?
- Q4:为什么同样的文字,不同模型给的 token 数不一样?
- Q5:Token 和“词向量”是一回事吗?
- 7. 两个你不问但很重要的问题
- 7.1 为什么大模型有 token 上限?(比如 128K,而不是无限)
- 7.2 如何编写“省 token”的 prompt?(省钱技巧)
- 8. 如何自己算 Token 数?
- 9. 一张图总结 Token 全家桶
- 写在最后
大模型 Token 是什么?“词元”又是啥?—— 一篇让你彻底搞懂的“AI货币”指南
你肯定听过这些说法:GPT-4 能一次处理 128K Token,Claude 能吞下 200K Token,API 调用按每百万 Token 收费……
但Token 到底是什么?为什么它是 AI 世界的“基本货币”?
今天,我们不堆术语,不讲废话,用 7 分钟帮你彻底搞懂 Token 和词元。
0. 一个让你秒懂的比喻:Token 就是乐高积木🧱
想象你面前有一堆积木。每个积木是一个Token。
你可以用这些积木搭出“房子”“汽车”“恐龙”——对应 AI 生成的句子、段落、文章。
- 积木的种类:字母、数字、标点、单词的一部分、整个单词……都是不同类型的积木。
- 积木数量上限:AI 一次最多能拿多少块积木 → 这就是“上下文长度”。
- 积木的成本:每块积木都要花钱(因为 AI 公司要付电费、算力费)。
理解 Token,就是理解 AI 的“基本积木”。下面我们拆开看。
1. 从最基础的问题开始:AI 是怎么“看懂”文字的?
人类看文字:“我爱北京天安门”—— 我们会自然地把这句话拆成 7 个汉字,每个字都有含义。
但 AI(大语言模型)不是人,它不认识汉字,也不认识英文单词。它只认识数字。
所以,要让 AI “理解”一句话,第一步就是把文字转成数字。
而这个转换过程中产生的“最小单位”,就是Token。
一句话定义:Token 是 AI 处理文本时的最小基本单位。
它可以是一个完整的词、一个词的局部(比如词根词缀)、甚至是一个字符或半个字符。
中文里常把 Token 翻译成“词元”(即“词的单元”)。
2. Token 到底长什么样?—— 看三个真实例子
例子 1:英文句子
句子:Hello world!
很多 tokenizer(分词器)会把它拆成:
Hello→ 1 tokenworld(注意开头的空格)→ 1 token!→ 1 token
结果:3 个 token。
💡 空格通常会被“吃掉”变成 token 的一部分,但单独的空格也可能是一个 token(取决于模型)。
例子 2:中文句子
句子:我爱北京
常见的中文 tokenizer 通常把每个汉字当 1 个 token:
我(1)爱(1)北(1)京(1)
→4 个 token。
但有些分词器会把“北京”当一个词,那就变成:我、爱、北京→3 个 token。
不同模型切法不同,token 数量不一样。
例子 3:长英文单词
单词:unbelievable
很多模型不认识这个完整词,就会根据常见字母组合拆成:
un(1)believe(1)able(1)
→3 个 token。
这样做的好处是:即使遇到从未见过的新词(比如 “deepseekification”),模型也能通过已知词根猜出意思。
3. 为什么 Token 这么重要?—— 它是 AI 的“燃料”“钱”“速度表”
Token 影响着 AI 的三大核心指标:能记多少、要花多少、有多快。
3.1 上下文长度(AI 的“短期记忆”)
每个大模型都有最大 Token 限制(即上下文窗口)。例如:
| 模型 | 上下文长度 (Token) | 能装下什么? |
|---|---|---|
| GPT-3.5 (早期) | 4K | 大约 3000 个汉字 |
| GPT-4 Turbo | 128K | 一本 300 页的小说 |
| Claude 3 | 200K | 《战争与和平》上册 |
| Gemini 1.5 Pro | 1M (100万) | 《三体》三部曲一口气读完 |
如果你输入的 prompt + 生成的内容超过这个数字,AI 就会“忘记”前面的内容,或者直接报错。
所以 Token 决定了 AI 能“记住”多少东西。
3.2 计费单位(AI 的“钱”)
调用大模型 API 是按Token 数量收费的。以某主流模型为例:
- 输入:$1 / 1M Token
- 输出:$2 / 1M Token
写一篇 1000 字的文章(中文),大约消耗1300~2000 个 token。
写同样长度的英文,大约800~1200 个 token。
省 token = 省钱,尤其是高频调用时。
3.3 生成速度(AI 的“打字速度”)
模型生成文本的速度通常用每秒多少个 token表示。
- GPT-4:约 20~40 token/秒
- 更快的模型(如 Claude 3 Haiku):可超过 100 token/秒
1 秒生成 20 个 token,大约相当于 10~15 个汉字,或者 15~20 个英文单词。
Token 越少,生成越快(同样计算资源下)。
4. 中文 vs 英文:谁更费 Token?
很多开发者会问:用中文调用 API 是不是更划算?我们直接看数据。
| 语言 | 例句 | 大约 Token 数 | 原因 |
|---|---|---|---|
| 英文 | I love Beijing | 3 (I,love,Beijing) | 单词之间用空格分隔,一个完整单词常占 1~1.5 token |
| 中文 | 我爱北京 | 3 或 4 (取决于是否把“北京”合并) | 一个汉字通常 1 token,但常见双字词可能合并为 1 token |
结论:
- 英文一个单词平均1~1.5 个 token。
- 中文一个汉字平均1~1.2 个 token。
- 同样意思的一句话,中文 token 数通常比英文少 10%~30%(因为中文更简洁)。
举个例子:
- 英文 “I love you very much” → 可能 5 个 token
- 中文 “我非常爱你” → 可能 4 个 token
但要注意:这不是绝对的,不同模型的分词表会影响结果。你可以用 OpenAI Tokenizer 自己测试。
5. Token 是怎么切出来的?—— 聊聊“分词器”
每个大模型都有一个叫做Tokenizer的组件。它像一把“剪刀”,把文字剪成 token 序列。
常用的剪刀类型:
| 算法 | 使用模型 | 特点 |
|---|---|---|
| BPE(Byte Pair Encoding) | GPT 系列 | 基于频率合并字符对,擅长处理英文 |
| WordPiece | BERT | 类似 BPE,但贪心不同 |
| SentencePiece | Llama, Gemma, 很多中日韩模型 | 直接处理 Unicode,无需空格分词 |
这些算法的目标:在固定词表大小(比如 50K、100K 个 token)的前提下,让每句话切出的 token 尽量少。
比如 “unbelievable” 不常见,拆成un+believe+able比单独存整个词更省词表空间。
🧠 小知识:GPT-4 的词表大小约 100K,包含英文单词、词根、标点、数字、常见中文汉字等。
6. 小白常见疑问(FAQ)
Q1:一个汉字一定是一个 token 吗?
不一定。常见汉字(GB2312 一级字库)基本是一个汉字 1 token。但生僻字(比如“𪚥”四个龙)可能被拆成多个 token(因为字符在 UTF-8 中占 4 个字节,BPE 可能按字节切)。
Q2:标点符号算 token 吗?
算。逗号、句号、感叹号、空格、换行符都算。例如Hello!可能是Hello和!两个 token。
Q3:数字怎么算?
一串连续数字通常会被当作一个 token(如1234567→ 1 token),但也可能拆开,取决于模型。大部分模型会尽量合并数字串。
Q4:为什么同样的文字,不同模型给的 token 数不一样?
因为每个模型的词表大小、分词算法不同。GPT-4 和 Claude 的 tokenizer 就不一样,甚至 GPT-4 的不同版本也可能不同。所以“精确 token 数”只在指定模型上有意义。
Q5:Token 和“词向量”是一回事吗?
绝对不是。
- Token 是文本层面的单位,它是字符串(比如
"爱")。 - 词向量(embedding)是把 token 转成的数字向量,是一串浮点数(比如
[0.12, -0.34, 0.56, ...])。
顺序是这样的:
文字 → 切分成 token → 每个 token 通过词表映射成整数 ID → 整数 ID 查询 embedding 矩阵得到向量 → 输入模型
7. 两个你不问但很重要的问题
7.1 为什么大模型有 token 上限?(比如 128K,而不是无限)
- 技术原因:Transformer 模型的自注意力机制计算量与 token 数的平方成正比(O(n²))。128K token 的注意力矩阵大小是 128K × 128K,存储和计算量已经非常巨大。
- 工程原因:显存有限,模型推理时要缓存所有 token 的中间状态(KV Cache)。token 越多,显存占用越大。
- 未来趋势:模型正在突破这一限制,比如 Mamba、RWKV 等新架构试图实现线性复杂度;Gemini 1.5 已经支持 1M token。
7.2 如何编写“省 token”的 prompt?(省钱技巧)
- 去掉废话:“请帮我写一篇关于……” 可以简化为 “写一篇关于……”
- 压缩指令:用缩写或模板,例如 “用 JSON 输出” 比 “请以 JSON 格式输出结果” 省 token。
- 善用系统提示:把固定的角色说明放在 system 消息里(不计入输入 token?实际会计,但可以复用)。
- 避免重复:不要反复强调同一件事。
- 对中文友好:中文本身就比英文省 token,能写中文就用中文。
- 示例压缩:Few-shot 示例尽量用最简洁的格式。
8. 如何自己算 Token 数?
OpenAI 官方 Tokenizer(免费网页工具):
https://platform.openai.com/tokenizer
输入文字,实时显示 token 数量,还能高亮显示每个 token 的切分方式。编程计算:
- Python:
pip install tiktoken,然后tiktoken.get_encoding("cl100k_base").encode("你的文本") - 其他模型有对应的 tokenizer 库(如 Hugging Face
transformers)
- Python:
9. 一张图总结 Token 全家桶
[原始文本] "我 爱 北京 天安门" ↓ 分词 (Tokenizer) [Token 序列] ["我", "爱", "北京", "天安门"] ← 每个都是一个 token ↓ 映射到 ID [Token ID] [425, 18, 1032, 9876] ↓ Embedding [向量序列] [[0.1, -0.2,...], [0.3, 0.1,...], ...] ← 模型真正处理的东西| 概念 | 解释 |
|---|---|
| Token(词元) | AI 处理文本的最小单位,可以是字、词、词根、标点、数字串。 |
| 上下文长度 | 模型一次能处理的最大 token 数,决定了“记忆容量”。 |
| 分词器(Tokenizer) | 把文字切成 token 的算法(BPE、WordPiece、SentencePiece)。 |
| Token ≠ 字符 | 一个 token 可能对应多个字符(如"world"),也可能是一个字符的一部分(生僻字)。 |
| Token ≠ 词向量 | Token 是字符串,词向量是数字。 |
写在最后
Token 就是 AI 世界的“基本货币”——你用它买记忆力(上下文)、买速度(生成效率)、付账单(API 费用)。
理解 Token,你就迈过了大模型入门的第一个坎。
如果你想知道“怎么计算自己项目的 token 预算”或者“为什么有时候 token 数会超出预期”,欢迎留言。我们下篇可以聊“Token 与 Tokenization 的深层原理”。
喜欢这篇文章的话,点个收藏,下次找得到~ 🚀
