From f00fb2a8a03fb8e234bf9d0aff802b8302194883 Mon Sep 17 00:00:00 2001
From: Daniel Chalef <131175+danielchalef@users.noreply.github.com>
Date: Sat, 22 Mar 2025 09:41:42 -0700
Subject: [PATCH] docs: update README for real-time capabilities and GraphRAG
comparison (#299)
* update intro and add graphrag
* small nits
---
README.md | 65 +++++++++++++++++++++++++++++--------------------------
1 file changed, 34 insertions(+), 31 deletions(-)
diff --git a/README.md b/README.md
index 6f813118..e27fa805 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
Graphiti
- Temporal Knowledge Graphs for Agentic Applications
+ Build Real-Time Knowledge Graphs for AI Agents
[](https://discord.com/invite/W8Kw6bsgXQ)
@@ -19,9 +19,13 @@ Graphiti
:star: _Help us reach more developers and grow the Graphiti community. Star this repo!_
-Graphiti builds dynamic, temporally aware Knowledge Graphs that represent complex, evolving relationships between
-entities over time. Graphiti 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, effectively serving as a powerful memory layer for AI applications.
+Graphiti is a framework for building and querying temporally-aware knowledge graphs, specifically tailored for AI agents operating in dynamic environments. Unlike traditional retrieval-augmented generation (RAG) methods, Graphiti continuously integrates user interactions, structured and unstructured enterprise data, and external information into a coherent, queryable graph. The framework supports incremental data updates, efficient retrieval, and precise historical queries without requiring complete graph recomputation, making it suitable for developing interactive, context-aware AI applications.
+
+Use Graphiti to:
+
+- Integrate and maintain dynamic user interactions and business data.
+- Facilitate state-based reasoning and task automation for agents.
+- Query complex, evolving data with semantic, keyword, and graph-based search methods.
@@ -31,23 +35,14 @@ a fusion of time, full-text, semantic, and graph algorithm approaches, effective
-Graphiti helps you create and query Knowledge Graphs that evolve over time. A knowledge graph is a network of
-interconnected facts, such as _“Kendra loves Adidas shoes.”_ Each fact is a “triplet” represented by two entities, or
+A knowledge graph is a network of interconnected 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 knowledge graph
while handling changing relationships and maintaining historical context.
-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 through robust conversation history management.
-- Agents that autonomously execute complex tasks, reasoning with state changes from multiple dynamic sources through persistent memory.
-
-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 Memory
-Graphiti powers the core of [Zep's memory layer](https://www.getzep.com) for LLM-powered Assistants and Agents.
+Graphiti powers the core of [Zep's memory layer](https://www.getzep.com) for AI Agents.
Using Graphiti, we've demonstrated Zep is
the [State of the Art in Agent Memory](https://blog.getzep.com/state-of-the-art-agent-memory/).
@@ -62,28 +57,35 @@ We're excited to open-source Graphiti, believing its potential reaches far beyon
## Why Graphiti?
-We were intrigued by Microsoft's GraphRAG, which expanded on RAG (Retrieval-Augmented Generation) 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.
+Traditional RAG approaches often rely on batch processing and static data summarization, making them inefficient for frequently changing data. Graphiti addresses these challenges by providing:
-Graphiti is designed from the ground up to handle constantly changing information, hybrid semantic and graph search, and
-scale:
-
-- **Temporal Awareness:** Tracks changes in facts and relationships over time, enabling point-in-time queries. Graph
- edges include temporal metadata to record relationship lifecycles, creating a comprehensive context window extension.
-- **Episodic Processing:** Ingests data as discrete episodes, maintaining data provenance and allowing incremental
- entity and relationship extraction, ideal for chat state management.
-- **Hybrid Search:** Combines semantic and BM25 full-text search, with the ability to rerank results by distance from a
- central node e.g. "Kendra".
-- **Scalable:** Designed for processing large datasets, with parallelization of LLM calls for bulk processing while
- preserving the chronology of events and enabling efficient knowledge retrieval.
-- **Supports Varied Sources:** Can ingest both unstructured text and structured JSON data.
+- **Real-Time Incremental Updates:** Immediate integration of new data episodes without batch recomputation.
+- **Bi-Temporal Data Model:** Explicit tracking of event occurrence and ingestion times, allowing accurate point-in-time queries.
+- **Efficient Hybrid Retrieval:** Combines semantic embeddings, keyword (BM25), and graph traversal to achieve low-latency queries without reliance on LLM summarization.
+- **Custom Entity Definitions:** Flexible ontology creation and support for developer-defined entities through straightforward Pydantic models.
+- **Scalability:** Efficiently manages large datasets with parallel processing, suitable for enterprise environments.
+## Graphiti vs. GraphRAG
+
+| Aspect | GraphRAG | Graphiti |
+| -------------------------- | ------------------------------------- | ------------------------------------------------ |
+| **Primary Use** | Static document summarization | Dynamic data management |
+| **Data Handling** | Batch-oriented processing | Continuous, incremental updates |
+| **Knowledge Structure** | Entity clusters & community summaries | Episodic data, semantic entities, communities |
+| **Retrieval Method** | Sequential LLM summarization | Hybrid semantic, keyword, and graph-based search |
+| **Adaptability** | Low | High |
+| **Temporal Handling** | Basic timestamp tracking | Explicit bi-temporal tracking |
+| **Contradiction Handling** | LLM-driven summarization judgments | Temporal edge invalidation |
+| **Query Latency** | Seconds to tens of seconds | Typically sub-second latency |
+| **Custom Entity Types** | No | Yes, customizable |
+| **Scalability** | Moderate | High, optimized for large datasets |
+
+Graphiti is specifically designed to address the challenges of dynamic and frequently updated datasets, making it particularly suitable for applications requiring real-time interaction and precise historical queries.
+
## Installation
Requirements:
@@ -258,6 +260,7 @@ Graphiti is under active development. We aim to maintain API stability while wor
- Allow developers to provide their own defined node and edge classes when ingesting episodes
- Enable more flexible knowledge representation tailored to specific use cases
- [x] Enhancing retrieval capabilities with more robust and configurable options
+- [ ] Graphiti MCP Server
- [ ] Expanding test coverage to ensure reliability and catch edge cases
## Contributing