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
weightist 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
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
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
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