Storage 05

Graph Memory

知识图谱的力量

交互

逐条添加对话句子,实时观察 knowledge graph 的生长过程。

点击「添加」按钮,逐步构建知识图谱
节点: 0关系: 0对话轮次: 0/5

从扁平到结构化

Vector memory 将每条信息视为独立的点。但现实世界的信息是关联的——"张伟在字节跳动工作"和"字节跳动正在迁移到 Rust"意味着张伟可能需要学习 Rust。

Knowledge graph 以实体-关系-实体三元组存储信息,保留结构:

(张伟) —works_at→ (字节跳动)
(字节跳动) —migrating_to→ (Rust)
(张伟) —interested_in→ (Rust)

推理:张伟对 Rust 的兴趣可能与他公司的技术迁移有关。

Graphiti:基准实现

Graphiti(23K star,由 Zep 开发)从对话中增量构建 temporal knowledge graph。每段新对话提取实体和关系,合并到现有图中。

Extract

LLM 从对话中识别实体和关系。

Cognify

将新三元组与现有图对齐——去重、合并、解决冲突。

Load

写入图数据库(Neo4j),构建 vector 索引以支持混合查询。

Cognee:"6 行代码"方案

Cognee(12.5K star)以最小 API 封装了同样的 Extract-Cognify-Load 模式。

维度GraphitiCognee
核心特性双时间模型(见 S06)最小 API,快速集成
图存储Neo4j多后端(Neo4j、NetworkX...)
检索图遍历 + vector 搜索图遍历 + vector 搜索
适用场景需要 temporal 推理的复杂应用快速原型、中等复杂度

Graph vs Vector

Vector 擅长模糊搜索("用户的偏好是什么?"),但丢失关系。
Graph 擅长结构化查询("张伟的公司用什么技术?"),但构建成本更高。
它们是互补的,不是竞争的。Mem0 最新版本同时支持两者。


下一节

Graph 保留了结构,但事实会变。"张伟住在北京"——这是什么时候的事?下一节:temporal memory——给每个事实加上时间戳。