O-MEM

简单的Chunk-Retrieve记忆系统

Agent在长时间,跨对话的交互中,就需要使用记忆系统来保存重要的历史信息,否则每次用户每次使用都相当于新认识一遍。

记忆系统最简单的做法就是把所有历史交互都切成chunk,然后入库。当来了新的交互,就从数据库中检索相似/相关的历史交互。这种方式主要有两个问题:

  • 依赖交互内容的相似度/相关性,对于有逻辑联系的内容效果不佳
  • 简单粗暴的检索会引入很多“相似”内容,一般提升召回量能提升效果,但是也会引入很多噪音,记忆系统的整体效率就不高。

O-MEM:Active User Profiling

O-MEM的思路:记忆系统不应只是历史交互的存储容器,而应是用户特征的持续构建者。

简单来说,O-MEM设计三个记忆系统的组件:

  • Persona Memory(人格记忆):存储长期、抽象的用户知识,包括用户的稳定属性(如性格、偏好、身份特征)和关键事实事件(如职业变更、健康状况)。这是关于"用户是什么样的人"的总结性知识。
  • Working Memory(工作记忆):存储与当前交互主题相关的所有历史交互。不同于生理学中短期工作记忆的概念,O-MEM中的Working Memory是主题关联的长期记忆库,用于提供当前话题的上下文背景。
  • Episodic Memory(情景记忆):建立从显著线索词到具体交互情境的映射,类似于人类通过"关键词"触发完整回忆的能力。当用户提到"上次那个项目"时,Episodic Memory能通过"项目"这个线索快速定位到相关的完整对话记录。

信息提取

对于每次交互,首先用LLM提取当前交互的:

  • 主题
  • 当前交互揭示的用户属性
  • 当前交互揭示的过往事件

比如用户的输入是:Attended an LGBT rally yesterday and received massive supports from the public. Transitioning has been a really difficult journey for me, and I am grateful for everyone's help in the past year.

那么提取的信息:

  • 主题:LGBT Activity
  • 属性:Transgender
  • 事件:
    • Attended an LGBT Rally Yesterday
    • Underwent sex reassignment surgery

这里论文用的是GPT-4.1 和 GPT-4o-mini作为提取模型。

Persona Memory

Persona Memory又包含两类:Persona Attributes(属性)和Persona Facts(事实)。

两者都是以自然语言文本列表的形式存储。Attributes是用户稳定特征的抽象,Facts则是用户经历的具体事件记录:

  • Persona Attributes = ["素食主义者"、"软件工程师"、"性格内向", ...]
  • Persona Facts = ["2023年9月完成手术", "去年辞职创业", ...]

这两类信息都经过LLM的提炼,是高层次的结构化知识。

Persona Attributes的储存

用户输入提取出属性attr之后,会和现有的属性库通过相似度进行聚合,决定是更新现有数据库(update),新增属性(add),还是已有可忽略(ignore)。

比如有五条属性:

  • 我喜欢周末打篮球
  • 篮球是我最热爱的运动
  • 每周六下午都打球
  • 我是素食主义者
  • 不吃肉类食物

计算相似度发现前三条相似,后两条相似,就聚合成两条结果:

  • 用户是篮球爱好者,固定在周末进行该项运动
  • 用户是严格的素食主义者

Persona Attributes的检索

检索的时候,直接把用户输入和属性库中的数据计算相似度。

比如query = 这周末有什么运动建议?

属性数据库有3条数据:

  • 用户是篮球爱好者,固定在周末进行该项运动
  • 用户是严格的素食主义者
  • 用户对机器学习有深入研究

Persona Facts的储存

同属性类似,对于用户输入提取到的事件,基于和现有数据的关系,有三种操作:

  • update
  • add
  • ignore

只是少了一步,不进行聚合,因为事件都是独立的。

Persona Facts的检索

检索的时候和属性检索一样,通过相似度召回。

Working Memory

储存

Working Memory储存结构式一个map,key是topic,也就是输入的时候提取的主题,value是原始交互数据。

随着交互越来越多,每个value中储存的交互数据也越来越多。

检索

当一个新的用户输入进来的时候,就会从Working Memory检索内容。

具体来说,就是通过语义相似度,从Working Memory中找到所有和当前交互的话题相似的话题,然后获取对应的交互数据返回。

Episodic Memory

