Heiße Themen Schließen

GraphRAG: Kombination aus Graphen und Text für LLMs

GraphRAG Kombination aus Graphen und Text für LLMs
Retrieval Augmented Augmentation hilft dabei, die Ausgaben von LLMs zu optimieren. GraphRAG bringt zusätzlich eine visuelle Komponente ins Spiel.

zurück zum Artikel

ein Graph mit Fragezeichen

(Bild: Erstellt mit KI (Midjourney) durch iX-Redaktion)

Retrieval Augmented Augmentation hilft dabei, die Ausgaben von LLMs zu optimieren. GraphRAG bringt zusätzlich eine visuelle Komponente ins Spiel.

Generative Sprachmodelle wie ChatGPT können nahezu jede Frage sofort beantworten und sind leicht zu benutzen. Bei genauerem Hinsehen entdeckt man aber auch ein paar Probleme.

Zunächst sind da die Halluzinationen: Nicht immer stimmt alles, was Sprachmodelle von sich geben. Kennt das Modell bestimmte Informationen nicht, dichtet es welche hinzu. Die Halluzinationen formuliert es dabei so überzeugend, dass sie plausibel klingen. So hat eine erste Version von Llama den Heise-Verlag kurzerhand zum Organisator der CeBIT gemacht. Vermutlich war für das Modell die Kombination von Publikation, IT-Bezug und der Standort Hannover einfach zu naheliegend für die seinerzeit weltgrößte Computermesse. Durch die geschliffene Formulierung ist man dazu geneigt, solche Fehlinformationen zu glauben.

Das Training großer Sprachmodelle ist zudem äußerst aufwendig und kann einige Tausend GPU-Jahre an Rechenzeit in Anspruch nehmen. Daher trainieren die Anbieter die Modelle selten neu. Das heißt, dass die Modelle aktuelle Informationen nicht kennen. Selbst für relativ neue Modelle wie Llama 3.1 liegt der sogenannte Knowledge Cutoff im letzten Jahr [1].

Bei Aussagen über interne Informationen, beispielsweise die einer Firma, versagen die öffentlichen Sprachmodelle, weil dieser Content nicht in ihrer Trainingsmenge enthalten ist. Man kann generative Modelle nachtrainieren (finetunen), aber auch das ist mit großem Aufwand verbunden (und müsste für jedes Dokument, das hinzukommt, erneut erfolgen).

Gut kombiniert: LLM + RAG

Abhilfe schafft eine Kombination von generativen Modellen mit modernen Verfahren des Information Retrieval. Dokumente können mithilfe von Embedding-Modellen (auch diese gehören zur Klasse der großen Sprachmodelle) indiziert werden. Über Ähnlichkeitsmetriken kann man dann Dokumente (oder Passagen) finden, die eine Frage möglichst gut beantworten. Dieser "Kontext" wird anschließend einem generativen Modell übermittelt, das die Ergebnisse zusammenfasst und auf die Frage genau abgleicht.

Solche Verfahren, die Retrieval Augmented Generation (RAG) heißen, sind äußerst populär. Im vergangenen Jahr wurde damit eine kleine Revolution im Information Retrieval ausgelöst, weil man damit wesentlich bessere Ergebnisse erzielen kann. Nicht zuletzt deshalb gibt es viele Frameworks, die RAG umsetzen.

RAG richtig einzusetzen ist nicht trivial, da die Optimierung in unterschiedlichen Dimensionen möglich ist. Man kann mit unterschiedlichen Embedding-Modellen arbeiten, verschiedene Reranker einsetzen und unterschiedliche generative Modelle verwenden. Die Auswahl der richtigen Kombination erfordert ausreichend Erfahrung.

Außerdem ist es mit reinem RAG leider noch nicht möglich, (formalisiertes) Wissen aus den Dokumenten zu extrahieren. Das wäre aber nützlich, weil die Modelle damit noch viel bessere Antworten geben könnten. Schon lange wird daher an Wissensgraphen (Knowledge Graphs) geforscht. Es wäre also schön, wenn man diese beiden Ideen miteinander verknüpfen könnte.

Hierarchischer Zugang mit GraphRAG

