【大模型上下文长度扩展】MedGPT:解决遗忘 + 永久记忆 + 无限上下文

MedGPT:解决遗忘 + 永久记忆 + 无限上下文

    • 问题:如何提升语言模型在长对话中的记忆和处理能力?
      • 子问题1:有限上下文窗口的限制
      • 子问题2:复杂文档处理的挑战
      • 子问题3:长期记忆的维护
      • 子问题4:即时信息检索的需求
      • MemGPT 结构图

 


问题:如何提升语言模型在长对话中的记忆和处理能力?

论文:https://arxiv.org/abs/2310.08560

代码:https://github.com/cpacker/MemGPT#loading-local-files-into-archival-memory

 

MemGPT是为了解决“信息处理和记忆管理”的问题类别提出的。

具体问题是,在长期对话或处理大量文档时,传统聊天机器人无法记住所有信息,需要一种系统来扩展其记忆和处理能力。

是模仿了计算机操作系统中的内存管理,通过“分页”技术来扩展其记忆能力。

  • 内存存放 “主记忆”,来处理当前的对话
  • 硬盘存储 “外部记忆”,来回溯和引用以前存储的信息

当机器人需要回忆旧信息时,它可以从外部记忆中提取这些信息,就像人们从书架上取下一本旧书一样。

  • 模仿计算机的内存管理机制
  • 将不常用的数据页换出到硬盘,需要时再加载回内存
  • 在不丢失过往信息的前提下,提升了对话的质量和文档处理的能力

这使得MemGPT可以处理非常长的对话(无限上下文),同时记住用户的所有偏好和历史,使交流更加个性化和连贯。

 

子问题1:有限上下文窗口的限制

  • 背景: 现有语言模型因为上下文窗口大小有限,不能持续记住长对话中的所有信息。
  • 子解法1: 外部存储上下文窗口扩展
    • 特征: 使用外部存储来模拟无限上下文,让模型可以在需要时检索之前的对话内容。
    • 例子: 就像玩具箱,当你的房间(主记忆)满了,你就把一些玩具放到玩具箱里(外部记忆),需要时再拿出来。

在这里插入图片描述

  • 对话开始时,MemGPT(聊天机器人)和用户进行问候,并表现出对用户的兴趣,提到了F1赛车和帆船。

  • 用户回复,表达了他对速度、刺激和肾上腺素的热爱。

  • 系统随后发出警告,指出对话历史即将达到其最大长度并且将被修剪,提示MemGPT保存任何重要信息。

  • 为响应这一警告,MemGPT使用了一个命令 working_context.append(),将用户的个性特征——享受高速、肾上腺素激增活动如F1赛车和CSGO游戏——添加到了工作上下文中。

这是MemGPT的一种记忆保存机制,可以在对话历史被修剪之前,将用户提供的关键信息保存下来。

这段对话体现了MemGPT如何动态管理对话内容,以确保即使在达到记忆容量上限时,也不会丢失对未来对话可能重要的用户信息。

通过这样的管理,MemGPT保持了对话的连贯性,并能够在未来的交互中利用这些信息,提供更个性化和相关的响应。

 

子问题2:复杂文档处理的挑战

  • 背景: 当文档超出模型直接处理的长度时,模型难以理解整个文档内容。
  • 子解法2: 分页长文档记忆检索
    • 特征: 将长文档分成可管理的段落,逐段加载进行处理。
    • 例子: 如果有一本很厚的故事书,你可能一次只能读几页,MemGPT可以通过“翻页”来继续阅读整个故事。

在这里插入图片描述

这张图展示了MemGPT在对话中的应用,具体是如何把对话中的重要信息保存到工作上下文中。

  • 首先,MemGPT向用户Chad表示欢迎,并表现出对Chad的研究兴趣。这展示了MemGPT可以自然地开始对话,并表明了它对用户信息的兴趣。

  • 用户回复说他今天休息,并提到了他妈妈为他做了生日蛋糕,是他最喜欢的巧克力熔岩蛋糕。

  • 接下来,MemGPT使用命令working_context.append()将用户的生日(10月11日)和喜欢的蛋糕类型(由妈妈做的巧克力熔岩蛋糕)添加到它的工作上下文中。这是MemGPT记忆管理的一个例子,它能够抓住对话中的关键信息并保存下来。

  • 然后,MemGPT使用这些信息来继续对话,祝Chad生日快乐,并询问Chad的年龄,同时表达希望让当天的聊天成为Chad的美好记忆。

