概念定义
Token是大语言模型处理文本的最小单位,类似于文本的”积木块”。分词(Tokenization)是将连续的文本切分成一个个Token的过程。详细解释
什么是Token?
Token可以理解为模型能够”理解”的文本片段,它可能是:- 一个完整的单词(如”人工智能”)
- 单词的一部分(如”ing”、“pre-”)
- 单个字符(如”的”、“a”)
- 特殊符号(如标点符号、换行符)
- 英文:通常一个Token包含3-4个字符
- 中文:大多数情况下一个汉字对应一个Token
- 标点符号:通常单独作为一个Token
生动比喻把文本想象成一串珠子,Token就是每一颗珠子。不同的分词方法就像用不同的方式来串珠子——有的按颜色分组,有的按大小分组。模型需要先把文本”串”成Token珠子,才能进行处理。
分词算法
常见分词方法- 字符级分词:每个字符一个Token
- 单词级分词:每个单词一个Token
- 子词分词:介于字符和单词之间
算法名称 | 特点 | 应用模型 |
---|---|---|
BPE | 字节对编码,平衡词汇表大小 | GPT系列 |
WordPiece | 基于似然的子词分割 | BERT |
SentencePiece | 语言无关的分词 | T5, LLaMA |
tiktoken | OpenAI优化的BPE实现 | GPT-3.5/4 |
工作原理
分词过程示例
英文示例编码解码流程
Token计算技巧想快速估算Token数量?
- 英文:单词数 × 1.3 ≈ Token数
- 中文:字符数 × 1.2 ≈ Token数
- 代码:字符数 × 0.5 ≈ Token数
实际应用
API调用中的Token
计费机制- 大部分AI API按Token数量计费
- 输入Token + 输出Token = 总消费
- 不同模型的Token价格不同
优化建议
减少Token消耗- 使用简洁明确的提示词
- 避免不必要的格式字符
- 选择合适的模型(mini版本更经济)
- 批量处理相似请求
- 缓存常用的长提示词
- 预处理文本去除冗余内容
技术深入
子词编码原理
BPE算法步骤- 初始化:将文本分解为字符
- 统计频率:计算字符对出现频率
- 合并操作:将最频繁的字符对合并
- 重复迭代:直到达到目标词汇表大小
常见误区
- ❌ Token = 单词
- ❌ 中文1个字 = 1个Token(有例外)
- ❌ 空格不占用Token
- ❌ 所有模型使用相同分词方法
词汇表管理
特殊Token<BOS>
:序列开始标记<EOS>
:序列结束标记<UNK>
:未知Token标记<PAD>
:填充Token
- 较小:表达能力有限,Token序列较长
- 较大:表达丰富,但模型参数增加