Der Begriff GraphRAG stammt von Microsoft, und der einführende Artikel [2] beschreibt das Verfahren als hierarchischen Zugang zu RAG im Gegensatz zu einer rein semantischen Suche nach Textfragmenten. Die einzelnen Schritte bestehen in der Extraktion des Wissensgraphen aus dem Rohtext und dem Aufbau einer Community-Hierarchie mit inhaltlichen Zusammenfassungen. Anschließend lassen sich diese Strukturen für das Retrieval nutzen und somit bessere Antworten formulieren.

Im Gegensatz zu vielen anderen Projekten von Microsoft bleibt allerdings die Implementierung im Verborgenen. Es gibt zwar Jupyter Notebooks [3], die aber intensiv Azure und OpenAI nutzen und dafür alle Informationen in die Cloud übertragen. Da vieles in den Klassen versteckt ist, ist es schwer zu verstehen, was hinter den Kulissen passiert.

Zum Glück gibt es alternative Quellen und Implementierungen. Empfehlenswert ist der einführende Artikel von neuml [4]. Hier sieht man sehr viel genauer, was passiert. Ein Embedding-Modell (intfloat/e5-base) ermöglicht es, Ähnlichkeitsanfragen zu stellen. Als Datenbasis dienen existierende Wikipedia-Embeddings, die neuml über Hugging Face zur Verfügung stellt. Die Umsetzung indiziert eine Teilmenge (die Top 100.000 Artikel) und liefert für eine Anfrage (hier "Machine Learning") einen Graphen als Ergebnis:

Das Tool neuml erstellt aus den Wikipedia-Zusammenfassungen einen Knowledge Graph für "Machine Learning" (Abb. 1).
Das Tool neuml erstellt aus den Wikipedia-Zusammenfassungen einen Knowledge Graph für "Machine Learning" (Abb. 1).

(Bild: Christian Winkler)

Dass die Knoten im oberen Teil in Abbildung 1 deutlich enger miteinander verbunden sind als im Rest des Graphen, ist ein Hinweis darauf, dass dort die Informationsdichte am höchsten sein dürfte.

Da der Graph als NetworkX-Graph in Python modelliert ist, lassen sich auch dessen Methoden aufrufen, um unter anderem den Pfad zwischen zwei Knoten zu ermitteln oder die Knoten mit der höchsten Zentralität zu ermitteln. Ein Blick auf das Ergebnis offenbart, dass es sich um besonders relevante Wikipedia-Seiten handelt:

{'id': 'Machine learning', 'text': 'Machine learning (ML) is a field of study in artificial intelligence concerned with the development ...', 'topic': 'artificial_learning_intelligence_language', 'topicrank': 2, 'score': 0.9113607406616211} {'id': 'Supervised learning', 'text': 'Supervised learning (SL) is a paradigm in machine learning where input objects (for example, a vecto...', 'topic': 'artificial_learning_intelligence_language', 'topicrank': 68, 'score': 0.8619827032089233} {'id': 'Perceptron', 'text': 'In machine learning, the perceptron (or McCulloch–Pitts neuron) is an algorithm for supervised learn...', 'topic': 'artificial_learning_intelligence_language', 'topicrank': 70, 'score': 0.8862747550010681} {'id': 'Autoencoder', 'text': 'An autoencoder is a type of artificial neural network used to learn efficient codings of unlabeled d...', 'topic': 'artificial_learning_intelligence_language', 'topicrank': 46, 'score': 0.8562962412834167} {'id': 'Multilayer perceptron', 'text': 'A multilayer perceptron (MLP) is a misnomer for a modern feedforward artificial neural network, cons...', 'topic': 'artificial_learning_intelligence_language', 'topicrank': 89, 'score': 0.8532359004020691} {'id': 'Unsupervised learning', 'text': 'Unsupervised learning is a paradigm in machine learning where, in contrast to supervised learning an...', 'topic': 'artificial_learning_intelligence_language', 'topicrank': 53, 'score': 0.8743622303009033} {'id': 'Generative pre-trained transformer', 'text': 'Generative pre-trained transformers (GPT) are a type of large language model (LLM) and a prominent f...', 'topic': 'artificial_learning_intelligence_language', 'topicrank': 5, 'score': 0.8358747363090515} {'id': 'Convolutional neural network', 'text': 'Convolutional neural network (CNN) is a regularized type of feed-forward neural network that learns ...', 'score': 0.8500866889953613} {'id': 'Deep learning', 'text': 'Deep learning is the subset of machine learning methods based on artificial neural networks with rep...', 'topic': 'artificial_learning_intelligence_language', 'topicrank': 27, 'score': 0.8632184267044067} {'id': 'Kernel method', 'text': 'In machine learning, kernel machines are a class of algorithms for pattern analysis, whose best know...', 'topic': 'artificial_learning_intelligence_language', 'topicrank': 99, 'score': 0.8539000749588013}

