BlogRAG
Wie ein Assistent Fragen beantworten sollte, die von Tabellen abhängen
Sortieren Sie zuerst die Fragen. Eine Frage zu einem Wert in einer Zeile lässt sich beantworten, indem diese Zeile als Text abgerufen wird, sofern die Zeile ihre Spaltennamen mitführt. Eine Frage, die über Zeilen hinweg summiert, filtert, zählt oder vergleicht, braucht eine Abfrage auf den Daten, denn die Suche liefert eine Handvoll Chunks und die Antwort hängt von allen Zeilen ab. Zeigen Sie bei jeder berechneten Antwort die Abfrage und den Datenstand.
Drei Arten von Tabellenfragen
- Nachschlagen: ein Wert mit Kontext, etwa die Kündigungsfrist eines Lieferanten oder der Preis eines Teils
- Berechnung: Summen, Durchschnitte, Rangfolgen, Zählungen oder Filter über viele Zeilen
- Erklärung: was eine Spalte bedeutet, warum sich eine Zahl geändert hat oder welche Regel einen Wert ergab, was meist in einem Dokument neben der Tabelle steht
Die meisten Assistenten bekommen alle drei gemischt. Die Designfrage ist, wie jede Art erkannt und auf einen Weg geschickt wird, der sie beantworten kann.
Warum Top-k-Retrieval keine Spalte summieren kann
Retrieval wählt die wenigen Chunks aus, die der Frage am ähnlichsten sind. Eine Summe über dreitausend Auftragszeilen braucht alle, und kein Ähnlichkeitsranking liefert genau die Zeilen, die ein Filter liefern würde. Das Modell summiert dann, was es bekommen hat, und präsentiert das Ergebnis selbstsicher. Fehlende Zeilen sehen aus wie kleinere Zahlen, nicht wie ein Fehler.
Das ganze Blatt in den Prompt zu kopieren, umgeht das Auswahlproblem bei kleinen Tabellen, aber Rechnen mit vielen Zahlen im Fließtext bleibt unzuverlässig. Eine Datenbank oder ein Dataframe erledigt das exakt.
Zeilen für das Nachschlagen auffindbar machen
Zum Nachschlagen indexieren Sie jede Zeile als eigenes Suchdokument. Azure AI Search bietet etwa einen delimitedText-Parsing-Modus, der jede Zeile einer CSV-Datei zu einem eigenen Dokument macht; ohne ihn wird die ganze Datei zu einem Dokument. Der SQL-Indexer bildet eine einzelne Tabelle oder Sicht Zeile für Zeile ab und behält Dezimal- und Geldwerte als Zeichenfolgen, weil eine Umwandlung in Gleitkommazahlen Genauigkeit kosten würde.
Schreiben Sie jede Zeile als Text, den eine Person für sich lesen könnte: Spaltennamen neben den Werten, Einheiten und Währung ausgeschrieben, Name des Blatts oder der Tabelle und Datum des Exports. Eine Zeile, die nur 48213, 3, 0.15, PL enthält, ist über ihre Bedeutung nicht auffindbar und für das Modell mehrdeutig.
Ein Abfrageweg für Berechnungen
Für Berechnungen lassen Sie das Modell eine Abfrage gegen ein bekanntes Schema erzeugen, führen sie in der Datenbank aus und antworten aus dem Ergebnis. LlamaIndex dokumentiert dieses Text-to-SQL-Muster und rät, die abzufragenden Tabellen zu benennen, weil das Laden aller Schemas den Kontext sprengen kann; bei vielen Tabellen wird zuerst das passende Schema abgerufen. Derselbe Leitfaden warnt, dass das Ausführen beliebiger SQL-Befehle riskant ist, und empfiehlt eingeschränkte Rollen, schreibgeschützte Datenbanken und Sandboxing.
In der Praxis setzen wir weitere Grenzen: eine Datenbankrolle, die nur freigegebene Sichten sieht, Zeilenfilter für die fragende Person, Timeouts und Zeilenobergrenzen. Für Fragen, die jede Woche gestellt werden, sind vordefinierte, parametrisierte Abfragen als Tools leichter zu testen als freies SQL. In jedem Fall sollte die Antwort die verwendete Abfrage oder den Bericht, das Ergebnis, die Zeilenzahl und den Datenstand zeigen, damit jemand sie prüfen kann.
Ein Export, Frage für Frage geroutet
Das folgende Beispiel ist erfunden. Ein Verkaufsexport speist beide Wege: Zeilen werden zum Nachschlagen indexiert und für Abfragen in eine Tabelle geladen.
Source: monthly sales export, one row per order line (hypothetical)
Question Route Why
Discount on line 3 of order 48213? retrieval one line row, found by
order ID + line number
Which region had the highest revenue in Q2? query aggregates every Q2 row
How many Polish orders totalled over 10,000 EUR? query sum line amounts per order,
then count distinct orders
above the threshold
Why is the Q2 figure lower than in the board pack? explain needs the definitions note,
then a query to reconcile
Answer contract for "query":
show the query or named report used, the result,
the data timestamp and the row count it coveredTesten Sie den Router so sorgfältig wie die beiden Wege. Eine Berechnungsfrage, die im Retrieval landet, liefert eine plausible falsche Zahl, und die fällt schwerer auf als eine Fehlermeldung.
Tabellenblätter, die sich wie Dokumente verhalten
Viele Geschäftstabellen sind keine Tabellen. Sie enthalten verbundene Kopfzeilen, mehrere Tabellen auf einem Blatt, in Zellen getippte Notizen und Zahlen, die erst nach der Berechnung von Formeln existieren. Mehrere Kopien kursieren per E-Mail. Bevor Sie eine solche Datei anbinden, klären Sie, welche Kopie verbindlich ist und ob die Daten zuerst in eine echte Tabelle mit definierten Spalten wandern sollten. Diese Bereinigung ist oft mehr wert als der Assistent.
Fragen
Kann das Modell selbst rechnen?
Bei wenigen Zahlen liegt es oft richtig, aber Sie erkennen nicht, wann nicht. Exakte Ergebnisse sollten aus einer Datenbank, einem Dataframe oder einem Rechenwerkzeug kommen; das Modell wählt die Operation und erklärt das Ergebnis.
Kann man Text-to-SQL allen im Unternehmen anbieten?
Nur mit denselben Zugriffsregeln, die für die Personen ohnehin gelten. Führen Sie Abfragen unter einer Rolle aus, die nur freigegebene, schreibgeschützte Sichten sieht, wenden Sie Zeilenfilter für die Person an und protokollieren Sie jede Abfrage. Fehlen diese Kontrollen, beginnen Sie mit vordefinierten Abfragen.
Was ist mit Tabellen in PDF- und Word-Dateien?
Extrahieren Sie sie als Tabellen statt als Fließtext. Eine Layoutanalyse kann Zeilen und Kopfzeilen wiederherstellen, und lange, über Seiten verteilte Tabellen brauchen die Kopfzeile in jedem Chunk. Werden die Zahlen auch für Berechnungen genutzt, laden Sie sie zusätzlich in einen strukturierten Speicher und behalten das Dokument als Beleg für das Nachschlagen.
Verwandte Leistungen
RAG-Entwicklung
Assistenten, die aus Ihren internen Dokumenten antworten, mit Berechtigungen, Quellenangaben und Tests anhand Ihrer eigenen Fragen.
KI-Engineering und -Architektur
Assistenten, Sprachschnittstellen und Agenten in den Produkten, die Sie verkaufen, samt Serving und Retrieval darunter.
MCP-Server-Entwicklung
MCP-Server, die freigegebene interne APIs mit KI-Assistenten verbinden, mit engen Berechtigungen, Freigaben für Änderungen und Tests.
Mehr aus dem Blog
Chunking von Geschäftsdokumenten
Wie Sie Verträge, Richtlinien und lange Verfahren so aufteilen, dass eine Antwort bei ihren Ausnahmen und Definitionen bleibt, und wie Sie die Strategie per Experiment wählen.
Berechtigungen in RAG
Wie Zugriffsregeln aus Quellsystemen in einen Retrieval-Index gelangen, wo sie verloren gehen und welche Negativtests zeigen, dass niemand abruft, was er nicht öffnen darf.
Retrieval oder Generierung?
Ein Diagnoseverfahren, das zeigt, ob eine falsche RAG-Antwort in Ingestion, Suche, Reranking oder im Modell entstand, mit markierten Belegen und Traces pro Frage.
Mit einem Engineer sprechen
Bringen Sie eine Aufgabe mit, die Sie verbessern möchten. Das Gespräch dauert 30 Minuten und braucht keinen Zugriff auf Ihre Systeme oder Ihre Daten.
Die Buchung läuft über Google Kalender.
Lieber zuerst schreiben? Hinterlassen Sie Ihre E-Mail-Adresse und ein paar Zeilen, dann antworten wir mit Terminvorschlägen.
Sehen Sie in Ihrem E-Mail-Programm nach dem Entwurf
Senden Sie ihn von dort ab, und ein Engineer antwortet Ihnen persönlich mit Terminvorschlägen für ein 30-minütiges Gespräch. Hat sich kein Entwurf geöffnet, schreiben Sie uns an miki@cloudsail.com.