Agentic RAG bei "Chat-with-your-Data"Applikationen

Michael Schmid

Sind die Anfragen der KI Knowledge Base wieder nicht verlässlich?

Produktionsreife “Chat-With-your-Data”-Applikationen, basierend auf RAG (=Retrieval Augmented Generation) sind eine harte Nuss. Was schnell in einem Proof of Concept sehr gut funktioniert, ist in der Praxis meistens nicht brauchbar. Gerade die Optimierung von Black Box KI-Systemen, wie RAG, ist alles andere als einfach.

In dieser Artikelreihe gehe ich auf die relevantesten Herausforderungen und Optimierungshebel aus technischer Sicht ein, zur Sicherstellung einer verlässlichen und qualitativen “Chat-with-your-Data”-Applikation.

Heute im Programm: Agentic RAGs.

Herausforderungen: Kompliziertes Prompting

Im letzten Artikel haben wir einen Überblick über fortschrittliche Retrieval-Techniken gegeben. In diesem Teil widmen wir uns dem Thema "Agentic RAGs". Auch wenn Ihre Mitarbeiter bereits gut im Prompt Engineering geschult sind, werden in der Praxis trotzdem komplexe Chat-Anfragen auftreten, die für eine KI herausfordernd sind. In einer "Chat-with-your-Data"-App, die Unternehmensdaten durchsucht, müssen Anfragen präzise und klar formuliert sein, um auch die richtigen Informationen zu finden.

Was versteht man unter einer komplexen Anfrage? Eine Anfrage gilt als komplex, wenn sie vielschichtig ist oder auf Informationen zugreift, die über mehrere verschiedenen Dokumente verteilt sind.

Vielschichtige Anfrage:

Auf den ersten Blick mag eine vielschichtige Anfrage simpel erscheinen, doch für ein KI-Modell ist sie recht komplex. Hinter der Frage steckt nämlich ein grundlegendes Verständnis, das dem KI-Modell vermittelt werden muss, um die notwendigen Informationen zur Beantwortung zu finden.

Stellen Sie sich vor, Ihr Unternehmen entwickelt ein KI-Tool namens "FinanzChat", das Jahresberichte generieren soll. Ein gutes Beispiel für eine vielschichtige Anfrage wäre:

"Wie hat sich der Umsatz unseres Unternehmens in den letzten 10 Jahren entwickelt?"

Um eine solche Frage zu beantworten, muss das KI-Modell diese zunächst in ihre Bestandteile zerlegen und die Abhängigkeiten verstehen. In manchen Fällen kann das Modell eine solche Frage direkt bearbeiten, doch meistens benötigt es Unterstützung beim Zerlegen der Frage durch den Endnutzer. Das Sprachmodell sollte dabei idealerweise bei dem Beispiel folgendes berücksichtigen:

  1. Was ist “unser” Unternehmen?
  1. Was ist das heutige Datum?
  1. Welches Jahr war vor 10 Jahren?
  1. Wie berechne ich die Umsatzentwicklung zwischen 2014 und 2024?
  1. Wie hoch war der Umsatz im Jahr 2014?
  1. Wie hoch war der Umsatz im Jahr 2024?

Fragen 1 und 2 könnten durch In-Context-Learning mit einer gut formulierten System-Prompt beantwortet werden. Zum Beispiel könnte man in die System-Prompt den folgenden Satz einfügen: "Du bist ein Finanzberater im Auftrag von Unternehmen XYZ, bitte beantworte Anfragen. Das heutige Datum ist der 31.12.2024."

Fragen 3 und 4 könnte ein Sprachmodell aufgrund seines Trainings eigenständig beantworten. Ein Modell wie GPT4 könnte beispielsweise mit mathematischen Formeln trainiert sein und einige mathematische Operationen selbst durchführen. Ältere Sprachmodelle haben noch Schwierigkeiten mit mathematischen Aufgaben, weshalb hier Unterstützung erforderlich ist (beispielsweise durch Mathematische Funktionsaufrufe). Neuere Modelle hingegen können bereits einfache Aufgaben eigenständig lösen.

