Beendigung von Halluzinationen bei Chatbots: RAG, Vektor-Suche, Chunking und Schutzmechanismen.
Ein Systemdesign für einen Support-Chatbot, der Richtlinien erstellt: RAG, Embeddings und ANN-Suche, Chunk-Größen, Grounding-Prompts, Kontextgrenzen und Überwachung.
Ein Support-Chatbot wird nach der Rückerstattungspolitik des Unternehmens gefragt und erfindet eine. Eine solche Politik existiert nicht, der Kunde hält sich daran, und das Unternehmen ist schließlich gezwungen, sie einzuhalten. Dies ist das Halluzination-Problem in seiner teuersten Form und zugleich ein beliebtes Thema in Systemdesign-Interviews, da es KI-Infrastruktur mit klassischer Architektur verbindet.
Warum Modelle Dinge erfinden
Ein großes Sprachmodell ist ein probabilistischer Textgenerator. Es kennt keine Fakten, sondern prognostiziert den nächsten am wahrscheinlichsten erscheinenden Token. Wenn die Antwort nicht in seinen Trainingsdaten oder im Kontext vorhanden ist, erzeugt es etwas, das richtig klingt, aber falsch ist. Enthält der Trainingstext viele Rückerstattungspolitiken anderer Unternehmen, wird das Modell eine Politik ausgeben, die dem Muster entspricht – auch wenn sie für dieses Unternehmen falsch ist.
Es handelt sich dabei weniger um einen Fehler als vielmehr um eine Folge der Funktionsweise dieser Technologie. Auch das Feintunen allein löst das Problem nicht, denn man kann nicht alle möglichen Fakten in die Gewichte einbauen. Die wichtigste Lösungsmethode ist die retrieval-augmented generation, kurz RAG: Anstatt vom Modell zu verlangen, aus seinen Parametern zu antworten, werden zunächst relevante Dokumente abgerufen und in die Anfrage eingefügt.
Ein typisches Anwendungsbeispiel ist ein Kundenservice-Chatbot, der Fragen zu Produkten, Richtlinien und Fehlerbehebung beantwortet. Er gibt selbstbewusst Antworten, behauptet manchmal jedoch, ein Produkt besitze eine Funktion, die es nicht hat, oder erfindet Richtlinien. Wie kann man sicherstellen, dass seine Antworten auf den tatsächlichen Dokumenten beruhen?
Zu den Themen, die in einer guten Antwort behandelt werden sollten, gehören:
- warum Modelle Halluzinationen erzeugen und warum Feintunen nicht ausreicht
- der RAG-Prozess der Kontextabfrage und anschließenden Generierung
- Vektordatenbanken und semantische Suche auf Basis von Embeddings
Wie RAG Halluzinationen verringert
Mit RAG holt das System zunächst relevante Materialien aus einer Wissensdatenbank und fügt sie als Kontext in den Prompt ein. Ohne diese Hilfestellung schätzt das Modell auf der Grundlage seiner Parameter. Mit ihr liest das Modell die Antwort aus den bereitgestellten Dokumenten. Es erzeugt weiterhin Tokens, doch der Kontext bremst dies aus. Wenn in den Dokumenten steht, dass es keine Rückerstattungen gibt, wird das Modell kein 30-tägiges Rückgabefenster erfinden.
Vektordatenbanken und Embeddings
Wie findet das System die richtigen Dokumente? Jedes Dokument wird in eine Vektordarstellung umgewandelt, eine hochdimensionale numerische Repräsentation seines Inhalts, und die Abfrage wird auf dieselbe Weise verarbeitet. Die Vektordatenbank gibt die Dokumente zurück, deren Vektordarstellungen denjenigen der Abfrage am nächsten liegen.
Vier Komponenten übernehmen diese Aufgabe:
- Embedding-Modell. Es wandelt Text in Vektoren um, sodass ähnliche Texte ähnliche Vektoren erzeugen. Zu den Optionen gehören OpenAI’s text-embedding-3-small mit 1536 Dimensionen sowie open-source-Modelle wie BGE oder E5.
- Vektordatenbank. Sie speichert die Vektordarstellungen und unterstützt die Suche nach annähernden nächsten Nachbarn (ANN). Zu den Möglichkeiten zählen das verwaltete Pinecone sowie Weaviate, Qdrant, pgvector (eine Erweiterung für PostgreSQL) und Milvus.
Chunking
Ein 50-seitiges Richtliniedokument kann nicht vollständig abgerufen werden, daher muss es in Teile aufgeteilt werden. Die Größe der Chunks beeinflusst sowohl die Genauigkeit der Suche als auch die effektive Nutzung des Kontextfensters.
- Ein zu kleiner Abschnitt verliert den Kontext. Es könnte „Gegenstände, die bei der Lieferung beschädigt wurden, sind nicht“ lauten, wobei der Rest des Satzes im nächsten Abschnitt steht, was dazu führt, dass das Modell nicht richtig antworten kann.
- Ein zu großer Abschnitt diluiert das nützliche Signal durch irrelevante Texte und füllt das Fenster mit Rauschen.
- Überlappung schützt vor Grenzen. Ein Schiebefenster mit 10 bis 20 Prozent Überlappung verhindert, dass Informationen zwischen den Abschnitten geraten.
Eine sinnvolle Standardlösung für Dokumentationen ist es, nach Abschnittsüberschriften zu teilen, die Abschnitte auf etwa 500 bis 1000 Token zu begrenzen und benachbarte Abschnitte um 50 bis 100 Token zu überlappen. Jeder Abschnitt sollte selbstständig sein, ein vollständiger Gedanke.
Prompt-Design als zweite Verteidigungslinie
Auch bei der Informationsabrufung kann ein Modell den Kontext ignorieren und dennoch Fantasien erzeugen, daher muss die Anweisung es fest mit dem bereitgestellten Material verbinden. Die wichtigsten Elemente sind:
- Eine Rolle. Etwas wie „Sie sind ein Kundenservice-Assistent“ legt die Personifikation fest.
- Verankerung im Kontext. Die Anweisung, nur auf dem bereitgestellten Kontext zu antworten, verhindert, dass das Modell auf sein Gedächtnis zurückgreift.
- Notlösung bei Unsicherheit. Dem Modell mitzuteilen, dass es nicht antworten kann, wenn der Kontext keine Antwort enthält, ist die wertvollste Anweisung. Ohne sie tippt das Modell einfach drauflos.
- Zitierungen. Die Erforderlichkeit von Quellenangaben zwingt das Modell, Behauptungen zu belegen, was Fälschungen erschwert.
- Verbot externer Kenntnisse. Ein ausdrückliches Verbot von Informationen außerhalb des Kontexts stärkt die Regel der Verankerung im Kontext.
Verwaltung des Kontextfensters
Was passiert, wenn die relevanten Textabschnitte nicht hineinpassen oder eine Frage mehrere Teile hat, die viele Abschnitte erfordern? Moderne Modelle verfügen über große Kontextfenster – beispielsweise 128.000 Token für GPT-4o und bis zu 1 Million für Gemini – doch das Füllen dieser Fenster mit unbedeutendem Material verringert die Qualität der Antworten. Vier Strategien helfen dabei:
- Sortieren nach Relevanz. Holen Sie zehn Textabschnitte ab, ordnen Sie sie nach ihrer Relevanz ein und fügen Sie sie von der besten zur schlechtesten hinzu, bis das Tokenbudget aufgebraucht ist; dabei werden die am wenigsten relevanten zuerst weggelassen.
- Die Anfrage zerlegen. Bei einer Frage wie „Erzählen Sie mir von der Rückerstattungspolitik und den Versandzeiten“ teilen Sie sie in Unterfragen auf, holen Sie für jede eine Antwort ab und beantworten Sie beide in einer einzigen Antwort.
- Große Themen zusammenfassen. Wenn ein Thema mehrere Textabschnitte umfasst, lässt man das Modell diese zunächst zusammenfassen und verwendet diese Zusammenfassung als Kontext für die endgültige Antwort.
Die vollständige Architektur
Zusammenfassend sind die wichtigsten Entscheidungen folgende:
- Semantisches Chunking. Die Aufteilung erfolgt an natürlichen Grenzen wie Überschriften und Absätzen, wobei jeweils Blöcke mit etwa 500 Token sowie einer Überlappung von 50 Token entstehen, die jeweils selbstständig sind.
- Zweistufiger Abruf. Die ANN-Suche liefert 20 Kandidaten, und ein Cross-Encoder zur Neubewertung behält die besten 3.
- Niedrige Temperatur. Eine Einstellung von etwa 0,2 auf einer Skala von 0 bis 2 sorgt dafür, dass das Modell weniger kreativ ist und seltener Fakten erfindet.
Was zu überwachen ist
- Ausmaß an Halluzinationen. Der Anteil der Antworten, die Informationen enthalten, die im bereitgestellten Kontext fehlen – gemessen durch automatische Bewertung oder menschliche Prüfung. Ein angemessenes Zielwert ist unter einem Prozent.
Die vier Verteidigungsschichten
Halluzinationen sind kein Zeichen dafür, dass die KI defekt ist. Es handelt sich um ein Konstruktionsproblem. Ein unbeschränktes Modell wählt stets Plausibilität statt Genauigkeit, weil genau das seine Trainingsaufgabe ist. Vier Schichten begegnen diesem Problem:
- Auswahl der Dokumente. Bereitstellung relevanter Dokumente, damit das Modell aus diesen antwortet und nicht aus dem Gedächtnis.
- Anleitung durch Prompts. Eingrenzung des Modells auf den gegebenen Kontext, Anweisung, anzugeben, dass es nichts weiß, sowie Erfordernis von Quellenangaben.
- Schutzmechanismen. Filterung der Ausgaben, Überprüfung der Quellenangaben und Berechnung von Zuverlässigkeitswerten, wobei alles abgelehnt wird, was im Kontext nicht überprüft werden kann.
Die wichtigste Regel: Ein Chatbot, der selbstbewusst „Ich weiß es nicht“ sagt, ist weitaus besser als einer, der selbstbewusst eine Antwort erfindet.