上下文窗口是什么,为什么它决定你能喂多少内容
【摘要】 解释大模型的上下文窗口概念——它按 token 计量、包含输入与输出、受注意力计算平方级开销限制、超出后前面的内容会被截断,以及存在的"中间遗忘"现象与节省窗口的实用做法。
聊大模型的时候经常听到"上下文窗口 128K""支持长上下文"这类说法。它到底指什么,为什么这个数字这么重要,简单说一遍。
它量的是什么
上下文窗口指的是模型一次能"看到"的最大内容量,包括你输入的全部内容加上它生成的回答,两边加在一起不能超过这个上限。
这个量一般用 token 计,不是字符也不是字数。token 大致可以理解为词或者词的一部分,中文里一个字大概一到两个 token,英文一个单词一到三个 token。所以"128K token"换算成中文大概十万字上下,不是精确值。
为什么会有上限
模型处理文本的核心是注意力机制,它需要计算每个 token 跟其他所有 token 之间的关系。token 数量翻一倍,计算量大约翻四倍——这是个平方关系。
所以上下文不是想开多大就开多大,开得越大越吃显存、越慢、越贵。所谓的"支持长上下文"往往是工程上做了优化(比如分组注意力、位置编码改进)之后的结果,不是白来的。
超了会怎样
最直观的后果是前面的内容被丢掉。输入超过窗口时,通常从最早的部分开始截断——你以为模型看到了整篇文档,其实开头那几页它压根没读到。
另一种不太容易发现的情况是"中间遗忘":内容没超窗口,但模型对开头和结尾记得清楚,对中间部分关注度下降。长文档里把关键信息放在中间,效果往往比放两头差。
怎么省着用
几条实用的做法:
- 只喂相关的部分,别整篇文档丢进去
- 多轮对话里,历史消息会一直占额度,聊久了要主动开新会话
- 系统提示词也占额度,写太长会挤压正文空间
- 需要处理的文本很长时,先自己做一轮筛选或者摘要
理解了这个上限,很多"为什么它答非所问"的问题就能找到原因了——大概率是它根本没看到你认为它看到的东西。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)