长文手敲。最近太忙了,在地铁上用我灵活的双指打下大半的文字,各位佬友,欢迎一块讨论~
重新整理了一下,对于AI记忆本质的理解,不知道对不对,希望能够比较干净的说明清楚。
谈论AI记忆的时候,我们需要搞清楚的是,到底什么是记忆? 从现有模型的基本原理来看,现有LLM的底层能力其实来自对token序列条件分布的建模。其记忆涵盖的内涵其实包括三个方面,第一个是模型权重中的参数记忆(对此我们不过多的进行讨论),其次是,当前上下文里的工作记忆、外部系统里的长期/结构化记忆。故而,我们可以将之比拟为一个注意力有限的,或者说脑容量有限的人。一旦内容挤满、甚至超出了脑容量,模型就会开始注意力涣散,胡言乱语。
从这个视角出发,就会发现现有的解决思路大体面对的就是两个问题。
第一个,模型内生记忆能力的问题。我有没有办法提升模型的脑容量?也就是扩大模型一次推理中可承载和有效使用的信息量。上下文长度、长程注意力、KV cache 改进等等,都是在这一方向上做出的努力。
第二个,也是我在关注的问题是,如果我们现在固定脑容量是不变的,那么问题就变成如何把历史信息、用户偏好、任务状态、外部知识等保存在模型之外,并通过索引、召回、排序、压缩、编排和治理,让合适的信息在合适的时候进入上下文。各种 RAG、向量库、知识图谱、MCP 记忆服务、用户画像系统、长期任务状态管理等,都可以被放在这个方向之下。
这里插一嘴,所以随着对第一个问题的持续深入,有没有可能第二个问题就变得不再重要了呢?我的理解是不大可能。事实上,定义第二个问题重要性的,并不在于数据库知识库型的“记得多少过去”问题,而面对的是“过去应该如何影响现在”。记得全部并不就等同于拥有记忆,继而就超忆症患者而言,记忆的核心含义我觉得在于对过去的选择性组织、解释,保有完整的认知能力。(这里我针对的是有看到的言论,我觉得是错误的)正是因为记忆对现在的影响。所以第二个问题的一大立足点在于,记忆腐化问题的思考。
这一腐化可能的来源有,模型幻觉,过度泛化、时效失效、权重放大、语境漂移和反馈自增强等等。也就是说,一个本没有对错的信息,可能会在时间的流逝下,被不断加强,以至于对后续行为产生巨大漂移。我们可以归结这一类问题为“治理问题”。即什么应该被记住,什么应该被遗忘;什么只是临时状态,什么可以成为长期偏好;什么可以影响当前任务,什么应该被压低权重;什么需要用户确认,什么已经被新的反馈推翻。而这一内容,是必须显式表达,用户要可以直接接入的。
更进一步,所以让模型本事去裁判模型记下的记忆是否有效,本质上和要枪击犯的人监督一堆枪是否会伤人一样。就算这个人真的改过自新了,从制度上看,还总是令人感到不安的,更何况,我说的真的改过,又有多么难。另一面是,同一条历史信息,在不同用户、不同任务和不同阶段中,意义可能完全不同。(事实上,人类的语意联想虽然看似有逻辑,但实际上变化的想到迅速,我现在看到我自己一年前写的诗,我感觉我的理解都已经完全不同了)所以虽然模型可以根据语义相似度或注意力权重判断“相关”,但裁决“相关”的关要,不能只是模型本身。
我们接着第二个问题,那其实现有的方案,思考的路径大抵是,关于如何召回,和储入什么的问题。这里会分化出,文本本身,嵌入向量(两种形式)。当然还包括这二者的结合。演化出对记忆对象的各种定义,和包含对记忆对象直接关系的定义(图结构),以及结合嵌入向量去提高召回准确度等等的方法。简单来说可以理解为服务于两个目标,一个是更精确更相关的召回,另一个是更好的,对结构进行治理(遗忘问题),包括压缩、遗忘等等。
前段时间看到文献对于记忆系统的一个拆解大概如下公式所述:
\text{Memory System}=\text{Raw Ledger}+\text{Derived Views}+\text{Policy}它的意涵是,历史并不直接自动的成为记忆本身,而首先以Raw Ledger的形式被保留为可追溯的记录(像是系统日志一样),再经由 Derived Views 被压缩、索引、重组,最后由 Policy 决定何时读、何时写、何时更新、何时遗忘。可以用动态过程去把这个公式转化为:
H_{\le t-1}\xrightarrow{\text{Ledger / Views / Policy}}M_t\Rightarrow A_t我觉得这个是对第二个问题的很好的数学表达。
不过我近期在做agent memory项目的时候想到的问题在于,我自己倒是对整个流程都做了自己的创新和重新定义,但是我发现,始终写入记忆的,还是ai。也就是说,我所说的,腐化问题虽然我这么重视,但还是存在的。
这意味着,记忆治理不能只发生在召回阶段,也必须前置到写入阶段。AI 可以提出“这件事值得被记住”,但这条记忆以什么形式被写入、具有什么权重、是否有时效、是否需要用户确认、是否绑定原始证据,都应该成为系统显式处理的问题。
想到最近质问朋友的话,这个事情一定要ai来解决么?Agent Memory的管理,ai到底扮演什么样的角色?我觉得蛮有意思的,我现在的方案倾向是需要更为全面的治理结构,也就是说,存入,召回等等都是需要纳入治理的。而从中开出的另一个方向,也是我留给我自己的问题。
如果ai能记得一切了,能按我的想法去做了。那会不会出现两种情况,1.它知道我的边界在哪里,故而直接敷衍我(这不是更容易嘛),但从数据上看,他确实更懂我了 2.用户和ai陷入一种舒适的闭合,再没有创新的可能。比如一直用同一种架构,一直用同样的语言。我称之为舒适的共谋,而我觉得这种共谋其实是系统的失败。那么如何解决这个问题呢?(后续有想法了再续前缘)
6 个帖子 - 4 位参与者