我们和AI聊天的时候,它越来越像一个老朋友。我们和它聊得越多,它就越了解我们,甚至有时我们会觉得被触及到了“灵魂里最柔软的部分”。
就连我自己,也曾经被AI的回复感动到流泪。
但是,作为架构师,我们知道这并不是真实的:这只是一场利用“上下文(Context)”拼凑出来的、极其昂贵的魔术。 随着AI越来越普及,大多数人应该都听说过“上下文”这个概念。传统的“上下文”,就是指当前文章的语境。根据上下文,我们能够更好地理解当前这句话的意思。阅读理解考的就是这种东西。
在AI领域,“上下文”有着类似的作用。简单来说,上下文,就是AI在我们当前对话里的“记忆”。
本质上,所有的AI大模型,都是一种“无状态(Stateless)”的程序。
“无状态”意味着什么呢?它意味着AI就像是一条懂得很多知识的鱼;除了它固有的知识之外,所有的东西都是转头就忘的。它并不认识我;我和它的交互历史,并不能真正影响它的下一次执行结果;它的每一次执行都是完全独立的事件。
但是为什么我们在页面上和AI聊天时,AI会记得我们说过的话,并且把对话一直继续下去呢?
这是因为提供AI服务的公司,在AI本体之外,提供了“记忆”的能力,也就是上下文。
说白了,其实就是存储在某块硬盘上的一个或者多个文件,里面记录着和我们整个对话的历史(一般都经过整理和压缩)。
而上下文的运作方式,也没什么神秘的,原理很简单粗暴:每次我们给AI发一些新的内容时,系统会把上下文和我们的新对话一起发送给AI。AI综合考虑这些内容,看起来,就像是它还记得我们;但是其实它只是根据上下文和新的指令生成了回复而已。或者说,每次它都是把我们当重新认识了一遍。
这也是为什么我们和AI聊天过多时,会发现要么AI会忘记以前的内容,要么网站会提醒“记忆已满”。因为硬盘存储需要钱,我们使用免费的网页对话,AI公司能提供的空间有限;即使是付费用户,也不会有无限的上下文存储空间。所以要么新内容会把以前的上下文冲掉,要么系统就直接不再接受新内容。
听起来有点冷酷,但这就是AI运作的方式。无论是本地的AI,还是网上的AI服务,免费的还是付费的,都是这样。 对于AI来说,输入的信息越多,执行成本越高;所以,上下文需要被优化,最好只加载与当前这一轮对话有关的内容。在保证用户获得满意回应的情况下,上下文越少越好。
这里还有一个反直觉的真相:上下文并不是越长越好。AI并不能完全分清主次,大多数时候,它是把所有条件平等看待的,这就造成了成本之外的一个致命问题:注意力分散(Attention Dilution)。如果有过多与当前场景无关的记忆,AI给出的答案质量反而会下降。
在保证需求被准确传达的前提下,上下文越少,AI反而越聪明,同时运行成本也越低。
原理说破了极其简单,但在真实的工程落地中,如何动态截断历史?如何做记忆压缩?如何用最少的Token维持最精准的上下文?这就是普通玩家和高级架构师的分水岭。
明天,我会详细拆解如何通过具体的工程手段优化上下文,让AI运行效率翻倍。
关注我,一起做AI时代的硬核架构师。