In der heutigen Geschäftswelt stehen Unternehmen vor der Herausforderung, enorme Mengen an internem Wissen effektiv zu verwalten und zugänglich zu machen. Viele Organisationen verfügen über umfangreiche, aber oft unstrukturierte und schwer zugängliche Wissensbasen in internen Firmen-Wikis. So auch eXXcellent solutions: Wir nutzen Confluence, um jegliche Art von Geschäftsprozessen zu dokumentieren und zu verwalten. Das über 20 Jahre gewachsene Wissen ist jedoch schwer zu verwalten, und die auf Keywords basierende Confluence-Suche ist nicht ausreichend, um dieses Wissen schnell und unkompliziert abzurufen.
Um diesem Problem entgegenzuwirken, haben wir bei eXXcellent solutions uns dieser Herausforderung gestellt und den Prototypen "eXXpert" entwickelt. Dieser kann interne Firmendaten schnell, einfach und individuell auf Mitarbeiteranfragen bereitstellen. eXXpert basiert auf dem Konzept der Retrieval Augmented Generation (RAG) und nutzt generative KI, um interne Unternehmensdaten intelligent zu verarbeiten und bereitzustellen. In diesem Blogartikel möchten wir unsere Erfahrungen und Best Practices bei der Entwicklung dieses RAG-Assistenten teilen und einige Lessons Learned aus der Praxis vermitteln.
Abbildung 1: Live-Demo Prototyp eXXpert (© eXXcellent solutions)
Retrieval Augmented Generation (RAG) kombiniert die Stärken von Retrieval-Systemen und generativen Modellen. Während Retrieval-Systeme relevante Dokumente aus strukturierten / unstrukturierten großen Datenbank abrufen, nutzen generative Modelle diese Informationen, um präzise und kontextbezogene Antworten zu generieren. Wie in Abbildung 2 zu sehen ist, besteht die Architektur von RAG aus zwei Hauptkomponenten: einem Retriever, der relevante Dokumente zu einer Nutzereingabe findet, und einem Generator, der auf Basis dieser Dokumente Antworten erstellt.
Ein Large Language Model (LLM) wird über eine standardisierte OpenAI-API angesprochen, während der Retriever auf einem Encoder basiert, der semantische Ähnlichkeiten prüft. Diese Encoder erstellen sogenannte Embeddings – numerische Repräsentationen von Texten, die es ermöglichen, semantische Ähnlichkeiten zwischen Anfragen und Dokumenten zu erkennen. Der Retriever muss jedoch nicht zwingend auf Encodern basieren und kann auch eine klassische Datenbankabfrage sein oder auf einer Volltextsuche basieren.
Die Entwicklung eines einfachen RAG-Prototypen ist durch Frameworks wie LangChain, LlamaIndex oder Haystack schnell und einfach. Jedoch ist der daraus entstehende Prototyp sehr starr an die Vorgaben der Maintainer dieser Frameworks gebunden, und kann nur schwer individualisiert werden. Um RAG gut zu machen, bedarf es individueller Software, angepasst auf die Datengrundlage und Anforderungen. RAG und auch das Arbeiten mit generativer KI sind für viele Neuland, und im Moment gibt es dafür noch keine perfekte Out-of-the-Box-Lösung mit einem genauen Rezept. Für verschiedene Daten und Anwendungsfälle muss Sonderlogik in den Code eingebaut werden, und es erfordert ein gewisses Verständnis, welche fortgeschrittenen RAG-Techniken angewendet werden sollen und können, um den Prototypen zu verbessern. Ein zentraler Aspekt, ähnlich wie in der traditionellen Data Science, ist die intensive Auseinandersetzung mit den Daten.
Die Qualität der Antworten eines RAG-Systems hängt stark von der Qualität der zugrunde liegenden Daten ab. Dies macht eine umfangreiche Datenanalyse und -aufbereitung essenziell, um gute Ergebnisse zu erzielen. So wurden für den eXXpert ein Custom HTML Parser und ein Custom Text Chunker entwickelt. Die Aufgabe des Custom HTML Parsers ist es zu garantieren, dass das LLM später passend formatierte und zusammenhängende Texte erhält. Tabellen und Listen werden beispielsweise in Markdown-Format konvertiert, um die Verarbeitung durch das LLM zu erleichtern.
Die Daten von Confluence werden über die Atlassian Confluence REST API gecrawlt und anschließend vom Chunker rekursiv in kleinere eigenständige Stücke geteilt, damit diese später mittels eines Vektorenvergleichs besser gefunden werden können. So wird beispielsweise wie in Abbildung 3 veranschaulicht, wie ein Dokument in logische Teile zerstückelt wird.
Abbildung 3: Veranschaulichung von kontextbezogenen Chunking am Beispiel unseres Intranets (© eXXcellent solutions)
Bei der Entwicklung unseres RAG-Systems haben wir eine entscheidende Erkenntnis gewonnen: Einfachheit ist der Schlüssel zum Erfolg. Es ist verlockend, sich in der Komplexität zu verlieren und jede neue Technik sofort einzubauen. Doch weniger ist oft mehr. Viele Entwickler neigen dazu, die neuesten RAG-Techniken aus Blogartikeln und wissenschaftlichen Papern anzuwenden. Sie kombinieren zahlreiche RAG-Pipelines aus verschiedenen Frameworks wie LangChain oder LlamaIndex zu einem überkomplexen System. Das Ergebnis ist oft ein "Frankenstein-Monster" von Pipelines, das zwar beeindruckend aussieht, aber in der Praxis langsam, teuer und ineffizient ist.
Stattdessen sollte man sich auf das Wesentliche konzentrieren. Nicht jede neue Methode, die in wissenschaftlichen Papern vorgestellt wird, ist für jeden spezifischen Anwendungsfall geeignet. Viele dieser Studien basieren auf Benchmarks und sind nicht in realen Szenarien getestet worden. Verschiedene Techniken, wie eine Reihe von sich selbst korrigierenden Agenten oder Knowledge Graphs, sollten nur dann angewendet werden, wenn es tatsächlich sinnvoll ist.
Eine der größten Herausforderungen im Umgang mit RAG-Systemen ist deren Evaluation und Testing. Während die Generations-Komponente nur schwer über menschliches Feedback oder durch den Einsatz eines LLM als Bewerter evaluiert werden kann, lässt sich der Retriever besser evaluieren. Die Retriever-Komponente lässt sich mittels eines eigens erstellten Datensatzes evaluieren, der stets aus einer Frage und einem Textabschnitt besteht, der die Antwort auf diese Frage enthält. So lässt sich untersuchen, wie sich Änderungen wie die Anpassung des Embedding-Modells oder ein Custom Chunking auf die Performance des Retrievers auswirken. So lassen sich wie in Abbildung 4 gezeigt, granular Änderungen einführen und gleichzeitig sicherstellen, dass die Änderungen die Antwortqualität nicht negativ beeinflussen.
Abbildung 4: Auswirkungen des α-Parameters bei der hybriden Suche nach Dokumenten (© eXXcellent solutions)
Wie bereits erwähnt lässt sich die Generations-Komponente nur schwer evaluieren. Deshalb geht der eXXpert jetzt in eine Testphase, in der es darum geht, Nutzerfeedback zu sammeln, und Schwachstellen in der Architektur oder der Verarbeitung von Fragen zu identifizieren. So lässt sich an einem realen Anwendungsfall testen, ob eventuell Halluzinationen auftreten oder in sonstiger Weise nicht angemessene oder falsche Antworten generiert werden. Nur so, mithilfe von Nutzern, kann langfristig die Genauigkeit und Relevanz der Antworten verbessert werden.
Das User-Feedback wird, wie in Abbildung 1 zu sehen, mithilfe eines Feedback-Buttons in der Oberfläche gesammelt und vollautomatisch in Langfuse integriert. Langfuse ist eine Open-Source-Plattform für LLM-Engineering. Dort können Nutzereingaben und Antworten geloggt werden, die dann wiederum dem Userfeedback mit einer ID zugeordnet werden können. Dadurch lassen sich die oftmals schwer zu verstehenden Abläufe eines RAG-Assistenten nachvollziehen und loggen. Ein Beispiel in Abbildung 5 zeigt, welche Schritte der eXXpert beim Erstellen einer Antwort durchläuft.
Zusätzlich ermöglicht Langfuse eine effektive Verwaltung von Prompts und diversen Konfigurationen durch Versionierung und Kontrollfunktionen. So können schnell und ohne Redeployment Abläufe innerhalb des RAG-Assistenten verbessert oder verändert werden.
Abbildung 5: Langfuse Trace und Spans die beim Stellen einer Frage im eXXpert durchlaufen werden
Der Umgang mit sensiblen Firmendaten erfordert besondere Aufmerksamkeit in Bezug auf Datenschutz und Sicherheit. Für viele Firmen, einschließlich eXXcellent solutions, hat der Datenschutz eine hohe Priorität, insbesondere im Umgang mit firmeninternen Daten und Prozessen. Deshalb lag der Fokus von eXXcellent solutions auch stark darauf, jede Komponente des eXXperts On-Premise zu betreiben. Dies stellt bei keiner der Komponenten außer dem LLM zur Generierung ein Problem dar. Langfuse, Vektordatenbank und RAG-Service können lokal betrieben werden.
Auch ein LLM kann On-Premise betrieben werden. Hierfür nutzt eXXcellent solutions einen KI-Server mit dedizierter Grafikkarte. Konkret kommt eine NVIDIA RTX 4090 mit 24 GB Grafikkartenspeicher zum Einsatz, die den Betrieb kleinerer Open-Source-Modelle wie Mistral Nemo 12B und Llama 3.1 7B ermöglicht. Diese Modelle sind zwar kompetent, liegen jedoch beim Reasoning (Schlussfolgern) zurück und halten sich weniger an Formatierungsvorgaben. Sie sind weniger kritisch und neigen häufiger zu Halluzinationen.
Bei lokalen Modellen müssen auch einmalige Anschaffungskosten sowie Probleme mit der Skalierung und Verfügbarkeit berücksichtigt werden, während diese Aspekte bei kommerziellen Anbietern bereits integriert sind.
Trotz dieser Herausforderungen unterstützt eXXpert lokale LLMs, bietet aber auch die Flexibilität, über eine standardisierte OpenAI API-Spezifikation an jeden LLM-Provider angeschlossen zu werden. Für Unternehmen, die ohnehin Daten bei Partnern wie IONOS oder Azure hosten bieten sich auch die von diesen Anbietern bereitgestellten Sprachmodelle an.
Wie eingangs erwähnt, zielt der eXXpert primär darauf ab, das schwer zugängliche Wissen in Confluence besser nutzbar zu machen. Ein solcher Assistent könnte nicht nur das Office-Team und den Support entlasten, sondern auch als erste Anlaufstelle für vielfältige Anfragen dienen. Die verbesserte Zugänglichkeit und Verfügbarkeit von Informationen macht lästiges Durchsuchen von Confluence oder das direkte Nachfragen bei Kolleg:innen überflüssig.
Allerdings sollten der eXXpert und ähnliche RAG-Prototypen nicht als Allheilmittel betrachtet werden, die jede Anfrage korrekt und zufriedenstellend beantworten können. Es bestehen weiterhin bedeutende Einschränkungen des klassischen RAG-Ansatzes, die berücksichtigt werden müssen. Eine zentrale Herausforderung für RAG-Systeme ist die Bewältigung komplexer Multi-Hop-Fragen, die eine Verknüpfung von Informationen aus verschiedenen Quellen erfordern. Aktuelle Ansätze stoßen hier häufig an ihre Grenzen, da es ihnen schwerfällt, logische Verbindungen zwischen separaten Informationseinheiten herzustellen.
Darüber hinaus bleibt das Problem der Halluzinationen bestehen: Situationen, in denen das KI-Modell falsche oder irreführende Informationen generiert, die nicht in den zugrunde liegenden Daten enthalten sind. Dies wird oft durch fehlenden Kontext verursacht, wenn eine Frage nicht beantwortet werden kann. Weitere Herausforderungen sind veraltete Daten oder widersprüchliche Informationen.
Ein vielversprechender Lösungsansatz für diese Probleme könnte die Integration von Graphdatenbanken sein. Diese Technologie ermöglicht es, komplexe Beziehungen zwischen Datenpunkten explizit zu modellieren und zu speichern, was zu einer verbesserten Verarbeitung vernetzter Informationen führen kann.
Die Möglichkeiten sind nahezu grenzenlos. Ein interner Firmenassistent mit RAG könnte sich weit über simple Frage-Antwort-Interaktionen hinaus entwickeln und zum zentralen Knotenpunkt für diverse Unternehmensprozesse avancieren. Moderne Sprachmodelle verfügen über die Fähigkeit, Funktionen auszuführen, was es ihnen ermöglicht, externe Schnittstellen anzubinden. So könnte ein Assistent beispielsweise auf Outlook zugreifen, um effizient Meetings mit mehreren Teilnehmern zu koordinieren. Ebenso wäre es denkbar, dass Mitarbeiter mithilfe des Assistenten ihre Reisekostenabrechnungen schnell und unkompliziert erstellen können. Diese Integration verschiedener Systeme und Prozesse verspricht eine deutliche Steigerung der Effizienz und Benutzerfreundlichkeit im Unternehmensalltag.
RAG ist kein Allheilmittel, aber ein vielversprechender Ansatz mit großem Potenzial. Mit eXXpert haben wir bei eXXcellent solutions einen wichtigen Schritt in Richtung effizienteres Wissensmanagement gemacht. Die Entwicklung und Implementierung eines solchen Systems erfordert jedoch Geduld, Sorgfalt und kontinuierliche Anpassungen. Wir sind gespannt auf die zukünftigen Entwicklungen und Erweiterungsmöglichkeiten von eXXpert und freuen uns darauf, unsere Erfahrungen mit Firmenassistenten weiter zu verfolgen.
Sie suchen nach einem effizienten Wissensmanagement für Ihr Unternehmen oder möchten Ihren Kunden Informationen schnell und einfach per Chatbot zur Verfügung stellen? Nach unseren internen Testphasen wird es auch eine Lösung für Kunden geben! Über unseren Newsletter erfahren Sie, wenn es soweit ist:
Gerne beraten wir Sie schonmal vorab. Dr. Stefan Pflüger ist Ihr Ansprechpartner:
Oder informieren Sie sich auf unserer Website über unsere Kompetenzen im Bereich KI: |