Für Fragen 5 und 6 muss ein RAG-System nachhelfen. Aktuelle Retrieval-Techniken basieren auf Textinformationen. Anhand der semantischen Distanz und der Keyword-Suche können wir Informationen aus der Knowledge Base extrahieren. Mit anderen Worten: Wenn die Sätze "Im Jahr 2014 haben wir X an Umsatz erzielt" und "Im Jahr 2024 haben wir Y an Umsatz erzielt" in der Knowledge Base vorhanden sind, wird die Anfrage korrekt beantwortet. Aber was passiert, wenn diese Informationen nicht direkt in der Knowledge Base stehen und diese nur aus mehreren Rohdateien zu Finanzkennzahlen besteht? Woher weiß das LLM dann, wo es am besten suchen soll?

Anfragen, die mehrere Dokumente betreffen:

Noch komplexer wird es, wenn die Informationen über den Umsatz über mehrere Dateien verteilt sind. Beispiel: Für unsere "FinanzChat" Applikation sind folgende Dokumente in der Knowledge Base vorhanden:

  • Jahresbericht2014.xlsx
  • UmsatzJan2024.xlsx
  • UmsatzFeb2024.xlsx
  • ...
  • UmsatzDez2024.xlsx

In so einem Fall müssen wir der Finanz Chat-KI die Information mitgeben, dass die Umsatzdaten für 2024 auf mehreren Excel-Sheet eventuell verteilt sind.

Umgang mit Komplexen Anfragen mit Agentic RAG

Um komplexe Anfragen effizient zu bearbeiten, erweitern wir unsere "Chat-with-your-Data"-Apps um sogenannte “KI-Agenten”. Diese Agenten nutzen LLMs in Kombination mit anderen Software Tools, um autonom und zielgerichtet Aufgaben zu erledigen. Das Ziel von RAG-Agenten wäre komplexe Anfragen zu vereinfachen, dafür bieten sich folgende Aufgaben an:

  • Query Decomposition: Dieser Agent hat die Aufgabe, vielschichtige Anfragen in kleinere, überschaubare Subanfragen zu zerlegen.
  • Query Routing: Die Aufgabe dieses Agenten ist es, das Suchfeld für bestimmte Anfragearten einzugrenzen und zu spezifizieren.
  • Query Translation: Dieser Agent hat die Aufgabe, eine Text Anfrage zu einer strukturierten Anfrage umzuwandeln. Beispielsweise von Text zu SQL.  

Query Decomposition

Query Decomposition spielt eine entscheidende Rolle bei der Verarbeitung komplexer Anfragen in KI-Systemen. Dabei wird eine umfangreiche, mehrschichtige Frage in ihre grundlegenden Komponenten zerlegt, sodass das System jede Teilfrage einzeln nun systematisch und effizient bearbeitet werden kann. Diese Methode erleichtert es, präzise und kohärente Antworten zu generieren.

Nehmen wir zum Beispiel das Szenario, in dem Ihr Unternehmen ein KI-Tool namens "FinanzChat" entwickelt, das detaillierte Finanzberichte erstellen soll. Eine komplexe Anfrage könnte lauten:

"Wie hat sich der Gewinn unseres Unternehmens im letzten Quartal entwickelt, und wie war die Marktreaktion auf unsere neuesten Produktveröffentlichungen?"  

Um eine solche Anfrage zu bearbeiten, muss das KI-Modell diese in mehrere Subanfragen zerlegen:

  • Was war der Gewinn des Unternehmens im letzten Quartal?
  • Wie hat sich dieser Gewinn im Vergleich zu vorherigen Quartalen entwickelt?
  • Welche neuen Produkte wurden im letzten Quartal veröffentlicht?
  • Wie hat der Markt auf diese Produkte reagiert?

Query Routing

Aus dem Artikel zum Thema Advanced Retrieval wissen wir, dass Metadaten hilfreich sind, um einen Relevanz-Score zu bestimmen. Zur Wiederholung: Metadaten sind relevante Informationen, die man nicht allein aus dem Inhalt eines Chunks ableiten kann. Beispiel: Denken Sie an die Dateistruktur auf Ihrem eigenen PC. Jede Datei besitzt neben ihrem Inhalt auch Informationen wie Erstellungsdatum und Autor. Diese Informationen nennt man Metadaten.

Metadaten von Chunks können auch verwendet werden, um das Suchfeld durch Filter zu verfeinern. Ein Query-Routing-Agent klassifiziert Anfragen und beschränkt die Suche auf Chunks, die das entsprechende Meta-Attribut aufweisen.

