GraphRAG
GraphRAG erstellt aus Dokumenten einen Wissensgraphen und ruft anschließend Entitäten, Beziehungen und Zusammenfassungen von Gemeinschaften ab, um mehrstufige und globale Fragen zu beantworten.
GraphRAG (graph retrieval-augmented generation) ist eine Form von Retrieval-Augmented Generation (RAG), bei der Informationen aus einem Wissensgraphen abgerufen werden, statt oder zusätzlich zu Textabschnitten aus einer Vektorsuche. Zunächst extrahiert ein großes Sprachmodell (LLM) Entitäten aus einer Dokumentensammlung, etwa Personen, Unternehmen, Bauteile und Orte, sowie die Beziehungen zwischen ihnen. Bei einer Frage ruft das System verbundene Entitäten, Beziehungspfade oder Zusammenfassungen ganzer Graphcluster ab und übergibt sie dem LLM als Kontext. Der Name bezieht sich vor allem auf den 2024 veröffentlichten GraphRAG-Ansatz von Microsoft Research für abfrageorientierte Zusammenfassungen, zu dem auch eine quelloffene Implementierung erschien. Der Begriff wird außerdem für jedes RAG-System verwendet, das Informationen aus einem Graphen abruft.
Warum Vektor-RAG einen Graphen braucht#
Bei gewöhnlichem RAG werden Textabschnitte als Embeddings dargestellt, in einer Vektordatenbank gespeichert und anschließend die wenigen Abschnitte abgerufen, die der Frage am ähnlichsten sind. Das funktioniert bei Fragen, die sich mit einem einzigen Abschnitt beantworten lassen, und hat bei zwei weiteren Arten Schwierigkeiten:
- Mehrstufige Fragen: Die Antwort hängt von Fakten aus verschiedenen Dokumenten ab, die nur über gemeinsame Entitäten miteinander verknüpft sind. Ein Beispiel: Welche Fabriken sind von einem Zulieferer in der Nähe eines Hafens abhängig, den ein Sturm geschlossen hat? Kein einzelner Abschnitt ähnelt der gesamten Frage.
- Globale Fragen: Fragen zum gesamten Korpus, etwa „Was sind die Hauptthemen in diesen 5.000 Störfallberichten?“, benötigen Informationen aus allen Dokumenten. Beim Abruf anhand von Vektoren werden dagegen nur die wenigen besten Treffer zurückgegeben.
Ein Graph speichert die Verbindungen zwischen Fakten ausdrücklich, sodass der Abruf ihnen folgen kann. Zusammenfassungen von Graphgemeinschaften decken den gesamten Korpus ab.
So funktioniert GraphRAG#
Microsofts GraphRAG erstellt seinen Index in vier Schritten. Zunächst teilt es Dokumente in Texteinheiten auf und lässt ein LLM Entitäten, Beziehungen und Behauptungen aus jeder Einheit extrahieren – eine LLM-gesteuerte Form der Erkennung benannter Entitäten und Relationsextraktion. Anschließend führt es die Beschreibungen von Entitäten, die in vielen Einheiten vorkommen, jeweils zu einem Knoten zusammen. Danach wird eine hierarchische Leiden-Erkennung von Gemeinschaften ausgeführt, die dicht verbundene Entitäten zu verschachtelten Gemeinschaften zusammenfasst. Schließlich lässt das System das LLM für jede Gemeinschaft auf jeder Ebene einen Zusammenfassungsbericht verfassen.
Anschließend werden Anfragen auf einem von zwei Wegen verarbeitet:
- Lokale Suche: Beginnt bei den in der Frage genannten Entitäten und sammelt deren Nachbarn, Beziehungen, Gemeinschaftsberichte sowie die ursprünglichen Texteinheiten, in denen sie vorkommen.
- Globale Suche: Verarbeitet Gemeinschaftsberichte nach dem Map-Reduce-Prinzip: Jeder Bericht liefert eine Teilantwort mit einem Relevanzwert; die relevantesten Teilantworten werden dann zur endgültigen Antwort zusammengeführt.
Bei Datensätzen mit etwa einer Million Tokens berichtete die Arbeit, dass die globale Suche bei Fragen zum gesamten Korpus deutlich umfassendere und vielfältigere Antworten lieferte als eine herkömmliche RAG-Baseline.
Der Kern der lokalen Suche ist die Durchquerung des Graphen. Dieses Python-Beispiel speichert mit NetworkX Tripel, die ein LLM aus verschiedenen Dokumenten extrahieren könnte, und folgt den Beziehungen ausgehend von der in der Frage genannten Entität:
import networkx as nx
# Entity-relationship triples that an LLM extracted from separate documents
triples = [
("Typhoon", "closed", "Kaohsiung port"),
("Kaohsiung port", "ships parts for", "Supplier A"),
("Supplier A", "makes", "bearing B-17"),
("bearing B-17", "is used at", "Ohio plant"),
("Texas plant", "uses", "motor M-4"),
]
graph = nx.DiGraph()
for head, relation, tail in triples:
graph.add_edge(head, tail, relation=relation)
# Question: "Which plants could the typhoon disrupt?"
# Local search: follow relationships outward from the entity named in the question
edges = nx.bfs_edges(graph, "Typhoon")
context = [f"{head} {graph[head][tail]['relation']} {tail}" for head, tail in edges]
print("\n".join(context))Es gibt die vier Verknüpfungen von „Taifun schließt Hafen von Kaohsiung“ bis „Lager B-17 wird im Werk Ohio verwendet“ aus – eine Verbindung, die in keinem einzelnen Quelldokument genannt wird – und lässt das nicht zugehörige Werk in Texas aus. Das LLM erhält diese Zeilen als Kontext zur Fundierung und kann antworten, dass das Werk in Ohio gefährdet ist.
GraphRAG im Vergleich zu verwandten Ansätzen#
- Wissensgraphen: Die Datenstruktur aus Entitäten und typisierten Beziehungen. GraphRAG erstellt oder nutzt einen bestehenden Graphen gezielt, um Kontext für ein LLM abzurufen.
- Hybride Suche: Kombiniert den Abruf über Schlüsselwörter und Vektoren für Textabschnitte. Viele GraphRAG-Systeme im Produktiveinsatz führen Graphdurchläufe parallel zur hybriden Suche aus.
- Agentisches RAG: Ein Agent entscheidet in mehreren Schritten, was und wann abgerufen wird. Graphabfragen können zu seinen Werkzeugen gehören.
- Graph-neuronale Netze (GNNs): Lernen durch Training aus der Graphstruktur und eignen sich für Aufgaben wie die Vorhersage von Verbindungen. GraphRAG verwendet den Graphen beim Abruf, ohne dafür trainiert zu werden.
Anwendungen in der Praxis#
- Wirkstoffforschung: Graphen, die Gene, Proteine, Wirkstoffe und Krankheiten miteinander verknüpfen, ermöglichen Forschenden Fragen über Tausende von Fachartikeln hinweg, etwa welche zugelassenen Medikamente auf Proteine in einem Krankheitspfad abzielen.
- Finanzermittlungen: Analysten verfolgen Besitzverhältnisse über Briefkastenfirmen und gemeinsame Geschäftsführer hinweg und lassen ein LLM das Netzwerk hinter einer verdächtigen Transaktion zusammenfassen.
- Risiken in der Lieferkette: Verknüpfungen zwischen Zulieferern, Teilen, Standorten und Versandwegen beantworten Fragen wie: Welche Produkte hängen von einer einzigen Fabrik ab?
- Unternehmenswissen: Große Sammlungen von Berichten, Tickets und Besprechungsnotizen werden nach Themen durchsuchbar. Zusammenfassungen aus der Community beantworten Fragen zur gesamten Sammlung.
Graphen können auch das festhalten, was Kameras erfassen, und bilden so die Grundlage für multimodales RAG über Videos. Die Entitätsauflösung – also die Entscheidung, ob sich zwei Erwähnungen auf dasselbe Objekt beziehen – ist bei Videos der Schritt, den das Objekttracking ausführt: Das Tracking mit Ultralytics YOLO26 weist jeder Person oder jedem Fahrzeug über mehrere Frames hinweg eine dauerhafte ID zu. So kann ein Videograph einen Knoten pro getracktem Objekt speichern und Kanten dafür, wo und wann es neben anderen Objekten zu sehen war, statt eines Knotens pro Frame.
Kosten und Zielkonflikte#
Die Indexierung ist der größte Kostenfaktor: Das LLM liest jede Texteinheit, um Entitäten zu extrahieren, und erstellt anschließend jeden Community-Bericht. Daher ist die Indexierung großer Textsammlungen deutlich teurer als das Erstellen von Embeddings. Extraktionsfehler, etwa wenn zwei verschiedene Personen mit demselben Namen zusammengeführt werden, wirken sich auf jede Antwort aus, die diese Personen betrifft. Werden Dokumente geändert, müssen die betroffenen Teile des Graphen erneut ausgewertet und zusammengefasst werden. LazyGraphRAG von Microsoft begegnet den Kosten, indem es seinen Begriffsgraphen mithilfe der Extraktion von Nominalphrasen und Graphstatistiken erstellt und den gesamten LLM-Einsatz auf den Abfragezeitpunkt verschiebt. Dadurch sind die Indexierungskosten genauso hoch wie bei vektorisiertem RAG und betragen nur 0,1 % der Kosten von vollständigem GraphRAG.










