了解大模型的上下文窗口(Context Window)机制,不仅对开发者来说非常重要,对于使用者来说同样重要,例如我们在使用ChatGPT、文心一言、KIMI等通用型AI助手时能根据需求一次性输出1万字的长文,但是现实却只输出几千个字,如果我们知道上下文窗口的概念,那么我们就知道可能哪些因素是和大模型相关,哪些是和AI应用的开发者相关。
▍什么是大模型的上下文窗口

-
输入文本:你提供给模型的所有文字内容(问题、指令等)。 -
输出文本:模型生成的回复或结果。

▍长上下文窗口的作用
-
理解上下文:较大的上下文窗口可以帮助模型更好地理解用户输入的上下文,从而生成更相关和连贯的回复。比如,在对话中,模型可以参考更早的对话内容,以便提供更准确的回答。就像你跟朋友聊天时,你始终能根据之前的谈话内容,来决定当前怎么说。 -
生成长文本:在生成长篇文章、故事或报告时,较大的上下文窗口允许模型保持连贯性和一致性,不至于在较长的文本中出现前后矛盾的情况。 -
复杂任务处理:对于复杂的任务,如代码生成、论文写作、长篇问答等,较大的上下文窗口能让模型处理更多的信息,从而提高完成任务的质量和准确性。
▍为什么需要限制上下文窗口的长度
既然上下文窗口的作用这么大,为什么每个不同模型的上下文长度都不一样,为什么不让上下文窗口支持无限长的tokens?这是因为:
-
计算资源限制:处理和生成大量的token需要大量的计算资源和时间。为了在实际应用中保持响应速度,模型通常会设置token限制来平衡计算资源的使用和性能。 -
内存限制:在生成文本时,大模型需要在内存中维护上下文信息。如果生成的文本太长,所需的内存会迅速增加,这对硬件要求非常高,尤其是在处理多个并发请求时。 -
质量控制:生成文本的长度越长,模型在保持上下文一致性方面的难度就越大。这可能导致输出的文本出现重复、不相关或逻辑不连贯的内容。通过限制token数量,模型可以更好地集中生成高质量的内容,确保每个部分的信息都是相关且有意义的。 -
技术实现:现有的transformer架构和实现方式对序列长度有一定的限制。在模型的训练和推理过程中,过长的序列会导致计算复杂度呈指数级增长,因此设定token限制是当前技术实现的必要手段。
▍上下文窗口带来的影响
对于用户或开发者来说,如果使用或开发的AI应用对接的是GPT-3.5-turbo-instruct模型,上下文窗口的大小将带来以下影响:
例如,在一个持续的编写长篇文章的对话中:
早期的对话内容:用户:帮我写一段关于环境保护的引言。AI:好的,这是引言部分。
后续的对话内容:用户:再帮我写一段关于环境污染的现状。AI:好的,这是现状部分。
当对话内容累积过多,超过4096个token后:用户:帮我整合这两段内容,并添加一些关于未来解决方案的建议。AI:好的,这是整合后的内容和建议。
可能出现的问题:由于超过了4096个token的限制,早期关于“环境保护引言”的内容可能会被遗忘,这会导致AI在整合时缺少相关信息,影响到后续对话的逻辑和连贯性。
这种情况下,用户可能会发现AI对话的连续性和一致性变差,无法保持对话的上下文完整性,从而影响用户体验。
▍未来发展



