Wie RAG unseren Chatbot zum perfekten Firmenassistenten macht
von Dominique Wirz
Stell dir einen digitalen Assistenten vor, der dein Unternehmen in- und auswendig kennt und dir in Sekundenschnelle genau die Antwort liefert, die du gerade brauchst.
Genau so einen haben wir entwickelt.
Chat-Verlauf mit unserem Chatbot Smarta
Im vergangenen Jahr fragten wir uns: Wie machen wir interne Dokumente für unsere Mitarbeitenden noch zugänglicher? – Na klar: Ein Chatbot. Aber nicht einer, der Fragen zum Leben, dem Universum und dem ganzen Rest liefert, sondern den Mitarbeitenden mit relevanten internen Infos weiterhilft.
In diesem Blogpost nehme ich dich mit hinter die Kulissen und zeige dir, was es braucht, damit ein Best Buddy Bot und nicht ein Bad Broken Bot dabei herauskommt:
- Retrieval-Augmented Generation (RAG) bildet die Klammer. Sie zerlegt jede Eingabe in ihre Essenz, holt die Infos und verpackt sie wieder.
- Die nötigen Daten, abgespeichert als Vektoren
- Vercel AI SDK für den nötigen Feenstaub
RAG: Der Schlüssel zur Intelligenz unseres Chatbots
RAG (Retrieval-Augmented Generation) kombiniert die Wissensdatenbank mit einem Sprachmodell, sucht relevante Informationen heraus und verarbeitet sie zu einer präzisen, kontextbezogenen Antwort.
Im Detail funktioniert das so:
- Frage analysieren: Jedes Mal, wenn du eine Frage stellst, versucht der Chatbot zuerst zu verstehen, was du wissen willst. Mit Hilfe von Natural Language Processing (NLP) zerlegt er deine Frage in kleinere Bestandteile und erfasst die Bedeutung dahinter.
- Infos suchen: Nachdem der Chatbot verstanden hat, was du möchtest, suchen wir in einer speziellen Datenbank nach den passenden Informationen. Diese Datenbank speichert nicht Texte selbst, sondern mathematische Vektoren, die deren Bedeutung enthalten. Der Chatbot findet dann die Vektoren, die deiner Frage am nächsten kommen, und holt die dazugehörigen Textteile.
- Antwort erstellen: Jetzt tritt das Large Language Model (LLM) in Aktion. Es nimmt die gefundenen Infos und kombiniert sie mit seinem eigenen Wissen, um eine Antwort zu generieren. So entsteht eine Antwort, die nicht nur korrekt, sondern auch auf deine spezifische Frage abgestimmt ist.
Das Tolle an RAG? Es macht deinen Chatbot nicht nur schlauer, sondern auch flexibler. Er kann immer auf die neuesten Informationen zugreifen, egal wie sich die Datenlage verändert.
Die Datenbasis unseres Chatbots: So wählen wir die richtigen Quellen
Ein Chatbot ist nur so schlau wie die Daten, die ihm zur Verfügung stehen. Damit er hilfreiche, präzise Antworten liefern kann, muss er auf die richtigen Datenquellen zugreifen. Nur: Wie kommt man zu sinnvollen Daten?
- Dateninventar erstellen: Bevor wir unseren Chatbot mit Informationen füttern, haben wir uns erst einmal einen Überblick verschafft: Welche Datenquellen sind bereits vorhanden? Wo schlummern nützliche Informationen, die wir einfach zugänglich machen können?
- Relevante Daten auswählen: Nicht alles ist für den Chatbot nützlich. Unser Bot muss in der Lage sein, Informationen über interne Prozesse, aktuelle Projekte und technische Details zu liefern. Also haben wir uns auf Quellen beschränkt, die genau diese Inhalte abdecken.
Unser Chatbot greift auf verschiedene Datenquellen zu: von unserer Website über unser internes Wissensmanagement Notion bis hin zu PDF-Dokumenten in Google Drive. So stellen wir sicher, dass er immer die relevantesten Informationen parat hat – egal, wo sie ursprünglich herkommen.
Vom Text zum Vektor: Wie unser Chatbot Informationen verarbeitet
Nachdem wir die Daten gesammelt haben, zerlegen wir die Texte mit LangChain in handliche Stücke (Chunks). Diese Textschnipsel verwandeln wir anschliessend mithilfe von OpenAI Embeddings in Vektoren, also numerische Repräsentationen, die den Computer die Bedeutung und den Kontext verstehen lassen.
Diese Embeddings helfen uns, Inhalte mit ähnlicher Bedeutung zu finden, auch wenn die genauen Wörter unterschiedlich sind. Stell dir vor, Wörter und Sätze werden auf einer Art Landkarte eingezeichnet, Ähnliches nah zusammen, sehr Verschiedenes weit auseinander: der "Haustier-Berg" mit Hund und Katze an einem Ende, das Nerdtal mit IPv6, React, "one does not simply push to prod" und Bobby Tables am anderen Ende.
Schliesslich landen die Vektoren in einer speziellen Datenbank, aus der der Chatbot blitzschnell die relevantesten Informationen abrufen kann.
Damit die "Landkarte" aktuell bleibt, läuft der Embedding-Prozess in unserer Cloud jeweils einmal pro Tag. Dieser Prozess holt die Informationen von unseren Datenquellen ab und verarbeitet sie zu Punkten auf der Landkarte.
Der Boost für unsere smarte App: Integration des Vercel AI SDK
Um die Entwicklung des Chatbots in unserer internen Progressive Web App (PWA) möglichst einfach und flexibel zu gestalten, setzen wir auf das AI SDK von Vercel. Das SDK hilft uns die unterschiedlichen technologischen Bausteine zusammenzuführen und verleiht dem Bot seine «Magie».
In erster Linie standardisiert das SDK die Integration von AI-Modellen über verschiedene Anbieter hinweg, sodass wir uns nicht um technische Details kümmern müssen. Das gibt uns mehr Zeit, um uns auf das Wesentliche zu konzentrieren: eine grossartige, zuverlässige Anwendung.
Weiter erleichtert das SDK die Anbindung von Tools, die mit unseren Systemen sprechen. Hier ein Beispiel, wie wir ein Tool registrieren und die vektorisierten Daten, die wir im Rahmen unseres RAG-Ansatzes erstellt haben, als Teil der Antwort verwenden.
Mit der Hilfe von Tools könnte der Bot auch auf eine Frage wie "Wie ist das Wetter in St. Gallen und Zürich?" antworten, indem er ein entsprechendes Tool aufruft, die nötigen Wetterdaten abfragt und uns eine strukturierte Antwort liefert. Diese könnten wir dann im Chat mit einem passenden UI-Element anzeigen.
Fazit: Unser Chatbot als smarter Assistent
Unser interner Chatbot ist mehr als nur ein nettes Gimmick – er hat sich zu einem hilfreichen Assistenten für unser Team entwickelt. Mit RAG (Retrieval-Augmented Generation) sorgen wir dafür, dass alle relevanten Informationen schnell und präzise gefunden werden. Dabei greifen wir auf eine Kombination aus NLP, LLMs und einer schlauen Vektoren-Datenbank zurück, um Antworten zu generieren, die sowohl genau als auch up-to-date sind. Die Integration des AI SDKs von Vercel verleiht dem Chatbot den letzten Schliff.
Das Resultat: Smarta steht jedem gwundrigen Smartie stehts zu Diensten und macht den Zugang zu Wissen zu einem einfachen Chat mit einem Kumpel, der immer sofort antwortet und alles weiss.
Hast du noch Fragen zu Smarta? 🤖👋