Wie man schlanke Chatbots baut

Moderne Chatbots in kleinen Kisten artgerecht halten

Schlanker Chatbot im kleinen Stall

Nachdem wir uns alle ans Chatten mit intelligenten Systemen wie ChatGPT gewöhnt haben, sehen wir immer mehr Möglichkeiten, solche modernen Chatbots in den verschiedensten Anwendungen einzubauen. Ein Hindernis dafür ist aber, dass die modernen Chatbots grosse Datenmengen benötigen, und dass sie deshalb nur auf grossen Servern mit hohen Betriebskosten laufen können. "Das ist zu gross für uns", mag mancher denken, "wir wollen nicht riesige Zusatzkosten für Servermiete und Betrieb auf uns nehmen."

Das muss aber gar nicht sein. Wir bei poemAI.ch entwickeln schlanke, effiziente Chatbots wie den TownBot, welche nicht nur intelligent sind, sondern auch in kleine Server passen. In diesem Blogbeitrag tauche ich mit euch in die faszinierende Welt der schlanken Chatbots ein und zeige euch, wie wir diese cleveren kleinen Helferlein dazu trainiert haben, sich mit weniger Platz zufrieden zu geben.

Fakten statt Halluzinationen

Um einen modernen Chatbot zu bauen, benutzt man das unterdessen verbreitete "Retrieval Augmented Generation" (RAG) Verfahren. Dieser Prozess besteht aus vier wesentlichen Schritten:

  1. Retrieval: Finde zu einer Frage die relevanten Textpassagen aus einer Wissensbasis.
  2. Prompt zusammenstellen: Kombiniere die gefundenen Textpassagen mit Anweisungen und mit der Frage des Benutzers zu einem Prompt. In den Anweisungen steht, welchen Stil und welches Output-Format gewünscht ist, und dass das Modell nur Informationen aus den gefundenen Textpassagen verwenden soll.
  3. Prompt an LLM schicken: Schicke den zusammengestellten Prompt an ein Large Language Model (LLM).
  4. Antwort nachbearbeiten: Passe die Antwort an, indem du zum Beispiel Links ersetzt oder spezifische Informationen ergänzt.

Dieses Verfahren nutzt die Stärke der modernen Sprachmodelle (GPT-3.4, GPT-4) und bügelt gleichzeitig ihre grössten Schwächen aus. Denn wenn dem Modell fundiertes Wissen in der Anfrage vorliegt, verarbeitet es dieses zu einer treffenden und gut formulierten Antwort. Wenn man hingegen einfach nur die Frage ohne Kontext stellt, kann das Modell nur auf Wissen in seinem "Gedächtnis" zurückgreifen. Oft überspielt es dann Wissenslücken mit freien Erfindungen - dies sind die gefürchteten Halluzinationen. Fundiertes Wissen im Input, kombiniert mit guten Anweisungen an ein leistungsfähiges Sprachmodell, reduziert solche Halluzinationen auf ein Minimum. Wie man gute Anweisungen (Prompts) formuliert, haben wir schon anderswo einiges geschrieben, z.B. bei der Jass-Demo. Hier konzentrieren wir uns jetzt auf den ersten Schritt: Retrieval.

Retrieval: Die Kunst des Findens

Bevor der Bot etwas finden kann, braucht es ein bisschen Vorbereitung: Es müssen alle Textpassagen in einen Vektor umgewandelt werden, so wie wir das im Blog "Semantische Suche einfach erklärt" aufzeigen. Die resultierende Liste von Vektoren müssen geeignet abgepeichert werden damit sie für die Suchanfragen bereit sind.

Nun wollen wir die relevanten Passagen finden. Dazu gehen wir in zwei Schritten vor:

  • 1a) Frage in Embedding transformieren: Wir wandeln die Frage in ein Embedding um, also in eine mathematische Darstellung im Vektorraum.

  • 1b) Nächste Nachbarn im Vektorraum finden: Wir suchen die nächsten k (z.B. k=5 oder 10, oder 20) Nachbarn zu unserem Frage-Embedding. Diese entsprechen den relevantesten Textpassagen zur Frage.

Grosse Rennsuchmaschinen brauchen grosse Garagen

