Zum Inhalt springen

Retrieval und RAG

Warum dieser Schritt

Warum eine Suche vor der Antwort

Bevor das Sprachmodell einen Antwortentwurf schreibt, soll es nicht im luftleeren Raum starten. Es bekommt einen Kontext mit: passende Vorgänger, ähnliche Mails, verwandte Entitäten. Diesen Kontext zu beschaffen ist Aufgabe des elften Pipeline-Schritts, des Wissens-Schritt. Vier Aspekte zeigen, warum diese Suche existiert.

Antwort mit Vorwissen statt aus dem Nichts

Eine Antwort ohne Kontext kann nur auf das antworten, was in der eingehenden Email steht. Eine Antwort mit Kontext kann auf "Sie haben uns vor sechs Wochen schon einmal zu diesem Thema geschrieben, damals wurde Folgendes vereinbart" eingehen. Das ist der Unterschied zwischen einer generischen und einer wirklich passenden Antwort.

Dafür braucht es Vorwissen aus der Vergangenheit: andere Mails desselben Absenders, Mails mit derselben Rechnungsnummer, Mails über dasselbe Thema. Diese Vorwissens-Quellen werden vom Wissens-Schritt gesammelt und als Text-Kontext für den späteren Entwurfs-Schritt aufbereitet.

Ohne Kontextnur die aktuelle Email
Mit Kontextaktuelle Email + Vorwissen
Generische Antwort"Wir bearbeiten Ihre Anfrage"
Passende Antwort"vor sechs Wochen besprochen"
Vorwissen aus früheren MailsAbsender, Thema, gemeinsame Entitäten

Drei Suchen, drei Sichten

Eine einzige Suchstrategie würde immer die gleiche Art von Treffern liefern. Stichwortsuche findet nur Mails mit denselben Worten. Vektor-Suche findet nur Mails mit ähnlicher Bedeutung. Graph-Suche findet nur Mails über dieselben Entitäten. Jede für sich hat blinde Flecken.

Der Wissens-Schritt nutzt deshalb drei Strategien parallel: sparse für Stichwortsuche im Volltext, dense für Vektor-Ähnlichkeit, graph für Beziehungs-Verwandtschaft. Die Treffer werden anschließend zu einer einzigen sortierten Liste zusammengeführt. Was eine Strategie übersieht, fängt eine andere ein.

Eingehende EmailAnker für drei Suchen
sparseStichwort in MariaDB
denseVektor in Qdrant
graphPfade in ArangoDB
Fusion zu einer ListeRRF im nächsten Unterkapitel

Was später daraus wird

Das Ergebnis aller Suchen ist ein einzelner Text-Kontext, der im Zusammenhang aus vorherigen Schritten landet: $ctx["context"]. Dieser Text enthält die wichtigsten Treffer aus den drei Strategien, sortiert nach kombinierter Relevanz, getrennt durch ----Trennlinien. Begrenzt wird das Ganze durch eine Obergrenze für die Token-Anzahl (Default 4096), damit der Kontext nicht beliebig groß wird und das Sprachmodell nicht überfordert.

Dieser Kontext-Text geht später als Eingabe an den Entwurfs-Schritt. Dort wird er zusammen mit der aktuellen Email und einem Antwort-Prompt an das Sprachmodell geschickt. Das Modell sieht die Frage und das Vorwissen, und kann darauf eine inhaltlich verankerte Antwort entwerfen.

Fusion zu Listenach Relevanz sortiert
ctx context als Textgetrennt durch ---
Token-ObergrenzeDefault 4096
Entwurfs-Schritt nutzt den Kontextverankerte Antwort

Position in der Pipeline

Der Wissens-Schritt kommt direkt vor dem Entwurfs-Schritt. An dieser Stelle sind alle vorbereitenden Arbeiten erledigt: die Email ist klassifiziert, die Entitäten sind erkannt, die Beziehungen sind im Graphen, die Vektoren sind in Qdrant. Der Wissens-Schritt hat damit alles, was er für die drei Such-Strategien braucht.

Nachgeschaltet folgt nur noch der Entwurfs-Schritt, der mit dem gesammelten Kontext und der aktuellen Email einen Antwortentwurf produziert. Anders gesagt: ohne Wissens-Schritt wäre der Entwurfs-Schritt auf die aktuelle Email allein angewiesen, mit Wissens-Schritt bekommt er die ganze Vorgeschichte mitgeliefert.

9 GraphSync
10 Chunk
11 RagKontext - hier
12 DraftAntwort folgt
Alles vorbereitetKlassifikation, Entitäten, Beziehungen, Vektoren
Wissens-Schritt baut Kontextdrei Strategien parallel
Entwurfs-Schritt bekommt Kontextverankerte Antwort möglich
Direkt vor der Antwort-Generierungletzter Bauteil vor dem Entwurf