Graphiti: Ein Framework zum Aufbau und zur Abfrage von Echtzeit-Wissensgraphen
Was ist Graphiti?
Graphiti ist ein Framework zum Aufbau und zur Abfrage von Wissensgraphen, das über eine zeitliche Wahrnehmung verfügt und sich daher besonders für den Einsatz in dynamischen Umgebungen eignet. Im Gegensatz zu herkömmlichen Retrieval-Augmented-Generation-Methoden (RAG) kann Graphiti Benutzerinteraktionen, strukturierte und unstrukturierte Daten sowie externe Informationen in Echtzeit integrieren und einen abfragbaren Graphen erzeugen. Zu seinen Stärken gehören die Unterstützung von Echtzeit-Updates der Daten, eine effiziente Abfrage sowie präzise historische Abfragen, ohne dass der gesamte Graph neu berechnet werden muss – ideal für die Entwicklung interaktiver, kontextbewusster Anwendungen.

Die wichtigsten Funktionen von Graphiti
Echtzeit-Inkrementupdates: Neue Datenfragmente können sofort integriert werden, ohne dass eine stapelweise Neuberechnung erforderlich ist.
Duales temporales Datenmodell: Verfolgt explizit die Ereigniszeit und die Aufnahmezeit und ermöglicht so präzise zeitpunktbezogene Abfragen.
Effiziente hybride Suche: Kombiniert semantische Embeddings, Schlüsselwörter (BM25) und Graph-Traversierung für Abfragen mit niedriger Latenz, ohne auf Large Language Models (LLMs) für Zusammenfassungen angewiesen zu sein.
Benutzerdefinierte Entitätsdefinitionen: Unterstützt die Erstellung flexibler Ontologien und benutzerdefinierter Entitäten durch einfache Pydantic-Modelle.
Skalierbarkeit: Verwaltet große Datensätze durch parallele Verarbeitung effektiv und eignet sich damit für Unternehmensumgebungen.
Integration mit mehreren LLMs: Unterstützt LLM-Anbieter wie Openai, Anthropic und Groq und bietet flexible Optionen für LLM-Inferenz und Embeddings.
MCP-Server: Stellt einen API-Dienst auf Basis von FastAPI bereit, der die Interaktion mit dem Wissensgraphen über das MCP-Protokoll unterstützt, einschließlich Funktionen für Ereignisverwaltung, Entitätsverwaltung und Behandlungen von Beziehungen.
Warum Graphiti wählen
Es kann Daten in Echtzeit aktualisieren und sich an dynamisch veränderliche Umgebungen anpassen.
Unterstützt präzise zeitpunktbezogene Abfragen und erleichtert so das Zurückverfolgen historischer Informationen.
Schnelle Abfragegeschwindigkeit, ohne auf komplexe Sprachmodelle angewiesen zu sein.
Datenstrukturen können an spezifische Anforderungen angepasst werden.
Kann große Datenmengen effizient verarbeiten und eignet sich für Anwendungen auf Unternehmensebene.
Installation und Verwendung von Graphiti
Graphiti installieren
Stelle zunächst sicher, dass dein System die Installationsanforderungen erfüllt, und installiere die erforderlichen Abhängigkeiten:
Python: Stelle sicher, dass Python 3.10 oder höher auf deinem System installiert ist.
Neo4j: Installiere die Neo4j-Datenbank, Version 5.26 oder höher. Du kannst Neo4j Desktop verwenden, um die Installation und Verwaltung zu vereinfachen.
OpenAI-API-Schlüssel: Wenn du OpenAI für LLM-Inferenz und Embeddings verwenden möchtest, benötigst du einen gültigen OpenAI-API-Schlüssel.
Du kannst pip oder poetry verwenden, um die Graphiti-Kernbibliothek zu installieren:
pip install graphiti-core # 或者 poetry add graphiti-core
Graphiti initialisieren
Initialisiere eine Graphiti-Instanz in deinem Code und stelle eine Verbindung zur Neo4j-Datenbank her:
from graphiti_core import Graphiti
graphiti = Graphiti("bolt://localhost:7687", "neo4j", "password")Indizes und Constraints aufbauen
Bevor du Daten hinzufügst, initialisiere die Graphdatenbank und baue die Indizes und Constraints von Graphiti auf:
await graphiti.build_indices_and_constraints()
Daten hinzufügen
Verwende die Methode add_episode, um Daten zum Wissensgraphen hinzuzufügen. Jedes Datenfragment wird als „episode" bezeichnet:
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)
)Daten abfragen
Verwende die Methode search, um den Wissensgraphen abzufragen, wobei semantische Ähnlichkeit und Schlüsselwortsuche kombiniert werden:
results = await graphiti.search('Who was the California Attorney General?')Benutzerdefinierte Abfragen
Du kannst Abfragen nach Bedarf anpassen, z. B. durch Angabe eines zentralen Knotens, um Ergebnisse zu bevorzugen, die diesem Knoten näher stehen:
await graphiti.search('Who was the California Attorney General?', center_node_uuid)Verbindung schließen
Schließe nach Abschluss der Verwaltung des Chat-Zustands die Graphiti-Verbindung:
graphiti.close()
MCP-Server verwenden
Graphiti stellt einen MCP-Server bereit, der über FastAPI interagiert werden kann. Du kannst diesen Server bereitstellen und über das MCP-Protokoll mit dem Wissensgraphen interagieren:
1. Klone oder lade das Graphiti-Repository herunter.
2. Starte den MCP-Server:
uvicorn graphiti.mcp_server.main:app --reload
3. Verwende in deinem KI-Assistenten das MCP-Protokoll, um mit dem Server zu kommunizieren.
Azure OpenAI verwenden
Wenn du Azure OpenAI verwenden möchtest, musst du den entsprechenden Client und Embedder konfigurieren:
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) )
Stelle sicher, dass du die Platzhalterwerte durch deine tatsächlichen Azure-OpenAI-Anmeldedaten ersetzt und den korrekten Namen des Embedding-Modells angibst.
Die Vorteile von Graphiti
Im Vergleich zu anderen Technologien bietet Graphiti deutliche Vorteile bei der Verarbeitung dynamischer Daten, Echtzeit-Updates und der Abfragegeschwindigkeit.
Stellt eine Server-Implementierung bereit, die die Integration in andere Systeme erleichtert.
Unterstützt verschiedene Umgebungskonfigurationen und die Integration mit anderen Diensten.
Verwandte Links
Paper: https://arxiv.org/abs/2501.13956
GitHub-Repository: https://github.com/getzep/graphiti
Drehbuch-Assistent▸
AI Apps
AI Nachrichten 