Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 人工智能 / Artificial Intelligence

大语言模型 / Large Language Models

1. LLM 前置知识学习路线 / A Prerequisite Learning Path for Large Language Models

2. 神经网络基础 - 从零理解 AI 的"计算单元" / Neural Network Fundamentals from Artificial Neurons

3. Token 与上下文窗口 - LLM 的计费与记忆单位 / Tokens and Context Windows as the Units of LLM Cost and Memory

4. 解码策略 - 控制 LLM 输出的艺术 / Decoding Strategies for Controlling LLM Output

5. 消息角色 - 构建 Agent 对话的基础 / Message Roles as the Foundation of Agent Conversations

6. 流式输出 - 实时交互的体验优化 / Streaming Output for Responsive Interaction

7. Prompt 工程基础 - 与 LLM 高效对话的技巧 / Prompt Engineering Fundamentals for Effective LLM Interaction

8. LLM 进化史 - 从词向量到 Transformer / The Evolution of LLMs from Word Embeddings to Transformers

9. Transformer 手动计算:从 Attention 到 Encoder-Decoder 完整数据流

10. Transformer 核心原理 - 现代 LLM 的基石 / Transformer Fundamentals Behind Modern LLMs

11. Decoder-Only LLM 深度解析:为什么扔掉 Encoder,以及 KV Cache 如何工作

12. 训练 vs 推理:同一个 Transformer,两条完全不同的执行路径

13. Transformer 训练阶段计算详解 - 手算每一行矩阵 / Transformer Training Computation Matrix by Matrix

14. Transformer 推理阶段详解 — 模型如何"思考"并生成回答 / Transformer Inference and Autoregressive Generation

15. 训练基础扫盲 - 理解 Fine-tune 在做什么 / A Training Primer for Understanding Fine-Tuning

16. LLM 预训练全景:数据管道、Scaling Laws 与训练稳定性

17. 训练基础设施 - 从单卡到千卡集群 / Training Infrastructure from One GPU to Thousand-GPU Clusters

18. Post-Training Pipeline - 从 Base Model 到可用助手 / The Post-Training Pipeline from Base Model to Assistant

19. SFT 深度解析:从 Base Model 到指令跟随——后训练第一步 / SFT Deep Dive: Teaching Base Models to Follow Instructions

20. RLHF 深度解析:从 Reward Model 到 PPO 的完整对齐流程

21. DPO 与对齐方法:从 RLHF 复杂度到直接偏好优化

22. 研究视角:DL/RL 理论到 LLM 训练的完整映射

本页目录

Token 与上下文窗口 - LLM 的计费与记忆单位 / Tokens and Context Windows as the Units of LLM Cost and Memory ​

📅 创建时间:2026-04-28 🏷️ 标签:#Token #上下文窗口 #基础概念 📚 前置知识:[[01 - 神经网络基础]]


📋 本章目标 ​

  • 理解什么是 Token(词元)
  • 掌握中英文 Token 的差异
  • 理解上下文窗口的概念和限制
  • 了解 Token 计算的工具和方法
  • 理解为什么需要记忆管理和 RAG

第1部分:什么是 Token? ​

1.1 Token 的基本概念 ​

Token = 文本处理的最小单位

LLM 不能直接处理原始文本,而是将文本转换成 Token(词元)来进行处理。

形象类比:

人类阅读:
  "你好" → 直接理解意思

LLM 处理:
  "你好" → [你, 好] → Token 化 → [100, 200] → 理解
1
2
3
4
5

1.2 Token 不是简单的"字"或"词" ​

常见误解:Token = 一个汉字 / Token = 一个英文单词

实际情况:

  • 英文:1 Token ≈ 0.75 个单词(平均)
  • 中文:1 Token ≈ 0.5-1.5 个汉字
  • 标点符号、空格也是 Token
  • 常见词组可能被合并为一个 Token

1.3 Token 切分规则 ​

英文 Token 规则:

原文:Hello, world!
Token化:[Hello] [,] [world] [!]

原文:artificial
Token化:[ artific] [ial]  ← 根据训练语料决定

原文:tokenization
Token化:[token] [ization]  ← 常用词根可能被分开
1
2
3
4
5
6
7
8

中文 Token 规则:

原文:今天天气很好
Token化:[今天] [天气] [很好]

原文:人工智能
Token化:[人工] [智能]  或  [人工智能]  ← 根据常见程度决定

原文:我爱你中国
Token化:[我] [爱] [你] [中国]  ← 单字可能被分开
1
2
3
4
5
6
7
8

第2部分:中英文 Token 差异详解 ​

