1. 从向量孤岛到时间感知图:Graphiti的核心设计哲学
在传统的大模型应用开发中,我们常常陷入一个两难困境:要么使用简单的键值存储丢失上下文关联,要么采用向量检索(RAG)却无法理解实体间的复杂关系。Graphiti的诞生正是为了解决这个根本性问题。
1.1 传统方案的局限性
典型的RAG架构就像在图书馆里使用关键词搜索——它能找到包含特定词汇的页面,却无法理解这些页面之间的逻辑联系。举个例子,当查询"苹果公司2023年的CEO是谁"时:
- 向量检索可能返回一堆包含"苹果"、"CEO"、"2023"等关键词的片段
- 但这些片段之间缺乏明确的关联路径
- 更无法自动推断出"Tim Cook在2023年仍是CEO"这一事实
1.2 时间感知属性图的突破
Graphiti引入了三个关键创新点:
- 实体-关系模型:将非结构化数据转化为节点(Node)和边(Edge)的图结构
- 时间维度:为每个元素添加有效时间戳,形成时态图(Temporal Graph)
- 动态融合:支持根据时间轴自动合并或版本化图元素
这种设计使得系统不仅能表示"A是B的CEO",还能精确记录这个关系的时间范围(如"2011-至今"),以及这个事实的来源和置信度。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 高并发架构的源码级实现
2.1 异步处理流水线设计
Graphiti的并发处理架构采用了典型的生产者-消费者模式,但针对图数据特性做了深度优化:
code复制文档流 → [提取Worker池] → [去重队列] → [融合Worker池] → 图存储
- 提取层:使用LLM并行解析文档,平均延迟控制在200ms以内
- 去重队列:基于内容的哈希指纹实现近实时去重
- 融合层:执行图结构的原子性更新
关键技巧:为每个文档分配优先级权重,重要文档优先处理,避免队列堵塞
2.2 乐观并发控制的实践改良
Graphiti没有采用传统的锁机制,而是实现了名为"Time-aware OCC"的变种算法:
- 读取阶段:获取当前图状态(无锁)
- 修改阶段:在内存中构建变更集
- 提交阶段:检查时间戳冲突
- 无冲突:直接应用变更
- 有冲突:根据预设策略解决(最新时间戳优先/高权
