夜雨聆风学习资料网

ARTICLE · 1042968

AI和大模型—生产级别的Memory设计

AI和大模型—生产级别的Memory设计

一、说明

在前面的Agent的Memory中,对记忆的处理已经有过较为深入的分析,并且对实践用的一些记忆框架进行了说明。但如果让设计者自行设计一个生产级别的Agent的Memory,该如何进行呢?是不是把相关的技术简单堆砌起来就可以实现预定的目标呢?

二、传统的Memory及缺点

在传统的Memory(如RAG)向量库中,如果仅是进行记忆的展示,是没有问题的。但在实践的生产中,则可能出现不少的问题。主要包括:

  1. 精确匹配问题
    大家都明白传统RAG中的向量数据库使用的是语义相似性匹配。可在不少的场景下,大量的数据非常类似,但又需要严格匹配的情况下,向量数据库可能就会出错误。比如一些个人身份信息、企业的身份信息等等,它们都需要完全相同的匹配,差一点点都不行。
  2. 状态管理问题
    向量数据库的语义处理,意味着无法进行状态管理,同个问题在前后修改后,可能得出的结果就非常混乱,比如早晨起来说想吃油条,结果转头和家人一商量又要吃火烧,后来孩子非要吃鸡蛋饼。如果这三种情况都输入到了订早餐的向量数据库中,那么AI从这里拿到的早餐类型就有三种,完全模糊混乱。后果当然就可想而知了

所以,要想在生产上进行使用记忆,传统的RAG必须解决这两类问题。其实上面的这些问题,对于互联网企业来说,已经是小儿科了,那么可不可以将其经验移植到Agent的记忆架构设计呢?当然可以。

三、生产应用的目的

生产的应用其实核心目的主要有三点:

  1. 数据安全
    有些企业或个人的数据是无法对外公布的,这涉及到公司机密和个人隐私。所以就需要一定的策略进行数据的清洗,防止这些敏感的数据暴露到Agent甚至传入到AI大模型中
  2. 状态管理
    需要有一种管理机制,来应对状态的变化和事务的运行流程。特别是在面对有些节点反复的执行流程中,状态管理控制更是重中之重
  3. 流程复用
    对于很多工作任务来说,其实它们的工作流程是固定的,比如火车票预订、电商下单购买商品等等。这就需要把这些流程整理起来,不能每次都反复的读取数据库输入到AI反复推理执行。

四、应用分析

其实有过互联网开发经验的已经想到怎么解决这类问题了。即在生产的设计可以采用下面的方式:

  1. 缓存层
    缓存层是一种临时交互处理的情况,它一般会放在内存中,既保证了效率又控制了大小。既然大小受控,又在内存中,那么它只能处理两类数据:
    1)元数据
    元数据用来存在Agent与AI交互的控制信息如对话ID、工具ID等等。它不需要持久化保存
    2)滑动窗口上下文
    在前面的学习中已经明白,AI交互的窗口不可能太大,只能作为一种短期记忆的工作方式。一般采用先进先出的原则
  2. 状态管理层
    状态层的管理是用来对状态变化进行感知、存储等操作的处理层。有两种应对方式:
    1)数据的存储
    既然向量数据库的是一种语义匹配,那么可以引入kV数据库或其它类型的数据库保存相关数据进行精确匹配即可。而对于反复状态执行的可以引入时间戳进行管理。当然这需要考虑实际的应用场景及需求情况。另外,也可以向量数据库与KV数据库共同配合应用解决这类问题
    2)摘要控制
    为了应对既要短期记忆,又要长期记忆的问题,使用摘要是一种非常不错的方法。其通过对长上下文的压缩,在尽可能的情况下保持了长上下文的趋势,又减少了Context的长度。它既可以用在短期记忆的上下文窗口又可以用在状态管理的长上下文相关中

五、整体架构

根据上面的需求和Agent的实际的特点,可以进行整体的分层架构设计:

  1. Memory应用层
    主要负责短期记忆(包括部分近期摘要)、元数据、状态应用及从数据层得到的长期记忆与AI大模型的交互及复用Skills的工作流程等
  2. Memory逻辑层
    用来处理数据层与应用层的逻辑交互与业务转换的过程,特别是针对不同场景相同应用的情况下的自动转换等
  3. Memory数据层
    它是对长期记忆的处理层,针对RAG的一些缺点引入多种机制进行完善
  4. Memory复用层
    针对一些特定的程序化的记忆进行总结、处理和分析后,转化为Skills,不再重复相同的流程让Agent不断的推理相关正确的步骤

五、Memory数据层架构设计

在上面的整体架构中,最关键的在于Memory数据层的架构设计。下面给出一种采用典型的MVC分层设计的架构:

  1. 原始数据管理层
    此数据层保持数据的完整性,但受控制层的策略管理,不可以直接将数据暴露给视图层。仅用于审计等原始数据需求时才可直接使用
  2. 数据控制层
    在这一层引入各种策略和控制机制,对原始数据进行脱敏,过滤相关不必要的数据。既保证数据可为Agent所用,又不能暴露机密和隐私
  3. 数据视图层
    这一层是真的Agent使用的上下文内容,数据经过滤后,由Agent调用并和AI进行交互

六、总结

生产级别和例程级别的开发有着天壤之别,通过Agent的记忆设计也可以体会到这一点。从设计角度看,AI和大模型只是一个模块,而不是设计技术的革命。所以设计者可以有机的把原来的设计思想结合大模型的具体特点不断的在实践中结合,慢慢就会总结出一套更适合于大模型的设计方法。

相关学习资料