图中的描述说明了MemGPT如何有效地在没有系统记忆警告的情况下,积极记录并利用对话中的信息。

这种能力对于创建能够维持连续对话并在多次互动中保持个性化交流的聊天机器人至关重要。

通过这种方式,MemGPT能够记住对用户重要的日期和细节,这有助于在未来的对话中创建更有深度和连贯性的体验。

 

子问题3:长期记忆的维护

  • 背景: 对话代理在长时间的互动中需要保持信息的连贯性和个性化。
  • 子解法3: 动态记忆更新
    • 特征: 允许模型实时更新其记忆库,以包含新信息或修正旧信息。
    • 例子: 如果你告诉MemGPT你换了新工作,它会更新它的记忆,下次对话时会询问你的新工作情况。

在这里插入图片描述
这张图展示 MemGPT 如何更正并更新关于用户的信息,以维护对话的准确性和连贯性。

  • 首先,MemGPT问用户是否想聊关于恐怖电影的话题,并询问是否有最近看的电影给他留下了深刻印象。

  • 用户回答说他实际上并不喜欢恐怖电影,而是更喜欢浪漫喜剧。

  • 接着,MemGPT使用了一个命令 working_context.replace('I watch horror movies.','I like romantic comedies.') 来更正之前的信息。这意味着MemGPT在其工作上下文中替换了关于用户喜好的错误信息。

  • MemGPT随后用一条更新后的信息回应用户,不仅纠正了之前的错误,还询问用户是否有喜欢的浪漫喜剧电影,这表明MemGPT能够根据新的输入动态调整它的对话策略。

这个过程说明了MemGPT不仅能记忆用户提供的信息,还能在发现错误或更新的信息时进行自我修正。

这种能力对于创建能够与用户进行连续且个性化对话的聊天机器人是非常重要的。

通过这样的动态记忆更新,MemGPT能够维护对话的一致性,即使在长期的交互中也能保持个性化和相关性。

 

子问题4:即时信息检索的需求

  • 背景: 用户可能会询问与过去对话相关的问题,模型需要快速提供准确回答。
  • 子解法4: 快速信息检索
  • 会在放东西的地方做个标记,这样下次就能快速找到。
    • 特征: 模型能够迅速访问存储的信息,以回答用户的提问。
    • 例子: 类似于谷歌搜索,当用户问到之前的话题,比如之前提过的喜欢的书,MemGPT能快速找到那次对话的内容。

在这里插入图片描述
这张图是MemGPT中的“深度记忆检索任务”(Deep Memory Retrieval Task)的示例。

演示了如何使用MemGPT来回忆并检索与用户先前会话相关的信息。

具体来说:

  • 对话框显示用户问了一个问题,提到了之前的一个对话,询问:“你之前提到的你可能会喜欢的艺术家是谁?” 这表明用户希望MemGPT能记住他们以前讨论过的内容。

  • 在用户的对话框旁边,有一段描述,解释说用户正在回忆过去的对话,并且MemGPT将搜索其“回忆存储”以找到艺术家的名字。

  • 接下来,MemGPT使用命令search_recall_storage('music')来执行这一操作,这显示了MemGPT的能力,可以检索其存储的记忆以找到具体的信息。

  • 展示的搜索结果是先前对话的一部分,这些对话提到了Taylor Swift,表明这可能是用户想起的艺术家。

  • 最后,MemGPT确认了从对话历史中检索到的信息,并向用户确认艺术家是不是Taylor Swift。

即使某些信息不再处于当前上下文中,MemGPT也可以访问其记忆库中存储的过去对话,从而在必要时提供相关信息。

这种功能对于构建能够进行长期和深层次交互的对话代理至关重要,因为它使得代理能够记住用户的兴趣和历史,使对话更加个性化和连贯。

 
MemGPT通过外部存储扩展上下文窗口、分页长文档记忆检索、动态记忆更新和快速信息检索等多种方法,解决了传统语言模型在长对话和复杂任务处理中的限制。

这些方法的共同目标是使模型能够存储更多信息,更加智能地管理这些信息,并在需要时快速检索相关内容,从而使对话更加连贯和个性化。

 


MemGPT 结构图

在这里插入图片描述
将固定上下文的语言模型与包括主上下文、外部上下文和记忆管理功能的记忆系统整合在一起。

通过事件、解析、语言模型处理和功能执行的数据流动。‘

 

MemGPT 结构和逻辑关系可以被理解为一种层次化的网络结构,而不仅仅是简单的线性链条。

