Zum Inhalt springen

Bringen Sie Ihren eigenen Graphen mit

Mehrere Benutzer haben gefragt, ob sie ihren eigenen bestehenden Graphen mitbringen und ihn für die Abfrage mit GraphRAG zusammenfassen lassen können. Dafür gibt es viele mögliche Wege, aber hier beschreiben wir eine einfache Methode, die sich recht einfach in die bestehenden GraphRAG-Workflows einfügt.

Um die grundlegenden Anwendungsfälle für GraphRAG-Abfragen abzudecken, sollten Sie zwei oder drei Tabellen aus Ihren Daten ableiten

  • entities.parquet - dies ist die Liste der im Datensatz gefundenen Entitäten, die die Knoten des Graphen darstellen.
  • relationships.parquet - dies ist die Liste der im Datensatz gefundenen Beziehungen, die die Kanten des Graphen darstellen.
  • text_units.parquet - dies sind die Quelltextabschnitte, aus denen der Graph extrahiert wurde. Dies ist optional, abhängig von der Abfragemethode, die Sie verwenden möchten (weiter unten beschrieben).

Der hier beschriebene Ansatz besteht darin, eine benutzerdefinierte GraphRAG-Workflow-Pipeline auszuführen, die davon ausgeht, dass die Textsegmentierung, die Entitätsextraktion und die Beziehungsextraktion bereits erfolgt sind.

Tabellen

Entitäten

Siehe das vollständige Tabellenschema für Entitäten. Für die Graphenzusammenfassung benötigen Sie nur id, title, description und die Liste der text_unit_ids.

Die zusätzlichen Eigenschaften werden für optionale Graphenvisualisierungszwecke verwendet.

Beziehungen

Siehe das vollständige Tabellenschema für Beziehungen. Für die Graphenzusammenfassung benötigen Sie nur id, source, target, description, weight und die Liste der text_unit_ids.

Hinweis: Das Feld weight ist wichtig, da es zur korrekten Berechnung von Leiden-Communities verwendet wird!

Workflow-Konfiguration

GraphRAG bietet die Möglichkeit, nur die spezifischen Workflow-Schritte anzugeben, die Sie benötigen. Für grundlegende Graphenzusammenfassung und -abfrage benötigen Sie die folgende Konfiguration in Ihrer settings.yaml

workflows: [create_communities, create_community_reports]

Dies führt nur zu den minimalen Workflows, die für GraphRAG Global Search erforderlich sind.

Optionale zusätzliche Konfiguration

Wenn Sie Local, DRIFT oder Basic Search ausführen möchten, müssen Sie text_units und einige Embeddings einbeziehen.

Textabschnitte

Siehe das vollständige Tabellenschema für Textabschnitte. Textabschnitte sind Teile Ihrer Dokumente, deren Größe so bemessen ist, dass sie in das Kontextfenster Ihres Modells passen. Einige Suchmethoden verwenden diese, daher möchten Sie sie möglicherweise einbeziehen, wenn Sie sie haben.

Erweiterte Konfiguration

Um die oben genannten anderen Suchtypen durchzuführen, benötigen Sie einige der Inhalte, die eingebettet werden müssen. Fügen Sie einfach den Embeddings-Workflow hinzu

workflows: [create_communities, create_community_reports, generate_text_embeddings]

FastGraphRAG

FastGraphRAG verwendet Textabschnitte für die Community-Berichte anstelle der Entitäts- und Beschreibungsbeziehungen. Wenn Ihr Graph so generiert wurde, dass er keine Beschreibungen enthält, könnte dies eine nützliche Alternative sein. In diesem Fall würden Sie Ihre Workflow-Liste aktualisieren, um die Textvariante des Community-Berichte-Workflows einzuschließen

workflows: [create_communities, create_community_reports_text, generate_text_embeddings]

Diese Methode erfordert, dass Ihre Entitäts- und Beziehungstabellen gültige Links zu einer Liste von text_unit_ids haben. Beachten Sie auch, dass generate_text_embeddings immer noch nur erforderlich ist, wenn Sie andere Suchen als die globale Suche durchführen.

Einrichtung

Alles zusammenfügen

  • output: Erstellen Sie einen Ausgabeordner und legen Sie Ihre entities- und relationships- (und optional text_units-) Parquet-Dateien darin ab.
  • Aktualisieren Sie Ihre Konfiguration wie oben beschrieben, um nur den benötigten Workflow-Teil auszuführen.
  • Führen Sie graphrag index --root <your project root> aus