Token与Tokenizer是什么?分词、BPE与上下文长度
深入解析大模型中的Token与Tokenizer工作机制,通过BPE分词示例说明文字如何转化为数字编号,澄清上下文长度与字数的区别,帮助用户准确评估模型处理长文本的实际能力。
看到模型宣传着几十万的上下文长度,很多人会下意识地把这个数字等同于“能放几十万个汉字”。然而,当真正尝试把长篇文档塞进对话框时,往往会发现预估并不靠谱:同样篇幅的文字,换一种语言、换一个分词器,切出来的片段数量可能天差地别。
理解 Token 的核心价值,不在于背诵一个固定的换算比例,而在于看清文字是如何变成模型能够处理的数字序列的。Token、Token ID 和 Tokenizer 各司其职,如果把它们混为一谈,认为“一个字对应一个数字”,那么在估算长度时就容易陷入误区。
模型接收的是编号,Token 并不等于一个汉字
在日常对话界面中,大模型看起来像是在直接阅读我们输入的句子。但要理解其背后的处理逻辑,必须关注文字进入模型之前的关键一步:Tokenizer 将文本切成若干片段,再将这些片段映射为编号。

Tokenizer编码与解码之间的编号传递示意
例如,一句中文在教学示意中可能被切分为“马克”“喜欢”“人工智能”“吗”等片段。每个片段就是一个 Token,对应的数字是 Token ID,而负责切分和映射的组件就是 Tokenizer。这里的片段既可能是单字,也可能是多个字组成的组合,因此不能把 Token 简单固定理解为汉字、单词或标点中的某一种。
这也解释了为什么要严格区分内容与编号。词表相当于保存了片段及其编号对应关系的数据库,数字仅用来标识项目,本身并不承载中文语义。教学图中的编号只是为了帮助理解流程,不能将其视为某个真实模型的编码表;更不能因为两个编号接近,就认定它们对应的文字意思相近。
从用户视角来看,这种区分虽然不改变输入方式,却彻底改变了判断长度的逻辑。你肉眼看到的字数,和分词器实际统计出的 Token 数,是两种完全不同的计量结果。
编码与解码:文字往返有一条转换链
Tokenizer 的工作远不止是把句子拆开。在编码阶段,文本经过切分与词表映射,形成 Token ID 序列并送往模型;当模型生成后续编号后,还需要通过解码过程,把这些数字还原成可显示的文字。
这条链路可以简化为“文字—片段—编号—模型—编号—文字”。它有助于解释一个容易被忽略的问题:模型输出到界面上的一句话,已经经历了从数字表示回到文字表示的转换。因此,不能把屏幕上出现的一个完整词汇,当成模型内部只处理了一个单位。
同样,分词器处理文字与模型继续生成内容,也不是同一项工作。前者解决的是表示方式问题,后者则是在已有输入的基础上继续产生输出;把输入转换成编号,并不意味着分词器已经理解并回答了问题。
如果要比较两个模型能容纳多少材料,首先要确认它们采用怎样的长度单位。仅仅对比界面里一段话占了几行,或者主观认为“这一页中文应该只算几百个 Token”,都不足以得出可靠结论。
BPE 把常见组合留下来,但训练与使用要分开
为什么有些字被单独切开,有些字又能合成一个 Token?这通常归功于 BPE(Byte Pair Encoding)算法。其核心思路是从训练材料里的相邻组合入手,把经常共同出现的片段逐步合并,并保存这些合并规则。

BPE训练材料中的相邻片段合并示例
在简化的中文示例中,如果训练材料反复出现“智能”“人工”等组合,算法会先统计相邻片段的出现情况,选定要合并的一对,再把新的组合加入后续处理;通过继续统计和合并,就能逐步得到不同长度的片段。词表与合并规则因此不再只包含最初的单字。
关键在于,这不是先拿一本汉语词典,按人类理解的词义逐个找词。教学示例展示的是从材料中学习组合规律的过程。“经常相邻出现”是理解这种合并方式的入口,但不能据此断言语义接近的词必然被合并,或者任何看起来完整的中文词都只占一个 Token。
还要把“训练分词器”和“使用分词器编码新文本”分开。前一阶段形成词表与合并规则,后一阶段使用已经形成的规则处理新的输入。给模型发一条消息,并不意味着它要为这条消息从头训练一个新的分词器。
教学图用少量中文材料和演示编号,让合并过程变得直观易懂。但实际分词器的初始表示、词表和具体实现可能更复杂,因此这些示意适合解释思路,不适合直接当作生产环境的完整实现代码。
上下文长度要按 Token 估计,别套固定字数公式
知道了文字如何切分,再回来看上下文长度就容易理解了:以 Token 标注的容量,不能直接等同于相同数量的汉字。单字可以是一个片段,多个字也可能合并成一个片段,不同内容的切分结果自然会有差别。

Token数量与汉字数量并不相等
所以,“四十万 Token 不等于四十万字”表达的是单位区别,并不提供适用于所有模型的固定换算表。它也不代表任何被提到的产品,在任何版本或使用入口都必然具有相同容量。具体支持范围仍要看实际模型与服务的说明。
对于准备长文档的人,更值得先核对的是目标分词器及其统计结果,而不是拿一个大致比例包办所有文本。中文文章、英文段落、代码和混合内容的结构不同,用统一比例估计很容易产生偏差。粗略估计可以帮助规划,但不要把它写成精确承诺。
理解 Token 的价值,最终落在减少这种误判上:Token 是被切出来的处理单位,Token ID 是对应编号,Tokenizer 负责文字与编号之间的转换;BPE 则提供了一种形成片段与合并规则的思路。把这几层分清楚,再面对上下文长度,就不必靠“一个字算几个 Token”的口诀硬猜了。
火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。















