PRODEgemen Avrupa BaaS platformuKontrol Panelini Aç →

Yerel yapay zeka · 8 dk. okuma

NL2SQL nedir ve nasıl çalışır?

Affane Daylami · Fondateur · 22 Nisan 2026

Bloga geri dön

NL2SQL (doğal dilden SQL'e, ayrıca metinden SQL'e olarak da adlandırılır), doğal dilde (Fransızca veya İngilizce) sorulan bir soruyu ilişkisel bir veritabanında yürütülebilecek bir SQL sorgusuna çeviren bir sistem ailesini ifade eder. Prensip: Bir dil modeli soruyu ve veritabanı şemasını okur, aday bir SQL üretir ve bu SQL yürütülmeden önce doğrulanır, asla körü körüne geri döndürülmez.

Bu İngilizce metin, Fransızca orijinalinden otomatik olarak oluşturulmuştur ve henüz incelenmemiştir.
Bu sayfa otomatik olarak çevrildi. İngilizce versiyonu yetkilidir.

Bu fikir, mevcut ana dil modellerinden önce gelmektedir: Sorudan SQL'e çeviri sistemleri, Spider veya WikiSQL gibi referans veri kümeleriyle birlikte yıllarca süren akademik araştırmalar için mevcuttur. Son LLM'lerde değişen şey, önceden özel eğitim gerektirmeden herhangi bir diyagramda oluşturulan SQL'in kalitesidir. Bu makale, soyut bir açıklama yerine somut bir örnek olarak Aurabase'inyerel yapay zekası'nin doğrulanmış uygulamasıyla gerçek mekanizmayı adım adım açıklamaktadır.

