Veri

MS SQL Server ve Yapay Zeka: Veritabanını Doğal Dille Sorgulamak

"Geçen çeyrekte İstanbul'da m² fiyatı düşen portföyler" sorusunun cevabı veritabanınızda duruyor ama SQL bilen birine ihtiyaç var. NL2SQL bu aracıyı kaldırır — doğru kurulduğunda.

Kısa yanıt

NL2SQL (natural language to SQL), kullanıcının Türkçe yazdığı bir soruyu çalıştırılabilir SQL sorgusuna çeviren katmandır. MS SQL Server üzerinde güvenli bir kurulum üç unsurdan oluşur: modele yalnızca ilgili tabloların şeması ve iş sözlüğü verilir, üretilen sorgu çalıştırılmadan önce ayrıştırılıp yalnızca SELECT olduğu doğrulanır ve bağlantı salt okunur bir veritabanı kullanıcısıyla açılır. Doğru kurgulanmış sistemlerde iş sorularında %85–93 bandında doğru sonuç üretmek mümkündür.

NL2SQL nedir?

Kurumlarda veri var, veriye erişim yok. Satış müdürü bir soruyu yanıtlamak için IT'den rapor ister, rapor üç gün sonra gelir, o sırada soru değişmiştir. NL2SQL bu döngüyü kırar: kullanıcı soruyu kendi diliyle yazar, sistem sorguyu üretir, çalıştırır ve sonucu tablo + özet cümle olarak döner.

Basit görünür, tehlike de buradadır. Bir dil modelinden SQL istemek beş dakikalık iştir; doğru ve güvenli SQL üreten bir sistem kurmak ise mimari iştir.

Güvenli bir NL2SQL mimarisi

KULLANICI SORUSU
  └─ NİYET AGENT'I     Soru veri sorgusu mu, tanım sorusu mu?
  └─ ŞEMA SEÇİCİ       İlgili tabloları vektör aramasıyla belirler
  └─ SQL ÜRETİCİ       Yalnızca seçilen tabloların şeması + iş sözlüğü
  └─ AYRIŞTIRICI       SELECT mi? Alt sorgu güvenli mi? LIMIT var mı?
  └─ ÇALIŞTIRICI       Salt okunur kullanıcı, sorgu zaman aşımı, satır limiti
  └─ ÖZETLEYİCİ        Sonucu tablo + tek cümlelik yorum olarak döner
  └─ LOG               Soru, üretilen SQL, süre, satır sayısı, kullanıcı

Bu zincirde her adım tek işten sorumludur; çok ajanlı mimarinin tipik bir uygulamasıdır. En kritik iki adım, şema seçici ve ayrıştırıcıdır.

Şema bağlamı: doğruluğun %70'i burada

Model, veritabanınızı bilmez. Ona MUSTERI_HRK tablosunun ne olduğunu, DRM alanının "durum" anlamına geldiğini ve 1 değerinin "aktif" demek olduğunu siz anlatmak zorundasınız. Pratikte işe yarayan yapı şudur:

  • Tablo ve kolon açıklamaları. MS SQL'de sys.extended_properties üzerinden tanımlanan açıklamalar doğrudan bağlam olarak kullanılabilir.
  • İş sözlüğü. "Ciro", "aktif müşteri", "iptal edilmiş sipariş" gibi kurum terimlerinin hangi tablo ve koşula karşılık geldiği yazılı olmalı.
  • Kod tabloları. Durum kodları ve karşılıkları örneklerle verilmeli.
  • Örnek soru–SQL çiftleri. 20–40 iyi seçilmiş örnek, doğruluğu belirgin biçimde yükseltir.
  • İlişki haritası. Hangi tablo hangi anahtarla hangi tabloya bağlanır; yabancı anahtar tanımlı değilse elle belgelenmeli.
Saha gözlemi: Bir NL2SQL projesinin başarısızlık nedeni neredeyse hiçbir zaman model seçimi olmuyor. Neredeyse her zaman, kimsenin veritabanındaki alanların ne anlama geldiğini yazılı hale getirmemiş olması.

Güvenlik: agent'a asla yazma yetkisi vermeyin

  1. Ayrı veritabanı kullanıcısı. Yalnızca db_datareader rolü; gerekiyorsa yalnızca belirli görünümlere (view) erişim.
  2. Görünüm katmanı. Ham tablolar yerine iş odaklı görünümler sunun; hem güvenlik hem doğruluk artar.
  3. Sorgu ayrıştırma. Üretilen metin çalıştırılmadan önce parse edilmeli; SELECT dışı ifade, çoklu komut (;) veya yorum enjeksiyonu reddedilmeli.
  4. Zaman aşımı ve satır limiti. Her sorguya SET LOCK_TIMEOUT, sorgu zaman aşımı ve otomatik TOP sınırı ekleyin.
  5. Satır düzeyinde güvenlik. Kullanıcının göremeyeceği veriyi model de görmemeli; RLS ya da kullanıcıya göre parametrelenen görünümler kullanın.
  6. Kişisel veri filtresi. Sonuç setinde TCKN, telefon gibi alanlar varsa maskeleyin — KVKK gerekçeleri burada.

