Chat mit internen Daten

Die Integration von Generativer KI mit Chatbots zu internen Daten: Eine Revolution in der Unternehmenskommunikation

Ich möchte in diesem Blog auf folgende Themen eingehen:

1.     Überblick und Einleitung

2.     Methoden externe Daten und Dokumente ein einen Chatbot einzubinden

3.     Praktisches Beispiel mit eigenen Dokumenten ( #CopilotStudio ) Hands-On

1 – Überblick und Einleitung

Die fortschreitende Entwicklung künstlicher Intelligenz hat die Tür zu einem neuen Zeitalter der Unternehmenskommunikation aufgestoßen. Die Nutzung von Generativen Prätrainierten Transformern (GPT) und Generativer KI für die Erstellung von Chatbots auf Basis interner Daten ist eine innovative Lösung, die das Potenzial hat, die Art und Weise, wie Unternehmen intern kommunizieren, zu revolutionieren.

Das ist ein häufig diskutiertes Thema und ich habe den Eindruck, dass hier oft ein Missverständnis oder zumindest ein Wunschdenken vorherrscht. Da ist ein großer virtuellen Dokumentenberg aber ich finde einfach nicht die richtigen oder gewünschten Informationen – da kann mir doch sicher ein Chatbot helfen.

Nehmen wir ein Confluence Wiki, das über die Jahre gewachsen ist und viele Informationen enthält, Strukturierung und Klassifizierung aber nicht (immer) mitgewachsen sind. Hier möchte wir gerne mit einem Chatbot auf das Wissen in dem Wiki zugreifen können.

Technische Möglichkeiten

GPT-Modelle und Generative KI sind Meisterwerke der maschinellen Intelligenz. Sie können interne Unternehmensdaten analysieren, verstehen und darauf reagieren. Durch die Implementierung dieser Technologien in Chatbots können Unternehmen personalisierte, effiziente und präzise Kommunikation ermöglichen. Diese Chatbots sind in der Lage, komplexe Anfragen zu verarbeiten, Antworten zu generieren und auf dynamische Unternehmensdaten in Echtzeit zuzugreifen.

Voraussetzungen

Für die Implementierung solcher Chatbots auf Basis interner Daten sind robuste Dateninfrastrukturen und eine klare Datensicherheitsstrategie von größter Bedeutung. Es erfordert die Integration von Unternehmensdatenquellen in eine zugängliche und verständliche Form für die KI-Modelle. Ebenso ist es wichtig eine gute Datenqualität sicherzustellen. Zudem ist eine klare Zieldefinition und ein Verständnis darüber erforderlich, wie der Chatbot in die bestehenden Unternehmensprozesse integriert werden kann.

Nutzen

Die Nutzung von GPT und Generativer KI für interne Chatbots bietet eine Vielzahl von Vorteilen. Diese Chatbots können nicht nur effizient auf Anfragen reagieren, sondern auch Wissen aggregieren, Zugriff auf umfangreiche interne Datenbanken ermöglichen und Mitarbeitern bei der schnellen Lösung von Problemen helfen. Sofern die obengenannten Voraussetzungen erfüllt sind, verbessern sie die interne Kommunikation, fördern die Effizienz und ermöglichen einen schnellen und präzisen Informationsaustausch.

Risiken

Trotz der Vorteile birgt die Implementierung von Generativer KI in interne Chatbots auch Risiken. Die Qualität der generierten Antworten ist stark von der Qualität und Vielfalt der Daten abhängig. Falsche oder unvollständige Informationen könnten weitergegeben werden. Zudem besteht das Risiko von Datenschutzverletzungen, wenn nicht angemessen mit sensiblen Unternehmensdaten umgegangen wird.

2 – Methoden

Folgende Methoden können verwendet werden um interne Dokumente und Daten mit einen Chatbot zuzugreifen:

Methode „Grounding“:

Damit ist gemeint, dass das LLM (Large Laguage Modell) seine Antwort auf Basis eines Suchergebnisses ausgibt. Also das das LLM nutzt „reale Daten“ um einen Antwort zu generieren. Siehe auch unten den Link „Quelle

Nehmen wir das Confluence Beispiel. Unser Bot nimmt die Suchanfrage entgegen und gibt diese an eine Suchmaschine, die ihrerseits klassisch nach einem oder mehreren Ergebnissen sucht. Die Ergebnisse werde mit der Anfrage zusammen als Promt an das LLM gegeben. Kann meine Suche jetzt auf mein Wiki zugreifen und die Suchergebnisse an an das LLM weiterleiten bekomme ich eine Antwort von meinem Chatbot auf Basis der internen Dokumente und Inhalten.

Dies könnte wie folgt umsetzt werden:

Der Content von Confluence wird an Azure AI Search (AAS) (bis Oktober 2023 Azure Cognitive Search) angebunden. Das kann auf unterschiedliche Weise erfolgen:

  • Export Content als z.B. PDF und Upload in Azure Space
  • Direkter Zugang und Indizierung des Confluence Space durch AAS

Das Verfahren funktioniert so, dass die Anfrage des Users genommen wird und auf dieser Basis AAS nach relevanten Inhalten auf Basis des Index sucht. Diese werden genommen und reichern die ursprüngliche Anfrage als einen Prompt an, der an Azure OpenAI gesendet wird. Von dort kommt dann die aufbereitete Antwort. Am Beispiel von BingChat ist das bezogen auf das Internet gut zu beobachten, wobei ich das jetzt nur aus Anwendersicht beurteilen kann.

Methode Embedded und Vector basierte Daten:

In diesem Fall werden die eigenen Daten und Dokumente erst „vectorisiert“. Dazu werden sie in verarbeitbare Häppchen aufgeteilt (Chunking), durch einen „overlap“ wird sichergestellt, dass der Kontext der „Häppchen“ nicht so leicht verloren geht. Anschließend werden die Inhalte Embedded und am besten in einer Vector Datenbank abgelegt bzw. einem dafür geeigneten Store.

Sinnvoll ist es auch nicht nur die Daten zu „embedden“ sondern auch die Fragen an die Dokumente, damit diese ebenfalls mit der Vector basierten Suche erfolgen können.

„Vektordatenbanken erweisen sich in diesem Bereich als äußerst leistungsfähig, da sie es dem LLM ermöglichen, eine semantische Suche anstelle einer Schlüsselwortsuche durchzuführen. Das bedeutet, dass durch die Speicherung von Wort-Einbettungen als Vektoren in einer Vektordatenbank Wörter, Phrasen und Konzepte, die miteinander verbunden oder ähnlich sind, nahe beieinander dargestellt werden. Die Abfrage des LLM wird dann an die Vektordatenbank gesendet, und die Suche wird durch Rückgabe der nächstgelegenen Nachbarn zur Suchanfrage durchgeführt (im Gegensatz zur Suche nach übereinstimmenden Zeichenfolgen-Schlüsselwörtern).“ Link zur Quelle

Dies könnte wie folgt umsetzt werden:

Grounding mit LangChain Textsplitter. In diesem Fall werden die Confluence Daten mit LangChain geladen und mit dem Textsplitter in „chunks“ gesplittet und vectorisiert. Um sogenannte „Embeddings“ für z.B. Azure Open AI zu erstellen. AAS sucht dann in den „Embeddings“. Bei einer Anfrage an den Chatbot wird diese von LangChain vectorisiert und leitet diese an AAS weiter. Siehe AI-Powered Confluence Search: Using LangChain, Azure OpenAI and Azure Cognitive Search | by Ahmed Mohiuddin | Oct, 2023 | Medium (Quickstart integrated vectorization – Azure AI Search | Microsoft Learn)

Hier noch ein Beispiel direkt in Azure: Using your data with Azure OpenAI Service – Azure OpenAI | Microsoft Learn

Der Ansatz kann auch komplett in Open Source mit lokalen Ressourcen umgesetzt werden. Da fehlen mir persönlich aber leider die Linux, Container und Phyton Kenntnisse sowie ein leistungsfähiger Linux-Rechner mit GPU.

Methode Finetuning:

Es ist auch möglich auf Basis eines bestehenden LLM ein Finetuning, sprich anlernen des LLM mit eigenen Daten aus den eigenen Dokumenten und Daten durchzuführen.

Bei dieser Methode würde man die Inhalte aus dem Wiki z.B. in „Trainingseinheiten“ aufbereiten müssen. (z.B. JSON-Elemente  {„prompt“: „PC lässt sich nicht einschalten“, „response“: „Stromanschluss prüfen.“}) und damit das LLM trainieren. Damit ein relevanter Effekt erreicht werden kann, sind sehr viele Lernpakete notwendig. Hinzu kommt, dass das Training Security und Governance berücksichtigen muss und auch sehr ressourcenintensiv ist und damit auch erheblich Kosten verursachen kann. Ferner müssten Aktualisierungen des Wikis laufend ergänzt werden.

Das Verfahren eignet sich daher meiner Meinung nach auch nicht für einen Chatbot der auf Wissensartikel zugreift. (Menge der Daten, Aufwand für Training, Aktualisierung der Inhalte).

Bewertung

Es gibt noch mehr Möglichkeiten (siehe auch den verlinkten Artikel). In der Praxis werden wir vornehmlich die zweite Methode sehen, da sie für den Usecase am effektivsten umzusetzen ist.

Die Erste Methode ist zwar am einfachsten umzusetzen, ist aber aus meiner Sicht nur eine Scheinlösung, da klassische Suchmethoden verwendet werden (die natürlich auch schon lange auf KI basieren), dann das klassische Suchergebnis auf Basis der Frage wird nur durch ein LLM aufbereitet. Das kann evlt. die Lesbarkeit erhöhen und das Ergebnis aufwerten aber die „Ergebnisfindung“ nutzt nicht die Stärken und Möglichkeiten.

In jedem Fall benötigt ein Chatbot gute Datenquelle, wobei wir wieder bei dem Thema sind, wenn ich in eine gewachsenes, gewuchertes und schlimmstenfalls chaotischen Wiki schaue, wird mir der Chatbot das auch nicht lösen können, denn er ist mit der gleichen Realität konfrontiert und meist auch nicht in der Lage die Relevanz besser zu beurteilen.

Vielleicht finde ich auch erst eine KI die mir hilft den „Keller“ aufzuräumen – dann kann der Chatbot ran. Daher ruft Microsoft auch zukünftige Anwender von Copilot auf, erst ihre Hausaufgaben bezogen auf ihre Daten zu machen (Berechtigungen, Klassifizierungen usw.) bevor Copilot seine volle stärke dann ausspielen kann.

3 – Praktisches Beispiel mit eigenen Dokumenten (Copilot Studio)

Ich möchte aber nicht zu skeptisch klingen, denn die Möglichkeiten sind heute ungleich umfangreicher. Um den Herausforderungen zu begegnen gibt es heute viel mehr Tools und Möglichkeiten als noch vor einem Jahr (währende ich das Schreibe feiert ChatGPT sein einjähriges).

Es gibt Tools mit denen das leicht bewerkstelligt werden kann. Wir können in 15 Minuten einen Chatbot bereitstellen, der auf Basis eigener Dokumente antworten kann. Das möchte ich jetzt kurz skizzieren:

Dazu benötigen wir erstmal Dokumente die vom Inhalt geeignet sind. Ich habe mit PDF Dateien gearbeitet, FAQs oder Anleitung Wissendokumente usw. eigenen sich.

Dann brauchen wir Copilot Studio (Bestandteil der Microsoft #PowerPlatform vormals #PowerVirtualAgent genannt). Testweise kann man das in einer Entwickler Enviroment in der Power Platform erstellen und braucht dafür erstmal auch keine Lizenzen.

Power Apps – Chatbots auswählen

Dann kommt Copilot Studio und ein Chatbot kann angelegt werden.

Bevor ein Thema angelegt wird können die Dokumente unter „Generative KI“ hochgeladen werden und das Häkchen bei „Generative Antworten verwenden“ ausgewählt werden.

Dann kann das Thema (Topic) erstellt werden mit dem Trigger, der Frageaktion um die Frage in einen Variable zu „packen“ und mit der Aktion „Generative Antwort erstellen“ an die AI zu übergeben. Die Antwort wird von der Aktion an den Anwender zurückgemeldet. Meine Message hat hier in dem Beispiel keinen praktischen Nutzen.

Nach speichern kann der Chatbot gleich getestet werden. (links unten „Copilot testen“ wenn nicht schon offen).

Um den Chatbot bereitzustellen noch auf Veröffentlichen gehen und unter Kanäle Demo-Website auswählen, dann kann der Link auch anderen geteilt werden, die den Chatbot nutzen möchten. Achtung damit können die „internen“ Daten von jedem genutzt werden der den Link hat. In einem Unternehmenskontext würde man den Chatbot nur in Teams und oder authentifizierten Usern bereitstellen.

Hier der Link zu meinem Testbot (solange der Testzeitraum läuft):

Das ist sicher die einfachste Methode einen Chatbot in der Microsoft Umgebung zu erstellen, der Auskunft zu eigenen Dokumenten geben kann. Auch wenn ich bisher keine technischen Details gefunden haben wie das im Hintergrund abgebildet wird, erinnert es sehr an die Lösung in Azure AI Studio und aufgrund der Test habe ich den Eindruck dass es der 2. Methode entspricht (siehe auch das Azure IA Beispiel)

Wer noch mehr machen möchte, zum Beispiel SharePoint Bibliotheken als Datenquelle einbinden oder Azure Open AI und auch den Chatbot stabiler und Leistungsfähiger zu gestalten empfehlen ich sich mit dem Thema intensiver auseinander zu setzen. Gerne unterstützen wir dabei auch!

Hier geht es weiter zu Teil II