3 puan yazan GN⁺ 2024-01-15 | 1 yorum | WhatsApp'ta paylaş
  • RAG (Retrieval-Augmented Generation) uygulayan bir LLM ile doğru Text-To-SQL üreten açık kaynaklı bir araç

Vanna Nasıl Çalışır

  • RAG "modelini" eğitme: Kullanıcının verileri üzerinde RAG modeli eğitilir.
  • Soru sorma: Eğitilmiş model kullanılarak soru sorulduğunda, veritabanında otomatik olarak çalıştırılabilecek SQL sorguları döndürülür.

Kullanıcı Arayüzü

  • Vanna ile oluşturulmuş bazı kullanıcı arayüzleri arasında Jupyter Notebook, vanna-ai/vanna-streamlit, vanna-ai/vanna-flask ve vanna-ai/vanna-slack yer alır.

Başlarken

  • Kurulum: Vanna, pip install vanna komutuyla kurulabilir.
  • İçe aktarma: Vanna, import vanna as vn koduyla kullanılabilir.

Eğitim

  • DDL ifadeleriyle eğitim: Veritabanındaki tablo adları, sütunlar, veri tipleri ve ilişkiler gibi bilgileri içeren DDL ifadeleri kullanılarak model eğitilebilir.
  • Dokümanlarla eğitim: İş terimleri veya tanımlarla ilgili dokümanlar eklenerek model eğitilebilir.
  • SQL ile eğitim: Mevcut SQL sorguları eğitim verisi olarak eklenip yeni SQL üretilebilir.

Soru Sorma

  • vn.ask("soru") yöntemi kullanılarak soru sorulduğunda ilgili SQL sorgusu alınabilir.

RAG ve Fine-Tuning Karşılaştırması

  • RAG, farklı LLM'ler arasında taşınabilir, eğitim verilerinin kolayca kaldırılmasına olanak tanır, daha düşük maliyetlidir ve gelecekteki değişimlere daha uyumludur.
  • Fine-tuning, prompt içindeki token'ları en aza indirmek gerektiğinde faydalıdır; ancak başlaması yavaştır ve eğitim ile çalıştırma maliyetleri yüksektir.

Neden Vanna

  1. Karmaşık veri setlerinde yüksek doğruluk: Vanna'nın yetenekleri, eğitim verisine bağlı olarak belirlenir.
  2. Güvenlik ve gizlilik: Veritabanı içeriği LLM'e veya vektör veritabanına gönderilmez.
  3. Kendi kendine öğrenme: Jupyter üzerinden kullanıldığında, başarıyla çalıştırılan sorgular için otomatik öğrenme yapabilir.
  4. Tüm SQL veritabanı desteği: Python ile bağlanabilen tüm SQL veritabanlarına bağlanabilir.
  5. Frontend seçimi: Jupyter Notebook ile başlayıp kullanıcılara Slackbot, web uygulaması, Streamlit uygulaması veya özel bir frontend üzerinden sunulabilir.

Vanna'yı Genişletme

  • Vanna, tüm veritabanlarına, LLM'lere ve vektör veritabanlarına bağlanacak şekilde tasarlanmıştır.
  • VannaBase soyut temel sınıfı, temel işlevleri tanımlar ve OpenAI ile ChromaDB kullanan bir uygulama sunar.

Ek Kaynaklar

  • Tam dokümantasyon, web sitesi ve destek için Discord grubu gibi kaynaklar sunulmaktadır.

GN⁺ görüşü:

  • Vanna, veritabanı yönetimi ve SQL sorgusu oluşturmayı otomatikleştiren güçlü bir araçtır; kullanıcıların karmaşık veri setleri için yüksek doğrulukta SQL sorgularını kolayca üretmesini sağlar.
  • Kullanıcı dostu arayüzü ve kendi kendine öğrenme özellikleri sayesinde uzman olmayan kullanıcılar da veritabanlarını verimli şekilde kullanabilir; bu da veriye dayalı karar almayı daha da hızlandırabilir.
  • Vanna'nın genişletilebilirliği ve geleceğe uyumluluğu, şirketlere teknolojik değişimlere esnek yanıt verme ve veri yönetimi süreçlerini sürekli iyileştirme fırsatı sunar.

