Graphiti — graphes de connaissances temporels pour Agent AI
Graphiti construit un graphe de connaissances temporel à partir de données en flux — chaque arête a une fenêtre de validité. Les Agent peuvent interroger non seulement « ce qui est vrai » mais aussi « ce qui était vrai et quand ».
Why Graphiti
La plupart des systèmes mémoire écrasent les faits quand ils changent. Graphiti garde l'historique. Quand un utilisateur dit « j'ai déménagé à Tokyo », Graphiti ne supprime pas l'ancien fait « vit à Berlin » — il fixe son timestamp valid_to et ouvre une nouvelle arête. Désormais votre Agent peut répondre naturellement à « où vivait William avant Tokyo ? ».
Le pari technique, c'est que les arêtes bi-temporelles (valid_from / valid_to plus created_at / invalidated_at) sont la bonne primitive pour la mémoire d'Agent. Cela reprend la façon dont la modélisation de données relationnelles gère l'historique, adaptée au modèle entité-relation que les LLMs produisent naturellement en extrayant des faits depuis du texte.
Graphiti est développé par l'équipe Zep mais publié comme bibliothèque indépendante. Utilisez-le en standalone quand vous voulez une mémoire graph-first sans le cadrage par session de Zep, ou intégrez-le dans des pipelines RAG plus larges qui ont besoin du modèle d'arête temporelle.
Quick Start — Neo4j + Graphiti
Graphiti extrait des entités et des arêtes typées de chaque épisode, puis les réconcilie avec le graphe existant. Quand le second épisode indique que William a déménagé à Singapour, Graphiti invalide l'ancienne arête Shenzhen (valid_to = 2026-04-14) et crée une nouvelle arête Singapour — l'historique est préservé.
# pip install graphiti-core
# docker run -p 7687:7687 -e NEO4J_AUTH=neo4j/password neo4j:5
import asyncio
from datetime import datetime, timezone
from graphiti_core import Graphiti
from graphiti_core.nodes import EpisodeType
g = Graphiti(
"bolt://localhost:7687", "neo4j", "password",
)
async def main():
await g.build_indices_and_constraints()
# Add episodes (raw conversations or docs) — Graphiti extracts entities + edges
await g.add_episode(
name="intro",
episode_body="William is the founder of KeepRule and lives in Shenzhen.",
source=EpisodeType.text,
reference_time=datetime(2026, 1, 10, tzinfo=timezone.utc),
source_description="onboarding chat",
)
await g.add_episode(
name="move",
episode_body="William just moved from Shenzhen to Singapore.",
source=EpisodeType.text,
reference_time=datetime(2026, 4, 14, tzinfo=timezone.utc),
source_description="weekly standup",
)
# Temporal query — agents can ask "what was true at a point in time"
hits = await g.search(
"Where does William live?",
center_node_uuid=None,
)
for edge in hits:
print(edge.fact, "valid:", edge.valid_at, "invalid:", edge.invalid_at)
asyncio.run(main())Fonctionnalités clés
Arêtes bi-temporelles
Chaque arête suit à la fois le temps de l'événement (valid_from / valid_to — quand le fait était vrai dans le monde) et le temps système (created_at / invalidated_at — quand vous l'avez appris). Pattern bitemporel classique, adapté aux données extraites par LLM.
Ingestion en streaming
Conçu pour ingérer des épisodes de manière incrémentale — conversations, documents, événements d'API. Pas de réindexation par batch à l'arrivée de nouvelles données. L'extraction par LLM + le merge dans le graphe se font par épisode.
Récupération hybride
Parcours de graphe (walks de relations, BFS/DFS) combiné à la similarité vectorielle sur les descriptions de nœuds. Les requêtes peuvent être structurelles ("qui a travaillé avec X ?"), sémantiques ou les deux.
Flexibilité de schéma
Les types d'entités et de relations sont extraits par le LLM, pas déclarés à l'avance. Fonctionne à travers les domaines — même bibliothèque pour le support client, les dossiers médicaux ou la mémoire de codebase.
Backend Neo4j ou FalkorDB
Bases de données de graphe production-grade. Graphiti fait l'extraction et le merging intelligents ; la DB gère le stockage, les transactions et l'exécution des requêtes.
Intégration Zep
Zep utilise Graphiti en interne pour son service graphe. Vous pouvez utiliser l'un ou l'autre indépendamment ou ensemble — Zep pour la mémoire de session managée, Graphiti pour des pipelines graph-first personnalisés.
Comparaison
| Memory Model | History | Query Type | Backend | |
|---|---|---|---|---|
| Graphiticelui-ci | Temporal knowledge graph | Full bitemporal history | Graph + vector hybrid | Neo4j / FalkorDB |
| mem0 | Vector + optional graph | Overwrites on update | Vector similarity | Qdrant / Chroma / etc. |
| Neo4j GraphRAG | Static knowledge graph | Snapshot at ingest | Graph + vector | Neo4j |
| Microsoft GraphRAG | Community-detected graph | Rebuilt on re-index | Hierarchical summaries | Filesystem / any DB |
Cas d'usage
01. Santé et conformité
Scénarios où les faits historiques comptent légalement — « quel médicament le patient prenait-il en janvier ? ». Les arêtes bitemporelles sont le pattern standard pour les données régulées, désormais disponible pour les Agent LLM.
02. CRM et historique de compte
Assistants commerciaux qui doivent raisonner sur l'évolution des relations : « qui a décidé d'étendre le contrat, et quel était son rôle à ce moment-là ? »
03. Contexte ingénierie
Agent d'intelligence de code qui suivent quelle équipe possédait quel service au fil du temps, y compris les reorgs et les transferts de propriété. De simples tables « current owner » perdent l'historique pré-reorg.
Tarification et licence
Graphiti : open source Apache 2.0. Pas de frais de service — self-host aux côtés de Neo4j Community (gratuit) ou FalkorDB (basé sur Redis, gratuit). Vous payez les appels d'API LLM d'extraction et l'infra graph DB.
Coût graph DB : le tier gratuit Neo4j AuraDB couvre les petits graphes (~200K nœuds). Pour la production, Neo4j AuraDB Professional démarre autour de 65 $/mois, ou self-host Neo4j Community sur votre propre infra.
Coût d'extraction LLM : chaque épisode déclenche un appel d'extraction d'entités/arêtes. ~0,001 $ par épisode sur gpt-4o-mini. Le modèle d'extraction est configurable.
Assets associés sur TokRepo
Graphiti — Temporal AI Knowledge Graph by Zep
Build dynamic knowledge graphs from AI agent conversations. Graphiti tracks entity changes over time, resolves contradictions, and provides temporal-aware queries.
Graphiti — Real-Time Knowledge Graphs for AI Agents
Build real-time knowledge graphs for AI agents by Zep. Temporal awareness, entity extraction, community detection, and hybrid search. Production-ready. 24K+ stars.
Questions fréquentes
Graphiti vs Microsoft GraphRAG — quelle différence ?+
Microsoft GraphRAG construit un graphe statique à partir d'un corpus de documents au moment de l'indexation et interroge des résumés hiérarchiques. Graphiti construit un graphe temporel évolutif à partir d'épisodes en streaming et interroge des arêtes individuelles avec des filtres temporels. Utilisez GraphRAG pour les grandes bases de connaissances statiques ; utilisez Graphiti pour la mémoire d'Agent qui évolue dans le temps.
Faut-il connaître les graph databases pour utiliser Graphiti ?+
Non — Graphiti abstrait les requêtes Cypher/graphe derrière une API Python. Vous écrivez des appels .add_episode() et .search(). Connaître Neo4j aide pour le debug ou l'écriture de requêtes custom, mais n'est pas requis pour un usage typique.
Graphiti peut-il remplacer ma base vectorielle ?+
Pour la mémoire, oui — Graphiti embed les descriptions de nœuds et fait une recherche hybride graphe + vectorielle en interne. Pour du RAG généraliste sur documents, gardez une vector DB séparée. Graphiti est optimisé pour la mémoire centrée sur les entités, pas pour la récupération de documents longs.
Graphiti est-il production-ready ?+
Graphiti est utilisé en production par l'équipe Zep (il alimente le service graphe de Zep) et par une liste grandissante de tiers listés sur le README GitHub. L'API est stable ; attendez-vous à des scripts de migration occasionnels à mesure que la bibliothèque mûrit.
Avec quels LLMs Graphiti fonctionne-t-il ?+
OpenAI, Anthropic Claude, Google Gemini, Azure OpenAI, et les modèles locaux via un endpoint compatible OpenAI (Ollama, vLLM). Configurez le client LLM dans le constructeur de Graphiti — l'extraction et la recherche utilisent le même client par défaut.