Why Text-to-SQL faalt in een enterprise-omgeving
De meeste Text-to-SQL-demo's zijn te gepolijst.
Ze gebruiken eenvoudige schema's en voor de hand liggende tabelnamen. Ze gaan ervan uit dat één of twee tabellen perfect met elkaar verbonden zijn. Dit werkt voor een demo. In een echt bedrijf faalt het.
In enterprise-databases is het lastige deel niet de SELECT-clause. Het lastige deel is het join-pad.
Een model schrijft misschien een geldige query voor omzet per klant. De SQL wordt uitgevoerd. Het dashboard toont cijfers. Maar het antwoord is fout.
Waarom gebeurt dit?
- De klanttabel is niet de officiële masterlijst.
- Het omzetveld is niet de door de financiële afdeling goedgekeurde versie.
- Records zijn gedupliceerd over verschillende regio's.
- De join veroorzaakt fanout-fouten.
- Fiscale kalenders verschillen van kalenderjaren.
Een syntactisch geldige query is geen betrouwbare query.
Echte productiesystemen zijn rommelig. Je krijgt te maken met ontbrekende foreign keys, legacy-tabellen en one-to-many-relaties die cijfers opblazen. Zelfs mensen moeten oude rapporten controleren of de financiële afdeling raadplegen voordat ze een join vertrouwen.
Een AI-model ziet alleen namen en kolommen. Het gokt. Soms is die gok gevaarlijk.
Denk aan fanout. Als je orders koppelt aan orderregels en vervolgens aan verzendingen, kan één order meerdere keren worden geteld. De SQL is correct. Het resultaat is fout.
Metadata helpt, maar het is niet genoeg. Kolomnamen vertellen je niet of een relatie veilig is voor financiële rapportage. Foreign keys leggen historische uitzonderingen niet uit.
Text-to-SQL heeft relatie-intelligentie nodig.
Een betrouwbaar systeem moet weten:
- Goedgekeurde join-paden voor specifieke zakelijke vragen.
- Relatie-cardinaliteit.
- Bekende fanout-risico's.
- Welke paden verouderd zijn.
In plaats van alleen code te schrijven, zou het systeem moeten redeneren over de veiligheid. Het zou het vertrouwde pad moeten kiezen of om hulp moeten vragen wanneer paden onduidelijk zijn.
De kloof in huidige systemen is de sprong van het mappen van namen naar het genereren van SQL. Je moet een laag van relatiecontext toevoegen.
Text-to-SQL is niet alleen een taalprobleem. Het is een contextprobleem.
Totdat modellen begrijpen welke joins veilig zijn, zullen ze werken in demo's, maar falen in productie.
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