Der Score stammt aus der Ähnlichkeitsanalyse, und man kann deutlich erkennen, dass die Reihenfolge anders als bei der Graph-Analyse ist. In der Kombination aus beiden Verfahren findet man die relevantesten Dokumente sowohl für die Anfrage als auch in Bezug auf den Zusammenhang.

Interessant sind zudem die Topics, die in den Ergebnissen auftauchen. Diese wurden beim Indizieren berechnet – der Prozess ist ziemlich aufwendig und erfolgt ebenso wie das Berechnen der Embeddings auf einer GPU um mehrere Größenordnungen schneller als auf einer CPU.

Leistungsfähige Hardware benötigt man auch für die letzte Phase von RAG, der Textgenerierung. Das Beispiel von neuml nutzt dazu ein Mistral-7B-OpenOrca-Modell. Damit es auch auf nicht ganz so leistungsfähigen GPUs läuft, hat sich neuml für ein mit Activation-aware Weight Quantization (AWQ) heruntergerechnetes Modell entschieden. Die Generierung geht damit zügig und kann die Fakten aus dem Graphen extrahieren. Die Anfrage nach "Machine Learning" beantwortet das Tool mit Wikipedia folgendermaßen:

  1. Machine learning is a field of study in artificial intelligence that focuses on developing statistical algorithms that can learn from data and generalize to unseen data.
  2. Generative artificial neural networks have surpassed many previous approaches in performance.
  3. Machine learning algorithms are susceptible to inheriting and amplifying biases present in their training data, which can manifest in skewed representations or unfair treatment of different demographics.
  4. Supervised learning is a paradigm in machine learning where input objects and a desired output value train a model, allowing the algorithm to correctly determine output values for unseen instances.
  5. An autoencoder is a type of artificial neural network used for unsupervised learning, learning efficient codings of unlabeled data, and reducing dimensionality.

Auffällig ist, dass sich die Antwort auf generative KI fokussiert. Das Modell reflektiert die Informationen, die sich auf Wikipedia finden lassen. Dort steht offenbar deutlich mehr über generative (Sprach-)Modelle als über andere ML-Themen. Erstaunlich ist zudem, dass das Modell neben überwachtem Lernen noch Autoencoder erklärt, nicht aber unüberwachtes Lernen.

neuml bietet neben den Fragmenten aus dem Jupyter-Notebook auch noch eine Streamlit-Applikation auf GitHub [5] zum Experimentieren an. Das Tool ist leistungsfähig und erlaubt auch, eigene Dokumente zu indizieren.

Experimente mit deutschen Texten

Praktisch einsetzbar ist GraphRAG erst seit Kurzem. Viele Beispiele im Internet arbeiten mit Wikipedia und vorgefertigten Embeddings. Diese Einschränkungen lassen sich umgehen: Es gibt auch multilinguale Embedding-Modelle und generative Sprachmodelle, die mit Deutsch als Sprache hervorragend zurechtkommen.

Damit das nicht graue Theorie bleibt, habe ich im Sommer mit den vom 1. Januar bis 12. August 2024 veröffentlichten Artikeln (etwa 7.700) im Heise Newsticker experimentiert. Als Embedding-Modell habe ich intfloat/multilingual-e5-base verwendet. Auch das generative Modell sollte mit der deutschen Sprache gut zurechtkommen. Hier fiel die Wahl auf Mistral Nemo. Um die GPU nicht zu sehr zu belasten, kann man auf ein AWQ-Modell zurückgreifen wie casperhansen/mistral-nemo-instruct-2407-awq, das mit 12 GByte GPU-RAM auskommt.

Dass die Indizierung Absätze in den Ticker-Meldungen berücksichtigt, ist äußerst praktisch. Die Laufzeit ist einigermaßen überschaubar und dauert auf einer aktuellen GPU nur ein paar Minuten. Die Topics sind deutlich schwieriger zu berechnen, weil dafür das generative Modell erforderlich ist. Hier muss man mit Laufzeiten von mehreren Stunden rechnen. Danach steht aber alles bereit, um die aktuellen Newstickerdaten mit GraphRAG zu befragen.

