Startseite / Artikel

GraphRAG gegen Vector RAG: Warum Vector Search bei großer Skala versagt

Vector RAG hat Schwierigkeiten mit der Trennung von Datenblöcken, dem Schlussfolgern über mehrere Dokumente und der Skalierbarkeit. Erfahren Sie, wie GraphRAG Gemeinschaften und Zusammenfassungen erstellt, um dieses Problem zu lösen, und wann man welche Methode wählen sollte.

Verlag: REACTAPP.TOP8 Min. Lesezeit1893 Wörter

Quellen: GraphRAG: Why Vector Search Fails at Scale (And How Knowledge Graphs Fix It)

Retrieval-augmented Generation ermöglicht es einem Sprachmodell, mit Daten zu arbeiten, auf denen es nie trainiert wurde. Die klassische Version teilt Dokumente in Teile auf, speichert ihre Embeddings in einer Vektordatenbank und zieht bei der Abfrage die dem Suchbegriff am nächsten liegenden Teile ab, um sie in die Anfrage einzubauen. Für einfache Fragebeantwortungen anhand einer überschaubaren Datensammlung funktioniert das gut. Bei komplexen Unternehmensdaten zeigen sich jedoch bereits Probleme.

Das Problem liegt weder im Abrufschritt noch im Generierungsschritt. Es entsteht durch die Art und Weise, wie die Daten nach ihrer Umwandlung in Vektoren dargestellt werden.

Wo herkömmliches RAG mit Vektoren versagt

Chunks werden zu Inseln

Sobald ein Dokument in Teile aufgeteilt wird, schwebt jeder Teil für sich im Vektorraum. Er ist von den umliegenden Abschnitten sowie von verwandtem Material in anderen Dokumenten getrennt, und jede ursprüngliche Struktur ist verschwunden. Bei der Wiederherstellung bleibt der wichtige umgebende Kontext zurück, wodurch das große Sprachmodell eine unvollständige Tatsache fälschlicherweise für die gesamte Wahrheit halten kann. Das Durchtrennen dieser logischen Verbindungen zwingt das Modell, den Text ohne den Kontext, aus dem er stammt, zu beurteilen.

Kein logisches Schließen über Dokumente hinweg

Manche Fragen können nicht durch einen einzelnen Abschnitt beantwortet werden. Denken Sie an „Welche Trends und Themen tauchen in all unseren vierteljährlichen Finanzberichten auf?“ oder „Kann ein Mitarbeiter eine Erstattung für Wi-Fi-Kosten verlangen, die vor seinem Eintrittsdatum entstanden sind?“ Microsoft Research bezeichnet solche Fragen als Sinnstiftungsanfragen. Sie sind umfassend und erfordern ein System, das Beziehungen in einem Datensatz analysiert, kombiniert und zusammenfasst, anstatt bereits vorhandene Fakten herauszuziehen.

Die Vektorsuche basiert auf lokalen semantischen Übereinstimmungen: den Abschnitten, deren Vektoren dem Abfragenvektor am nächsten liegen. Das eignet sich hervorragend für lokale Fragen, versagt jedoch, wenn die Antwort über mehrere Abschnitte und Dokumente verteilt ist. Angenommen, die Antwort erfordert es, einen Fakt A in einem Dokument mit Fakt B in einem zweiten sowie Fakt C in einem dritten zu verknüpfen. Jeder Abschnitt wird unabhängig voneinander heruntergeladen, je nach seiner Ähnlichkeit zur Abfrage – dadurch wird ein mittlerer Fakt mit niedrigem Ähnlichkeitswert ausgeschlossen, obwohl die Antwort von ihm abhängt. Die Kette der Schlussfolgerungen bricht ab.

Die Genauigkeit nimmt mit wachsenden Daten ab

Jedes RAG-System, das vom Prototyp in die Produktion übergeht, erweitert sein Korpus – und genau diese Erweiterung führt zu einem Problem: Die Genauigkeit der Informationsabrufung nimmt ab. Mehr Dokumente erweitern den Umfang der Themen, die das System abdecken kann, verringern aber gleichzeitig die Präzision. Wenn sich die Anzahl der Blöcke von einigen Hundert auf Tausende erhöht, schrumpft der Anteil der Blöcke, die für eine bestimmte Frage relevant sind, stetig. Die relevanten Blöcke werden von Nachbarn übertönt, die semantisch ähnlich aussehen, im Kontext jedoch nutzlos sind. Mehr Dokumente bedeuten somit eine breitere Abdeckung, aber gleichzeitig eine geringere Genauigkeit bei der Informationsabrufung.

GraphRAG als Lösung

Microsoft Research führte 2024 GraphRAG ein, um diese Schwächen zu beheben. Anstelle von unvollständigen Vektoren bewahrt es die in den Texten verborgenen strukturierten Beziehungen, indem es auf ein Wissensgraphen umsteigt. Ein Wissensgraphen stellt reale Fakten als Knoten dar – also Entitäten wie Personen, Orte oder Konzepte –, die durch Kanten miteinander verbunden sind, die ihre Beziehungen darstellen. Diese Grundlage ermöglicht es dem System, über ein ganzes Datensatz zu reasoningen, anstatt nur lokale Abfragen durchzuführen.

