Token与上下文窗口
Token 是大模型处理文本的基本单位,上下文窗口是模型一次能处理的 Token 数量上限。理解这两个概念,是控制成本、延迟和输出质量的基础。
# 1. 什么是 Token
Token 可以理解为模型切分文本后的基本片段。它可能是一个字、一个词、一个词的一部分,也可能是标点或空格。
原始文本 -> Tokenizer -> Token 序列 -> 模型处理
不同模型的分词器不同,同一句话在不同模型中可能对应不同 Token 数。
# 2. Token 为什么重要
| 影响项 | 说明 |
|---|---|
| 成本 | 很多模型按输入和输出 Token 计费 |
| 延迟 | Token 越多,处理和生成越慢 |
| 上下文 | 输入、历史对话、RAG 文档和输出都占窗口 |
| 输出长度 | 生成内容也会消耗 Token |
大模型应用中,Token 管理就是成本和质量管理。
# 3. 上下文窗口
上下文窗口表示模型一次请求中能接收和生成的最大 Token 数。
系统指令
+ 用户问题
+ 历史对话
+ 检索文档
+ 工具结果
+ 模型输出
<= 上下文窗口上限
如果输入过长,可能会被截断,导致模型缺失关键信息。
# 4. 常见上下文来源
| 来源 | 风险 |
|---|---|
| 系统 Prompt | 过长会增加每次请求成本 |
| 历史对话 | 长对话容易累积噪声 |
| RAG 文档 | 召回过多会挤占输出空间 |
| 工具结果 | 原始结果太长会影响模型关注重点 |
| 用户输入 | 恶意输入可能注入干扰指令 |
# 5. Token 管理策略
- 对历史对话做摘要,而不是无限追加。
- RAG 只放入最相关的 Chunk。
- 工具结果先结构化、过滤、压缩,再交给模型。
- 对输出长度设置上限。
- 对重复内容做缓存和复用。
# 6. 常见坑
| 问题 | 原因 | 修复 |
|---|---|---|
| 答案漏信息 | 关键资料被截断或位置太靠后 | 重排、摘要、压缩上下文 |
| 成本突然升高 | 历史对话或文档无限追加 | 设置窗口策略和 Token 预算 |
| 输出不完整 | 输入占满窗口,留给输出空间太少 | 限制输入长度,预留输出 Token |
| 模型被干扰 | 上下文包含无关或冲突内容 | 清洗、过滤、明确优先级 |
# 7. Tips 快问快答
Q:Token 和字符数一样吗?
A:不一样。Token 是模型分词后的单位,不同语言、符号和模型分词器都会影响 Token 数。
Q:上下文窗口越大越好吗?
A:不一定。大窗口能容纳更多信息,但成本更高,也可能引入噪声。关键是放入最相关的信息。
Q:为什么长对话后模型变笨?
A:历史信息太多会挤占窗口并引入噪声,模型可能难以判断当前任务的重点。
上次更新: 2026/06/25, 17:53:09