Man kann nun verschiedene Anfragen ausprobieren. Um den Knowledge Graph direkt anzuzeigen, erhalten alle noch das Präfix gq:. Alle Fragen sind so konzipiert, dass besonders neue Daten eine Rolle spielen, die den rein generativen Modellen noch nicht bekannt sind. Die Namen der Knoten sind die Topics, die das generative Sprachmodell erzeugt hat. Manchmal hat es sich dabei vergriffen und für deutsche Artikel einen englischen Titel gefunden – das könnte man sicher noch verbessern.

Analyse einer Abfrage zum CrowdStrike-Vorfall

Anfang August war der CrowdStrike-Vorfall aktuell. Die Textausgabe fasst viele Meldungen des Newstickers richtig zusammen:

Crowdstrike ist eine Sicherheitssoftware, die von der Firma CrowdStrike entwickelt wurde. Sie soll modernen Cyberangriffen vorhalten, einschließlich Ausfällen. Am Freitag hat ein fehlerhaftes Update von Crowdstrike zu weltweiten IT-Ausfällen geführt. Crowdstrike hat den Fehler mittlerweile gefunden und behoben. 97 Prozent der betroffenen Computer sind laut Crowdstrike wieder einsatzfähig, was bedeutet, dass ungefähr 250.000 Computer immer noch lahmgelegt sind. BSI und Bitkom starten eine Umfrage zum Crowdstrike-Ausfall.

Der dazu erzeugte Graph (siehe Abbildung 2) hilft bei der Interpretation, denn damit kann man sowohl zusätzliche Informationen finden als auch verstehen, warum genau diese Dokumente gefunden wurden:

Der Knowledge Graph zum CrowdStrike-Vorfall vermischt englische und deutsche Topics (Abb. 2).

(Bild: Christian Winkler)

Blick auf Abfrage zur xz-Hintertür

Auch der Text zur xz Backdoor ist eine absolut korrekte Zusammenfassung:

Die xz backdoor ist eine Hintertür in den xz-Tools, die in vielen Open-Source-Plattformen enthalten sind. Die Backdoor ermöglicht es Angreifern, eigenen Code auf Zielsystemen auszuführen, den sie zuvor geschickt versteckt haben. Eine Netzwerk-Scanner zur Erkennung der Backdoor zu schreiben, scheint derzeit nicht möglich. Die mutmaßliche Verschwörung übte im Juni 2022 starken Druck auf den Hauptentwickler von liblzma aus, das Projekt in "aktivere Hände" zu geben, was dann auch passierte. Im Februar dieses Jahres versteckte Jia Tan dann die gut getarnte Hintertür, die vermutlich die Authentifizierungsfunktion von OpenSSH schwächt oder außer Kraft setzt. Die Backdoor aktiviert sich nur dann, wenn sie den Programmnamen "/usr/sbin/sshd" erkennt. Github verfügt über eine FAQ zur xz-Backdoor und eine CVE-ID für die Hintertür gibt es bereits: CVE-2024-3094. Der Angriff war offenbar von langer Hand geplant und Jia Tan erstellte sein Github-Konto im Jahr 2021 und konzentrierte sich ab 2022 auf das xz-Projekt. Der Angreifer hat mithilfe mehrerer Komplizen oder Fake-Accounts, die psychologischen Druck auf den Hauptentwickler aufgebaut haben, nicht nur Kontrolle über das Projekt erlangt, sondern auch Linux-Distributionen dazu gedrängt, die von ihm präparierten Versionen der Pakete schnellstmöglich in ihre Systeme zu übernehmen.

Die Hinweise im Graph würden es relativ einfach machen, eine weitere Recherche zu starten oder die Sicherheitslücke in einen größeren Kontext einzuordnen (siehe Abbildung 3).

Der Knowledge Graph für "xz Backdoor" zeigt mögliche Ansätze für die weiterführende Analyse (Abb. 3).

(Bild: Christian Winkler)

Informationen zu den fehlerhaften Boeing-Türen

