Der Benutzer fragt „Was ist das Datum des Inkrafttretens dieser Richtlinie?“. Der Abruf gibt fünf Kandidatenzeilenfenster zurück und übergibt sie alle in einer Eingabeaufforderung an den LLM. Der LLM liest alle fünf, um das gleiche Datum zu extrahieren, das der erste Kandidat bereits hatte. Die Abschnitte zwei bis fünf waren Unterschriften, Fußnoten und ein Absatz über historische Daten. Für nichts bezahlt. Senden Sie zuerst die High-1, fragen Sie den LLM, ob das ausreicht, und hören Sie auf, wenn er „Ja“ sagt: Die sequentielle Zuführung senkt die Token-Kosten bei dieser Frageklasse um 80 %. Der Relaxation des Artikels listet auf, wo sequentiell gewinnt, wo ein einzelner Aufruf über alle Ok die richtige Standardeinstellung ist und wie der Fragenparser zwischen den beiden umschaltet.
Dieser Artikel ist ein Begleitartikel zu Enterprise Doc Intelligencedie Serie, deren Philosophie in dargelegt ist Stärken Sie den Expertendie Serie, die Unternehmens-RAG aus vier Bausteinen aufbaut (Dokumentenanalyse, Fragenanalyse, Abruf, Generierung). Es liegt zwischen Artikel 8 (Generierung) und Artikel 9 (Aktualisierung des Mini-RAG) und entwickelt einen konkreten Beschluss: Wie speisen Sie die abgerufenen High-Ok-Kandidaten in den Generationsbaustein ein?. Die Antwort, die die meisten Pipelines haben, ist: „Alle Ok auf einmal“. Dieser Artikel katalogisiert das zweite Regime (sequentiell, High-1 zuerst) und zeigt an, wann jeder gewinnt.
Die naive Grundlinie, auf die dieser Artikel zurückgreift

Naive RAG-Schiffe Batch standardmäßig. Der Abruf gibt die High 5 zurück, der LLM erhält alle 5, die Antwort kommt zurück. Es funktioniert und bei schwierigen Fragen (Vergleich, Auflistung) ist es die richtige Wahl. Aber der stille Preis wird bei jeder anderen Frage bezahlt: bei den einfachen, sachlichen Fragen, bei denen die High-1 bereits die Antwort hatte. In diesem Artikel geht es um das zweite Regime und den Versand, der professional Frage auswählt.

📓 Das ausführbare Pocket book für diesen Artikel finden Sie auf GitHub: doc-intel/notebooks-vol1. Es sendet die gleichen Fragen sowohl durch Batch- als auch durch sequentielle Generierung, gibt die Token-Kosten professional Frage und die beiden booleschen Werte für die Suffizienz aus (answer_found, complete_answer_found), die die Schleife stoppen und die Dispatch-Tabelle auf Ihrem eigenen Pc reproduzieren.

