上下文
什么是上下文窗口?
上下文窗口是指模型在一次请求中能够考虑的文本总量,按 token 计量。这篇文章说明它为什么不是记忆,为什么把它塞满反而会损害答案质量,以及它是如何一步步推高使用成本的。
全部文章 · 最近核实:
它不是记忆
模型不会记住你上一次的对话。造成记忆错觉的是,应用程序在每个新请求时都会重新发送之前的消息。窗口是一次调用的工作空间,不是存储。
由此产生一个人们意外遇到的直接后果:长对话会随着每条消息变得更贵,因为整个历史每次都要重新发送、重新计费。
装满的窗口不等于用得好的窗口
大窗口是余量,不是目标。模型在很长的上下文里注意力分配并不均匀:非常长的输入中间部分的内容,比两端的内容更容易被轻描淡写地处理。
实践中,聚焦的十页往往胜过分散的两百页。检索正是为了挑出那十页而存在的,而不是把所有东西都发过去指望好运。
它如何推高成本
几乎所有供应商都按 token 计费,输入和输出分开算,输入通常更便宜。附加在长对话每条消息上的大文档,会在每条消息上都被计费一次,而不是只算一次。
这是账单意外飙升最常见的原因,修复方式是结构性的:只附加问题需要的东西,而不是所有可能相关的东西。
常见问题
- 窗口越大越好吗?
- 它取消了一个限制,这是好事,但不会改善模型对拿到的内容的利用方式。更大的窗口主要是买到了犯一个更贵错误的可能性。
- token 是什么?
- 大致是一个词的片段。英文文本平均每个 token 约等于四分之三个词,所以一千个 token 大约是七百五十个词——但这因语言而异很大,非拉丁文字通常每个词要用更多 token。
- 超过限制会发生什么?
- 请求会失败,或者应用程序悄悄丢弃最早的消息。后一种情况更常见,也更令人困惑,因为模型看起来像是忘了你说过的话。
与其阅读,不如亲自试试
ClawAI 会记录每条消息消耗的 token,正在变贵的对话在账单出现之前就能看见,而不是之后。