Integrieren von Microsoft GraphRAG in Neo4j
Microsofts GraphRAG-Implementierung wurde effektiv eingesetzt, um Wissensgraphen aus Quelldokumenten zu erstellen, die durch ein großes Sprachmodell (LLM) verarbeitet wurden. Die Ausgabe sind strukturierte Informationen über Entitäten und ihre Beziehungen, die weiterverarbeitet werden, indem Graphenalgorithmen wie der Leiden-Community-Detektionsalgorithmus eingesetzt werden, um Zusammenfassungen zu generieren. Dieser Beitrag diskutiert, wie GraphRAG-Ausgaben in Neo4j gespeichert und lokale und globale Retriever mithilfe von LangChain oder LlamaIndex implementiert werden können.
Das verwendete Datenset ist "A Christmas Carol" von Charles Dickens. Obwohl der Graph-Extraktionsprozess übersprungen werden kann, sind einige wichtige Konfigurationen die Auswahl von Entitätstypen (Organisationen, Menschen, Ereignisse, Geo) und die Festlegung der maximalen Ernte, um multiple Extraktionsdurchläufe für eine umfassende Informationsaufnahme durchzuführen. Die Ausgabe aus der Graph-Extraktionspipeline wird als Parquet-Dateien gespeichert und dann in Neo4j importiert. Der Importprozess kann entweder mit einem kostenlosen Cloud-Aura-Instanz oder einer lokalen Neo4j-Umgebung durchgeführt werden, wobei der Importcode als Jupyter-Notebook auf GitHub bereitgestellt wird.
Nachdem die Daten in Neo4j importiert wurden, wird eine einfache Graphenanalyse durchgeführt, indem Cypher-Abfragen verwendet werden, um die Struktur und den Inhalt der extrahierten Daten zu verstehen. Zum Beispiel kann die Verteilung der extrahierten Entitäten und die Knotengrade analysiert werden, um Einblicke in die Daten zu gewinnen. Die extrahierten Entitäten und ihre Beziehungen werden im Neo4j-Browser visualisiert und validiert.
Für die Implementierung von Retrievern nutzt der lokale Retriever Vektorsuche, um relevante Knoten zu identifizieren und dann verlinkte Informationen in die LLM-Aufforderung zu injizieren. Der Vektorindex wird konfiguriert und die Abfrage für die Erhebung relevanter Textdaten wie Textstücke, Community-Berichte und Beziehungsbeschreibungen definiert. Dies wird sowohl mit LangChain als auch mit LlamaIndex implementiert, wobei die Abfrage für jeden Rahmenwerk angepasst wird.
Der globale Retriever iteriert dagegen über Community-Zusammenfassungen auf einer bestimmten hierarchischen Ebene, um Zwischenzusammenfassungen und eine finale Antwort zu generieren. Dieser Ansatz vereinfacht den Retrieval-Prozess, erfordert jedoch die Auswahl der geeigneten hierarchischen Ebene für die besten Ergebnisse.
Zusammenfassend ermöglicht die Integration von GraphRAG mit Neo4j und Retriever-Frameworks wie LangChain und LlamaIndex die anspruchsvolle Datenabfrage aus strukturierten Wissensgraphen, indem sowohl lokale als auch globale Retrieval-Strategien eingesetzt werden. Diese Implementierung zeigt die praktischen Anwendungen von GraphRAG bei der Analyse und Abfrage strukturierter Informationen, die aus textuellen Quellen extrahiert wurden.