Graphiti: Temporal Knowledge Graphs for Agentic Apps
Graphiti builds dynamic, temporally aware knowledge graphs that represent complex, evolving relationships between entities over time.
We’ve just open sourced Graphiti, a new open-source library for building and querying dynamic, time-aware knowledge graphs.
What's Graphiti?
In essence, Graphiti is a tool for modeling and analyzing complex, evolving relationships between entities over time. It ingests both unstructured and structured data, creating a graph that can be queried using a combination of temporal, full-text, semantic, and graph algorithm approaches.
What can you build with it?
Graphiti is designed with agentic applications in mind, particularly those requiring temporal reasoning and dynamic data handling. Some potential use cases include:
- Assistants that evolve with user interactions, merging personal knowledge with real-time data from various business systems.
- Agents capable of executing complex tasks autonomously, processing state changes from diverse dynamic sources - think anything from traffic conditions to live voice transcriptions.
How is Graphiti different to GraphRAG and others?
We built Graphiti specifically for dynamic data and agent-based applications. Here's what sets it apart:
- Smart Graph Updates: It automatically evaluates new entities against the existing graph, updating both to reflect the latest context.
- Rich Edge Semantics: During graph construction, it generates human-readable, semantic, and full-text searchable representations for edges. This enhances both search capabilities and interpretability.
- Temporal Awareness: It extracts and updates time-based edge metadata from input data, enabling reasoning over changing relationships.
- Hybrid Search: Offers semantic, BM25, and graph-based search with result fusion capabilities.
- Performance: Search results typically come in under 100ms, with latency mainly determined by the third-party embedding API call.
- Schema Consistency: Maintains a coherent graph structure by reusing existing schema, preventing unnecessary proliferation of node and edge types.
Why did we build it?
Graphiti was initially developed to power Zep Memory, our long-term memory layer for building personalized and accurate LLM applications. However, we realized its potential extends beyond just memory applications, hence the decision to open-source it.
Where can you find it?
- GitHub: https://git.new/graphiti
- Documentation: https://help.getzep.com/graphiti
We're keen to see what the community builds with Graphiti. Whether you have feedback, want to contribute, or just want to share what you've built, we'd love to hear from you!