这种网络结构由多个相互依赖的组件和流程组成,它们共同工作以实现复杂的记忆和信息处理任务。

  1. 核心组件:MemGPT 的核心由三个主要组件组成:主上下文、外部上下文(或称为外部记忆)、以及记忆管理系统。

    这些组件相互协作,使得模型能够处理和存储大量的信息,同时保持对话的连贯性和个性化。

  2. 主上下文(内存):这部分相当于模型的“当前工作区”,用于存放当前对话或任务中直接需要的信息。

    它类似于计算机的RAM(随机存取存储器),提供快速访问和处理能力,但容量有限。

  3. 外部上下文(硬盘):相当于模型的“长期存储区”,用于存放不立即需要,但可能在未来对话或任务中重要的信息。

    这部分类似于计算机的硬盘存储,容量较大,但访问速度较慢。

  4. 记忆管理系统:负责在主上下文和外部上下文之间动态地移动信息。

    它根据对话的进展和上下文的变化,决定哪些信息应当保留在主上下文中,哪些应当被存储到外部上下文中,以及何时从外部上下文中检索信息回到主上下文。

  5. 逻辑关系:组件之间的逻辑关系形成了一个复杂的网络,而不是简单的线性链条。

    例如,记忆管理系统需要实时监控主上下文的状态,以便在达到容量限制时将信息移动到外部上下文。

    同时,它也需要根据用户的请求或对话的需求,从外部上下文检索之前存储的信息。

  6. 数据流动和事件触发:在MemGPT中,数据的流动和处理受到各种事件的触发,如对话进展、用户请求特定信息等。

    这些事件会触发记忆管理系统的操作,如信息的保存、更新、删除和检索,确保了信息处理的动态性和适应性。

  7. 整合与协作:MemGPT的结构和逻辑关系展示了如何通过整合固定上下文的语言模型与高度动态的记忆系统(包括主上下文、外部上下文和记忆管理功能),来解决长对话和复杂文档处理中的挑战。

    这种整合确保了模型在保持对话连贯性和个性化的同时,还能高效地管理和检索大量信息。

MemGPT的结构和逻辑关系是一种复杂的网络,通过多个组件和流程的相互作用,实现了对话的长期记忆、动态更新和即时信息检索等功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/256806.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络——09Web-and-HTTP

Web and HTTP 一些术语 Web页:由一些对象组成对象可以是HTML文件、JPEG图像,JAVA小程序,声音剪辑文件等Web页含有一个基本的HTML文件,该基本HTML文件又包含若干对象的引用(链接)通过URL对每个对象进行引用…

HiveSQL——共同使用ip的用户检测问题【自关联问题】

注:参考文章: SQL 之共同使用ip用户检测问题【自关联问题】-HQL面试题48【拼多多面试题】_hive sql 自关联-CSDN博客文章浏览阅读810次。0 问题描述create table log( uid char(10), ip char(15), time timestamp);insert into log valuesinsert into l…

【芯片设计- RTL 数字逻辑设计入门 12 -- verilog 有符号数加减法】

文章目录 多功能数据处理器描述verilog 无符号数与有符号数8d100 8d1558d100 8d1568d100 8d157verilog 代码实现TestBench 代码VCS 仿真结果 多功能数据处理器描述 根据指示信号select的不同,对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数&#xff1…

Javaweb之SpringBootWeb案例之propagation属性案例演示的详细解析

案例 接下来我们就通过一个案例来演示下事务传播行为propagation属性的使用。 需求:解散部门时需要记录操作日志 由于解散部门是一个非常重要而且非常危险的操作,所以在业务当中要求每一次执行解散部门的操作都需要留下痕迹,就是要记录操作…

探索设计模式的魅力:捕捉变化的风-用观察者模式提升用户体验

设计模式专栏:http://t.csdnimg.cn/U54zu 目录 一、引言 核心概念 应用场景 可以解决的问题 二、场景案例 2.1 不用设计模式实现 2.2 存在问题 2.3 使用设计模式实现 2.4 成功克服 三、工作原理 3.1 结构图和说明 3.2 工作原理详解 3.3 实现步骤 四、 优…

【linux系统体验】-ubuntu简易折腾

ubuntu 一、终端美化二、桌面美化2.1 插件安装2.2 主题和图标2.3 美化配置 三、常用命令 以后看不看不重要,咱就是想记点儿东西。一、终端美化 安装oh my posh,参考链接:Linux 终端美化 1、安装字体 oh my posh美化工具可以使用合适的字体&a…

wireshark分析数据包:追踪流

