Kwa nini Text-to-SQL Inafeli katika Mashirika Makubwa

Maonyesho mengi ya Text-to-SQL ni rahisi mno.

Yanatumia miundo (schemas) rahisi na majina ya majedwali yanayoeleweka. Yanadhani majedwali mmoja au mawili yanaunganishwa kikamilifu. Hii inafanya kazi kwa maonyesho (demo). Inafeli katika kampuni halisi.

Katika kanzi data (databases) za mashirika, sehemu ngumu si kifungu cha SELECT. Sehemu ngumu ni njia ya kuunganisha (join path).

Modeli inaweza kuandika query sahihi ya mapato kwa mteja. SQL inafanya kazi. Dashibodi inaonyesha namba. Lakini jibu ni makosa.

Kwa nini hili hutokea?

  • Jedwali la mteja si orodha kuu rasmi.
  • Sehemu ya mapato si toleo lililoidhinishwa na idara ya fedha.
  • Kumbukumbu zimejirepeta katika maeneo tofauti.
  • Muunganisho (join) unaleta makosa ya fanout.
  • Kalenda za kifedha zinatofautiana na miaka ya kalenda.

Query inayofuata kanuni za kisintaksia si query inayoweza kuaminika.

Mifumo halisi ya uzalishaji (production) ina changamoto nyingi. Unakabiliana na funguo za kigeni (foreign keys) zilizokosekana, majedwali ya zamani (legacy tables), na uhusiano wa moja-kwa-nyingi (one-to-many relationships) unaoongeza namba kwa upotoshaji. Hata binadamu wanahitaji kukagua ripoti za zamani au kuuliza idara ya fedha kabla ya kuamini muunganisho (join).

Modeli ya AI huona majina na safu (columns) pekee. Inakisia. Wakati mwingine kukisia huko ni hatari.

Fikiria fanout. Ukijumuisha oda (orders) na mistari ya oda (order lines) kisha na usafirishaji (shipments), oda moja inaweza kuhesabiwa mara nyingi. SQL ni sahihi. Matokeo ni makosa.

Metadata husaidia, lakini haitoshi. Majina ya safu (column names) hayakuambii ikiwa uhusiano ni salama kwa ripoti za kifedha. Foreign keys haziwezi kuelezea ubaguzi wa kihistoria.

Text-to-SQL inahitaji akili ya mahusiano (relationship intelligence).

Mfumo wa kuaminika lazima ujue:

  • Njia za muunganisho (join paths) zilizoidhinishwa kwa maswali mahususi ya kibiashara.
  • Kadiinaliti ya uhusiano (Relationship cardinality).
  • Hatari zinazojulikana za fanout.
  • Njia zipi zimepitwa na wakati (deprecated).

Badala ya kuandika kodi tu, mfumo unapaswa kufikiria kuhusu usalama. Unapaswa kuchagua njia inayofahamika au kuomba msaada wakati njia hazijulikani wazi.

Pengo katika mifumo ya sasa ni hatua kutoka kwenye kuoanisha majina hadi kuzalisha SQL. Lazima uongeze tabaka la muktadha wa uhusiano (relationship context).

Text-to-SQL si tatizo la lugha tu. Ni tatizo la muktadha.

Mpaka modeli zitakapoelewa ni joins gani ni salama, zitafanya kazi kwenye maonyesho lakini zitafeli katika uzalishaji (production).

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

Jumuia ya kujifunzia (hiari): https://t.me/GyaanSetuAi