Doğruluğu artıran altı teknik

  • Şema daraltma. 300 tablolu bir veritabanında modele 8 tablo verin. Az bağlam, daha isabetli sorgu demektir.
  • Kendi kendini düzeltme. Sorgu hata verirse hata mesajını modele geri verip tek bir düzeltme denemesi yaptırın. Doğruluğu ciddi biçimde artırır.
  • Sorgu planı ön kontrolü. Çalıştırmadan önce SET SHOWPLAN_XML ile maliyeti bakın; çok pahalı sorguyu reddedin.
  • Belirsizlikte soru sorma. "Geçen ay" ifadesi takvim ayı mı, son 30 gün mü? Model tahmin etmek yerine sormalı.
  • Sonuç mantık kontrolü. Negatif ciro, gelecekteki tarih, beklenmedik büyüklükte satır sayısı gibi durumlar uyarı üretmeli.
  • Geri bildirim döngüsü. Kullanıcının "bu yanlış" işaretlediği sorular, örnek havuzuna eklenerek sistemi zamanla iyileştirir.

Performans ve maliyet kontrolü

NL2SQL sistemlerinde iki maliyet vardır: model çağrısı ve veritabanı yükü. İkisi de kontrol edilebilir:

ÖnlemEtkisi
Sık sorulan soruların sorgu önbelleğiModel çağrısını tamamen atlar
Şema bağlamının önbelleklenmesiToken maliyetini belirgin biçimde düşürür
Basit sorularda küçük model kullanımıOrtalama maliyeti düşürür
Raporlama replikası üzerinde çalışmaÜretim veritabanını korur
Sonuç satır limitiAğ ve bellek yükünü sınırlar

Kimler için uygun, kimler için değil?

Uygun: Veri hacmi yüksek, iş birimlerinin sık ve değişken soruları olan, IT'nin rapor kuyruğunun uzadığı kurumlar. Emlak portföyleri, perakende satış verisi, lojistik operasyon kayıtları ve finansal hareketler tipik uygulama alanlarıdır. Emlak sektörü örneğine göz atabilirsiniz.

Uygun değil: Veri modeli belgelenmemiş, alan adları anlamsız ve kimsenin iş kurallarını yazılı hale getirmediği ortamlar. Bu durumda önce veri sözlüğü çalışması yapılmalı; NL2SQL o çalışmanın yerine geçmez, üzerine kurulur.

Sıkça Sorulan Sorular

NL2SQL sistemleri yanlış sorgu üretirse veriyi bozar mı?
Doğru kurulumda hayır, çünkü sistem salt okunur bir veritabanı kullanıcısıyla çalışır. INSERT, UPDATE, DELETE ve DDL komutları hem yetki düzeyinde reddedilir hem de sorgu çalıştırılmadan önce ayrıştırıcı tarafından engellenir. En kötü senaryo yanlış bir rapor üretilmesidir, veri kaybı değil.
Kaç tablolu veritabanlarında çalışır?
Şemanın tamamı modele verilmediği sürece tablo sayısı sınırlayıcı değildir. Yüzlerce tablolu sistemlerde önce ilgili tabloları seçen bir arama adımı çalışır, ardından yalnızca o tabloların tanımı modele iletilir. Sınır tablo sayısı değil, iş mantığının ne kadar net belgelendiğidir.
Kullanıcılar SQL'i hiç bilmeden kullanabilir mi?
Evet, hedef bu. Ancak iyi bir sistem ürettiği SQL'i de gösterir ve sonucu bir cümleyle özetler. Böylece SQL bilen kullanıcı doğrulayabilir, bilmeyen kullanıcı ise sonuca güvenerek çalışır. Şeffaflık, benimsemenin en kritik unsuru.
Raporlama aracımız zaten var, NL2SQL'e neden ihtiyaç duyalım?
BI araçları önceden tanımlanmış soruları hızlı yanıtlar; NL2SQL ise tanımlanmamış, tek seferlik soruları yanıtlar. İkisi rakip değil tamamlayıcıdır: tekrar eden metrikler panolarda kalır, keşifsel sorular doğal dil katmanına gider.

Bu süreci sizde de kurabiliriz

İlk keşif görüşmesi ücretsiz. Süreçlerinizi anlatın, 48 saat içinde çalışan bir prototiple dönelim.

Ücretsiz Keşif Görüşmesi →