打开追踪流的界面 方法 1 方法 2 选中数据包,右键弹出菜单 说明: 流内容的显示顺序和它在网络上出现的顺序相同。不可打印的字符被点代替。从客户端到服务器的流量被标记为红色,而从服务器到客户端的流量被标记为蓝色。这些颜色可以通过下…

【算法随想录01】环形链表

题目:141. 环形链表 难度:EASY 代码 哈希表遍历求解,表中存储的是元素地址。 时间复杂度 O ( N ) O(N) O(N),空间复杂度 O ( N ) O(N) O(N) /*** Definition for singly-linked list.* struct ListNode {* int val;* …

【C++初阶】第三站:类和对象(中) -- 类的6个默认成员函数

目录 前言 类的6个默认成员函数 构造函数 概念 特性 析构函数 概念 特性 拷贝构造函数 概念 特征 赋值运算符重载 运算符重载 赋值运算符重载 const成员 const修饰类成员函数 取地址及const取地址操作符重载 本章总结: 前言 有时候我们写好了一个栈,头脑…

[计算机提升] 备份系统:设置备份

6.5 备份系统:设置备份 1、进入到控制面板系统和安全\备份和还原,点击右侧的设置备份: 2、在弹出的设置备份对话框中,选择要保存的位置,点击下一步开始备份。 3、选择要备份的内容。根据需要选择即可。这种备份的…

百面嵌入式专栏(面试题)驱动开发面试题汇总1.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍驱动开发面试题 。 1、Linux驱动程序的功能是什么? 对设备初始化和释放。进行内核与硬件的数据交互。检测和处理设备出现的错误。2、内核程序中申请内存使用什么函数? 答案:kmalloc()、kzalloc()、vm…

[Python进阶] 识别验证码

11.3 识别验证码 我们再开发某些项目的时候,如果遇到要登录某些网页,那么会经常遇到输入验证码的情况,而每次人工输入验证码的话,比较浪费时间。于是,可以通过调用某些接口进行识别。 11.3.1 调用百度文字识别接口 …

华为问界M9:全方位自动驾驶技术解决方案

华为问界M9的自动驾驶技术采用了多种方法来提高驾驶的便利性和安全性。以下是一些关键技术: 智能感知系统:问界M9配备了先进的传感器,包括高清摄像头、毫米波雷达、超声波雷达等,这些传感器可以实时监测车辆周围的环境&#xff0…

网安常用的三个攻击方式

1.渗透测试执行标准(PTES) 渗透测试执行标准由7个部分组成,包括前期交互、情报收集、威胁建模、漏洞分析、渗透利用、后渗透、撰写报告。在中国,渗透测试必须经过授权,否则就违背了网络安全法。前期交互主要指开展渗透…

项目部署小问题记录

1.搭建springboot项目,后台映射进不去(原因为代码和启动类不在一个包下) 2.服务器中,root用户命令提示没有权限 找到要操作的文件,查看属性 lsattr 发现文件有i属性(即不可修改) chattr -i webapps/ 去除掉i属性3.项目放到tomcat中去除上下文 在Host中把appBase置空,增加…

Linux系统之部署File Browser文件管理系统

Linux系统之部署File Browser文件管理系统 一、File Browser介绍1.1 File Browser简介1.2 File Browser功能1.3 File Browser使用场景 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、安装File Browser4…

在没有鼠标或键盘的情况下在 Mac 上如何启用蓝牙?

通过这个技巧,小编将向您展示几种无需鼠标或键盘即可在 Mac 上重新启用蓝牙的方法。如果您想开始使用蓝牙配件,但还没有连接,这会很有用。 无需鼠标即可启用蓝牙 蓝牙是iPhone、iPad和 Mac 的标准配置。它确保您可以无线使用各种配件&#…

【CV论文精读】EarlyBird: Early-Fusion for Multi-View Tracking in the Bird’s Eye View

【CV论文精读】EarlyBird: Early-Fusion for Multi-View Tracking in the Bird’s Eye View 0.论文摘要 多视图聚合有望克服多目标检测和跟踪中的遮挡和漏检挑战。多视图检测和3D对象检测中的最新方法通过将所有视图投影到地平面并在鸟瞰视图(BEV)中执…

Linux第46步_通过“添加自定义菜单”来学习menuconfig图形化配置原理

通过“添加自定义菜单”来学习menuconfig图形化配置原理,将来移植linux要用到。 自定义菜单要求如下: ①、在主界面中添加一个名为“My test menu”,此菜单内部有一个配置项。 ②、配置项为“MY TESTCONFIG”,此配置项处于菜单“My test m…