2.1 为什么中文 Token 更多? ​

根本原因:Tokenizer 的训练语料以英文为主

具体差异:

文本类型英文字符数Token 数比例
英文句子100 chars~25 tokens1:4
中文字符100 chars~100 tokens1:1
代码100 chars~30 tokens1:3.3

2.2 具体数值示例 ​

英文示例 ​

原文:

"The artificial intelligence revolution is transforming how we work and live."
1

逐词 Token 化:

"The"           → Token 1
" artificial"   → Token 2
" intelligence" → Token 3
" revolution"   → Token 4
" is"           → Token 5
" transforming" → Token 6
" how"          → Token 7
" we"           → Token 8
" work"         → Token 9
" and"          → Token 10
" live"         → Token 11
"."             → Token 12
1
2
3
4
5
6
7
8
9
10
11
12

统计:32 个字符 → 12 个 Token → 比例约 2.7:1

中文示例 ​

原文:

"人工智能正在改变我们的生活和工作方式。"
1

逐字/词 Token 化:

"人工"     → Token 1
"智能"     → Token 2
"正在"     → Token 3
"改变"     → Token 4
"我们"     → Token 5
"的"       → Token 6
"生活"     → Token 7
"和"       → Token 8
"工作"     → Token 9
"方式"     → Token 10
"。"       → Token 11
1
2
3
4
5
6
7
8
9
10
11

统计:18 个字符 → 11 个 Token → 比例约 1.6:1

2.3 常见对比 ​

句子英文 Token 数中文 Token 数
你好-2-3
Hello1-
今天天气很好-5-6
It's a beautiful day5-
我爱机器学习-5-6
I love machine learning4-

2.4 Token 数量估算经验法则 ​

英文:1 Token ≈ 4 个字符 ≈ 0.75 个单词

中文:1 Token ≈ 1-2 个汉字

代码:1 Token ≈ 3-4 个字符
1
2
3
4
5

快速估算方法:

  • 英文单词数 ÷ 0.75 = Token 数
  • 中文字数 ÷ 1.5 = Token 数(保守估计)

第3部分:上下文窗口 ​

3.1 什么是上下文窗口? ​

上下文窗口 = 模型一次能处理的 Token 总数

┌────────────────────────────────────────────────────────────┐
│                      上下文窗口                              │
│  ┌────────────────────────────────────────────────────┐   │
│  │  System │ User │ Assistant │ User │ Assistant │   │   │
│  │  (tokens) (tokens) (tokens) (tokens) (tokens)    │   │
│  └────────────────────────────────────────────────────┘   │
│  ←──────────── 最大 Token 数(上下文窗口大小)─────────────→│
│                                                             │
│  超过这个限制的内容会被"遗忘"                                  │
└────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10

3.2 历代模型的上下文窗口 ​

模型发布时间上下文窗口约合中文字数
GPT-320204,097~3,000 字
GPT-3.520224,097-16K~12,000 字
GPT-420238K / 32K~24,000 字
Claude 22023100K~75,000 字
Claude 32024200K~150,000 字
Gemini 1.520241M~750,000 字
Claude 3.52024200K~150,000 字

3.3 为什么上下文窗口有限制? ​

三大限制因素:

┌─────────────────────────────────────────────────────────────┐
│                      限制因素                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 计算成本(Quadratic Complexity)                         │
│     ┌─────────────────────────────────────┐                 │
│     │  Self-Attention 计算量:O(n²)       │                 │
│     │  4096 tokens → 16M 计算量            │                 │
│     │  8192 tokens → 67M 计算量(4倍!)   │                 │
│     └─────────────────────────────────────┘                 │
│                                                             │
│  2. 内存限制                                                │
│     ┌─────────────────────────────────────┐                 │
│     │  每个 Token 需要存储注意力权重        │                 │
│     │  4K 上下文需要大量 GPU 显存          │                 │
│     └─────────────────────────────────────┘                 │
│                                                             │
│  3. 通信带宽                                                │
│     ┌─────────────────────────────────────┐                 │
│     │  分布式训练/推理时,Token 越多       │                 │
│     │  跨 GPU 通信量越大                   │                 │
│     └─────────────────────────────────────┘                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

3.4 上下文窗口的实际影响 ​

场景1:短对话

用户:什么是人工智能?
助手:人工智能是...

Token 数:~50 ✓ 轻松容纳
1
2
3
4

场景2:长文档摘要

用户:请总结以下文章(5000字)...
      [文章内容...]

Token 数:~7000 ✓ 早期模型可能超出
1
2
3
4

场景3:代码理解