1. Zwei Regime zur Einspeisung des High-Ok in die Erzeugung
Apportierhände erzeugen einen geordneten High-Ok. Für die Einspeisung gibt es zwei Möglichkeiten, die jedoch sehr unterschiedlich kosten.
1.1 Die feste High-Ok-Pipeline und was sie verschwendet
Das Standardmuster in den meisten RAG-Tutorials sieht folgendermaßen aus:
top_k = retrieval(query, ok=5)
reply = technology(query, top_k)
Es läuft für jede Frage in zwei Schritten ab. Die Token-Kosten betragen ungefähr generation_cost (Frage + 5 Kontextblöcke). Die Latenz beträgt ungefähr Abruf + ein LLM-Aufruf. Und der LLM verarbeitet die 5 Blöcke problemlos, selbst wenn der High-1 bereits ausreichte und die Blöcke 2 bis 5 keine Informationen hinzufügten.
Konkret: Der Nutzer fragt „Was ist das Datum des Inkrafttretens dieser Richtlinie?“. Der Abruf gibt 5 Zeilenfenster zurück, in denen sich das Schlüsselwort befindet "efficient" erscheint. Die erste ist die Antwort („gültig ab 1. Januar 2026“). Die Abschnitte 2..5 bestehen aus Unterschriften, Fußnoten und einem Absatz über historische Gültigkeitsdaten früherer Richtlinien. Das LLM liest alle fünf, um dasselbe Datum zu extrahieren, das bereits das erste hatte. Bei einem Korpus aus einem Dokument handelt es sich bei den Kosten um einen Rundungsfehler. Bei einem Bestand von 50.000 Policen ist das echtes Geld professional Monat.
1.2 Sequentiell: High-1 zuerst, Suffizienzprädikat, bei Bedarf eskalieren
Das sequentielle Regime behandelt die Ok-Kandidaten als geordnete Liste und fordert den Generierungsbaustein auf, bei jedem Schritt die Angemessenheit zu validieren:
for i, candidate in enumerate(top_k):
reply = technology(query, (candidate))
if reply.answer_found and reply.complete_answer_found:
break
Das ausreichende Sign befindet sich im typisierten Vertrag, der in Artikel 8A eingeführt wurde. Der AnswerWithEvidence Schema macht verfügbar answer_found (Waren die Informationen der Frage in diesem Kandidaten vorhanden?) Und complete_answer_found (Battle die gesamte Antwort vorhanden, kein Fragment?). Die Schleife liest diese Felder, keine benutzerdefinierte Heuristik.
Im Datum des Inkrafttretens Beispiel oben: Die Generierung läuft einmal auf dem High-1-Kandidaten, der LLM kehrt zurück answer_found = True, complete_answer_found = Truedie Schleife wird beendet. Ausgegebene Token: generation_cost(query + 1 Stück Kontext). Das heißt 1/5 der Batch-Kosten für diese Frage in einer Pipeline, die Tausende ähnlicher Suchvorgänge professional Tag verarbeitet.
1.3 Batch: Senden Sie alle Ok auf einmal, lassen Sie den LLM vermitteln
Der Batch-Modus behält das Standardverhalten bei: Ein LLM-Aufruf sieht alle Ok Kandidaten und erzeugt eine getippte Antwort. Der Fall basiert auf drei Fragetypen, bei denen eine sequentielle Aufschlüsselung erfolgt:
- Fragen zum Auflisten: „Alle Ausschlüsse in diesem Vertrag auflisten“. Die Antwort ist jeder passender Kandidat, nicht der erste. Sequential würde bei High-1 stehen bleiben (ein Ausschluss gefunden) und die anderen vier verpassen. Batch ist der einzig richtige Modus.
- Vergleichsfragen: „Ist die Prämie höher als im Vorjahr?“. Die Antwort erfordert, dass beide Kandidaten (dieses Jahr + letztes Jahr) in derselben Ausschreibung teilnehmen, damit das LLM sie vergleichen kann. Sequentiell würde jedes einzelne einzeln extrahieren und die Verknüpfung verlieren.
- Enge Punkteabfrage: Wenn die Relevanzwerte der High-Ok-Kandidaten innerhalb von 5 % voneinander abweichen, kann der Abruf die High-1-Kandidaten nicht zuverlässig an die Spitze befördern. Batch ermöglicht dem LLM eine Schlichtung mit allen sichtbaren Beweisen.
Kostenanalyse: Batch zahlt immer generation_cost(query + Ok Blöcke Kontext) einmal. Sequentielle Auszahlungen generation_cost(query + 1 Stück Kontext) im einfachen Fall (High-1 ausreichend) und generation_cost(query + 1 chunk) × Ok im schlimmsten Fall (jeder Kandidat unzureichend). Auf einem typischen Unternehmenskorpus mit Ok = 5 ist die sequentielle Suche im Durchschnitt günstiger für sachliche Suchvorgänge (~80 % des typischen Datenverkehrs) und teurer für Auflistung/Vergleich (~20 %).
2. Die Versandentscheidung: professional Frage, nicht professional Pipeline
Die saubere Architektur wählt nicht international Batch oder sequentiell aus. Es wählt jede Frage anhand der analysierten Frage aus question_df Reihe aus Stein 2. Fragenform, Zerlegungsmuster und Absicht bestimmen die Wahl:

Der Dispatcher liest question_df.answer_shape Und question_df.decomposition und Routen. Naive RAG hat keine Möglichkeit, diese Unterscheidung zu treffen, da es keine analysierte Frage zum Lesen hat.
Die gleiche Routing-Tabelle gilt branchen- und berufsübergreifend. Unterschiedliche Domänen tragen die gleichen Formmuster und die gleichen sequentiellen/stapelweisen Entscheidungsflüsse aus ihnen:

In jeder Zeile ist die sequentielle Spalte ein einzelner typisierter Wert (Betrag, Datum, Boolescher Wert) und profitiert vom High-1-Stopp. Die Batch-Spalte ist eine Liste oder ein Vergleich und erfordert, dass alle Ok Kandidaten gleichzeitig sichtbar sind. Die Dispatcher-Tabelle deckt alle fünf Sektoren mit der gleichen Logik ab.
3. Das Suffizienzsignal
Der sequentielle Modus basiert auf einer Sache: Der Generierungsbaustein meldet, ob der gerade gelesene Kandidat ausreichend conflict. Dieses Sign und die Regeln, die den Kreislauf stoppen, leben hier.
3.1 Wo das Suffizienzsignal im typisierten Vertrag enthalten ist
Der sequentielle Modus funktioniert nur, wenn der Generierungsbaustein dies kann Selbstbericht ob der Kandidat, den es gerade gesehen hat, die Antwort enthielt. Der typisierte Vertrag aus Artikel 8A macht dies möglich:
class AnswerWithEvidence(BaseModel):
worth: Any
proof: record(Span)
answer_found: bool
complete_answer_found: bool
confidence: float = Discipline(ge=0, le=1)
caveats: record(str) = ()
Die sequentielle Schleife liest answer_found Und complete_answer_foundkein Confidence Float oder eine benutzerdefinierte Heuristik. Die saubere Trennung zwischen den beiden booleschen Werten (aus Muster 4 von Artikel 8ter) macht die Schleife deterministisch. Gefunden + unvollständig sagt „weiter zum nächsten Kandidaten“; gefunden + abgeschlossen sagt „stoppen“; nicht gefunden sagt „weitermachen oder bei Ok aufgeben“.
Ein Konfidenz-Float würde einen Schwellenwert erzwingen (z „Stopp bei 0,8“), und dieser Schwellenwert driftet von Modell zu Modell. Zwei boolesche Werte driften nicht.

