Why Text-to-SQL Kurumsal Ortamlarda Başarısız Olur

Çoğu Text-to-SQL demosu fazla kusursuzdur.

Basit şemalar ve bariz tablo isimleri kullanırlar. Bir veya iki tablonun mükemmel bir şekilde bağlandığını varsayarlar. Bu bir demo için işe yarar. Gerçek bir şirkette ise başarısız olur.

Kurumsal veritabanlarında zor olan kısım SELECT ifadesi değildir. Zor olan kısım join yoludur.

Bir model, müşteriye göre gelir için geçerli bir sorgu yazabilir. SQL çalışır. Dashboard rakamları gösterir. Ancak cevap yanlıştır.

Bu neden olur?

  • Müşteri tablosu resmi ana liste değildir.
  • Gelir alanı, finans departmanı tarafından onaylanmış versiyon değildir.
  • Kayıtlar bölgeler arasında mükerrerdir.
  • Join işlemi fanout hatalarına yol açar.
  • Mali takvimler, takvim yıllarından farklıdır.

Sözdizimsel olarak geçerli bir sorgu, güvenilir bir sorgu değildir.

Gerçek üretim sistemleri karmaşıktır. Eksik yabancı anahtarlar (foreign keys), eski (legacy) tablolar ve rakamları şişiren bire-çok (one-to-many) ilişkilerle karşılaşırsınız. İnsanlar bile bir join işlemine güvenmeden önce eski raporları kontrol etmek veya finans departmanına danışmak zorundadır.

Bir yapay zeka modeli sadece isimleri ve sütunları görür. Tahmin yürütür. Bazen bu tahmin tehlikelidir.

Fanout durumunu düşünün. Siparişleri sipariş satırlarına, ardından sevkiyatlara bağlarsanız, bir sipariş birden fazla kez sayılabilir. SQL doğrudur ancak sonuç yanlıştır.

Meta veriler yardımcı olur ancak yeterli değildir. Sütun isimleri, bir ilişkinin finansal raporlama için güvenli olup olmadığını size söylemez. Yabancı anahtarlar tarihsel istisnaları açıklamaz.

Text-to-SQL ilişki zekasına (relationship intelligence) ihtiyaç duyar.

Güvenilir bir sistem şunları bilmelidir:

  • Belirli iş soruları için onaylanmış join yolları.
  • İlişki kardinalitesi (cardinality).
  • Bilinen fanout riskleri.
  • Hangi yolların kullanımdan kaldırıldığı (deprecated).

Sistem sadece kod yazmak yerine, güvenlik konusunda muhakeme yapmalıdır. Güvenilir yolu seçmeli veya yollar belirsiz olduğunda yardım istemelidir.

Mevcut sistemlerdeki boşluk, isimleri eşleştirmekten SQL üretmeye geçişteki sıçramadır. Bir ilişki bağlamı (relationship context) katmanı eklemelisiniz.

Text-to-SQL sadece bir dil problemi değildir. Bir bağlam (context) problemidir.

Modeller hangi join işlemlerinin güvenli olduğunu anlayana kadar, demolarda çalışacaklar ancak üretim ortamında başarısız olacaklardır.

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