用户:请解释这个代码文件(10000行)...

Token 数:~15000 ⚠️ 需要 32K 以上模型
1
2
3

场景4:多文档对比

用户:对比这5篇论文的异同...

Token 数:~50000 ⚠️ 需要 100K+ 模型
1
2
3

第4部分:Token 计算工具 ​

4.1 OpenAI 的 Token 计算工具 ​

tiktoken(Python 库):

python
import tiktoken

# 使用 cl100k_base 编码器(GPT-4/GPT-3.5 使用)
enc = tiktoken.get_encoding("cl100k_base")

# 计算英文 Token 数
text = "Hello, world!"
tokens = enc.encode(text)
print(len(tokens))  # 输出: 4

# 计算中文 Token 数
text_cn = "你好,世界!"
tokens_cn = enc.encode(text_cn)
print(len(tokens_cn))  # 输出: 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14

4.2 在线工具 ​

工具链接特点
OpenAI Tokenizerplatform.openai.com/tokenizer官方工具
Tokenizer by Anthropicanthropic.comClaude 用
Tiktokenizertiktokenizer.vercel.app可视化界面

4.3 常见 Token 数估算 ​

内容类型字数/词数约 Token 数
短邮件50 字/词~75
段落150 字/词~200
一页 A4 纸500 字/词~700
短篇小说5,000 字/词~6,500
技术文档10,000 字/词~13,000
一本书80,000 字/词~100,000

第5部分:Token 与成本的关系 ​

5.1 OpenAI API 定价(示例) ​

模型输入价格输出价格单位
GPT-4o-mini$0.15$0.60每 1M tokens
GPT-4o$2.50$10.00每 1M tokens
GPT-3.5-turbo$0.50$1.50每 1M tokens

5.2 成本计算示例 ​

场景:一次典型对话

用户输入:"请解释什么是机器学习"(约 15 字)
→ Token 数:~20

助手输出:"机器学习是..."(约 200 字)
→ Token 数:~250

总 Token 数:20 + 250 = 270
1
2
3
4
5
6
7

使用 GPT-4o-mini 的成本:

输入成本:270 / 1,000,000 × $0.15 = $0.0000405
输出成本:270 / 1,000,000 × $0.60 = $0.000162
总成本:$0.0002025 ≈ 0.02 分人民币
1
2
3

5.3 优化 Token 使用的技巧 ​

1. 精简 Prompt

❌ 不好:请帮我写一段关于人工智能的详细介绍,包括它的定义、发展历史、
        主要应用领域,以及未来的发展趋势。

✅ 好:请介绍人工智能的定义和主要应用。
1
2
3
4

2. 利用 Few-shot 而非长说明

❌ 不好:现在我要你扮演一个翻译官,你需要把用户说的中文翻译成英文,
        翻译要准确、通顺,符合英语习惯...

✅ 好:翻译成英文:
  中文:我爱你 → English: I love you
  中文:今天天气真好 → English: The weather is nice today.
  中文:学习很有趣
1
2
3
4
5
6
7

3. 摘要长文本

如果要处理很长的内容,先摘要再提问
1

第6部分:上下文窗口与记忆管理 ​

6.1 超出上下文会发生什么? ​

超出限制:

┌─────────────────────────────────────────────────────────────┐
│  上下文窗口                                                  │
│  ┌───────────────────────────────────────────┐              │
│  │ [System] [User1] [Assistant1] [User2]    │ ← 最新消息     │
│  └───────────────────────────────────────────┘              │
│                        ↓                                     │
│                 被"截断"(Truncate)                          │
│                        ↓                                     │
│  ┌───────────────────────────────────────────┐              │
│  │ [User1] [Assistant1] [User2]              │ ← 丢失旧消息   │
│  └───────────────────────────────────────────┘              │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12

早期对话被遗忘:

用户:你还记得我们最开始讨论的话题吗?
助手:抱歉,我已经不记得了,因为上下文窗口有限。
1
2

6.2 为什么需要 RAG? ​

RAG = Retrieval-Augmented Generation(检索增强生成)

┌─────────────────────────────────────────────────────────────┐
│                      RAG 工作流程                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 文档处理                                                │
│     ┌─────────────────────────────────────┐                 │
│     │  长文档 ──→ 分块 ──→ 向量化 ──→ 存储 │                 │
│     └─────────────────────────────────────┘                 │
│                                                             │
│  2. 查询时                                                  │
│     ┌─────────────────────────────────────┐                 │
│     │  用户问题 ──→ 检索相关片段 ──→ 加入上下文 │             │
│     └─────────────────────────────────────┘                 │
│                                                             │
│  3. 生成时                                                  │
│     ┌─────────────────────────────────────┐                 │
│     │  问题 + 相关片段 ──→ LLM ──→ 答案   │                 │
│     └─────────────────────────────────────┘                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

