Indexierungsarchitektur
Schlüsselkonzepte
Wissensmodell
Um das GraphRAG-System zu unterstützen, sind die Ausgaben der Indexierungsmaschine (im Standardkonfigurationsmodus) auf ein Wissensmodell abgestimmt, das wir das GraphRAG Knowledge Model nennen. Dieses Modell ist so konzipiert, dass es eine Abstraktion über die zugrunde liegende Datenspeichertechnologie darstellt und eine gemeinsame Schnittstelle für die Interaktion des GraphRAG-Systems bietet. In normalen Anwendungsfällen würden die Ausgaben des GraphRAG Indexers in ein Datenbanksystem geladen werden, und die Query Engine von GraphRAG würde mit der Datenbank unter Verwendung der Datenspeichertypen des Wissensmodells interagieren.
Arbeitsabläufe
Aufgrund der Komplexität unserer Datenindexierungsaufgaben war es notwendig, unsere Datenpipeline als eine Reihe von mehreren, voneinander abhängigen Arbeitsabläufen ausdrücken zu können.
---
title: Sample Workflow DAG
---
stateDiagram-v2
[*] --> Prepare
Prepare --> Chunk
Chunk --> ExtractGraph
Chunk --> EmbedDocuments
ExtractGraph --> GenerateReports
ExtractGraph --> EmbedEntities
ExtractGraph --> EmbedGraph
LLM-Caching
Die GraphRAG-Bibliothek wurde unter Berücksichtigung von LLM-Interaktionen entwickelt, und ein häufiger Rückschlag bei der Arbeit mit LLM-APIs sind verschiedene Fehler aufgrund von Netzwerklatenz, Drosselung usw. Aufgrund dieser potenziellen Fehlerfälle haben wir eine Caching-Schicht um LLM-Interaktionen hinzugefügt. Wenn Completionsanfragen mit demselben Eingabesatz (Prompt und Tuning-Parameter) gestellt werden, geben wir ein zwischengespeichertes Ergebnis zurück, falls eines vorhanden ist. Dies ermöglicht es unserem Indexer, widerstandsfähiger gegen Netzwerkprobleme zu sein, idempotent zu agieren und eine effizientere Endbenutzererfahrung zu bieten.
Provider & Fabriken
Mehrere Subsysteme innerhalb von GraphRAG verwenden ein Fabrikmuster, um Provider-Implementierungen zu registrieren und abzurufen. Dies ermöglicht eine tiefe Anpassung, um Modelle, Speicher usw. zu unterstützen, die Sie möglicherweise verwenden, aber nicht direkt in GraphRAG integriert sind.
Die folgenden Subsysteme verwenden ein Fabrikmuster, das es Ihnen ermöglicht, Ihre eigenen Implementierungen zu registrieren
- Sprachmodell - Implementieren Sie Ihre eigenen
chat- undembed-Methoden, um einen Sprachmodell-Provider Ihrer Wahl über die integrierte OpenAI/Azure-Unterstützung hinaus zu verwenden - Cache - Erstellen Sie Ihren eigenen Cache-Speicherort zusätzlich zu den von uns bereitgestellten Datei-, Blob- und CosmosDB-Optionen
- Logger - Erstellen Sie Ihren eigenen Speicherort für die Protokollierung zusätzlich zu den integrierten Datei- und Blob-Speichern
- Speicher - Erstellen Sie Ihren eigenen Speicherprovider (Datenbank usw.) über die integrierten Datei-, Blob- und CosmosDB-Optionen hinaus
- Vektorspeicher - Implementieren Sie Ihren eigenen Vektorspeicher zusätzlich zu den integrierten lancedb, Azure AI Search und CosmosDB-Optionen
- Pipeline + Workflows - Implementieren Sie Ihre eigenen Workflow-Schritte mit einer benutzerdefinierten
run_workflow-Funktion oder registrieren Sie eine gesamte Pipeline (Liste benannter Workflows)
Die Links zu jedem dieser Subsysteme verweisen auf den Quellcode der Fabrik, der die Registrierung der standardmäßigen integrierten Implementierungen enthält. Darüber hinaus haben wir eine detaillierte Diskussion über Sprachmodelle, die ein Beispiel für einen benutzerdefinierten Provider enthält, und ein Beispiel-Notebook, das einen benutzerdefinierten Vektorspeicher demonstriert.
Alle diese Fabriken erlauben es Ihnen, eine Implementierung unter einem beliebigen Zeichenkettennamen zu registrieren, auch solche, die integrierte überschreiben.