Graphiti : un framework pour construire et interroger des graphes de connaissances en temps réel 166

小编 ·

Graphiti : un framework pour construire et interroger des graphes de connaissances en temps réel

Graphiti est un framework de construction et d'interrogation de graphes de connaissances doté d'une conscience temporelle, idéal pour les environnements dynamiques. Contrairement au RAG classique, Graphiti intègre en temps réel les interactions utilisateur, les données structurées et non structurées, ainsi que les informations externes dans un graphe interrogeable. Il prend en charge les mises à jour en temps réel, la recherche efficace et les requêtes historiques précises sans recalculer l'ensemble du graphe, ce qui le rend parfait pour des applications interactives et contextuelles.

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.

Graphiti : un framework pour construire et interroger des graphes de connaissances en temps réel.webp

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