Chatbots für Spezialwissen – Teil 2 Umsetzung
Neben KI-Themen, mit denen ich mich auch privat gerne beschäftige, ist Cybersecurity mein zweites großes Interessengebiet. Aus Erfahrung weiß ich daher, dass vielen IT’lern und IT’lerinnen das Lesen von formellen Security-Anforderungen keinen Spaß macht. Zudem ist der Zugang zu Security-Standards oft nicht einfach. Diese Schwachstelle wollen wir mit einem Chatbot abstellen, der bei der Nutzung der IT-Grundschutz-Bausteine unterstützt.
Teil 2: Im zweiten Teil stellen wir unser internes Projekt Chatbot für IT-Grundschutz vor und geben einen Überblick über die Herausforderungen, die sich im Rahmen des (noch andauernden) Projekts ergeben haben.
In weiteren Artikeln gehen wir auf tiefergehende Erfahrungen und Lösungsansätze mit unterschiedlichen Implementierungen und Technologien ein.
Ein Chatbot für den IT-Grundschutz
IT-Grundschutz – umfangreich und komplex
Beim IT-Grundschutz handelt es sich um einen Security-Standard, der vom Bundesamt für Sicherheit in der Informationstechnik herausgegeben wird. Ein wichtiger Bestandteil des IT-Grundschutzes sind die sogenannten Bausteine. In einem Baustein werden alle relevanten Sicherheitsaspekte zu einem Thema beleuchtet, z. B. Server, Datenbanken, Firewalls, Administration etc.
Da es im IT-Grundschutz mehr als 100 Bausteine gibt, ist es selbst für einen erfahrenen Security-Consultant schwer, alle Maßnahmen korrekt und vollständig im Kopf zu haben. Für „normale“ IT-Mitarbeitende, die den IT-Grundschutz in seinem Bereich umsetzen muss, erscheint dies nahezu unmöglich.
Was soll der Chatbot für den IT-Grundschutz leisten?
Die Aufgabe unseres Chatbots für den IT-Grundschutz ist es, Security-Beauftragte bzw. IT-Mitarbeitende beim Umgang mit den IT-Grundschutz-Bausteinen zu unterstützen. Er soll zu allen Fragen, die die Bausteine betreffen, verlässliche, also korrekte und vollständige Antworten liefern. Hier sind ein paar Beispiele für solche Fragen:
- Welche Gefährdungen bestehen in einer konkreten Situation?
- Welche Maßnahmen sind in einer bestimmten Situation relevant?
- Wie ist eine Maßnahme genau formuliert?
Eine Besonderheit der Bausteine besteht darin, dass ein Thema zwar vollständig beleuchtet wird, aber in der Regel in einer konkreten Situation mehrere Bausteine zu berücksichtigen sind. Möchte man zum Beispiel einen Kubernetes-Cluster absichern, sind neben dem „eigentlichen“ Kubernetes-Baustein weitere Bausteine zur Administration, Containerisierung, Virtualisierung etc. anzuwenden. Das muss der Chatbot in seinen Antworten natürlich berücksichtigen.
Neben dem fachlichen Ziel, einen Chatbot zu bauen, nahmen wir uns vor, Technologien, Frameworks und Lösungsansätze für die Architektur zu evaluieren, die die die Funktionen des Large Language Models ergänzt. Eine der wichtigsten dieser Funktionen ist die Retrieval Augmentation Generation (RAG).
Ansätze für die Implementierung
In diesem Projekt untersuchen wir parallel zwei technologische Ansätze:
- Der erste Ansatz basiert auf einer möglichst weitgehenden Nutzung von Azure Cognitive Services und der Vermeidung von individuell erstelltem Code.
- Der zweite Ansatz basiert auf einer möglichst weitgehenden Nutzung von Open-Source-Technologien (u. a. Langchain) und der Verwendung von Python als Programmiersprache.
In beiden Fällen nutzten wir primär Chat GPT als LLM (in verschiedenen Versionen). Die Evaluation weiterer LLM (Llama 2, Mistral, Falcon etc.) ist zu einem späteren Zeitpunkt ebenfalls geplant.
Herausforderungen
Unabhängig von den genutzten Technologien gibt es vielfältige fachliche Herausforderungen. Diese ergeben sich insbesondere daraus, dass die vom Chatbot gelieferten Antworten in Bezug auf das Spezialwissen IT-Grundschutz korrekt und vollständig sein müssen. Antworten, die nicht auf dem IT-Grundschutz sondern auf dem Allgemeinwissens des LLM beruhen, wären also aus Sicht der Aufgabenstellung fehlerhaft.
Um dem LLM die IT-Grundschutz-Bausteine zugänglich zu machen, nutzen wir einen auf Retrieval Augmented Generation (RAG) basierenden Ansatz für die Implementierung. Dabei gibt es mehrere wesentliche Stellschrauben:
- Bereitstellung der Wissensbasis (Chunking)
- Auswahl des Embeddings
- Abfrage der Wissensbasis
- Anweisungen an das LLM
Die ersten beiden Stellschrauben sind weitgehend unabhängig von der zur Implementierung genutzten Technologie und sollen im Folgenden beleuchtet werden. Zu den Punkten Abfrage der Wissensbasis und Anweisungen an das LLM sind eigenständige Blog-Artikel geplant.
Bereitstellung der Wissensbasis (Chunking)
Das durch den Chatbot zu erschließende Spezialwissen kann in unterschiedlichen Formaten vorliegen. Neben Websites, PDF- und Word-Dokumenten können dies Datenbanken, DWHs und viele weitere Formate sein. Neben reinen Texten sind zudem vielfach Bilder und Tabellen in den Dokumenten enthalten.
Da eine LLM hauptsächlich Texteingaben versteht, liegt die erste Herausforderung darin, die Ausgangsdokumente konsequent in Textform zu überführen. Damit verknüpft sind Fragen nach der Behandlung von Überschriften, Fußzeilen, Referenzen und Metadaten. Denn diese enthalten in der Regel wichtige inhaltliche Informationen. Für HTML- und andere XML-basierten Dokumente kommt die Frage dazu, wie mit Tags umgegangen wird. Auch Tags können wichtige Aspekte eines Textes darstellen.
Fragmente bilden
Um das Embedding sinnvoll durchführen zu können, müssen die in Textform überführten Dokumente zunächst in kleinere Fragmente zerlegt werden, sogenannte Chunks. In vielen Beispielen und Demos wird hierfür die Strategie gewählt, Chunks mit einer festen Länge (z. B. 1000 Zeichen) und einer definierten Überlappung angrenzender Chunks (z. B. 300 Zeichen) zu verwenden.
Wie sich in unserem Projekt schnell gezeigt hat, ist solch ein „blindes Chunking“ keine optimale Strategie, wenn es um korrekte Aussagen geht: Ein Chunk, der das Ende des einen und den Anfang des nächsten Kapitels umfasst, ist nicht sinnvoll.
Ein weiteres Thema beim Bilden der Fragmente ist die Behandlung von Überschriften und anderen Strukturierungselementen im Text. Die Identifikation von Kapitel- und Abschnittsüberschriften ist auf der Ebene von Strings ein erstaunlich komplexes Problem: Überschriften sehen aus wie ein sehr kurzer Absatz. Für unseren Chatbot für IT-Grundschutz haben wir deshalb letztlich auf die Nutzung der vom BSI bereitgestellten PDF-Dokumente verzichtet und verwenden stattdessen die XML-Fassung des IT-Grundschutzkompendiums. Aus der XML-Fassung lassen sich Kapitel, Abschnitte und Absätze mit wenig Aufwand präzise extrahieren.
Auswahl des Embeddings
Es gibt eine Vielzahl von Embeddings, die teilweise mit sehr unterschiedlichen Zielen trainiert werden. Neben den Trainingszielen spielen auch die Trainingsdaten eine wichtige Rolle: So kommt ein ausschließlich mit englischen Trainingsdaten erstelltes Embedding mit der deutschen Sprache oft nicht gut zurecht.
Um ein optimales Ergebnis zu erzielen, müssen verschiedene Embeddings in Kombination mit unterschiedlichen Varianten für das Chunking objektiv bewertet werden. Für eine erste grobe Einschätzung des Embeddings ist eine manuelle Bewertung ausreichend. In der Optimierungsphase stößt sie dagegen schnell an ihre Grenzen.
Die automatisierte Bewertung von Embeddings ist eine eigenständige Aufgabe im Projekt. Sie beinhaltet unter anderem die Erstellung von Trainingsdaten, die (naturgemäß) abhängig vom Spezialwissen sind, das mit dem Chatbot erschlossen werden soll.
Damit der Artikel nicht zu lang wird, wollen wir an dieser Stelle die Darstellung der Herausforderungen unterbrechen. Weitere Herausforderungen und unsere Lösungsansätze werden wir Ihnen in Folgeartikeln vorstellen.
Fazit
In diesem zweiteiligen Beitrag haben wir zunächst die Konzepte beleuchtet, die es ermöglichen, das Allgemeinwissen eines LLM um Spezialwissen zu einem bestimmten Thema zu erweitern. Anschließend haben wir unser internes Projekt „Chatbot für den IT-Grundschutz“ vorgestellt und sind auf einige der Herausforderungen eingegangen, die sich während der Implementierung gezeigt haben. Die Darstellung ist bei weitem nicht vollständig und wir planen Folgeartikel, die auf weitere Herausforderungen und die untersuchten Implementierungsvarianten eingehen.
Die möglichen Einsatzgebiete eines „Chatbots mit Spezialwissen“ sind ebenso vielfältig wie die Wissensdomänen, die innerhalb eines Unternehmens vorhanden sind. Wir sehen wir zwei grundsätzliche Treiber für den Einsatz solcher Chatbots.
Der erste Treiber ist die Erschließung/Aufrechterhaltung von Wissen, für das in der Organisation kein oder nur wenige Wissensträger vorhanden sind. Ein typisches Beispiel sind ältere Legacy-Technologien, deren ursprünglichen Entwickler in den Ruhestand gegangen sind oder inzwischen in anderen Bereichen arbeiten. Die Dokumentation der Legacy-Technologien ist ein interessantes Ziel für Chatbots. Sie können eine wertvolle Unterstützung bei der Erschließung und Nutzung der Dokumentation darstellen.
Der zweite Treiber ist die Entlastung/Produktivitätssteigerung von Fachteams, die umfangreiches Wissen benötigen. Beispiele hierfür sind alle Arten von Support-Teams und Teams, die Kunden fachlich beraten und unterstützen. Der Einsatz von Chatbots mit Spezialwissen fördert die Qualität und Effizienz bei der Beantwortung komplexer Fragen. Die unterstützt sowohl erfahrene Mitarbeiter wie auch neue Mitarbeiter. Diese können mit Unterstützung eines Chatbots schneller produktiv werden.
Aus technologischer Seite sind Chatbots mit Spezialwissen ebenfalls ein interessantes Thema. Die Technologien, die solche Chatbots ermöglichen, sind größtenteils noch ziemlich neu und werden ständig weiterentwickelt. Es lohnt sich daher am Ball zu bleiben. Wir jedenfalls sind gespannt, was die Zukunft bringen wird!