MemGPT

给大模型无限上下文

Key Takeaway

  • 上下文长度是大模型应用的关键限制,提升其难度高。
  • MemGPT将大模型视为操作系统,通过分级内存管理(Main Context + External Context)来解决上下文限制问题。
  • Main Context包含系统指令、对话上下文和工作上下文,External Context包含事件记忆和事实记录。
  • MemGPT能够自主进行上下文信息的检索和编辑,并具备“觉知”能力。
  • MemGPT支持多种后端模型,并可与AutoGen等Agent系统整合,对Multi-Agent System有重要意义。

Full Content

上下文长度是大模型要跨过的第一道槛。

长度太短,就无法开启很多领域的应用,比如医疗GPT。想象一下,医患20轮对话之后,医生就不记得病人的基本情况了,这怎么搞?

所以,上下文长度约等于大模型的内存,是衡量大模型能力的基本指标之一。

但是要提升大模型的上下文长度,难度很高。

一是训练方面。需要更高的算力和显存,还需要更多的长序列数据。

二是推理方面。Transformer模型的自注意力机制(Self-Attention)要求对序列中的每个元素去计算它与其它元素的相关性。这种机制天然决定了上下文长度不可能太长。于是大家又提出了一系列处理长序列的解决方案,这是另一个超大话题,此处不展开。

MemGPT找到了一个天才解法。

LLM = OS

大模型是什么?

MemGPT认为,大模型本质上就是操作系统。所以,上下文就是内存,上下文长度管理就是内存管理。

操作系统是怎么管理内存的?

等级制。CPU缓存(L1、L2和L3)离核心最近,速度最快,但容量最小。按这个逻辑往外推,其次是内存,最后是硬盘。

根据需要,操作系统会在这三个层级之间调配数据:最着急用的,放CPU缓存;暂时用不着的,放硬盘。

既然大模型是操作系统,那采用相同的内存管理方法,没毛病。

MemGPT就是这么干的。

Main Context + External Context

这是MemGPT的运行逻辑:

当有事件发生时,事件信息通过解析器(Parser)进入虚拟“内存”(Virtual Context)。

大模型作为处理器(Processor),对内存中的数据进行调用、确认,然后再通过解析器输出,变成一个行为。

关键点就在Virtual Context上。它分为两个部分:

一、Main Context:就是有原本有长度限制的上下文。Main Context由三部分组成:

  1. System Instructions,系统指令。简单理解就是每次我们在system message里写的“you are a helpful assistant”。这部分只读,并且每次都会被调用,因为它是底层设定。
  2. Conversational Context,对话上下文。采用“先进先出”(FIFO)规则——超过一定长度后,最旧的对话会被抛弃。
  3. Working Context,工作上下文。简单理解就是大模型的笔记本,上边记录着当前的注意事项。

下图就充分说明了Working Context是怎么一回事。

当用户提到了“今天生日”和“最爱的巧克力熔岩蛋糕”两个关键信息时,大模型迅速在笔记本上写下这两点,然后在回复中应用起来。

二、External Context:就是存储在外部的上下文信息,比如存在硬盘里。External Context由两部分组成: