Storage 06
Temporal Memory
时间是一等公民
交互
按下"播放时间线"观看一天的 memory 操作——存储、更新、合并和遗忘。点击任意事件查看详情。
09:00Store
首次记忆写入09:15Store
偏好记录14:00Update
事实更新14:30Merge
记忆合并18:00Store
新事实23:00Forget
策略性遗忘事实会过期
大多数 memory 系统将信息视为永恒真理。现实不同:每个事实都有生命周期。
2024-01:用户住在北京
2025-03:用户说"我搬到上海了"
现在问"用户住在哪里?"——普通 vector 搜索可能返回"北京"(cosine similarity 更高)。
"每个事实都有生命周期。如果你的 memory 系统不建模时间,它会自信地告诉你昨天的真相。"
双时间模型
Graphiti 的核心创新:每个事实携带两个时间戳。
| 维度 | 含义 | 示例 |
|---|---|---|
| Event time | 事件实际发生的时间 | 用户于 2025-03 搬到上海 |
| Ingestion time | 系统获知此信息的时间 | Agent 于 2025-03-15 被告知 |
为什么需要两个?因为信息会迟到。用户今天告诉你"我上个月搬了家"。Event time = 上个月,Ingestion time = 今天。只有两个时间戳结合,才能正确回答"用户现在住在哪里?"和"用户上个月住在哪里?"
图的更新方式
当新信息与已有事实矛盾时:
1. 新信息到达:"用户搬到了上海"
2. 搜索相关已有事实:"用户住在北京"
3. LLM 判断:新旧矛盾
4. 标记旧边:lives_in → 北京 [valid_until: 2025-03]
5. 创建新边:lives_in → 上海 [valid_from: 2025-03]
6. 两条边共存——历史得到保留
2. 搜索相关已有事实:"用户住在北京"
3. LLM 判断:新旧矛盾
4. 标记旧边:lives_in → 北京 [valid_until: 2025-03]
5. 创建新边:lives_in → 上海 [valid_from: 2025-03]
6. 两条边共存——历史得到保留
为什么这很重要
没有时间感知,memory 系统会自信地提供过时事实。在 Deep Memory Retrieval benchmark 中,Graphiti 的 temporal 检索优于 MemGPT 的召回机制,因为它能区分"当前事实"和"历史事实"。
下一节
我们已介绍了三种存储方案:file、vector、graph(+ temporal)。但 Context Window 是有限的——不是所有东西都能一次装下。下一节:hierarchical memory——像操作系统一样将信息换入换出。