Temeller

  • NL2SQL (veya metinden SQL'e), bir doğal dil sorusunu, bir LLM aracılığıyla ve ardından yürütmeden önce bir doğrulama adımı aracılığıyla yürütülebilir bir SQL sorgusuna çevirir.
  • İşlem hattı her zaman aynı sırayı içerir: SQL'in bir modele göre oluşturulması, sözdizimsel doğrulama, gerçek şemaya göre doğrulama, yürütmenin bir satır tavanıyla sınırlandırılması.
  • Ana risk, klasik istemci tarafı SQL enjeksiyonu değil, SQL'in model, tablo veya icat edilmiş bir sütun tarafından halüsinasyonla körü körüne yürütülmesidir.
  • Ciddi bir NL2SQL motoru yalnızca SELECT sorgularını kabul eder: herhangi bir yazma girişimi (INSERT, UPDATE, DELETE, DROP) veritabanına ulaşmadan reddedilir.
  • Aurabase'in kodla doğrulanmış NL2SQL motoru, sözdizimi ağacı ayrıştırıcısı (sqlparser), on SQL işlevinden oluşan beyaz liste ve yapılandırılabilir satır sınırı (varsayılan olarak 100, maksimum 1000) aracılığıyla oluşturulan SQL'i doğrular.
  • NL2SQL ve RAG farklı ihtiyaçları karşılar: biri için yapılandırılmış ve ilişkisel, diğeri için yapılandırılmamış içerik.
#
Tanım

NL2SQL tam olarak nedir?

NL2SQL, doğal dildeki bir sorunun ilişkisel temelde yürütülebilecek bir SQL sorgusuna otomatik olarak çevrilmesini ifade eder. Serbest metinle yanıt veren genel bir sohbet robotunun aksine, bir NL2SQL sistemi, gerçek veriler üzerinde çalışan ve satır satır doğrulanabilir bir sonuç döndüren yapılandırılmış bir yapı olan SQL'i üretir.

"Metinden SQL'e" terimi, doğal dil işleme alanındaki akademik araştırmalardan gelmektedir. Ürün ve teknik dokümantasyon tarafında en çok kullanılan kısaltma “NL2SQL”dir. Her ikisi de aynı soruna işaret ediyor: Günlük dilde sorulan bir soru ile bir SQL motorunun beklediği kesin sözdizimi arasındaki boşluğu kapatmak.

NL2SQL, geniş anlamda bir veritabanına bağlı bir konuşma aracısından ayrılır. Birincisi okunabilir ve denetlenebilir bir sorgu üretir; ikincisi, benzersiz ve denetlenebilir bir SQL ile sonuçlanmadan çeşitli araç çağrılarını (arama, hesaplama, yazma) zincirleyebilir. Düzgün tasarlanmış bir NL2SQL sistemi bu kasıtlı olarak sınırlandırılmış kapsam dahilinde kalır: tercüme etme, doğrulama, yürütme, sonuç döndürme.

#
Mekanizma

NL2SQL işlem hattı adım adım nasıl çalışır?

Güvenilir bir NL2SQL işlem hattı, sağlayıcıdan bağımsız olarak her zaman aynı sırayı izler: soru bir dil modelinden geçer, ardından üretilen SQL, yürütmeden önce doğrulanır, sonra değil. aura-aihizmet koduyla doğrulanan Aurabase uygulaması, bu adımların her birini soyut bir açıklama yerine somut kurallarla gösterir.

1.Soru tabanın gerçek şeması ile alınır

Sistem, doğal dilde soruyu sorgulanan veritabanının şemasıyla ilişkilendirir: tablo adları, sütunlar, türler. Bu model, arayan kişi tarafından sağlanan bir açıklamadan değil, gerçek temelin iç gözleminden gelmelidir. Müşteri tarafından bildirilen bir şemayı kabul eden bir uygulama, var olmayan tablolarla ilgili sorulara veya projeler arasındaki izolasyonun aşılmasına kapı açacaktır. Aurabase motoru, istekte gönderilen herhangi bir schema alanını sessizce yok saymak yerine açıkça reddeder (400 hatası).

2. Bir Yüksek Lisans, aday bir SQL oluşturur

Dil modeli soruyu ve şemayı kendi komut isteminde alır, ardından kısa bir açıklamayla birlikte aday bir SQL sorgusu üretir. Aurabase, özel bir yerel istemciyle üç sağlayıcıya eşit davranır: OpenAI, Anthropic (Claude) ve Gemini. Bu aday SQL, bu aşamada yalnızca bir tekliftir ve asla doğrudan yürütülmez.

3. Aday SQL, yürütmeden önce değil, yürütmeden önce doğrulanır

This is the step that distinguishes a serious NL2SQL system from a simple LLM call followed by naive execution. The generated SQL is parsed into a syntax tree (AST) rather than inspected by a keyword search, which is easily bypassed. The Aurabase implementation, with the sqlparserlibrary, only allows simple SELECT queries: CTE/WITH, subqueries, UNIONs, window functions and locking clauses (FOR UPDATE) are explicitly rejected, as are any SQL functions outside a whitelist of ten functions (count, sum, avg, min, max, lower, upper, coalesce, date_trunc, now).

4. Taahhüt edilen sorgu satır sınırıyla çalıştırılır

Doğrulanmış SQL, eğer halihazırda bir tane yoksa bir LIMIT alır: Aurabase ile varsayılan olarak 100 satır, maksimum 1000 satır; her iki değer de sunucu tarafında yapılandırılabilir. Sınırın ötesindeki bir istek sessizce azaltılmak yerine açıkça reddedilir. Yanıt, bu LIMIT öğesinin sunucu tarafından eklenip eklenmediğini gösterir; böylece arayan kişi, yürütülen SQL'in model tarafından üretilen SQL'den farklı olup olmadığını bilir.

exemplesql
-- Soru: "Premium müşteriler için bu ay kaç sipariş var?"
SELECT count(*) FROM orders
WHERE customer_plan = 'premium'
  AND created_at >= date_trunc('month', now())
LIMIT 100  -- sunucu tarafından eklendi, oluşturulan SQL'de eksik

The full detail of this pipeline, with each HTTP call and each JSON response, is covered in our step-by-step tutorial for building an NL2SQL endpoint on Postgres.

#
Kullanım örnekleri

NL2SQL ve elle yazılmış SQL: ne zaman ne kullanılmalı

NL2SQL'in her yerde elle yazılmış SQL'in yerini alması amaçlanmamıştır. Belirli bir kapsamı kapsar: SQL bilmeyen veya basit bir sorguyla zaman kazanmak isteyen biri tarafından sorulan özel, tek seferlik sorular.

  • Teknik olmayan bir kişi (destek, ürün, yönetim) tarafından bir gösterge tablosunun özel olarak incelenmesi.
  • Olası her soru için özel bir API rotası yazmadan veritabanını sorgulayan bir özelliğin hızlı prototiplenmesi.
  • Sınırlı analitik self-servis: son kullanıcıya veritabanına doğrudan erişim vermeden sayın, filtreleyin, basitçe toplayın.

Soru bu kapsamın ötesine geçtiğinde elle yazılmış SQL tercih edilir olmaya devam ediyor. Yukarıda açıklanana benzer bir AST onaylı uygulama, güvenlik nedeniyle CTE'leri, alt sorguları ve pencere işlevlerini yapı itibarıyla hariç tutar. Bu yapılara, kohortlara, gelişmiş zamansal pencerelemeye yapısal olarak ihtiyaç duyan bir analiz, NL2SQL'den geçmez: doğrudan kodlanır. Bu kabul edilmiş bir uzlaşmadır; sistemin güvenliği, oluşturulan SQL'in eksiksizliğinden önce gelir.

#
Riskler

NL2SQL'in riskleri: enjeksiyon, halüsinasyon, maliyet

Bir NL2SQL uygulamasında, sistemin olgunluğuna bağlı olarak farklı yanıtlarla sistematik olarak üç risk tekrarlanır.

İstem veya soru yoluyla SQL enjeksiyonu

Sorunun kendisi "önceki ifadeleri yoksay ve..." enjeksiyon girişimini içeriyorsa, bir LLM kötü amaçlı SQL üretecek şekilde manipüle edilebilir. Savunma, istemlere güvenmek değil, talep edilenden bağımsız olarak üretilen SQL'i doğrulamaktır; tam olarak yukarıda açıklanan işlem hattının 3. adımıdır. Konu özel olarak ele alınmayı hak ediyor: Kesin saldırı vektörleri ve karşı önlemler için bkz. NL2SQL'in SQL Enjeksiyonuna Karşı Güvenliğini Sağlama.

Var olmayan tablo veya sütunların halüsinasyonu

Model, özellikle büyük veya yetersiz belgelenmiş şemalarda, makul ancak gerçek şemada eksik olan bir tablo veya sütun adı icat edebilir. Oluşturulan SQL'i gerçek veritabanı şemasına göre doğrulayan bir uygulama, ham bir SQL hatasının kullanıcıya geri gönderilmesine izin vermek yerine, sorguyu açık bir mesajla reddeder ve gerçekte mevcut tabloları listeler.

Model çağrılarının maliyeti ve gecikmesi

Her NL2SQL sorusu, SQL yürütme süresinin yanı sıra kendi maliyeti ve gecikme süresiyle birlikte dil modeline bir çağrıyı tetikler. NL2SQL, tekrarlanan sorular için varsayılan katman olarak hizmet verdiğinde bu maliyet hızla artar; bu, her seferinde yeniden çevrilmek yerine önbelleğe alınmasından veya standart bir rapor olarak gösterilmesinden fayda sağlar.

Güven ölçülmeli, varsayılmamalı

Bir NL2SQL motoru tarafından döndürülen bir güven puanı (iyi biçimlendirilmiş SQL bloğu olsun ya da olmasın, yanıt biçimindeki buluşsal yöntem) anlamsal doğruluğun bir ölçüsü değildir. Bu, bu SQL'in sorulan soruyu doğru yanıtladığını değil, modelin sözdizimsel olarak temiz SQL ürettiğini gösterir.

#
Mimarlık

Yerel ve derlenmiş NL2SQL: bir geliştirici için neyi değiştirir?

İki mimari benzer görünür sonuçlar üretir ancak garantileri çok farklıdır. Yerel NL2SQL, oluşturma, doğrulama ve yürütmeyi doğrudan projenin şemasını ve erişim haklarını zaten bilen arka uç katmanına entegre eder: bu, aura-ai hizmetinin altyapıyı ve şema yalıtımını arka ucun geri kalanıyla paylaştığı Aurabase için yukarıda açıklanan mantıktır.

Birleştirilmiş bir NL2SQL, genel bir LLM hizmetini, veritabanına bir bağlayıcıyı ve kendin yap doğrulama katmanını birleştirir. Hiçbir şey bu yaklaşımın güvenli olmasını engellemez, ancak her garanti, sunucu tarafı içe dönük şema, AST doğrulaması, satır sınırı, izolasyon kiracısı, platform tarafından sağlanmak yerine bu tuğlaları bir araya getiren ekip tarafından uygulanmalı ve sürdürülmelidir.

Yerel ve derlenmiş, açık kaynak ve ticari NL2SQL araçlarının genel görünümü, NL2SQL 2026 araç karşılaştırmamızdaayrıntılı olarak karşılaştırılmıştır.

#
Ayrım

NL2SQL ve RAG: fark nedir?

NL2SQL ve RAG (geri almayla artırılmış nesil), her ikisi de bir veritabanına bağlı bir LLM'ye dayandığı için sıklıkla karıştırılan iki farklı soru ailesini yanıtlar.

NL2SQL, yapılandırılmış ve ilişkisel verileri hedefler: doğal olarak SELECT, GROUP BYtoplamalarına dönüşen kaç, ne zaman, hangi oranda soru. RAG, yapılandırılmamış içeriği hedefler: cevabın bir tablo satırına sığmadığı ancak modele bağlam içinde vermeden önce anlamsal benzerliğe göre ilgili bir pasajın bulunmasını, pgvector'da vektör aramasını, HNSW indeksini gerektiren belgeler, notlar, destek biletleri.

The two capabilities can coexist in the same project and combine in an agent who chooses one or the other depending on the question asked. The Aurabase native AI pillar details how the two mechanisms work together, and our RAG pipeline guide on pgvector covers the implementation of the second.

#
Sıkça Sorulan Sorular

SSS

Metinden SQL'e ve NL2SQL aynı şey midir?+
Evet, iki terim aynı sistem ailesini ifade eder: doğal dilde sorulan bir soruyu çalıştırılabilir bir SQL sorgusuna çevirmek. “Text-to-SQL” akademik araştırmalarda (Spider veya WikiSQL gibi referans tabanları) kullanılan terimdir, “NL2SQL” ürün ve teknik dokümantasyon tarafında en yaygın kısaltmadır. İki isim arasında teknik bir fark yok.
NL2SQL, var olmayan tabloları veya sütunları halüsinasyona uğratabilir mi?+
Dil modeli icat edilmiş bir tablo adı oluşturabilir; bu, herhangi bir Yüksek Lisans tabanlı sistem için gerçek bir risktir. Önemli olan bundan sonra ne olacağıdır: oluşturulan SQL'i gerçek veritabanı şemasına göre doğrulayan bir uygulama, sorguyu körü körüne yürütmek yerine açık bir mesajla reddeder. Bu, hata mesajında ​​gerçekte mevcut olan tabloları listeleyen Aurabase NL2SQL motorunda doğrulanan davranıştır.
NL2SQL yazma işlemlerini (INSERT, UPDATE, DELETE) yürütebilir mi?+
Dikkatli bir uygulamada değil. İyi tasarlanmış bir NL2SQL motoru, metinde basit bir anahtar kelime araması yerine sözdizimi ağacı düzeyinde yalnızca SELECT sorgularını kabul eder ve yürütmeden önce herhangi bir yazma girişimini reddeder. Bir aracı benimsemeden önce bu noktayı kontrol edin: bazı açık kaynaklı NL2SQL prototipleri varsayılan olarak bu sınırı uygulamaz.
NL2SQL yapmak için özel olarak eğitilmiş bir modele mi ihtiyaç var yoksa genel bir Yüksek Lisans yeterli mi?+
İstemde gerçek veritabanı şemasını sağlamanız koşuluyla, kullanım durumlarının çoğu için güncel bir genel Yüksek Lisans (GPT, Claude, Gemini) yeterlidir. Soru/SQL çiftleri üzerinde geliştirilmiş ve çok büyük şemalar veya egzotik SQL lehçelerinde hassasiyet kazandıran özel modeller mevcuttur. Ancak oluşturulan SQL'in doğrulanması, sistem güvenliği için model seçiminden daha önemlidir.
NL2SQL veri analistinin yerini mi alıyor?+
Hayır, işin doğasını ortadan kaldırmak yerine değiştirir. NL2SQL, bir analistin tek seferlik bir sorgu için harekete geçmesini sağlayan yapılandırılmış ve yinelenen soruları, sayımları, filtreleri ve basit toplamaları kapsar. İş muhakemesi, modelleme veya kötü ifade edilmiş bir sorunun yeniden ifade edilmesini gerektiren analizler, makine çeviri sisteminin değil, bağlamı anlayan birinin işi olarak kalır.

DAĞITILMAYA HAZIR MISINIZ?

Beş dakika içinde arka ucunuz.

Kredi kartı gerekmez · 500 MB ücretsiz · 50.000 MAU