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. 两条边共存——历史得到保留

为什么这很重要

没有时间感知,memory 系统会自信地提供过时事实。在 Deep Memory Retrieval benchmark 中,Graphiti 的 temporal 检索优于 MemGPT 的召回机制,因为它能区分"当前事实"和"历史事实"。


下一节

我们已介绍了三种存储方案:file、vector、graph(+ temporal)。但 Context Window 是有限的——不是所有东西都能一次装下。下一节:hierarchical memory——像操作系统一样将信息换入换出。