Mengapa Text-to-SQL Gagal di Lingkungan Enterprise
Kebanyakan demo Text-to-SQL terlalu bersih.
Mereka menggunakan skema sederhana dan nama tabel yang jelas. Mereka berasumsi satu atau dua tabel terhubung dengan sempurna. Ini berhasil untuk sebuah demo. Namun, ini gagal di perusahaan nyata.
Dalam database enterprise, bagian yang sulit bukanlah klausa SELECT. Bagian yang sulit adalah jalur join (join path).
Sebuah model mungkin menulis kueri yang valid untuk pendapatan per pelanggan. SQL-nya berjalan. Dashboard menampilkan angka. Namun, jawabannya salah.
Mengapa hal ini terjadi?
- Tabel pelanggan bukanlah daftar induk (master list) resmi.
- Kolom pendapatan bukanlah versi yang disetujui oleh bagian keuangan.
- Data terduplikasi di berbagai wilayah.
- Join menyebabkan kesalahan fanout.
- Kalender fiskal berbeda dengan tahun kalender.
Kueri yang valid secara sintaksis bukanlah kueri yang dapat dipercaya.
Sistem produksi yang nyata itu berantakan. Anda menghadapi foreign key yang hilang, tabel lama (legacy tables), dan relasi one-to-many yang menggelembungkan angka. Bahkan manusia pun perlu memeriksa laporan lama atau bertanya ke bagian keuangan sebelum mereka mempercayai sebuah join.
Model AI hanya melihat nama dan kolom. Ia menebak. Terkadang tebakan tersebut berbahaya.
Pertimbangkan fanout. Jika Anda melakukan join antara pesanan (orders) ke detail pesanan (order lines) lalu ke pengiriman (shipments), satu pesanan mungkin terhitung berkali-kali. SQL-nya benar. Hasilnya salah.
Metadata membantu, tetapi itu tidak cukup. Nama kolom tidak memberi tahu Anda apakah sebuah relasi aman untuk pelaporan keuangan. Foreign key tidak menjelaskan pengecualian historis.
Text-to-SQL membutuhkan kecerdasan relasi (relationship intelligence).
Sistem yang andal harus mengetahui:
- Jalur join yang disetujui untuk pertanyaan bisnis tertentu.
- Kardinalitas relasi.
- Risiko fanout yang diketahui.
- Jalur mana yang sudah usang (deprecated).
Alih-alih hanya menulis kode, sistem harus menalar tentang keamanan. Sistem harus memilih jalur yang terpercaya atau meminta bantuan ketika jalur tidak jelas.
Kesenjangan dalam sistem saat ini adalah lompatan dari pemetaan nama ke pembuatan SQL. Anda harus menambahkan lapisan konteks relasi.
Text-to-SQL bukan sekadar masalah bahasa. Ini adalah masalah konteks.
Sampai model memahami join mana yang aman, mereka akan berhasil dalam demo tetapi gagal dalam produksi.
Sumber: https://dev.to/arisyndata/why-text-to-sql-breaks-when-the-join-path-is-not-obvious-3bk0
Komunitas pembelajaran opsional: https://t.me/GyaanSetuAi
