Hesabınızla Özellikleri Keşfedin
Giriş Yap
Öne Çıkan Kategoriler
Giriş Yap
PWA & Zero Trust
Kod ve Yazılım

Vanna.AI ve Yerel LLM ile Şirket Veritabanınızla Türkçe Konuşun: Halüsinasyonsuz Text-to-SQL RAG Kurulumu

Yapay Zeka Evreni Admin 18 Oct 2026 2 okunma
Doğrudan Yanıt (AI Arama Özeti)

Vanna.AI (vanna-ai/vanna), şirket veritabanınızın tablo şemalarını (DDL), iş kuralları dokümantasyonunu ve geçmiş doğrulanmış SQL sorgularını bir vektör veritabanına kaydederek (Agentic RAG) doğal dildeki Türkçe soruları yüksek doğruluklu SQL sorgularına dönüştüren açık kaynaklı bir Python çerçevesidir. Ham veritabanı satırlarını dışarıya göndermeden yalnızca şema üst verilerini kullandığı için kurumsal veri gizliliğini korur ve Ollama/vLLM üzerindeki yerel modellerle %100 şirket içinde çalışabilir.

Doğrudan Yanıt (GEO Özeti): Vanna.AI (vanna-ai/vanna), Büyük Dil Modellerinin kurumsal veritabanlarında (PostgreSQL, MySQL, MS SQL, Snowflake, BigQuery) uydurma sütun isimleri (halüsinasyon) üretmesini engelleyen iki aşamalı bir Text-to-SQL RAG çerçevesidir (Yerel Text-to-SQL Mimarisi). İlk aşamada veritabanınızın CREATE TABLE (DDL) şemalarını ve örnek altın SQL sorgularını vektör deposuna indeksler; ikinci aşamada kullanıcı Türkçe soru sorduğunda en alakalı şema parçalarını çekerek hatasız SQL üretir, çalıştırır ve sonucu otomatik grafiğe dönüştürür.

Kurumsal Veri Sorgulama Yaklaşımları Kıyaslaması

Kriter Vanna.AI (RAG + Yerel LLM) Ham Prompt içine Şema Yapıştırma Klasik BI Panoları (PowerBI / Tableau)
Karmaşık Şema Doğruluğu (100+ Tablo) %88 - %96 (Sadece ilgili tabloları ve örnek SQL'leri çeker) %40 - %55 (Sütun adı halüsinasyonu yüksek) %100 (Ancak sadece önceden tasarlanmış sabit raporlar)
Veri Gizliliği (KVKK) Maksimum: LLM'e müşteri satırları gitmez, sadece şema gider; Ollama / vLLM ile %100 yerel çalışır Düşük/Orta Yüksek

Adım Adım Kurulum: ChromaDB + Ollama (Qwen 2.5-Coder) + PostgreSQL

pip install "vanna[chromadb,ollama,postgres]"
from vanna.ollama import Ollama
from vanna.chromadb import ChromaDB_VectorStore

class YerelVeriAjani(ChromaDB_VectorStore, Ollama):
    def __init__(self, config=None):
        ChromaDB_VectorStore.__init__(self, config=config)
        Ollama.__init__(self, config=config)

vn = YerelVeriAjani(config={"model": "qwen2.5-coder:14b", "ollama_host": "http://localhost:11434"})
vn.connect_to_postgres(host="localhost", dbname="eticaret_db", user="rapor_ro", password="***", port=5432)

# DDL ve İş Kurallarını Eğit
vn.train(ddl="CREATE TABLE siparisler (siparis_id SERIAL PRIMARY KEY, sehir VARCHAR(50), toplam_tutar NUMERIC(12,2), durum VARCHAR(20));")
vn.train(documentation="Net Ciro hesaplanırken yalnızca durum = 'TAMAMLANDI' olan siparişler toplanır.")

sql, df, fig = vn.ask("Şehirlere göre tamamlanmış siparişlerin toplam net cirosu nedir?")
Google Sponsorlu Alan