6.3 记忆管理策略 ​

按场景选择策略:

场景策略说明
短对话(<4K tokens)无需特殊处理直接使用完整上下文
中等对话(4K-32K)摘要压缩定期摘要历史对话
长文档(>32K)RAG检索 + 生成
超长文档(>100K)分层检索先摘要再细查

核心总结 ​

总结1:Token 是 LLM 的基本处理单位 ​

Token ≠ 字 ≠ 词

英文:1 Token ≈ 4 字符 ≈ 0.75 单词
中文:1 Token ≈ 1-2 汉字
1
2
3
4

总结2:上下文窗口是硬限制 ​

上下文窗口 = 输入 + 输出 的最大 Token 数
超过 → 截断 → 丢失信息
1
2

总结3:Token 数量直接影响成本和性能 ​

Token 数 ↓ → 成本 ↓ + 延迟 ↓
但过于精简可能丢失重要信息
1
2

总结4:记忆管理的必要性 ​

短上下文 ← 直接对话
中上下文 ← 对话摘要
长文档 ← RAG 检索
超长文档 ← 分层处理
1
2
3
4

章节测试 ​

测试1:Token 估算 ​

估算这句话的 Token 数:"The quick brown fox jumps over the lazy dog." (提示:约 9 个单词)

测试2:中文 Token ​

这句话大约有多少个 Token?"人工智能将使世界变得更美好。" (提示:约 12-14 个汉字)

测试3:上下文限制 ​

如果模型上下文窗口是 4K tokens,用户的对话已经占用了 3500 tokens,那么助手最多还能生成多少 Token 的回复?

测试4:成本计算 ​

使用 GPT-4o-mini 处理一次请求,输入 1000 tokens,输出 500 tokens。 如果输入价格 $0.15/M,输出价格 $0.60/M,成本是多少?

测试5:RAG 必要性 ​

什么时候需要使用 RAG 而不是直接把所有文档塞进上下文?


参考答案 ​

测试1答案 ​

估算:约 11-12 tokens

计算过程:

  • 约 9 个英文单词
  • 每个单词约 1.3 tokens(考虑常见词根和标点)
  • 9 × 1.3 ≈ 12 tokens

验证:用 tiktoken 验证结果是 12 tokens


测试2答案 ​

估算:约 12-14 tokens

计算过程:

  • 约 14 个汉字
  • 考虑到"使"、"得"等虚词可能单独成 token
  • 14 ÷ 1.2 ≈ 12 tokens

注:中文 Token 数因具体句子而异,需要工具验证


测试3答案 ​

答案:最多约 500 tokens

解析:

总限制:4096 tokens
已使用:3500 tokens(用户输入)
剩余:4096 - 3500 = 596 tokens

考虑到还需要留一些空间给输出格式和缓冲
实际可用约 500 tokens
1
2
3
4
5
6

测试4答案 ​

答案:$0.00045

计算过程:

输入成本:1000 / 1,000,000 × $0.15 = $0.00015
输出成本:500 / 1,000,000 × $0.60 = $0.00030
总成本:$0.00045
1
2
3

测试5答案 ​

答案:当文档长度超过模型的上下文窗口,或者即使能放入但会导致成本过高、延迟过大时。

解析:

✓ 需要 RAG 的场景:
  - 文档有 100K+ tokens,远超上下文
  - 需要从海量文档中检索特定信息
  - 查询需要非常精确,容不得半点无关内容

✗ 不需要 RAG 的场景:
  - 文档较短,能轻松放入上下文
  - 需要理解文档的全局信息
  - 对话式交互,需要保持连续性
1
2
3
4
5
6
7
8
9

相关笔记 ​

  • [[03 - 解码策略]] - 控制 LLM 输出的参数
  • [[04 - 消息角色]] - 对话结构与 Token 消耗
  • [[06 - Prompt 工程]] - 高效使用 Token 的技巧

下一步学习 ​

  • [ ] 阅读 03 - 解码策略

学习状态:✅ 已完成

最后更新于:

Pager
上一篇2. 神经网络基础 - 从零理解 AI 的"计算单元" / Neural Network Fundamentals from Artificial Neurons
下一篇4. 解码策略 - 控制 LLM 输出的艺术 / Decoding Strategies for Controlling LLM Output

持续记录,持续成长

Copyright © Tidenflow