AI TOOLS

EP09. "Token 是怎么切出来的:从字符到向量空间"

首页 › AI 工具 › Claude · AI Concepts · EP09
约 6 分钟· #EP09#Claude#AI Concepts
🔒 登录后可标记已读
  • 同样字数长度的一句话跟一个网址(URL),丢给 AI 烧掉的 token 数完全不一样——这背后是 tokenizer(分词器)怎么切字的问题
  • 官方标注 15 分钟,拆两件事:文字怎么变成模型看得懂的 token(tokenization),以及 token 怎么变成带"意思"的数字(embeddings)
  • 前置知识:不需要,建议搭配 EP05《答案从哪来》一起看——那篇讲 token 怎么被"吃掉"(上下文窗口、成本),这篇讲 token 本身是怎么切出来的
  • 核心方法叫 Byte-Pair Encoding(BPE):从单个字节开始,不断把最常见的相邻组合合并成新 token——常见的字/词自然会被合并成一个 token,生僻字/词则被拆得比较碎
  • 学完能大致预估一段文字会被切成几个 token,并且能解释为什么长得差不多长的一句话跟一个 URL,消耗的 token 数完全不一样

重点内容


文字变成 token 的四个阶段

以 "Hi!" 为例,模型处理文字要经过四层转换:

  1. 字符串:你眼睛看到的 "Hi!"
  2. 字符列表:拆成单个字符 ['H', 'i', '!']
  3. 字符转数字:每个字符对应一个 ASCII 码 [72, 105, 33]
  4. token:从一个训练时学出来的词表里,每个"文字片段"对应一个数字 ID——「带着数字 ID 的一段文字片段,就叫一个 token」

三种切法的取舍:字符级 / 词级 / 子词级

用「The tokenizer rocks.」这句话示范三种切法:

切法结果token 数问题
字符级[T][h][e][ ][t][o]... 一个字母一个 token20 个处理起来又慢又贵
词级[The][tokenizer???][rocks][.] 一个词一个 token4 个遇到生僻词/专业术语,词表会大到不现实
子词级(sweet spot)[The][token][izer][rocks][.]5 个兼顾效率,不用堆一个巨大到覆盖所有专业词汇的词表

目前主流 tokenizer 用的都是子词级,也就是下面讲的 BPE。


Byte-Pair Encoding 具体怎么运作

  1. 从单个字节开始,保证每个字符都被覆盖到
  2. 扫描训练文本,找出出现频率最高的相邻组合
  3. 把这个组合合并成一个新 token,加进词表
  4. 重复以上步骤,直到词表大小达到设定目标
  5. 结果:常见的词自然会被合并成一个 token,生僻词因为出现频率不够高、合并不了,会被拆得比较碎

为什么 URL 比句子贵

URL 里一大堆特殊字符和不像自然语言的片段(比如随机的路径、参数字串),BPE 训练时这些组合出现频率不够高,合并不起来,结果只能被迫一个字符一个字符地切。所以字数看起来差不多的一段 URL,实际消耗的 token 数会明显比一句正常的话要多——这也是 EP05 提到「system prompt/搜索结果吃掉的 token 比想象中多」背后的部分原因。


Embeddings:token 怎么变成带"意思"的数字

Token 切出来之后,每个 token 会被赋予一组数字(多维度的"分数"),让模型能识别语义上的关联。以 "cat" 这个词示范维度怎么累加:

维度数数值示例代表的意思
2 维[8.0, 3.5]可爱程度、体型大小
3 维[8.0, 3.5, 1.0]再加上"危险程度"
4,096 维(真实模型常用规模)[0.031, -0.184, 0.772, …, -0.094]每一维具体代表什么,没有人类可读的标签

📌 关键认知:单一维度捕捉到的意义没有标注名字——像"可爱程度"这种概念,很可能确实藏在几千维里的某个维度组合里,只是没有被明确标成一根轴。意思相近的 token,会在这个几千维的空间里,落在彼此靠近的位置——这就是 embedding 的核心作用。


学完你会

  • ✅ 能解释为什么 URL 比字数差不多的一句话消耗更多 token
  • ✅ 能大致预估一段文字会被切成几个 token
  • ✅ 懂为什么模型训练好之后会"锁死"在特定的 tokenizer 上,以及为什么生僻字词切得比较碎
  • ✅ 能用「分数(score)」「维度(dimension)」「距离相近(nearby)」这几个词,说清楚什么是 embedding

Sources

官方文档:

  1. Tokens: Why Some Inputs Cost More Than Others — https://academy.claude.com/tutorials/tokens-and-embeddings