屏幕上的代码流

Tokenizer 工作原理:为什么中文更费 Token

用过大模型 API 的人都知道按 Token 计费,但很少有人深究:Token 到底是怎么从一段文字里”切”出来的?理解这一点,你就能解释很多奇怪现象——比如为什么中文成本更高、为什么模型数不清单词里有几个字母。

BPE 一分钟入门

主流模型几乎都用 BPE(字节对编码)的变体做分词。它的思路很朴素:先从字符开始,统计语料里哪两个符号最常相邻出现,就把它们合并成一个新符号,反复迭代,直到词表达到预定大小(常见的是十万个左右)。最终每个 Token 是一个高频出现的字节片段——可能是完整的单词、词根,也可能只是单词中间的一段。

为什么中文”更贵”

问题出在训练语料的构成。如果英文语料占大头,词表里的合并规则就会偏向英文模式:常见英文单词一两个 Token 就能表示;而中文字符在词表里往往以单字甚至字节碎片的形式存在。同样表达”人工智能”这五个字,英文 “AI” 只要一个 Token,中文却可能要花掉五个甚至更多。这就是同样内容中文输入成本更高的根本原因——不是模型歧视中文,而是分词器见得少。

好消息是,近两年国产模型普遍加大了中文语料占比,词表对中文的压缩率明显改善,同样一段话的 Token 数可以比早期模型少三分之一以上。

Token 边界如何捉弄模型

有名的”strawberry 里有几个 r”问题,本质也是 Token 化的锅:模型看到的不是字母序列,而是几个大块的编号,字母级别的细节在分词时就被折叠掉了。让模型做拼写类任务,它其实是在”背”而不是在”看”。

实用建议:压缩你的账单

既然 Token 就是钱,写提示词时可以做三件事:删掉礼貌用语和重复的背景描述;把长文档改成要点式;需要模型输出结构化结果时,用紧凑的格式约定而不是大段说明。同一个任务,成熟的提示词工程师能把 Token 消耗压到新手的六成——这是纯粹的成本工程。


延伸阅读:大模型 API 价格战:一百万 Token 到底值多少钱 · 消费级 GPU 跑大模型:RTX 4090 本地部署实战

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部