Warum Text-to-SQL in Unternehmen scheitert

Die meisten Text-to-SQL-Demos sind zu perfekt.

Sie verwenden einfache Schemata und offensichtliche Tabellennamen. Sie setzen voraus, dass ein oder zwei Tabellen perfekt miteinander verknüpft sind. Das funktioniert für eine Demo. In einem echten Unternehmen scheitert es jedoch.

In Unternehmensdatenbanken ist der schwierige Teil nicht die SELECT-Klausel. Der schwierige Teil ist der Join-Pfad.

Ein Modell schreibt vielleicht eine gültige Abfrage für den Umsatz pro Kunde. Das SQL läuft. Das Dashboard zeigt Zahlen an. Aber die Antwort ist falsch.

Warum passiert das?

  • Die Kundentabelle ist nicht die offizielle Stammliste.
  • Das Umsatzfeld ist nicht die von der Finanzabteilung genehmigte Version.
  • Datensätze sind über verschiedene Regionen hinweg dupliziert.
  • Der Join verursacht Fanout-Fehler.
  • Geschäftsjahre unterscheiden sich von Kalenderjahren.

Eine syntaktisch korrekte Abfrage ist keine vertrauenswürdige Abfrage.

Echte Produktionssysteme sind unübersichtlich. Man sieht sich mit fehlenden Fremdschlüsseln, Legacy-Tabellen und Eins-zu-viele-Beziehungen konfrontiert, die Zahlen aufblähen. Selbst Menschen müssen alte Berichte prüfen oder die Finanzabteilung fragen, bevor sie einem Join vertrauen.

Ein KI-Modell sieht nur Namen und Spalten. Es rät. Manchmal ist dieses Raten gefährlich.

Betrachten wir den Fanout-Effekt. Wenn Sie Bestellungen mit Bestellpositionen und dann mit Sendungen verknüpfen, wird eine Bestellung möglicherweise mehrfach gezählt. Das SQL ist korrekt. Das Ergebnis ist falsch.

Metadaten helfen, aber sie reichen nicht aus. Spaltennamen verraten Ihnen nicht, ob eine Beziehung für das Finanzreporting sicher ist. Fremdschlüssel erklären keine historischen Ausnahmen.

Text-to-SQL benötigt Beziehungsintelligenz.

Ein zuverlässiges System muss wissen:

  • Genehmigte Join-Pfade für spezifische Geschäftsfragen.
  • Beziehungs-Kardinalität.
  • Bekannte Fanout-Risiken.
  • Welche Pfade veraltet (deprecated) sind.

Anstatt nur Code zu schreiben, sollte das System über die Sicherheit nachdenken. Es sollte den vertrauenswürdigen Pfad wählen oder um Hilfe bitten, wenn die Pfade unklar sind.

Die Lücke in aktuellen Systemen ist der Sprung von der Zuordnung von Namen zur Generierung von SQL. Man muss eine Ebene mit Beziehungskontext hinzufügen.

Text-to-SQL ist nicht nur ein Sprachproblem. Es ist ein Kontextproblem.

Solange Modelle nicht verstehen, welche Joins sicher sind, werden sie in Demos funktionieren, aber in der Produktion scheitern.

Source: https://dev.to/arisyndata/why-text-to-sql-breaks-when-the-join-path-is-not-obvious-3bk0

Optional learning community: https://t.me/GyaanSetuAi