Meet KAG: Supercharging RAG Systems with Advanced Reasoning

LARRUZ walks through KAG, which extends RAG by using knowledge graphs to preserve entity relationships and enable multi-hop reasoning. The tutorial demos OpenSPG running locally with Neo4j and shows how to ingest PDFs, extract entities, build a knowledge graph, and run multi-step questions that decompose queries before answering.
Questions this video answers
Apache license
MS SQL Server, Neo4j graph store, and the OpenSPG server
DeepSeek with model name uhdiepsichat
BGE/BGEM embeddings (BGM3 referenced), hosted locally via OLAMA; vector dimension 1024
SPO retriever (specialized retriever developed in the project)
Chapters
Wahrscheinlich haben Sie schon von Retrieval Augmented Generation oder REC gehört. Heute sprechen wir jedoch über Knowledge Augmented Generation oder CAG. Eine der größten Einschränkungen von Standard REC ist der Chunking Prozess, da dabei die logischen Verbindungen zwischen Entitäten verloren gehen, da jeder abgerufene Chunk während des Generierungsprozesses einzeln behandelt wird. Aus diesem Grund gibt es Ansätze wie Graph REC oder Light REC, die Wissensgraphen verwenden, um die logische Verbindung zwischen Entitäten zu erhalten. Knowledge Augmented Generation geht noch einen Schritt weiter, indem es MultiHop Fragen, Antwort und Argumentationsfunktionen hinzufügt, die für komplexe Argumentationsaufgaben unerlässlich sind. In diesem Video zeige ich Ihnen zunächst, wie es funktioniert und dann, wie Sie es auf Ihrem lokalen Rechner einrichten. Okay. Wie ein Standard RAC System besteht es aus zwei Schritten. Der erste ist der Indexerstellungsprozess und der zweite Schritt ist der Abruf oder Abfrageprozess. Der Indexerstellungsprozess besteht aus mehreren Schritten. Zuerst extrahieren wir aus unseren Dokumenten Text und leiten ihn an einen semantischen Tunking Prozessor weiter. Dann verwenden wir ein LLM zusammen mit Wissensmodellen zur informationsextraktion. Es verwendet OpenIE zum Extrahieren von Subjektbeziehungen und dem Objekt dieser Beziehung zusammen mit Wissensgraphen, um diese Beziehung zwischen verschiedenen Entitäten zu erhalten. Nun gibt es einen speziellen Ausrichtungsprozess, der Unterschiede zwischen diesen Entitäten beseitigt und sie sowohl innerhalb der Dokumente als auch in diesen integrierten Wissensmodellen standardisiert. Um diese Wissensmodelle zu verstehen, betrachten wir nun ein Beispiel für eine Entität einer die Person. Wir können mehrere verschiedene Attribute haben, die die Tonomie der Person darstellen, und dann können wir diese Tonomie verwenden, um die Beziehung zwischen diesem bestimmten Objekt und anderen Objekten oder Entitäten herauszufinden, die in unserer Wissensdatenbank vorhanden sind. Hier sind einige weitere Beispiele für verschiedene vorhandene Entitätstypen oder Wissensmodelle. Wir werden uns einige davon später im Video ansehen. Der zweite Teil ist der Abfrageabrufprozess, für den KAG den logischen Formularlöser verwendet. Die Funktionsweise ist, dass immer wenn Sie eine Benutzerabfrage haben, zunächst eine Planung durchgeführt wird. Nehmen wir also an, dass das Tool eine Benutzerabfrage mit Hilfe der Abfragezerlegung in mehrere verschiedene Abfragen aufteilen oder mehrere verschiedene Abfragen erstellen kann, die die Abfrage verbessern können. Das Tool plant dies zunächst. Anschließend wird für jede dieser Abfragen ein Abruf durchgeführt und die einzelnen abgerufenen Ergebnisse werden logisch betrachtet. Diese Schlussfolgerung kombiniert die LLM Schlussfolgerungen mit den Schlussfolgerungen des Wissensgraphen und die kombinierten Ergebnisse werden zur endgültigen Generierung an das LLM übergeben. Dieser mehrstufige Prozess führt zu besseren Abrufen und besserer Generierung und daher leistet es sowohl bei einstufigen als auch bei mehrstufigen Abrufen in multihop QA Datensätzen wirklich gute Arbeit. Insbesondere wenn man sich den Hot Part QA Datensatz ansieht, übertrifft er alle bestehenden Methoden. Selbst bei den anderen beiden Datensätzen ist die Leistung mit den bestehenden Methoden durchaus vergleichbar. Dies ist ein sehr interessanter Ansatz, der eine hybride Suche mit Hilfe des Wissensgraphen und der einbettungsbasierten semantischen Suche durchführt, aber auch diese hybriden Schlussfolgerungen darüber hinaus kombiniert. Ich empfehle Ihnen dringend, das Paper zu lesen, wenn Sie sich dafür interessieren. Als nächstes zeige ich euch, wie ihr das auf eurem lokalen Rechner einrichtet. Das ist ein Open Source Projekt von OpenSPG unter der Apache Lizenz, die auch die freundlichen Sponsoren dieses Videos sind. Ich führe das auf macoss aus, aber die Installations und Einrichtungsanweisungen bleiben für Linux und Windows Benutzer gleich. Es gibt zwei verschiedene Möglichkeiten, wie ihr KAG verwenden könnt. Eine ist über die grafische Benutzeroberfläche und die zweite über den Python Client. In diesem Video zeige ich euch die grafische Benutzeroberfläche. Alles läuft in einem Docker Container. Ihr müsst also die dockerdisk Desktop App auf eurem lokalen Rechner installieren und die passende Version basierend auf eurem Betriebssystem auswählen. Die Installation erfolgt in zwei Schritten. Zuerst laden wir die Datei docker compos l herunter, die alle Konfigurationselemente enthält, die zum Einrichten unseres Docker Containers erforderlich sind. Danach erstellen wir diesen Docker Container auf unserem lokalen Rechner und führen ihn aus. OK. Zuerst muss ich diesen curl Befehl ausführen, um die Datei docker compos l herunterzuladen. Wenn ich ls eingebe, können Sie sehen, dass die Datei bereits auf meinen lokalen Rechner heruntergeladen wurde. Als nächstes erstellen wir den Docker Container, indem wir diesen Befehl ausführen. Das wird etwas dauern, aber wenn Sie sehen möchten, was tatsächlich ausgeführt wird, können Sie diesen docker compose up D Befehl ausführen. Und das sind die drei verschiedenen Dinge, die ausgeführt Eines ist ein Micros SQL Server, das andere ist der neue J, der zum Speichern unseres Wissensgraphen verwendet wird und dann der eigentliche OpenSPG Server, auf dem der KAG oder Knowledge Augmented Generation Server ausgeführt wird. Um darauf zuzugreifen, müssen wir diese URL auf Ihrem lokalen Rechner aufrufen. Hier ist also die Oberfläche, die Sie sehen werden. Um eine neue Abrufaufgabe zu erstellen, müssen wir zuerst auf Wissensdatenbank erstellen klicken. Hier müssen wir also ein paar Einstellungen vornehmen. Sie müssen sowohl einen chinesischen als auch einen englischen Namen angeben. Beide können identisch sein. Der einzige Unterschied besteht darin, dass beim englischen Namen der erste Buchstabe großgeschrieben werden muss. OK, ich habe bereits eine Wissensdatenbank mit dem Namen CAC erstellt. Hier sind einige der Konfigurationen, die ich verwendet habe. Zuerst müssen wir die Speicherkonfigurationen angeben. Der Datenbankname lautet kag. Hier ist das Passwort, da alles in einer neuen J Datenbank gespeichert wird. Wir verwenden diese URI also zusammen mit dem Benutzer. Als nächstes müssen wir unser LLM einrichten. Das LLM wird für Entitätsextraktionen, alle zu findenden Beziehungen und alle Schlussfolgerungsaufgaben verwendet. Für mein LLM verwende ich deepseek als API Anbieter, da Deep S, mit dem das beste LLM zu sein scheint, wenn es um Openweight LMS geht und bei einigen Aufgaben sogar Cloud 3.5 Sonnet und GPD 40 schlagen kann, was ziemlich beeindruckend ist. Sie können jedoch jedes LLM verwenden, das Sie lokal ausführen oder ein proprietäres Modell, solange es den OpenAI API Standard verwendet. Hier geben wir also die Basis URL an. Der Modellname lautet uhdiepsichat und Sie müssen außerdem Ihren API Schlüssel angeben. Als nächstes müssen wir unser Einbettungsmodell einrichten. Dies wird für die semantische Extraktion oder eine semantische Ähnlichkeitssuche verwendet. Auch hier benötigen Sie entweder eine proprietäre API oder ein lokal laufendes Modell, das dem OpenAI API Standard folgt. In diesem Fall hosten wir unser Modell lokal mit OLAMA. Dazu müssen Sie zunächst OLAMA herunterladen. Als nächstes müssen Sie das Einbettungsmodell auswählen, das Sie verwenden möchten. In meinem Fall möchte ich BGM 3 verwenden, eines der besten offenen Einbettungsmodelle die es gibt. Sie müssen dieses Modell also nur mit dem ODAMA Pool abrufen und dann den Modellnamen angeben und hier gebe ich den Modellnamen BGEM an. Die Vektordimensionen, die ich verwende, sind 1024. Sie können auch diese optionalen Parameter angeben. Extrahiert die Informationen und schaut sich den Sprachgenerator an. Er wird die Eingabeaufforderung verarbeiten. Ich werde dies also auf Englisch einstellen. Okay. Sobald Sie Ihre Wissensdatenbank erstellt haben, können Sie zur Wissensdatenbankverwaltung wechseln. Hier sehen Sie, dass ich bereits einige Aufgaben erstellt habe. Hier ist also das eingebettete Circa Dokument und darüber wurde ein Wissensgraph erstellt. Wenn Sie eine weitere Aufgabe erstellen möchten, klicken Sie einfach auf Aufgabe erstellen. Ich nenne sie CAG und wir laden das CAG Dokument hoch. Klicken Sie auf Weiter. Sie können die Abschnittsgrösse oder die maximale Segmentlänge ändern. Ich belasse es bei den Standardeinstellungen. Es gibt ein Extraktionsmodell, daher belasse ich es ebenfalls bei den Standardeinstellungen. Dann klicken wir auf Fertigstellen. Abhängig von der Größe des Dokuments kann dies einige Zeit dauern. Sehen wir uns daher die Protokolle an. Zuerst beginnt das Dokument zu lesen. Dann wird ein PDF Reader verwendet, da wir eine PDF Datei ausgewählt haben, um das Dokument in Abschnitte zu unterteilen und dann die Entitäten und Beziehungen zu extrahieren. Sobald der Extraktionsprozess abgeschlossen ist, können Sie sich auch die Extraktionsergebnisse ansehen. Ich zeige Ihnen das spezialisierte Wissensmodell, das KAG verwendet. Sie versuchen Informationen auf der Grundlage verschiedener Wissensmodelle zu extrahieren, zum Beispiel wenn es sich um etwas handelt, das mit Medizin, Bauwesen, Transport, Astronomie, Naturwissenschaften, Personen, Daten, Organisationen, semantischen Konzepten oder künstlichen Objekten zu tun hat. Wenn Sie nun zu Ihren Aufgaben gehen, können Sie tatsächlich sehen, dass einige dieser Dinge extrahiert werden, wenn dieser Knowledge Graph erstellt wird. Schauen wir uns also ein Beispiel für diese Rechnung 2 an, die ich zuvor hochgeladen habe. Hier ist eine Abfrage, die ich ausgeführt habe. In der Abfrage wurde nach dem Fälligkeitsdatum der Rechnung gesucht, die bezahlt wurde. Wenn Sie sich jedoch das Gesamtschema einer beliebigen Rechnung ansehen, haben Sie eine Adresse. So wird festgestellt, dass es einen geografischen Standort gibt, dass eine Organisation erwähnt wird, dass ein Fälligkeitsdatum angegeben ist und dass es einige semantische Konzepte gibt. Richtig. Wenn der Knowledge Graph also erstellt wird, werden diese speziellen Elemente oder Wissensmodelle betrachtet und dann versucht, die Beziehung zwischen den verschiedenen vorhandenen Wissensmodellen basierend auf der Länge Ihres Dokuments herauszufinden. Dieser Indizierungsprozess kann eine Weile dauern, aber ich habe zuvor einen index und einen Knowledge Graph für das Dokument. Erstellt. Wir verwenden das also als Beispiel für den Abfrageteil. Sie müssen nur auf wissensbasierte Frage und Antwort klicken. Lassen Sie mich nun eine neue Abfrage stellen. Die Abfrage Was ist KAG und warum ist es besser als Standard REC? Wenn ich diese Abfrage ausführe, wird das einige Zeit dauern, da sie nicht nur die Informationen extrahieren, sondern auch begründen muss. Nun passieren einige interessante Dinge. Hier ist die ursprüngliche Abfrage, die jedoch in zwei Teile zerlegt wird. Der erste Teil Was ist KAGG Und der Warum ist KAG besser als standardrec? Dann wird die erste Abfrage verwendet und im Grunde die erforderlichen Informationen extrahiert. Jetzt verwendet sie den SPO Retriever. Dies ist der spezialisierte Retriever, den sie entwickelt haben. Dasselbe passiert für den zweiten Teil der Frage, nämlich warum KAG besser ist als Standard REC. Hier ist die Antwort, die sie basierend auf den aus dem Dokument abgerufenen Abschnitten erhält. Am Ende werden beide Teile miteinander kombiniert, um die endgültige Antwort für uns zu generieren. KAG oder Knowledge Augmented Generation ist ein fortschrittliches Framework, das externes Wissen insbesondere aus Wissensgraphen integriert, um seine Generierungsfähigkeiten zu erweitern. Es ist besser als Standard RACK, da es über explizites semantisches Wissen, Entitätsnormalisierung, inferentielle Wissensabfrage, Integration von semantischen Typen und Beziehungen verfügt, die Einschränkungen von REC beheben und die Leistung verbessern. Im Vergleich zu einem Standard Drag System verwendet es diesen Argumentationsprozess zusammen mit dem Abrufprozess, um uns bessere Antworten zu liefern. Hier war ein weiteres Beispiel, als ich diese Rechnungsdaten abgerufen habe. Meine Abfrage Wie hoch ist der Gesamtbetrag der Rechnung, der bezahlt werden muss? Und es generierte diese verschiedenen Abfragen. Im Grunde genommen hat es diese Abfrage in mehrere Abfragen zerlegt. Wie lautet die Rechnung, die bezahlt werden muss? Wie hoch ist der Gesamtbetrag dieser Rechnung? Und es gab den Gesamtbetrag zurück. Für jede einzelne davon hat es im Grunde die Antworten erhalten und diese dann miteinander kombiniert, um uns die endgültige Antwort zu liefern. Wie ich bereits erwähnt habe, können Sie dies alles über Python Code tun. Wenn Sie also Interesse haben, lassen Sie es mich wissen. Ich werde ein Folgevideo machen. Das war also ein kurzes Video über Knowledge Augmented Generation. Eine sehr interessante Herangehensweise, bei der Wissensgraphen mit semantischem Retrieval kombiniert werden. Ich kann es nur wärmstens empfehlen. Das Projekt selbst ist Open Source und läuft auf. Apache. Die Autoren werden wahrscheinlich in etwa einer Woche eine neue Version veröffentlichen, die über ein benutzerdefiniertes Schema und visuelle Abfragen verfügen wird. Außerdem können Sie in verschiedenen Phasen verschiedene Modelle verwenden, was möglicherweise die Leistung verbessern könnte. Wir empfehlen Ihnen daher dringend, sich in etwa einer Woche das aktualisierte GitHub Repository anzusehen. Wenn Sie sich für Retrieval Augmented Generation, verschiedene Varianten davon oder Agenten interessieren, sollten Sie unbedingt den Kanal abonnieren. Vielen Dank fürs Zuschauen und wie immer bis zum nächsten Mal.










