LLM Token

在大语言模型(LLM)中,Token(词元/标记) 是模型读取、处理和生成文本的最小基本单位

你可以把它想象成语言模型理解世界的“原子”或“基本构建块”。当我们在聊天框里输入一段话时,模型并不会像人类一样直接把它们当作连贯的句子来读,而是会先通过一个叫作“分词器(Tokenizer)”的工具,把这句话切碎成一个个的 Token,然后再转化成数字(向量)进行计算。

Token 到底多大?

一个 Token 并不一定严格对应一个完整的单词或汉字。它的长短取决于模型使用的分词算法。一个 Token 可以是以下几种形式:

  • 一个完整的词:对于非常常见的词,比如英文的 "apple" 或 "the",通常就是一个 Token。
  • 一个词的一部分(子词,Subword):对于较长或生僻的单词,模型会把它拆开。比如单词 "unbelievable" 可能会被拆成 "un"、"believ" 和 "able" 三个 Token。
  • 单个字符或字母:当遇到完全陌生的词汇、拼写错误或特殊的符号时,模型可能会退化到按单个字母或符号来拆分。

中英文的差异

  • 英文:根据经验法则,1 个 Token 大约相当于 0.75 个英文单词。也就是说,100 个 Token 大概能拼出 75 个单词。
  • 中文:中文字符的处理稍微复杂一些。在早期的模型中,一个汉字往往就是一个 Token。但现在主流的大模型(如基于 BPE 算法的模型)经常在字节层面上进行拆分。常见的词汇(如“中国”、“你好”)可能被合并为 1 个 Token;而一些普通的单个汉字通常对应 1 个 Token;极少数非常生僻的汉字由于字节结构复杂,可能会被拆分成 2 到 3 个 Token。

为什么要用 Token,而不是直接用字母或单词?

这本质上是在计算效率表达能力之间寻找的最佳平衡点:

  1. 如果只用单个字母/字符(Character-level):虽然词表会非常小(比如英文只需几十个字符),但一句话会被切分得非常非常长。这会导致模型很难捕捉句子开头和结尾之间的逻辑联系,且计算成本极高(因为模型计算量与 Token 数量的平方成正比)。
  2. 如果只用完整单词(Word-level):人类语言的词汇量是无穷无尽的(加上各种时态变形、复数、网络新词等)。如果词表太大,模型的内存会撑爆;而且如果遇到词表里没有的生僻词(Out-of-Vocabulary 问题),模型就会直接“宕机”无法理解。
  3. 使用 Token(特别是子词分词):完美解决了上述两个问题。它把常见词当作整体处理(提高效率),遇到生僻词就拆解成认识的子词或字母(解决未知词汇问题),就像我们遇到不认识的英文单词可以通过词根词缀来猜意思一样。

了解了 Token 的概念,也就很容易理解为什么各家大模型 API 都是“按 Token 数量收费”,以及为什么大模型都有“上下文长度限制(Context Window)”了——因为它们衡量的都是模型一次性最多能处理多少个“基本单位”。

posted @ 2026-03-16 11:36  光風霽月  阅读(1)  评论(0)    收藏  举报