1 yorum

 
GN⁺ 2024-01-15
Hacker News görüşleri
  • ChatDB.ai projesi geliştiren birinin deneyimi

    • ChatDB.ai adlı benzer bir proje geliştiriyor.
    • Yapay zeka ile SQL'i birleştirirken en başarılı deneyiminin, her iterasyondan sonra SQL sağlayıcısının hatalarını LLM'e geri bildirmek olduğunu söylüyor.
    • Biçimlendirilmiş hata mesajı sarmalayıcısı kullanarak sistem tablosu sorgularını güçlü biçimde önermenin, şema bilgisini keşfetmede çok etkili olduğunu belirtiyor.
    • Bu küçük ayarlamayla, 4'ten fazla tablonun join edilmesini gerektiren sorguları bulmada şaşırtıcı derecede iyi hale geldiğini söylüyor.
  • GPT-4 ile kişisel deneyim

    • GPT-4 kullanarak zaten benzer bir işi yaptığını söylüyor.
    • MySQL CLI'deki SHOW TABLE komutuyla tablo yapısını kontrol ediyor ve bu tablolara dayanarak sepet terk oranı gibi iş metriklerini gösteren sorgular üretiyor.
    • Bu yöntemin oldukça iyi çalıştığını deneyimlediğini söylüyor.
  • Doğal dili SQL'e çeviren sistemlere şüpheci bakış

    • Doğal dili SQL'e çeviren sistemler geliştirme çabasını takdir etse de, doğal dilin ve modellerin temel doğasının tahmine dayalı ve düşük hassasiyetli olması nedeniyle şüpheci yaklaşıyor.
    • SQL veritabanlarının çoğu durumda doğru ve hassas bilgi işleme için tasarlandığını, tahmine dayalı bir katman eklemenin sorunu daha da kötüleştirebileceğini söylüyor.
    • Bu tür girişimlerin gerçek dünyanın ihtiyaçlarını etkili biçimde çözmede ne kadar üretken olduğunu sorguluyor.
  • YC destekli girişimler dahil benzer ürünlere ilgi

    • Minds DB (YC W20), Buster (YC W24), DB Pilot gibi birkaç benzer ürünü takip ettiğini ve bu alana çok ilgi duyduğunu söylüyor.
    • Kendisinin de bu tür çözümler aradığını belirtiyor.
  • duckdb tabanlı raporlama servisi deneyimi

    • Genel olarak iyi çalışıyor, ancak birkaç sorunla karşılaşmış:
      • Düşük temperature ayarına rağmen GPT-4 bazen örneklerin veya şemanın dışına çıkıyor.
      • Servis genel verileri barındırıyor, ancak müşteriler kendi alan dilleriyle rapor oluşturulmasını istiyor.
      • LLM prompt debug etmek zor. Müşteriler modeli kolayca şaşırtabiliyor.
      • Oluşturulan sorgular için müşteriye bir "açıklama" vererek, raporun yazımında nelerin kullanıldığını şeffaf hale getiriyor.
  • RAG'in nasıl çalıştığına dair endişe ve açıklama

    • "train" teriminin kullanımına dair endişesini dile getiriyor.
    • RAG'in eğitim veya ince ayar gerektirmediğini; yalnızca veri hazırlama, chunking ve vektörleştirme gerektirdiğini anlatmak için çok zaman harcadığını vurguluyor.
  • LLM'lerin halüsinasyon problemi hakkında merak

    • LLM'lerin "dün" gibi zaman kavramlarını nasıl yorumladığını ve üretilen SQL sözdizimsel olarak geçerli olsa bile niyetle farklı olabilmesi sorununu merak ediyor.
    • Özellikle MAX, COUNT gibi aggregate sorgularda yanlış sayılar üretme riski olduğunu, bunu doğrulamak için SQL'i doğrudan okumak gerektiğini ve bunun da tüm amaca ters düştüğünü söylüyor.
  • Kendi veri kümesi ve teknolojisiyle deneyim paylaşımı

    • İç çalışanların yapılandırılmış veri kümeleriyle konuşabilmesi için bir bot geliştirirken benzer teknolojiyi kullandıklarını söylüyor.
    • Pratikte bir ölçüde çalışıyor, ancak bazı zorluklar var:
      • Mevcut modellerde bulunmayan, işe özgü çok sayıda enum ve veri tipi var; bunları elle tanımlayıp prompt'a bağlam olarak eklemek gerekiyor.
      • Zamanla ilgili soruları işlemek zor.
      • Kullanıcılar her şeyi sorabildiği için, tek bir tablo için bile çok sayıda örnek SQL sorgusu gerekiyor.
      • Farklı tablolara ölçeklemenin zor olduğunu ve daha verimli bir yöntem olup olmadığını merak ediyor.
      • Llama2 70B Gen modelini kullandığını, ancak SQL sorgusu üretiminde başka modellerin daha iyi performans gösterip göstermediğini merak ediyor.
  • bit.io deneyimi ve müşteri tepkisi

    • bit.io'da benzer bir çalışma yaptıklarını ve insanların bunu sevdiğini söylüyor.
    • Çalışma sırasında keşfettikleri şeyler hakkında birkaç makale olduğunu, şirketin daha sonra Databricks tarafından satın alındığını ve hizmetin kapatıldığını belirtiyor.
    • Mümkün olduğunca soruları yanıtlamaya hazır olduğunu söylüyor.