Beispiel: Der Routing-Agent wird so konfiguriert, dass alle Anfragen zum Thema Jahresabschluss nur Chunks berücksichtigen, die das Meta-Attribut „Dateiart“ mit dem Wert „Jahresabschluss“ haben. Bei der nächsten Nutzeranfrage, überprüft nun der Agent, welche Art der Anfrage vorkommt, und filtert das Suchfeld dementsprechend.

Zusätzlich erweist sich das Query-Routing, wenn mehrere Indizes verfügbar sind auch hilfreich: bisher sind wir davon ausgegangen, dass Chunks nur in einem einzigen Suchindex vorhanden sind. Doch in manchen Fällen ist es sinnvoll, mehrere Indizes zu definieren, beispielsweise wenn man verteilte Datenquellen anzapfen will (Internetseiten, SQL-Datenbanken, …), oder eine saubere Trennung zwischen Domänendaten (Fertigung, Vertrieb, R&D, …) wünscht. In diesem Fall ist ein Routing-Agent hilfreich, da er den richtigen Index basierend auf der Anfrage auswählen kann.

Query Translation

Um mit nicht rein textbasierten Informationsquellen wie relationalen Datenbanken oder Knowledge Graphs zu arbeiten, können Query-Übersetzungsagenten eingesetzt werden, um Textanfragen in strukturierte Abfragen zu übersetzen. Wenn beispielsweise Verkaufskennzahlen in einer SQL-Datenbank gespeichert sind, wäre die Aufgabe eines Query-Übersetzungsagenten, eine Anfrage wie

„Gib mir alle Bestellungen mit einem Mindestwarenkorbwert von 200 €“

in eine SQL-Abfrage wie

„SELECT * FROM Orders o WHERE o.basket_value > 200“
zu verwandeln. Es ist jedoch wichtig, zusätzliche Sicherheitsmaßnahmen zu implementieren, um Prompt-Injektionen und die Ausführung von nicht read-only Operationen zu verhindern.

  • Prompt-Injektionen: Angriffe, bei denen bösartige Eingaben in Systeme eingeschleust werden, um deren Verhalten zu manipulieren.
  • Nicht read-only Operationen: Aktionen, die Daten verändern oder Systeme beeinflussen, im Gegensatz zu rein lesenden Aktionen, die keine Änderungen vornehmen.

Zusammenfassung

  • Komplexe Anfragenverarbeitung: Trotz ausführlicher Schulungen zum Prompting stoßt man in der Praxis auf komplexe Anfragen, bei denen das implizite Nutzerwissen den LLMs fehlt. RAG Systeme die mit KI-Agenten ausgestattet sind unterstützen hier, um diese Lücke zu schließen und bessere Antworten zu generieren.
  • Query Decomposition: Dieser Agent zerlegt komplexe, mehrschichtige Anfragen in einfacher zu handhabende Subanfragen, um kohärente und genaue Antworten durch das KI-Modell sicherzustellen.
  • Query Routing: Ein spezialisierter Agent klassifiziert und beschränkt Suchanfragen auf relevante Informationschunks basierend auf Metadaten, um die Effizienz und Genauigkeit der Suchergebnisse zu erhöhen.
  • Query Translation: Übersetzungsagenten wandeln Textanfragen in strukturierte Abfragen um, wie zum Beispiel SQL-Befehle, um mit relationalen Datenbanken zu interagieren, wobei zusätzliche Sicherheitsmaßnahmen gegen Prompt-Injektionen erforderlich sind.

Quellen

Agentic RAG With LlamaIndex. The topic of Agentic RAG explores how… | by Cobus Greyling | LlamaIndex Blog | Medium

Architectural Patterns for Text-to-SQL: Leveraging LLMs for Enhanced BigQuery Interactions | by Arun Shankar | Google Cloud - Community | Medium

Mit einem Kennenlernen starten

Wir möchten Ihre Situation und Ihre Ziele verstehen - wählen Sie hier einen Termin.

Erfolgreiche KI-Transformation mit Walnuts Digital

Als End-to-End Business Integrator ist Walnuts Digital ein zuverlässiger Partner und Advisor für nachhaltige Wertschöpfung mit Künstlicher Intelligenz. Wir helfen bei der Integration von Generativer-KI in Ihre Geschäftsprozesse - von der Strategie, über die technische Implementation bis hin zum Change Management.

Weitere Artikel: