Graphiti : un framework pour construire et interroger des graphes de connaissances en temps réel
Qu'est-ce que Graphiti ?
Graphiti est un framework pour construire et interroger des graphes de connaissances, doté d'une capacité de perception temporelle, ce qui le rend particulièrement adapté aux environnements dynamiques. Contrairement aux méthodes traditionnelles de génération augmentée par récupération (RAG), Graphiti peut intégrer en temps réel les interactions utilisateur, les données structurées et non structurées, ainsi que les informations externes, afin de générer un graphe interrogeable. Ses avantages résident dans la prise en charge des mises à jour de données en temps réel, d'une récupération efficace et de requêtes historiques précises, sans avoir besoin de recalculer l'ensemble du graphe, ce qui le rend idéal pour développer des applications interactives et contextuelles.

Fonctionnalités principales de Graphiti
Mises à jour incrémentielles en temps réel : capable d'intégrer immédiatement de nouveaux fragments de données, sans nécessiter de recalculs par lots.
Modèle de données bi-temporel : suit explicitement le moment où l'événement se produit et le moment de l'ingestion, permettant des requêtes ponctuelles précises.
Recherche hybride efficace : combine les embeddings sémantiques, les mots-clés (BM25) et le parcours de graphe pour offrir des requêtes à faible latence, sans dépendre d'un grand modèle de langage (LLM) pour la synthèse.
Définition d'entités personnalisée : prend en charge la création d'ontologies et d'entités personnalisées flexibles via de simples modèles Pydantic.
Extensibilité : gère efficacement de grands ensembles de données grâce au traitement parallèle, ce qui convient aux environnements d'entreprise.
Intégration avec plusieurs LLM : prend en charge les fournisseurs de LLM tels qu'Openai, Anthropic et Groq, offrant des options flexibles d'inférence et d'embedding de LLM.
MCP Server : fournit un service API basé sur FastAPI, prenant en charge l'interaction avec le graphe de connaissances via le protocole MCP, y compris la gestion des événements, la gestion des entités et le traitement des relations.
Pourquoi choisir Graphiti
Il peut mettre à jour les données en temps réel, s'adaptant aux environnements en constante évolution.
Il prend en charge des requêtes ponctuelles précises, facilitant le suivi des informations historiques.
La recherche est rapide et ne dépend pas de modèles de langage complexes.
Il permet de personnaliser les structures de données pour répondre à des besoins spécifiques.
Il traite efficacement de grands volumes de données, ce qui convient aux applications de niveau entreprise.
Installation et utilisation de Graphiti
Installation de Graphiti
Tout d'abord, assurez-vous que votre système répond aux exigences d'installation et installez les dépendances nécessaires :
Python : assurez-vous que Python 3.10 ou une version ultérieure est installé sur votre système.
Neo4j : installez la base de données Neo4j, version 5.26 ou ultérieure. Vous pouvez utiliser Neo4j Desktop pour simplifier le processus d'installation et de gestion.
Clé API OpenAI : si vous prévoyez d'utiliser OpenAI pour l'inférence LLM et les embeddings, vous aurez besoin d'une clé API OpenAI valide.
Vous pouvez installer la bibliothèque principale de Graphiti via pip ou poetry :
pip install graphiti-core # 或者 poetry add graphiti-core
Initialisation de Graphiti
Initialisez une instance de Graphiti dans votre code et connectez-vous à la base de données Neo4j :
from graphiti_core import Graphiti
graphiti = Graphiti("bolt://localhost:7687", "neo4j", "password")Construction des index et contraintes
Avant d'ajouter des données, initialisez la base de données de graphe et construisez les index et contraintes de Graphiti :
await graphiti.build_indices_and_constraints()
Ajout de données
Utilisez la méthode add_episode pour ajouter des données au graphe de connaissances. Chaque fragment de données est appelé un « episode » :
from graphiti_core.nodes import EpisodeType
from datetime import datetime, timezone
episodes = [
"Kamala Harris is the Attorney General of California. She was previously the district attorney for San Francisco.",
"As AG, Harris was in office from January 3, 2011 – January 3, 2017"
]
for i, episode in enumerate(episodes):
await graphiti.add_episode(
name=f"Freakonomics Radio {i}",
episode_body=episode,
source=EpisodeType.text,
source_description="podcast",
reference_time=datetime.now(timezone.utc)
)Interrogation des données
Utilisez la méthode search pour interroger le graphe de connaissances, en combinant la similarité sémantique et la recherche par mots-clés :
results = await graphiti.search('Who was the California Attorney General?')Requête personnalisée
Vous pouvez personnaliser les requêtes selon vos besoins, par exemple en spécifiant un nœud central pour prioriser les résultats plus proches de ce nœud :
await graphiti.search('Who was the California Attorney General?', center_node_uuid)Fermeture de la connexion
Une fois la gestion de l'état de la conversation terminée, fermez la connexion Graphiti :
graphiti.close()
Utilisation du serveur MCP
Graphiti fournit un serveur MCP avec lequel vous pouvez interagir via FastAPI. Vous pouvez déployer ce serveur et utiliser le protocole MCP pour interagir avec le graphe de connaissances :
1. Clonez ou téléchargez le dépôt Graphiti.
2. Lancez le serveur MCP :
uvicorn graphiti.mcp_server.main:app --reload
3. Utilisez le protocole MCP dans votre assistant IA pour communiquer avec le serveur.
Utilisation d'Azure OpenAI
Si vous souhaitez utiliser Azure OpenAI, vous devez configurer le client et l'embedder correspondants :
from openai import AsyncAzureOpenAI from graphiti_core import Graphiti from graphiti_core.llm_client import OpenAIClient from graphiti_core.embedder.openai import OpenAIEmbedder, OpenAIEmbedderConfig api_key = "<your-api-key>" api_version = "<your-api-version>" azure_endpoint = "<your-azure-endpoint>" azure_openai_client = AsyncAzureOpenAI(api_key=api_key, api_version=api_version, azure_endpoint=azure_endpoint) graphiti = Graphiti( "bolt://localhost:7687", "neo4j", "password", llm_client=OpenAIClient(client=azure_openai_client), embedder=OpenAIEmbedder(config=OpenAIEmbedderConfig(embedding_model="text-embedding-3-small"), client=azure_openai_client) )
Veillez à remplacer les valeurs des espaces réservés par vos identifiants Azure OpenAI réels et à spécifier le nom correct du modèle d'embedding.
Avantages de Graphiti
Comparé à d'autres technologies, Graphiti présente des avantages évidents dans le traitement des données dynamiques, les mises à jour en temps réel et la vitesse des requêtes.
/li>Fournit une implémentation serveur pour faciliter l'intégration avec d'autres systèmes.
Prend en charge plusieurs configurations d'environnement et l'intégration avec d'autres services.
Liens connexes
Article : https://arxiv.org/abs/2501.13956
Dépôt GitHub : https://github.com/getzep/graphiti
Assistant scénario▸
Apps AI
Actualités AI 