Handbücher · Wissensgraphen
Graphen mit LLMs bauen
Lernziele
- Du legst vor der Extraktion eine kleine Ontologie fest und begründest, warum sie eng beginnt.
- Du speicherst zu jedem Tripel seine Herkunft und prüfst einen Lauf mit Stichproben.
- Du führst Dubletten in drei Stufen steigender Kosten zusammen und erklärst, warum das beim Schreiben passiert.
Die Extraktion entscheidet alles. Ein Graph-Store speichert treu, was du hineinlegst. Ob das Wissen ist oder Rauschen, entscheidet die Pipeline davor. Diese Lektion zeigt ihre praktische Form.
Schema vor der Extraktion
Eine Extraktion ohne Vorgaben liefert eine Krimskramsschublade: WORKS_AT, WORKS_FOR und EMPLOYED_BY als drei verschiedene Kanten für dieselbe Tatsache. Lege deshalb zuerst die Ontologie · engl. ontologyDie festgelegten Typen eines Graphen: welche Arten von Entitäten und welche Beziehungen es geben darf. Sie hält die Extraktion einheitlich.Im Glossar fest, auch wenn sie klein ist. Nach unserer Einschätzung decken fünf Typen von Entitäten und zehn Typen von Beziehungen die meisten persönlichen Bestände und Agenten-Bestände ab.
# ontologie.yaml – Beispiel für einen Bestand aus Projektnotizen
entitaeten: [Person, Organisation, Projekt, Werkzeug, Konzept]
beziehungen:
- arbeitet_bei # Person → Organisation
- leitet # Person → Projekt
- nutzt # Projekt → Werkzeug
- warnt_vor # Person → Werkzeug
- gehoert_zu # Projekt → Organisation
- baut_auf # Konzept → Konzept
- widerspricht # Konzept → Konzept
- erwaehnt # beliebig → beliebig, nur wenn nichts anderes passt
Ernsthafte Werkzeuge nehmen so ein Schema als Vorgabe. Der LLMGraphTransformer von LangChain hat dafür die Parameter allowed_nodes und allowed_relationships. Der Property Graph Index von LlamaIndex bringt einen SchemaLLMPathExtractor mit. Mit strict=True erzwingt er die Typen schon beim Extrahieren.
Fang enger an, als es sich richtig anfühlt. Ein Schema später zu erweitern kostet wenig. Einen Zoo fast gleicher Prädikate wieder zusammenzuführen kostet viel.
Der Extraktionslauf
Die Mechanik ist bei allen Werkzeugen gleich. Du zerlegst die Quelle in Abschnitte, lässt das Modell typisierte Tripel · engl. tripleEine Aussage in der Form Subjekt, Prädikat, Objekt, etwa (Kunde A, nutzt, Framework X). Aus Tripeln setzt sich ein extrahierter Wissensgraph zusammen.Im Glossar plus eine kurze Beschreibung pro Entität ausgeben und hältst die Herkunft fest: aus welchem Abschnitt, welchem Dokument und von welchem Datum jedes Tripel stammt.
{
"subjekt": "Kollegin Weber",
"praedikat": "warnt_vor",
"objekt": "Framework X",
"beschreibung": "Warnung wegen fehlender Sicherheitsupdates",
"herkunft": {
"dokument": "notizen/2026-03-12-teamrunde.md",
"abschnitt": 4,
"datum": "2026-03-12"
}
}
Mit der Herkunft beantwortest du die Frage „Warum glaubt der Graph das?“. Und wenn eine Quelle zurückgezogen wird, löschst du genau die Kanten, die aus ihr stammen.
Strukturierte Ausgabe macht das Parsen zuverlässig. Was danach noch schiefgeht, liegt in der Bedeutung, denn die Syntax stimmt. Lies deshalb pro Durchgang ein paar Dutzend Tripel als Stichprobe. Die Quote erfolgreich geparster Antworten misst nur die Syntax.
Inkrementelle Updates
Die ursprüngliche GraphRAG-Pipeline setzt auf Neuindexieren in einem Durchgang. Für einen Bestand, der sich täglich ändert, ist das unbezahlbar. Die aktuelle Generation von Werkzeugen ist von Anfang an inkrementell gebaut.
Graphiti hat hier nach unserer Einschätzung das stärkste Design. Jede neue Episode wird extrahiert und mit dem vorhandenen Graphen abgeglichen. Widerspricht eine neue Kante einer alten, markiert Graphiti die alte mit einem Zeitstempel als ungültig und behält sie. Der Graph weiß dann beides: „galt bis März“ und „gilt seit März“.
Für das Gedächtnis eines Agenten macht diese zeitliche Ebene den Unterschied zwischen Gedächtnis und Cache. Ein Cache kennt nur den letzten Stand. Ein Gedächtnis beantwortet auch „Wo arbeitete Anna, als wir das Angebot geschrieben haben?“.
Dubletten und Entity Resolution
Dieselbe Person kommt als J. Smith, John Smith und „john aus dem Betrieb“ an. Die Entity Resolution · engl. entity resolutionDas Zusammenführen von Einträgen, die dieselbe Entität meinen, etwa „J. Smith“ und „John Smith“. Ohne sie zerfällt ein Graph in Dubletten.Im Glossar führt solche Einträge zusammen, in drei Stufen steigender Kosten:
- Namen vergleichen: exakt und normalisiert, also ohne Groß- und Kleinschreibung, Titel und Satzzeichen.
- Beschreibungen vergleichen: Ähnlichkeit der Embeddings über die Beschreibungen der Entitäten, mit einem Schwellenwert.
- Modell entscheiden lassen: Ein Sprachmodell beurteilt die Kandidatenpaare, die übrig bleiben.
Erledige die billigen Stufen zuerst und gib nur den mehrdeutigen Rest an das Modell. Und löse Dubletten beim Schreiben auf. Läuft die Bereinigung später als Batch, sieht jede Abfrage bis dahin einen zersplitterten Graphen.
Welche Stufe reicht?
Ordne jedes Paar der billigsten Stufe zu, die es sicher zusammenführt.
Noch offen (5)
- „Dr. Anna Weber“ und „anna weber“
- „OpenAI, Inc.“ und „OpenAI“
- „Vergessenskurve“ und „Ebbinghaus-Kurve“, beide beschrieben als Abfall des Behaltens über die Zeit
- „John Smith“ und „john aus dem Betrieb“
- „Apple“ in einer Notiz über Smartphones und „Apple“ in einem Rezept
1 Namen normalisieren (0)
2 Beschreibungen vergleichen (0)
3 Modell entscheidet (0)
Die Schleife klein halten
Extrahiere hundert Dokumente, sieh dir den Graphen an, korrigiere das Schema, lass den Lauf neu laufen. Nach unserer Einschätzung scheitern vor allem die Pipelines, die den ganzen Bestand verarbeiten, bevor jemand hinschaut.
Wo das Ergebnis liegt, als eingebettete Datenbank, in Dateien oder als Wikilinks, behandelt die Lektion Graph-Stores. Fertige Implementierungen stellt die Lektion Werkzeuge vor.
Merksätze
- Ohne Schema entstehen viele fast gleiche Prädikate. Lege eine kleine Ontologie fest, bevor du extrahierst.
- Jedes Tripel bekommt seine Herkunft: Dokument, Abschnitt, Datum.
- Strukturierte Ausgabe sichert die Syntax. Die Bedeutung prüfst du mit Stichproben.
- Inkrementelle Werkzeuge wie Graphiti markieren widersprochene Kanten als ungültig und behalten sie.
- Dubletten löst du beim Schreiben auf, billigste Stufe zuerst, und das Modell bekommt nur den Rest.
Prüf dich selbst
Denkfrage
Eine Quelle in deinem Bestand stellt sich als falsch heraus. Was brauchst du, um ihre Spuren aus dem Graphen zu entfernen?
Die Herkunft an jedem Tripel. Steht an jeder Kante, aus welchem Dokument und Abschnitt sie stammt, löschst du genau diese Kanten. Ohne Herkunft weißt du nicht, welche Kanten auf der falschen Quelle beruhen.
Denkfrage
Warum ist ein Schema leichter zu erweitern als zu verkleinern?
Ein neuer Typ betrifft nur künftige Extraktionen. Fast gleiche Prädikate zusammenzuführen heißt dagegen, jede vorhandene Kante zu prüfen und umzuschreiben, und dabei zu entscheiden, ob WORKS_FOR und EMPLOYED_BY wirklich dasselbe meinen.
Prüf dich selbst
Quellen
- LLMGraphTransformer
Parameter allowed_nodes und allowed_relationships.
- Property Graph Index Guide
SchemaLLMPathExtractor, mit strict=True nur Tripel im Schema.
- Graphiti: Build Real-Time Knowledge Graphs for AI Agents
Inkrementelle Episoden, ungültig markierte Kanten mit Zeitstempel.