第 33 篇 · LLM基础

词表:AI认识多少个字

词表大小决定了AI的词汇量,也决定了它理解世界的"粒度"

小时候学汉字,你用的是《新华字典》。字典里收录了多少个字,你就有可能认识多少个字。当然,字典里的字你不一定都认识,但没有字典里没有的字,你肯定不认识。

AI也一样。在处理文字之前,它有一本自己的"字典"——词表(Vocabulary)。词表里收录了多少个Token,AI就能"认识"多少个Token。

那AI的词表有多大?几千个?几万个?还是几百万个?这些Token又是怎么被选进词表的?词表大小对AI的能力有什么影响?

今天我们就来聊聊这个看似简单、实则大有讲究的话题。

词表到底是什么

1
词表:AI的「身份证号码本」

词表(Vocabulary)是一个有序的Token列表,每个Token对应一个唯一的整数ID。

就像每个人都有身份证号码,词表里的每个Token都有一个固定的编号。"hello"可能是编号15496,"world"可能是编号995,"你好"可能是编号77823。

AI处理文字时,第一步就是把文本转化为这些数字编号,然后才能进行数学运算。

词表的工作方式

📝 原始文本

"你好,世界!"

🔍 查询词表,得到ID

你好
→ 77823
→ 16
世界
→ 20320
→ 8

🔢 数字序列(AI能处理的格式)

[77823, 16, 20320, 8]

💡 关键点:词表本质上是一个"文本到数字"的映射表。AI看不懂文字,但能处理数字。词表就是这个翻译本。

不同模型的词表大小

2
不同模型的词表大小

各大主流模型的词表大小差异相当大,从几万到几十万不等:

主流模型的词表大小对比
🤖

GPT-4 / GPT-3.5

OpenAI · cl100k_base

100K

个Token

🧠

Claude 3

Anthropic

~100K

个Token

🦙

LLaMA 3

Meta

128K

个Token

🌐

LLaMA 2

Meta(上一代)

32K

个Token

💬

BERT(早期模型)

Google

30K

个Token

📊 趋势:越新的模型词表越大。GPT-2(50K)→ GPT-3/4(100K)→ LLaMA 3(128K)。更大的词表意味着更少的Token数量、更快的处理速度,但也需要更多内存。

词表是怎么建立的

3
词表是怎么建立的?

词表不是手工编写的,而是通过统计学习自动生成的。最常用的方法叫做BPE(Byte Pair Encoding,字节对编码)

原理很简单:反复找出训练数据中最频繁出现的相邻字符对,把它们合并成一个新Token,直到词表达到预设大小。

BPE词表构建过程(简化版)

第一步:从单个字符开始

helloworld(初始词表)

第二步:合并最高频的字符对

helloworld"h"+"e" → "he"

第三步:继续合并,直到词表够大

helloworld逐步合并常见片段

最终结果:词表包含常见词和片段

helloworldtheisinguntionab你好... 共100K个Token
生活类比📖

像编一本定制词典

BPE就像编词典的过程:先把所有常用词都收录进来,再把剩下不常见的词拆成片段,实在没有的就拆成单个字母。这样任何文字都能用词表中的Token来表示,不会出现"认不出来"的情况。
词表里有什么

4
词表里有什么?

一个典型的100K词表,大概是这样的构成:

词表的四大构成部分
📝

完整单词

高频出现的完整词汇

thehelloAI机器学习

约占 20%

🧩

单词片段

常见前缀、后缀、词根

ingun--tionpre-

约占 40%

🔤

单个字符

字母、汉字、标点等基础字符

aα

约占 30%

🎨

特殊控制符

开始/结束标记等控制符

<|endoftext|><|im_start|><pad>

约占 10%

🌍 中文和英文的差异

英文词表中,一个Token通常对应4个字符左右(比如"hello"就是一个Token)。但中文比较特殊——每个汉字通常占1-2个Token,词语可能是2-4个Token。

这也是为什么,用主要为英文设计的模型处理中文时,Token消耗往往比英文多得多。同样的意思,中文版本可能需要1.5倍到2倍的Token。

词表大小的影响

5
词表大小:一把双刃剑

词表不是越大越好,也不是越小越好,它有明显的权衡关系:

✅ 词表大的好处

Token更少,处理速度更快

词表越大,常用词都能作为完整Token存在,不需要拆分成片段。比如"机器学习"能作为一个Token,而不是"机"+"器"+"学"+"习"四个Token。相同内容所需Token数量少,模型处理速度更快,同等上下文窗口能容纳更多信息。
❌ 词表大的代价💾

模型更大,内存占用更高

每个Token都需要一个对应的嵌入向量(通常是几千维的向量)。100K词表比32K词表多68K个嵌入向量,这是巨大的内存开销。以GPT-4为例,仅词表的嵌入层就可能需要几十GB的参数。
❌ 词表大的另一个代价💰

训练和推理成本更高

模型最后需要从词表中预测下一个Token,词表越大,这个预测任务(softmax计算)就越耗时。词表从32K扩大到128K,最后一层的计算量大约增加4倍。
词表大小的权衡

📚

词表太小

❌ 效率低

每个词都要拆分

⚖️

最优区间

30K – 130K

📖

词表太大

❌ 成本高

内存爆炸

最优区间
1K
1M

⚖️ 工程师的选择

目前业界的共识是:30K-130K是词表大小的最优区间。太小会导致Token数量爆炸,影响效率;太大会导致参数爆炸,影响训练和推理成本。LLaMA 3选择128K就是在这个权衡上做出的工程决策。

词表与多语言支持

6
词表如何支持多语言?

全球有数千种语言,但AI的词表只有几万到几十万个Token,怎么做到支持多语言的?

答案是按数据比例分配。训练词表时,如果训练数据里80%是英文,那词表里绝大多数Token都会是英文词和片段;如果有10%是中文,词表里会有相应比例的中文字和词。

多语言词表的Token分配(示意)
🇺🇸英文
60%
🇨🇳中文
15%
🇪🇺德/法/西
10%
🇯🇵日/韩
8%
🌏其他语言
7%

🤔 这产生了什么问题?

由于训练数据英文占比高,英文词表更"完整"。英文单词大多有专属Token,而中文的词语可能要拆成多个单字Token。这意味着:同样的语义,中文消耗的Token数通常是英文的1.5-3倍。这就是为什么使用这类模型时,中文prompt通常更贵。

总结

7
总结

🎓 一句话总结

  • 词表是什么:Token → 数字ID的映射表,AI的"字典"
  • 如何构建:BPE算法,反复合并高频字符对,统计学习而非手工编写
  • 主流大小:30K-130K,越新的模型词表越大(LLaMA 3达128K)
  • 大词表优点:Token数少、速度快;缺点:模型更大、成本更高
  • 中文问题:因训练数据英文为主,中文Token效率通常低于英文

下篇预告

第34篇:大语言模型:为什么GPT这么厉害?

我们了解了Token、分词、词表,这些只是原材料。那这些组件如何组成一个完整的大语言模型?GPT-4凭什么能写代码、做数学题、聊哲学?下一篇,我们来揭开大语言模型真正的秘密。

✏️ 手绘图解 · AI Catch 出品

第 33 篇 / 共 84 篇