LLM context window and tokens

大模型的上下文窗口(context window)指模型在生成响应时可以参考的所有文本,包括响应本身。它以词元(tokens)为单位,词元不是单词,也不是字符,而是模型分词器生成的单元。通过下方示例查看输入的分词与对应的ID:

Loading…
Loading tokenizer…

下面是不同模型采用分词库的一些指标:

指标GPT-4oGLM-5.1DeepSeek-V4Kimi-K2.6
词表大小200k155k128k164k
英文占比67.2%64.8%55.8%49.0%
中文占比3.8%18.5%27.6%42.5%
覆盖汉字数2539422352584933
3字词8265893716818252
4字词377192523579895
5字+词3994143432034
平均汉字数/token1.922.202.222.58
平均英文字母数/token5.475.715.665.48

值得注意的是,GPT-4o 的中文多字词质量很差,充斥大量网络垃圾文本(如赌博、色情网站等词汇)。

经验法则:

对于英文文本,一个 token 通常对应大约 4-5 个字符 ≈ 3/4 个单词,因此 100 个 tokens 相当于 75 个单词。

对于中文文本,一个 token 通常对应大约两个汉字,100 个 tokens 大约200多汉字。

自2023年来,模型的上下文窗口经历了从数千 → 数十万 → 百万 tokens 的演变,其中 Gemini 3 Pro,Llama 4 Scout 甚至达到了千万层级。目前先进大模型的上下文窗口数在 1M tokens左右,如果按照经验法则的话,大概相当于:

  • 75 万单词或 200 万汉字
  • 150 篇论文(5000单词/篇)
  • 10本+ 书(20万字/本)

更大的上下文窗口允许模型处理更复杂、更长的提示,但上下文并非越多越好。一方面,研究发现模型的“宣称的窗口大小”和其“有效利用能力”之间存在差距 —— 当相关信息出现在输入的开头或结尾时,模型表现最佳,而位于中间的信息则往往利用不足(Lost in the Middle)。另一方面,随着上下文中词元数量增加,模型的准确率和召回率会逐步下降,即所谓的 Context Rot 现象。

Git Hooks

CommonJS vs ES Modules