3.2 Begrenzte Iteration: Auch die sequentielle Iteration muss aufhören
Die sequentielle Schleife hat drei Ausgänge, nicht einen:
- Ausreichend:
answer_found and complete_answer_foundauf einen Kandidaten. Stoppen Sie, senden Sie die Antwort. - Erschöpfung: alle Ok-Kandidaten gesehen, keiner ausreichend. Halt, komm zurück
answer_found = False(Eine erstklassige Antwort, die der Validator durchläuft). - Price range: ein vom Dispatcher festgelegtes Token oder Zeitbudget. Nützlich, wenn der Korpus groß ist und eine außer Kontrolle geratene sequentielle Schleife die Kappe sprengen würde. Gleiche Kind wie die Namen der begrenzten Iteration M4 (Loop Engineering).
Naive sequentielle Implementierungen überspringen den dritten Exit und verbrennen Token für immer in Randfällen. Die Serienversion legt im Voraus ein Price range fest und der Dispatcher protokolliert es bei jedem Anruf.
4. Kosten und wo die Serie endet
Zwei Regime, zwei Kostenprofile und eine Grenze, die die Serie nicht überschreitet.
4.1 Ein konkreter Kostenvergleich für einen Stapel mit hundert Fragen
Um den Kompromiss zu verdeutlichen, finden Sie hier eine Zusammenfassung für die Frage-und-Antwort-Runde für eine Unternehmensversicherung:
- 100 Fragen/Tag, Ok = 5, durchschnittliche Blockgröße = 600 Token.
- Chargenbasislinie: 100 × generation_cost(query + 5×600 tokens) = ~330.000 Eingabe-Tokens professional Tag für die Generierung.
- Sequentiell (80 % High-1 ausreichend): 80 × generation_cost(query + 600) + 20 × generation_cost(query + 5×600) (schlimmster Fall für die 20 % komplexen Fragen) = ~115.000 Eingabe-Tokens professional Tag.
Das Verhältnis ist 65 % Einsparung an Enter-Tokens für die Generierung auf dieser Arbeitsbelastung. Das genaue Verhältnis hängt vom Straightforward-Frage-Verhältnis und der Stückgröße ab; Das Prinzip besteht darin, dass sequentiell die kostengünstige Standardeinstellung ist, sobald der typisierte Vertrag vorliegt. Batch ist für die Fragetypen reserviert, die es benötigen.
4.2 Die Versuchung des Agenten und wo die Serie endet
Ein natürlicher nächster Schritt besteht darin, das LLM professional Frage zwischen Batch und sequenziell entscheiden zu lassen (Agentenversand). Die Serie endet davor. Der Dispatcher in Abschnitt 2 ist deterministischer Dispatcher (einer der drei in Artikel 6C aufgeführten Ansätze), nicht LLM-entscheidet. Der Grund ist derselbe, der in der gesamten Serie gilt: Audit. Dieselbe Frage am selben Tag muss auf die gleiche Weise weitergeleitet werden. Ein LLM, der den Versand professional Anruf neu plant, kann diese Garantie nicht geben.
Wenn Sie eine stärkere Agentenschleife benötigen (das LLM wählt aus, welche Kandidaten in welcher Reihenfolge und mit welchem Umfang untersucht werden sollen), ist der größere Artikel über adaptive RAG-Schleifen der richtige Ort. Dieser Artikel beschränkt sich auf das Deterministische sequentiell vs. Batch Entscheidung basierend auf der analysierten Frage.
5. Die Entscheidung liegt beim Parser, nicht beim LLM
Die feste High-Ok + Batch-Pipeline ist die richtige Standardeinstellung für Fragetypen, bei denen es auf jeden Kandidaten ankommt. Dies ist die falsche Standardeinstellung für die tatsächlichen Suchvorgänge, die den größten Teil des Unternehmensdatenverkehrs ausmachen. Die Serie fügt zwei Teile hinzu: das typisierte Suffizienzsignal (answer_found, complete_answer_found) aus Artikel 8A und die Dispatch-Tabelle aus Abschnitt 2. Gemeinsam sorgen sie dafür, dass der Generierungsbaustein nach dem ersten Kandidaten stoppt, wenn das ausreicht, und verarbeiten alle Ok, wenn der Fragetyp dies erfordert. Die Entscheidung wird vom Parser getroffen, nicht vom LLM, wodurch der Prüfpfad intakt bleibt.
6. Weiterführende Literatur und Quellen
Die sequentielle/Batch-Entscheidung liegt an der Grenze zwischen Abruf und Generierung. Die Artikel, die jede Seite einrahmen:
