Veröffentlicht am

Chatbot-Antworten optimieren: Chunking, Fine-Tuning und hybrides Retrieval für RAG

Chatbot optimieren

Chatbots sollen Fragen wahrheitsgetreu beantworten. Spezialisierte Chatbots basieren auf Retrieval Augmented Generation (RAG). Dazu beziehen sie Kontext aus einer Vektordatenbank. Befassen wir uns näher mit dem Retrieval in Vektordatenbanken. 

Vektordatenbanken ermöglichen eine semantische Suche – Ergebnis der Suche sind also Texte, die sinngemäß in Zusammenhang mit der in natürlicher Sprache verfassten Benutzerfrage stehen.

Vektordatenbanken vs. Klassische Suchmaschinen

Im Gegensatz zu Vektordatenbanken erfolgt die Suche in einer klassischen Suchmaschine mit Stichworten und nicht mit ganzen Sätzen.
Die Benutzer erwarten als Antwort eine Trefferliste von Dokumenten, in denen die Stichworte enthalten sind.

Gut getunte Suchmaschinen…

  • finden zielgenau passende Dokumente aufgrund der Stichworte in der User-Query,
  • berücksichtigen auch Dokumente, die Begriffe enthalten, die semantisch mit den Suchbegriffen verwandt sind,
    behandelt Deklination und Konjugation, und findet auch diejenigen Texte, in denen die Suchbegriffe in morphologisch veränderter Form stehen.

Beispiel: Der User sucht nach Haus.
Die Suchmaschine findet auch Dokumente in denen Begriffe stehen wie: Häuser, Gebäude, Hütte etc.

Optimierte Suchmaschinen können auch …

  • mit Tippfehlern umgehen,
  • Umlaute behandeln,
  • sie können ganze Phrasen finden,
  • verschiedene natürliche Sprachen unterscheiden.
  • Sie können das Suchergebnis analysieren – wer kennt sie nicht, diese praktischen Aufschlüsselungen nach Sachgebieten in spezialisierten Suchmaschinen – die so genannte Facettierung.

Die besten Suchmaschinen bilden auch implizite Knowledge-Graphen, um inhaltlich verwandte Dokumente zur Lektüre vorzuschlagen.

Gut getunte Suchmaschinen sind Retrieval-Meister – die Treffer enthalten immer Begriffe oder Konzepte, die mit den Suchbegriffen inhaltlich verwandt sind.

Ranking und Dokumentationseinheiten

Die Dokumentationseinheit (DE) bildet die semantische Grundlage jeder klassischen Suchmaschine.
Jeder Treffer in der Trefferliste ist eine Dokumentationseinheit. Beim Design einer Suchmaschine ist die Definition der DE ein wichtiger Aspekt.

Wir sind uns gewohnt, dass die Suchmaschine das ‘beste’ Dokument zuoberst in der Trefferliste liefert. Das Verfahren heißt ‘Ranking’:

  1. Zuerst werden Dokumente gesucht, die in Bezug auf die Suchfrage relevant sind.
  2. Dann wird jedem Dokument ein Score zugeordnet. Je höher der Score, umso relevanter ist das Dokument in Bezug auf die Suchfrage.
  3. Okapi BM25 ist ein gängiges Scoring-Verfahren – ein statistisches Verfahren, das mit Worthäufigkeiten arbeitet.
  4. Danach werden die Dokumente absteigend nach Score sortiert und dem User als Ergebnis präsentiert.

Vektordatenbanken im RAG

Vektordatenbanken funktionieren anders als klassische Suchmaschinen und sie haben ein anderes Ziel.

  1. Die Userfrage sind nicht Stichworte sondern ganze Sätze.
  2. Die Userfrage wird in einen Vektor umgewandelt.
  3. Danach wird mit dem Vektor in der Vektordatenbank nach benachbarten Vektoren gesucht, die semantisch ähnlicheDokumente repräsentieren. Dabei spiel die Wahl der Abstandsmetrik eine wichtige Rolle.
  4. Diese Vektoren werden sortiert nach Distanz aufsteigend, also der nächste Vektor führt die Liste an und dieser repräsentiert, das Dokument mit der höchsten semantischen Ähnlichkeit zur Suchfrage.
    Jetzt haben die Vektoren ihren Dienst getan. Die Trefferliste sind nicht Vektoren, sondern die Texte, die durch die jeweiligen Vektoren repräsentiert werden.

Diese Texte werden zum Kontext im RAG-Prozess.
Das LLM (Large Language Model) ist für  Generierung der definitiven Antwort auf die Userfrage auf möglichst kurze und präzise Kontexte angewiesen. Der Artikel Retrieval Augmented Generation – Proof of Concept befasst sich mit der Prompt Augmentation – dabei wird der Prompt durch den Kontext angereichert.

Chunks als Grundlage für Vektordatenbanken

Soll der Kontext zur Textgenerierung präzise sein, dann werden in der Vektordatenbank nicht die Vektoren ganzer Dokumente, sondern die Vektoren kleinerer Stücke hinterlegt. Diese Textstücke heißen Chunks.

Die optimale Chunking-Strategie hängt von verschiedenen Faktoren ab, wie der Aufgabe des Chatbots, den Dokumenten und der Größe des Prompt-Fensters des Sprachmodells..

