Overview

The open-source temporal knowledge graph framework

What is a Context Graph?

Graphiti helps you create and query Context Graphs that evolve over time. A Context Graph is a temporal knowledge graph — a graph of entities, relationships, and facts, such as “Kendra loves Adidas shoes.” Each fact is a “triplet” represented by two entities, or nodes (”Kendra”, “Adidas shoes”), and their relationship, or edge (”loves”).


Knowledge Graphs have been explored extensively for information retrieval. What makes Graphiti unique is its ability to autonomously build a Context Graph while handling changing relationships and maintaining historical context.

graphiti intro slides

Graphiti builds dynamic, temporally-aware knowledge graphs — Context Graphs — that represent complex, evolving relationships between entities over time. It ingests both unstructured and structured data, and the resulting graph may be queried using a fusion of time, full-text, semantic, and graph algorithm approaches.

With Graphiti, you can build LLM applications such as:

  • Assistants that learn from user interactions, fusing personal knowledge with dynamic data from business systems like CRMs and billing platforms.
  • Agents that autonomously execute complex tasks, reasoning with state changes from multiple dynamic sources.

Graphiti supports a wide range of applications in sales, customer service, health, finance, and more, enabling long-term recall and state-based reasoning for both assistants and agents.

Graphiti and Zep

Graphiti is the open-source temporal knowledge graph framework. Use it to build and query a single Context Graph per subject locally — entity and edge extraction, the bi-temporal model, fact invalidation, and hybrid retrieval.

Zep is the unified context layer for enterprise data. Zep uses Graphiti to derive temporal graph artifacts. Zep runs a managed Context Lake on Konig, its graph database service. Use Zep when you need managed ingestion, retrieval, governance, and deployment options such as bring your own cloud (BYOC).

Why Graphiti?

We were intrigued by Microsoft’s GraphRAG, which expanded on RAG text chunking by using a graph to better model a document corpus and making this representation available via semantic and graph search techniques. However, GraphRAG did not address our core problem: It’s primarily designed for static documents and doesn’t inherently handle temporal aspects of data.

Graphiti is designed to handle changing information and hybrid semantic and graph search:

  • Temporal Awareness: Tracks changes in facts and relationships over time, enabling point-in-time queries. Graph edges include temporal metadata to record relationship lifecycles.
  • Episodic Processing: Ingests data as discrete episodes, maintaining data provenance and allowing incremental entity and relationship extraction.
  • Custom Entity Types: Supports defining domain-specific entity types, enabling more precise knowledge representation for specialized applications.
  • Hybrid Search: Combines vector similarity, BM25 full-text, and graph traversal into a single ranked answer, with no LLM-in-the-loop reranking. Results can be reranked by distance from a central node e.g. “Kendra”.
  • Pluggable Backends: Runs on Neo4j, FalkorDB, or Amazon Neptune, with LLM and embedding providers including OpenAI, Azure OpenAI, Gemini, and Anthropic.
  • Parallel bulk processing: Can parallelize LLM calls during bulk processing while preserving the chronology of events.
  • Supports Varied Sources: Can ingest both unstructured text and structured JSON data.
AspectGraphRAGGraphiti
Primary UseStatic document summarizationDynamic data management
Data HandlingBatch-oriented processingContinuous, incremental updates
Knowledge StructureEntity clusters & community summariesEpisodic data, semantic entities, communities
Retrieval MethodSequential LLM summarizationHybrid semantic, keyword, and graph-based search
AdaptabilityLowHigh
Temporal HandlingBasic timestamp trackingExplicit bi-temporal tracking
Contradiction HandlingLLM-driven summarization judgmentsTemporal edge invalidation
Custom Entity TypesNoYes, customizable

Graphiti is designed for dynamic and frequently updated datasets. Its bi-temporal model supports queries about current and historical relationships.

graphiti demo slides