Wie wir in unserem Blogpost zur semantischen Suche bereits erläutert haben, hat der Vektorraum, in dem wir arbeiten, über 1500 Dimensionen. Um die nächstgelegenen Nachbarn in diesem hochdimensionalen Raum unter sehr vielen Vektoren (und damit Textpassagen) zu finden, wurden spezielle Vektordatenbanken entwickelt. Von diesen scheint es zur Zeit fast jede Woche eine neue zu geben, oft mit grosser Startup-Finanzierung. Gleichzeitig bauen viele traditionelle Datenbankanbieter Vektor-Funktionalitäten in ihre Produkte ein. Die Vektorsucher in diesen Produkten zielen auf ultrahohe Leistung ab, sie laufen in Clustern auf mehreren grossen Servern, genau so wie es Grossunternehmen oder Big-Data-Projekte brauchen. Die Schattenseite davon: Es gibt viel Komplexität zu managen, die Datenbanken sind nicht einfach aufzusetzen und zu betreiben, und sie sind sehr hungrig nach Hauptspeicher (RAM).

Der kleine Stall: Schlanke Alternativen für Chatbots

Aber vielleicht ist der Chatbot, den man haben will, gar nicht für ein Grossunternehmen gedacht, sondern für ein KMU oder eine mittelgrosse Gemeinde. Deshalb basiert er auf einer viel kleineren Wissensbasis, und in diesem Fall sind grosse Vektordatenbanken schlicht zu ineffizient, zu teuer und zu komplex. Machen wir ein Beispiel: Um einen Chatbot für eine mittelgrosse Gemeinde zu bauen, gehen wir von 200.000 Textpassagen aus. Um alle Vektoren in Rohform im Speicher zu halten braucht das bereits 1.2 GB RAM – und das ist noch ohne Index und ohne weitere notwendige Datenstrukturen und Serverprozesse. Klingt nach wenig? Man hat doch schon mehr RAM in einem Laptop! Stimmt, aber in einer Cloudumgebung zahlt man für jedes Byte RAM zu jeder Stunde, und so kann sich das schnell zu einem teuren Vergnügen zusammenläppern.

Aber keine Sorge, es gibt schlanke Alternativen. Wir haben unsere Werkzeuge optimiert indem wir bei kleineren Datenmengen ganz auf komplexe Vektordatenbanken verzichten und stattdessen ein schlankeres, direkt eingebautes Verfahren verwenden. Mit diesem Ansatz haben wir den TownBot entwickelt, der gerade bei kleineren Projekten (bis zu 10.000 Dokumente und 100.000 bis 500.000 Textpassagen) sparsam mit den Ressourcen umgeht. Dieser schlanke Bot ist so konzipiert, dass er im Betrieb wenig Hardware- und Speicherkosten verursacht. Das macht es möglich, auch kleinere Projekte gewinnbringend umzusetzen.

Fazit: Der schlanke Chatbot ist kein Mythos

Wir haben herausgefunden wie man moderne Chatbots auch in kleinen Servern laufen lassen kann, ohne dass sie an Intelligenz einbüssen. Es erfordert ein wenig Kreativität und die richtigen Werkzeuge, aber das Ergebnis sind effiziente, kostengünstige und intelligente Chatbots, die bereit sind, in der digitalen Welt ihren Dienst zu tun.

Wenn ihr erfahren wollt, wie Ihr für Eure Anwendung einen zu einem effizienten Chatbot kommt, oder wenn Ihr eine Demo des TownBots erleben möchtet, zögert nicht, uns zu kontaktieren.

Und denkt daran: Auch in der digitalen Welt kann weniger manchmal mehr sein. Dann passt der Bot zur Weihnachtszeit gemeinsam mit den Osterhasen in einen kleinen Stall!

Markus Emmenegger
Markus Emmenegger

Lust auf mehr Blogs?

Heikle Daten im Browser verarbeiten

Markus Emmenegger erklärt, wie man mit Browser-Sprachmodellen Datenschutz für KI-Anwendungen ermöglicht.

KI und Datenschutz

Nathalie Portmann gibt einen Überblick über die Möglichkeiten, wie Personendaten und Geschäftsgeheimnisse beim Einsatz von KI geschützt werden können.

Heikle Daten im Browser verarbeiten

Markus Emmenegger erklärt, wie man mit Browser-Sprachmodellen Datenschutz für KI-Anwendungen ermöglicht.

KI und Datenschutz

Nathalie Portmann gibt einen Überblick über die Möglichkeiten, wie Personendaten und Geschäftsgeheimnisse beim Einsatz von KI geschützt werden können.

Kontaktieren Sie uns!

poemAI GmbH
Rämsiweg 8
6048 Horw
;