引言
经典 RAG 有一个被默认接受的假设:语料是静态的。文档进向量库后,检索-生成循环稳定运行。但 Agent 面对的”知识”恰恰是动态的——用户偏好会变、职位会换、订单状态会流转。传统 RAG 对此的应对是”重索引”,而重索引成本高、延迟大,且无法回答一个基本问题:“这件事什么时候开始成立、什么时候不再成立?”
知识图谱路线在 2026 年给出了更完整的答案:从微软 GraphRAG 的静态文档图谱,到 Zep 开源 Graphiti 的实时时序图谱,图结构开始成为 Agent 记忆与知识检索的核心载体。
一、GraphRAG:静态文档的全局视角
微软 GraphRAG(开源)解决了经典 RAG 的两个痛点:全局性问题(“整个文档集的主题是什么”)与多跳推理。流程是:抽取实体-关系 → 构建社区分层 → LLM 生成社区摘要 → 查询时走 local search(实体邻域)或 global search(社区摘要)。
但 GraphRAG 的代价也很明确:批处理式建图需要大量顺序 LLM 调用,语料一变就要重跑;时间维度只有粗粒度的时间戳;矛盾事实靠”摘要时由 LLM 判断”,不可追溯。它是为静态文档语料设计的,适合知识库问答、文档综述,不适合高频变化的业务事实。
二、Graphiti:为动态事实而生的时序图谱
Graphiti 是 Zep 开源的知识图谱框架(pip install graphiti-core),核心抽象是 episode(片段):一段原始输入(对话记录、文档、JSON 消息)作为溯源节点进入图谱,触发三条并发流水线:
- 实体抽取:LLM 结构化输出(Pydantic 约束 schema),抽取实体与关系;
- 向量化:为语义检索生成 embedding;
- 实体消解:余弦相似度聚类,把”Mike”与”Michael”归并为同一节点。
关键创新在双时间模型(bi-temporal):
- 事件时间(valid_at / invalid_at):事实在真实世界成立的时间段;
- 事务时间(created_at / expired_at):图谱”得知”该事实及被取代的时间。
当新 episode 引入冲突事实时,系统不删除旧边,而是打上失效时间戳并新建边。“Sarah 是 CEO”在 3 月 3 日失效,“Mike 是 CEO”同日生效——查 2 月的问题返回 Sarah,查当前的问题返回 Mike,且每条事实都能追溯到产生它的原始 episode(溯源/审计天然成立)。
# Graphiti 最小示例:写入一段对话并查询
import asyncio
from graphiti_core import Graphiti
from graphiti_core.llm_client import OpenAIClient
async def main():
graphiti = Graphiti(
"bolt://localhost:7687", "neo4j", "password",
llm_client=OpenAIClient()
)
await graphiti.build()
# 写入 episode(用户偏好发生变化)
await graphiti.add_episode(
"Kendra prefers Adidas shoes (as of March 2026).",
source="conversation", reference_time="2026-03-01"
)
# 查询当前偏好
results = await graphiti.search("Kendra's current shoe preference")
print(results)
asyncio.run(main())
三、GraphRAG vs Graphiti:一张表看清定位
| 维度 | GraphRAG | Graphiti |
|---|---|---|
| 主要用途 | 静态文档总结 | 动态数据管理 |
| 数据处理 | 批处理、全量重跑 | 增量、实时更新 |
| 知识结构 | 实体簇 + 社区摘要 | episode 溯源 + 语义实体 + 社区 |
| 检索方式 | 顺序 LLM 摘要 | 语义 + 关键词 + 图遍历混合(查询路径无 LLM) |
| 时间处理 | 基础时间戳 | 显式双时间模型 |
| 矛盾处理 | LLM 摘要判断 | 时间边失效机制 |
| 典型延迟 | 秒级到数十秒 | 亚秒级 |
工程上的直观收益(社区实测):相比全量对话重放,图谱检索能把送入上下文的 token 压到约 2%、延迟降低约 90%——因为查询路径不再需要 LLM 参与,纯图遍历 + 向量命中即可。
四、混合架构:向量、图谱与 KV 各司其职
2026 年的生产共识是三者互补而非互斥:
- 向量库负责”相似内容”检索(语义模糊匹配);
- 知识图谱负责”关联推理”(多跳、时间、反事实);
- KV/关系库负责精确结构化查询(订单状态、配置项)。
记忆整合层按查询类型路由:事实性快问走 KV、开放语义问题走向量、关系与时序问题走图谱。Zep 的托管平台(Graphiti 之上的商业化层)提供的正是这套封装:治理、仪表盘、亚 200ms 托管检索与 SLA。
五、选型建议
| 场景 | 方案 |
|---|---|
| 固定文档集的知识库问答 / 综述 | GraphRAG(含 nano-graphrag 等轻量实现) |
| 用户偏好 / 业务状态频繁变化 | Graphiti(或 Zep 托管) |
| 需要事实溯源审计(合规) | 图谱方案(episode 溯源是天然审计日志) |
| 多跳推理密集的复杂问答 | 向量 + 图谱混合,图谱兜底关系查询 |
结语
GraphRAG 证明了”图能让 LLM 看见文档集的全局结构”,Graphiti 则把这份结构从静态快照升级为随时间演化的活知识。对 Agent 而言,后者才是记忆该有的形态:记得住”现在的事实”,也想得起”曾经的事实”,还能说清”每条事实从哪来”。当记忆库能回答时间和来源问题,Agent 才真正跨过了”像人一样会记错”到”比人更可靠地记得”的分界线。