Die Ausgabe zu der Anfrage nach "Alaska Airline Boeing Tür" ist etwas holprig formuliert und nicht immer logisch aufgebaut. Man kann sich allerdings einen grundlegenden Eindruck von dem Vorfall und der Problematik der Qualitätssicherung verschaffen.

Alaska Airlines besitzt 65 Boeing 737 Max 9 Flugzeuge. Während Inspektionen, wurden in vielen Flugzeugen lose Schrauben festgestellt. Die FAA hat Flugzeuge des Typs Boeing 737 Max 9 am Boden lassen und zu inspizieren. Aufgrund der laufenden Untersuchung mussten Alaska Airlines allein für den Montag ungefähr 140 Flüge gestrichen werden. Die FAA hat ein Startverbot für 171 Exemplare vom Typ Boeing 737 Max 9 verhängt und leitete Untersuchungen ein. Die Ursache des Unfalls ist noch völlig unklar. Alaska Airlines hat bis auf Weiteres alle Maschinen des Typs aus dem Flugbetrieb genommen. In der Europäischen Union sind laut der hiesigen Behörde EASA keine Flugzeuge von Stilllegungen und Inspektionen betroffen. Die US-Luftfahrtbehörde FAA hat offizielle Ermittlungen aufgenommen, um zu klären, wie ein Boeing-Flugzeug während des Flugs ein Kabineteil verlieren konnte.

Der Graph hilft in diesem Fall weiter, weil man nach konkreten Artikeln suchen könnte (Abbildung 4).

Der Knowledge Graph für "Alaska Airline Boeing Tür" ist eine gute Basis für weitere Recherchen (Abb. 4).

(Bild: Christian Winkler)

Spannende Kombination für LLMs

Bei der jüngsten Entwicklung rund um die großen Sprachmodelle ist besonders interessant, dass es darum geht, neue Anwendungen durch intelligente Kombination der leistungsfähigen Basismodelle zu ermöglichen. Letztere entwickeln sich zwar weiter, aber der Fortschritt ist aufgrund der hohen Anforderungen deutlich langsamer. Trotzdem ist es fantastisch, dass jeder von den Modellen profitieren und sie kostenlos nutzen kann. Damit kann man heute auf dem (leistungsfähigen) PC zu Hause Möglichkeiten nutzen, die noch vor zwei Jahren nicht einmal die großen Internetkonzerne anbieten konnten.

GraphRAG ist ein spannender Ansatz, der Retrieval Augmented Generation mit Wissensgraphen kombiniert und damit Informationen besser strukturiert als in reinen Textausgaben. Wer damit experimentieren möchte, findet einige Open-Source-Ansätze, die zwar eine moderne GPU erfordern, aber ohne große Rechenzentren oder Cloudplattformen auskommen.

URL dieses Artikels:https://www.heise.de/-10185768

Links in diesem Artikel:[1] https://github.com/meta-llama/llama-models/blob/main/models/llama3_1/MODEL_CARD.md[2] https://microsoft.github.io/graphrag/[3] https://github.com/microsoft/graphrag/tree/main/examples_notebooks[4] https://neuml.hashnode.dev/generate-knowledge-with-semantic-graphs-and-rag[5] https://github.com/neuml/rag[6] mailto:rme@ix.de

Copyright © 2024 Heise Medien

Ähnliche Nachrichten
Nachrichtenarchiv
  • Österreich Wales
    Österreich Wales
    ÖFB-Teamchef Ralf Rangnick: "Ich war am Anfang selbst überrascht"
    25 Mär 2022
    2
  • Markus Lanz
    Markus Lanz
    Markus Lanz heute: Gäste und Thema am 8.2.24
    8 Feb 2024
    21
  • Mückstein
    Mückstein
    Nach Mückstein-Rücktritt: Rauch soll Gesundheitsminister werden - Inland - derStandard.at › Inland
    3 Mär 2022
    1
  • Cerro Torre
    Cerro Torre
    TV-Tipp: Der Osttiroler Weg auf den Cerro Torre
    17 Jan 2022
    2
  • Mbappe
    Mbappe
    Fußball: Mbappe kehrt PSG den Rücken
    28 Nov 2024
    22
  • Yahoo Mail
    Yahoo Mail
    Yahoo Mail: Digitaler Nachrichtenstau beim E-Mail-Anbieter so ...
    28 Feb 2024
    4