Es gibt keine goldene Regel zur Wahl der Chunking-Strategie. Man wird verschiedene Strategien ausprobieren müssen, um zur besten Chunk-Größe und Chunk-Strategie zu finden.

Chunking-Strategien im Überblick

Zeichenbasiertes Chunking:

Man wählt eine Anzahl Zeichen, z.B. 500 Zeichen pro Chunk.
Idealerweise wird man dabei nicht mitten im Satz schneiden.
Oft wird auch eine Überlappung gewählt – ein Chunk überlappt mit dem folgenden Chunk mit beispielsweise 30 Zeichen.

Tokenbasiertes Chunking:

Statt Zeichen wählt man die Anzahl Token.

Satzbasiertes Chunking:

Statt Zeichen wählt man Sätze und fasst immer eine gewisse Anzahl Sätze zu einem Chunk zusammen

Absatzbasiertes Chunking:

Einzelne Absätze oder mehrere Absätze werden zu einem Chunk zusammengefasst.

Semantisches Chunking:

Es wird versucht, sinngemäß zusammengehörende Sätze zu einem Chunk zusammenzufassen.

Hybrides Chunking:

Verschiedene Strategien werden kombiniert, um die ideale ‘Chunkingstragegie’ zu finden.

Embedding-Modell fine-tunen für besseres Vektorretrieval

Untersucht man die Ergebnisse der Vektorsuche, dann wundert man sich oft, ob und inwiefern diese überhaupt im Zusammenhang mit der Suchfrage stehen sollen.
Der Einfluss des verwendeten Embeddingmodell ist oft so dominant, dass die Ergebnisse auch mit dem besten Chunking-Verfahren nicht nachvollziehbar sind.
Man wird nicht umhin kommen, verschiedene Embedding Modelle auszuprobieren und das beste durch Fine Tuning zu verbessern.

Vektordatenbanken und hybride Retrieval-Verfahren

Manche Vektordatenbanken bieten auch hybride Retrieval-Verfahren an. Dabei wird die Vektorsuche ergänzt mit einer klassischen Suche.
Schaut man den jeweiligen Source-Code genauer an, dann stellt man folgendes fest:

  • Das Retrieval beruht auf einem ganz naiven Algorithmus, der Strings beim Leerzeichen in ‘Wörter’ teilt, und String-Matching mit den einzelnen Wörtern in der Suchfrage vornimmt.
  • Diese Art der Suche ist überhaupt nicht optimiert . Es erstaunt nicht weiter, dass ein derart naives Verfahren keine befriedigenden Ergebnisse liefert.
  • Das Ranking wird mit dem BM25 Algorithmus durchgeführt, ebenfalls ohne weitere Optimierung.

Da ist noch viel Luft nach oben!
Das klassische Retrieval-Verfahren könnte gerade bei der Suche nach Fakten glänzen.

Die wenigsten Vektordatenbanken unterstützen eine ausgereifte Kombination beider Retrieval-Verfahren.
Lucene-Basierte Suchmaschinen wie Apache Solr und das kommerzielle ElasticSearch bieten beides von Haus aus. Eine ausgereifte Enterprise-Search bildet einen idealen Ausgangspunkt für eine hybride Vektorsuche.

Fazit:

  • Vektordatenbanken ermöglichen semantische Suche und liefern relevante Textpassagen für Chatbot-Antworten.
  • Die Wahl der Chunking-Strategie beeinflusst die Qualität der Antworten in RAG-basierten Chatbots.
  • Die Wahl des Embedding-Modells und gezieltes Fine Tuning beeinflussen das Retrieval-Ergebnis.
  • Die Wahl der Abstandsmetrik beeinflusst das Ergebnis des Retrievals.
  • Hybride Verfahren, die Vektor- und Keyword-Suche kombinieren, sind vielversprechend, aber oft noch nicht ausgereift.
  • Vektordatenbanken werden klassische Suchmaschinen nicht ersetzen sondern ergänzen.
  • Webinar:

    So baust du LLMs in deine Anwendungen ein

    Erfahre in diesem exklusiven Webinar, wie du LLMs in deine Anwendungen einbaust.

    Mehr Infos zum Webinar findest du in der ausführlichen Beschreibung.

    Das kostenlose Webinar findet statt am Montag, 8. Juli um 13:00-13:45 MEZ via ZOOM.

    Trage dich in die Liste ein und du erhältst den Zugangslink und später den Link zur Aufzeichnung.

  • Chatbot als Lernassistent
  • Prompt Engineering Personas und Wiederholungen
  • AI-Engineering-Fachglossar
  • EBook Tutorial: Cluster aus virtuellen Maschinen
  • Ebook: Apache ZooKeeper
  • Ebook: Realtime Streaming Pipelines
  • LSM-Trees: Log Structured Merge Trees
  • Aufbau einer Enterprise Search
  • Zeit Stream Analytics
  • B-Tree-Index in Datenbanken
  • Ordering Guarantee in Apache Kafka
  • CAP Theorem
  • MapReduce Funktionale Programmierung
  • Konzepte des HDFS
  • Optimistisches Concurrency Control