Die Kernidee

GraphRAG wandelt verstreute Dokumente in eine vernetzte Karte von Ideen um und fasst die Daten von allgemeinen Themen bis zu Details zusammen. Da diese Verbindungen im Voraus erstellt werden, erhält das LLM sowohl einen Überblick über den gesamten Datensatz als auch Zugang zu detaillierten Kontexten. Es gibt vier Phasen:

  1. Erstellen Sie das Graphenmodell. Ein LLM konstruiert ein Wissensgraphen, bei dem die Knoten die wichtigsten Entitäten des Korpus darstellen und die Kanten die Beziehungen zwischen ihnen sind.
  2. Erkennen Sie Gemeinschaften. Das Graphenmodell wird in verschachtelte Cluster aufgeteilt, von kleinen lokalen Gruppen bis hin zu thematischen Zusammenhängen auf Datensatzebene. Eine Gemeinschaft ist eine Gruppe von Knoten, die eng miteinander verbunden sind und nur locker mit dem Rest des Netzwerks verbunden sind.
  3. Zusammenfassen von unten nach oben. Ein LLM erstellt für jede Gemeinschaft einen Zusammenfassungstext, der ihre Entitäten, Fakten und Beziehungen umfasst. Die Zusammenfassungen werden entsprechend der Hierarchie erstellt, sodass höherstufige Gemeinschaften die Zusammenfassungen der darunterliegenden aufnehmen und so ein strukturiertes Überblick über den gesamten Datensatz entsteht.
  • Antworten mit Map-Reduce. Zum Zeitpunkt der Abfrage werden die Community-Zusammenfassungen parallel in Teilantworten (Map) verarbeitet, die anschließend zu einer einzigen globalen Antwort (Reduce) zusammengeführt werden.
  • Der Arbeitsablauf im Detail

    Wie herkömmliche RAG-Systeme hat auch GraphRAG zwei Phasen: Indexierung und Abfragen.

    Indexierung, erfolgt offline

    Dokumente in Blöcke aufteilen. Der Prozess beginnt damit, Dokumente in Blöcke aufzuteilen, typischerweise mit etwa 600 Tokens – eine Größe, die gewählt wurde, um so viele Entitäten wie möglich zu erfassen.

    Blöcke in Entitäten und Beziehungen umwandeln. Das LLM liest nacheinander jeden Block und extrahiert wichtige Entitäten sowie die Beziehungen zwischen ihnen, zusammen mit kurzen Beschreibungen jeder Entität. Es kann außerdem Aussagen extrahieren, also bemerkenswerte Fakten über Entitäten wie Daten, Ereignisse und Interaktionen mit anderen Entitäten.

    In ein Wissensgraphen. Alle extrahierten Informationen werden zusammengeführt. Entitäten werden zu Knoten und Beziehungen zu Kanten. Um Redundanzen zu vermeiden, werden Varianten derselben Entität zusammengeführt und ihre Beschreibungen auf einen Eintrag gekürzt. Wiederholte Erwähnungen einer Beziehung erhöhen das Gewicht ihrer Kante und signalisieren eine stärkere Verbindung; Aussagen werden den entsprechenden Knoten und Kanten zugeordnet.

    Von Graphen zu Gemeinschaften. Ein hierarchischer Algorithmus zur Erkennung von Gemeinschaften, in der Regel Leiden, teilt das Netzwerk in Clustern von eng miteinander verbundenen Knoten auf. Das Ergebnis ist eine mehrstufige Hierarchie mit kleinen, detaillierten Clustern auf der untersten Ebene und umfassenden Gruppierungen für das gesamte Gebiet auf der höchsten Ebene.

    Von Gemeinschaften zu Zusammenfassungen. Ausgehend von den kleinsten, detailliertesten Cluster arbeitet das LLM nach oben und erstellt eine Zusammenfassung für jede Ebene der Hierarchie. Dadurch können umfassende Fragen beantwortet werden und Nutzer können von breiten Themen bis zu feinen Details navigieren. Um die Kontextgrenzen einzuhalten, werden die Zusammenfassungen der untersten Ebene durch das Ranking der rohen Graphendaten nach Bedeutung erstellt, wobei die am stärksten vernetzten Entitäten, Beziehungen und Aussagen bis zum Ende des verfügbaren Raums in die Anfrage aufgenommen werden. Die Zusammenfassungen höherer Ebenen werden direkt aus den darunterliegenden Zusammenfassungen erstellt, also als Aggregation weiterer Aggregationen.

    Abfragen zur Laufzeit

    Standard-RAG behandelt jeden Prompt mit derselben Ähnlichkeitsprüfung. GraphRAG sendet eine Abfrage entlang eines von zwei Wegen abhängig vom Intent. Die globale Suche kümmert sich um umfassende, datensatzweite Analysen. Die lokale Suche befasst sich mit spezifischen, auf Entitäten ausgerichteten Fragen, die mehrere Schritte erfordern. Bei einem Unternehmen mit einer Erstattungspolitik könnte eine globale Abfrage nach den wichtigsten Compliance-Risiken und Genehmigungsregeln in allen Erstattungsprogrammen fragen. Eine lokale Abfrage könnte prüfen, ob ein Mitarbeiter eine Internetkostenersatzanfrage für Ausgaben stellen kann, die vor dem offiziellen Eintrittsdatum entstanden sind.

    Globale Abfragen. Anstatt Millionen von Rohdaten zu durchscannen, fragt das System die im Voraus berechneten Gemeinschaftsübersichten mithilfe eines Map-Reduce-Verfahrens ab.

    1. Wählen Sie ein Hierarchieniveau aus – von breiten Super-Gemeinschaften bis zu feinen lokalen Clustern (Niveau 0, 1, 2 usw.) – je nachdem, welchen Umfang die Antwort benötigt.
    2. Karte: Die Frage wird parallel an jede Gemeinschaftsübersicht auf dieser Ebene gesendet. Ein LLM bewertet jede einzeln und erzeugt eine vorläufige Gemeinschaftsantwort mit einer Relevanzbewertung von 0 bis 100.
    3. Filtern und Rangordnung: Antworten mit geringer Relevanz werden verworfen, die übrigen werden nach Priorität geordnet.
    4. Reduzierung: Die am höchsten rangierten Erkenntnisse werden in einem einzigen Kontextfenster an das LLM übermittelt, welches sie zu einer vollständigen, nicht wiederholenden Antwort mit Quellenangaben zusammenfasst.

    Lokalen Abfragen. GraphRAG wirft Vektoren nicht weg. Es ändert lediglich deren Verwendungszweck. Bei der lokalen Suche dienen Vektoren nur dazu, Ankerentitäten im Graphen zu lokalisieren. Sobald diese Eingangspunkte gefunden sind, stoppt die Vektorsuche und die Graphenuntersuchung übernimmt. Als Voraussetzung müssen Embeddings für die Entitätsbeschreibungen erzeugt und in einer Vektordatenbank gespeichert werden.

    Das macht einen echten Unterschied. Bei herkömmlichem RAG ist die Vektorähnlichkeit die Hauptmethode, um Rohtextabschnitte abzurufen. Bei GraphRAG handelt es sich um eine gezielte Suche, die die Frage auf relevante Entitäten abbildet, die lediglich als Eingänge in das Graphen dienen. Je nach Konfiguration kann die lokale Suche auch Texteinheiten oder Aussagen als Eingangspunkte einbeziehen und suchen.

    1. Führen Sie eine Suche nach Vektorähnlichkeit anhand der Embeddings der Entitätsbeschreibungen durch, um Eingangspunkte zu finden.
    2. Übersetzen Sie diese Entitäten in ihre Queldokumente und Textabschnitte, durchlaufen Sie das Graphen, um benachbarte Knoten und Kantenbeschreibungen zu sammeln, holen Sie Kovariaten wie Aussagen, URLs und Daten hinzu sowie Zusammenfassungen der lokalen Gemeinschaften, zu denen die Entitäten gehören – dies liefert etwas Kontext aus der Umgebung.
    3. Lassen Sie ein LLM jede dieser Zuordnungen nach Relevanz zur Frage bewerten und die weniger relevanten entfernen.
  • Fügen Sie den gerankten Kontext zur Anfrage hinzu und erzeugen Sie eine fundierte Antwort.
  • Welche Methode wählen?

    Keiner der Ansätze ist in jedem Fall besser. Sie eignen sich für unterschiedliche Fragen und Daten. Die Entscheidung hängt davon ab, wie komplex das Datenset ist, welche Abfragen unterstützt werden müssen und wie viel Budget verfügbar ist.

    Wählen Sie vector RAG, wenn Sie eine schnelle, kostengünstige Abfrage isolierter Fakten aus eigenständigen Dokumenten wünschen, wobei die Antwort sich in einem einzigen Absatz oder auf einer einzigen Seite befindet. Wählen Sie GraphRAG, wenn Ihre Quellen dicht miteinander verbunden sind und die Fragen eine Synthese über mehrere Dokumente, eine Trendanalyse des gesamten Datensets oder das Nachverfolgen von Beziehungen zwischen Entitäten in Bereichen wie Recht, Forschung und Politik erfordern.

    Eine praktische Abkürzung: vector RAG sucht nach der Nadel im Heuhaufen, während GraphRAG zunächst den gesamten Heuhaufen kartiert und erst danach sucht.

    Vector RAG hat die Funktionsweise von LLMs im Umgang mit externen Kenntnissen verändert, doch die Skalierung auf komplexe Unternehmensdaten erfordert mehr als nur semantisch ähnliche Abfragen. Durch die Organisation von Texten in ein Wissensgraphen mit hierarchischen Zusammenfassungen verbindet GraphRAG gezielte Datenerfassung mit dem Abwägen über ein gesamtes Datensatz.

    Für weitere Informationen finden Sie die ursprüngliche Veröffentlichung unter https://arxiv.org/abs/2404.16130, während die Konzepte der lokalen Suche unter https://microsoft.github.io/graphrag/query/local_search/ dokumentiert sind.