前天翠花刷手机刷到我写AI的文章,凑过来看了一眼,说:"你天天写大模型大模型的,那玩意儿肯定认识汉字吧?不然它怎么看懂我问题的?"

我当时正在吃外卖,放下筷子看着她,说了一句:"它不仅不认识汉字,连字这个概念都没有。"

翠花不服:"怎么可能?我让它写作文,它写出来的字比我还工整。"

我笑了:"你评价一个打字员,是看它字写得好不好看,还是看它懂不懂你在说什么?"

翠花愣了一下。

我说:"走,我当场证明给你看。"


第一轮:AI真的不认识字?

我让翠花亲手做一个实验。

实验1:错别字

她打开AI,输入:「帮我推荐几本好看的树。」

(注意,是「树」,不是「书」。)

AI回复了——推荐的竟然是关于树木和森林的书

翠花说:"你看,它知道我打错字了,帮我纠正了。"

我说:"你再试一个。"

实验2:打乱字序

她输入:「看推书本好帮我」

AI回复:「你的句子有点混乱,想表达什么呢?」

翠花说:"这……人也能看懂啊,不就是『帮我推荐几本书』吗?"

"你说得对,人能猜。但你看AI的回复——它懵了。因为Token序列完全乱了,它读不懂了。"

如果AI真的"认识字",字还是那些字,只是顺序乱了,它应该能理解才对。

人读的是「意思」,AI读的是「Token序列」。顺序一乱,它的序列就断了,理解就崩了。

翠花想了想,说:"那它跟我平时用的输入法联想,有什么区别?"

"问得好,这就是Tokenizer干的事——"


第二轮:用火锅证明给她看

翠花说:"那你说的这个Token,到底是个啥?"

我说:"你涮过火锅吧?"

"废话。"

"想象你有一堆食材,但你不是直接把整块牛肉丢进去,而是——"

"先把牛肉切成片,有些片还剁碎了,有些又整块丢进去?"

"对。Tokenizer干的就是这个活儿。"

我给她画了个简单的道理:

一句话进来 → 切!→ 切成一块一块的 → 每块是一个Token → 送进模型

切的规则是:模型说了算。

有些词经常出现在一起,"苹果""因为""但是"——模型说:别切了,这俩/仨字我打包认识,算一个Token。

有些字很罕见,"𪚥"这种——模型说:我没见过这玩意儿,拆!拆成我能认的碎片,能认多少算多少。

翠花听到这儿,突然说了一句让我意外的话:"那这不就是……识字量有限,但会猜词的意思?"

我差点被嘴里的可乐喷出来。

"对,就是这么回事。Token就是AI的『识字单位』,不是字,不是词,是它自己定义的『一块意思』。"


所以Token到底是什么?

说人话:

Token是大模型理解和生成语言时的最小基本单位。

但你不能把它等同于「一个字」或「一个词」。

举例,同一句话:「我爱吃苹果」,不同模型切出来的Token可能完全不同:

  • 模型A:["我", "爱", "吃", "苹果"] → 4个Token
  • 模型B:["我爱", "吃", "苹果"] → 3个Token
  • 模型C:["我", "爱", "吃", "苹", "果"] → 5个Token

具体怎么切,取决于这个模型用的分词器(Tokenizer)。每个模型的Tokenizer都不一样。

这就导致了一个很现实的问题——


这跟你有啥关系?(重点)

翠花听到这儿,说:"行了行了,它怎么切关我什么事?我又不是搞AI的。"

我说:"关系大了,Token就是大模型收费的基础单位。"

第一,你的上下文长度是用Token算的

你跟AI聊了半天,它突然"失忆"了,忘记你开头说了什么——

不是它故意的,是Token满了

比如GPT-4的128K上下文,不是128K个汉字,是128K个Token。中文的话,大概相当于10~15万字。

超了,模型就只能"忘记"最早的内容。

第二,你花的钱是按Token算的

你问AI一个问题(输入Token),它回答你(输出Token),两边都要钱

输入越长 → 越贵
输出越啰嗦 → 越贵

那些让AI"详细回答""展开讲讲"的,都是在烧钱。

第三,模型生成是一个Token一个Token往外蹦的

很多人以为AI像人一样,想好了一整句话再说出来。

不是的。

它的真实生成过程是:

看了所有已有Token → 预测下一个Token → 把新Token接在后面 → 再预测下一个 → 重复

就像玩接龙:

苹果

每蹦出一个Token,模型都重新算了一遍概率。

所以有时候你会发现AI说着说着"跑偏了"——就是某一个Token预测偏了,后面全跟着歪了。


几个你可能遇到过的问题

Q1:为什么同一段中文,不同模型的Token数不一样?

因为每个模型的分词器不同。有些对中文优化得好(比如通义千问、智谱),一个汉字≈11.5个Token。有些偏英文优化的模型,一个汉字可能占23个Token。中文在AI眼里,天生就比英文"贵"。

Q2:为什么AI有时会输出奇怪的符号或乱码?

可能是生成了一个它词表里有的、但映射到显示层面出了问题的Token。也可能是Token预测时"跑偏"了,生成了一串没意义的碎片。

Q3:为什么AI记不住很长的对话?

因为上下文窗口是Token数限制的,不是字数。你们聊了2000个Token的历史,模型每次只"看得见的"是最近那一段,超出的部分要么被丢掉,要么被压缩成摘要。


记住这三句话就行

1. Token是大模型阅读和写作时的"基本积木",不是字也不是词,是模型自己定义的碎片。

2. 你的输入输出、使用成本、记忆力长度,全由Token数量决定,不是按字数算。

3. 模型每生成一句话,都是一个Token一个Token蹦出来的,不是一次性想好的。

下次再看到有人说"我的上下文是200K",你就知道:

"那不是20万字,而是20万个Token,实际能放进去的中文大概10~15万字左右。"


翠花听完,沉默了半天,说了一句:"那AI是不是比我想象的还要……笨?"

我想了想,说:"不是笨。**它用一种跟人类完全不同的方式,做到了类似的结果。**就像你用筷子吃饭,它用……嗯,它用Token『吃饭』。方式不一样,但都能吃饱。"

"那Token这个东西,到底谁发明的?为什么不用现成的字或词?"

翠花这个问题问到了点子上,下篇文章讲。


虾搞AI实验室·AI原理科普系列
用生活的视角,带你拆解AI的黑盒
一起进步,一起进化 🦐

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