储存

Episodic Memory的数据储存是一个map。其中key是词,来自于用户输入的分词结果,而value则是原始的交互。

具体来说,用户的输入会被分词,每个词会作为key,然后去找Episodic Memory里对应的key,把原始交互数据加到value里,这是一个增量更新。

检索

要从Episodic Memory检索的时候,也是用关键词作为key,找到对应的原始交互。

关键点在于选择什么词来搜索。原文的方法是参考inverse document frequency的思路,从用户的输入里找到最关键的一次词用于搜索。

Reference

【1】O-MEM: OMNI MEMORY SYSTEM FOR PERSONALIZED, LONG HORIZON, SELF-EVOLVING AGENTS,https://openreview.net/pdf?id=K3bOz7oYec

【推荐文章】
- Agent:
Harness Engineer
字节的M3-Agent
DeepResearch的报告生成方法
从RAG到DeepSearch
阿里通义Lab: WebWalker,WebDancer和WebSailor
Agent评测数据集
Agent完全手册(零):三大模块,三个理念
agent调研(1)--MetaGPT,OpenManus和OWL
Devin和Anthropic的Agent开发经验
- MoE:
DeepSeek-V3细节探索
MoE模型的前世今生
DeepSeek-V2和MLA
昆仑万维-SkyworkMoE
成本10w刀的JetMoE
MoE的top-p routing
对MoE模型的一些观察
从dense到MoE -- sparse upcycling
MoE路由--expert choice routing
- 端侧模型:
苹果智能系统模型--AFM
MiniCPM
适合移动设备的语言模型--MobileLLM
phi系列模型
Gemma2
苹果的OpenELM
bilibili的index-1.9B
- 预训练:
Qwen3实测&技术报告
代码大模型(一)--业界现状
代码大模型(二)--OpenCoder
LLM高效预训练(一)
LLM高效预训练(二)
Llama3.1--预训练要点一览
Qwen2技术报告
Yi技术报告-划重点看细节
InternLM系列模型
GLM4报告的一些技术点
从Yuan2.0到Yuan2.0-M32
从loss视角理解大模型涌现能力
- 数据:
训练数据合成(一)
训练数据合成(二)
训练数据合成(三)
LLM预训练数据策略(一)
预训练数据处理--长度分解
- 长上下文:
Qwen2.5-1M技术解析
LLM长上下文的问题
解锁大模型长上下文能力
大模型推理窗口-从有限到无限大
prompt压缩(一)
prompt压缩(二)
reasoning压缩(一)
- 推理加速:
大模型推理加速-投机解码
大模型推理加速-MEDUSA
- 对齐:
VeRA,LoRA-XS和TinyLoRA
腾讯的Training-Free GRPO
深度求索DeepSeek-R1详解
基模型Cognitive Behaviors对RL的影响
Llama3.1--post-training要点一览
模型平均 -- model soup
大模型偏好对齐-DPO
大模型偏好对齐-ODPO
大模型偏好对齐-simPO
大模型偏好对齐-IPO
- Transformer:
Attention Residuals
理解Attention:从起源到MHA,MQA和GQA
LLM的重复生成和ICL
transformer中normalization的二三事
从代码实现看normalization-到底做了什么
稀疏注意力计算:sliding window attention
理解LLM位置编码:RoPE
RoPE的远距离衰减
LLM水印
- 训练框架
Muon优化器
LLM训练框架:从优化器和精度讲到ZeRO
LLM训练各种并行策略
- 项目应用:
一个模型支持智能助手系统
关于The Bitter Lesson
- CV:
CV入门--关于Vision Transformer
CV入门--无监督学习
- 多模态:
多模态入门(一)--CLIP
多模态入门(二)--Flamingo,LLaVA系列和BLIP系列
多模态入门(三)--MiniGPT4,DeepSeekVL,InternVL系列和QwenVL系列
多模态入门(四)--CogVLM,VILA,MM1,MM1.5和Pixtral-12B
多模态入门(五)--InternVL系列
小米的移动UI多模态模型--MobileVLM
DeepSeek-VL2的细节
- 论文阅读:
最近阅读--关于数据合成、agent、reasoning和多任务
最近阅读2-关于自适应深度思考、context engineering和模型训练
- 大模型算法题:
(1)(2)(3)(4)(5)(6)(7)(8)(9)