3 poin oleh GN⁺ 2024-01-15 | 1 komentar | Bagikan ke WhatsApp
  • Open source untuk menghasilkan Text-To-SQL yang akurat dengan LLM yang menerapkan RAG (Retrieval-Augmented Generation)

Cara kerja Vanna

  • Melatih "model" RAG: Melatih model RAG pada data pengguna.
  • Mengajukan pertanyaan: Saat mengajukan pertanyaan dengan model yang telah dilatih, model akan mengembalikan kueri SQL yang dapat dijalankan secara otomatis di database.

Antarmuka pengguna

  • Beberapa antarmuka pengguna yang dibangun menggunakan Vanna antara lain Jupyter Notebook, vanna-ai/vanna-streamlit, vanna-ai/vanna-flask, dan vanna-ai/vanna-slack.

Memulai

  • Instalasi: Vanna dapat dipasang dengan perintah pip install vanna.
  • Import: Vanna dapat digunakan melalui kode import vanna as vn.

Pelatihan

  • Pelatihan dengan pernyataan DDL: Model dapat dilatih menggunakan pernyataan DDL yang mencakup informasi tentang nama tabel, kolom, tipe data, relasi, dan sebagainya di database.
  • Pelatihan dengan dokumentasi: Model dapat dilatih dengan menambahkan dokumentasi tentang istilah atau definisi bisnis.
  • Pelatihan dengan SQL: SQL yang sudah ada dapat ditambahkan sebagai data pelatihan untuk menghasilkan SQL baru.

Mengajukan pertanyaan

  • Dengan menggunakan metode vn.ask("질문"), pengguna bisa mendapatkan kueri SQL yang relevan.

RAG vs fine-tuning

  • RAG dapat dipindahkan lintas LLM, data pelatihannya mudah dihapus, biayanya lebih murah, dan memiliki daya adaptasi yang tinggi untuk masa depan.
  • Fine-tuning berguna saat perlu meminimalkan token dalam prompt, tetapi awalnya lambat dan biaya pelatihan serta eksekusinya mahal.

Alasan memilih Vanna

  1. Akurasi tinggi untuk dataset yang kompleks: Kemampuan Vanna ditentukan berdasarkan data pelatihannya.
  2. Keamanan dan privasi: Isi database tidak dikirim ke LLM maupun database vektor.
  3. Pembelajaran mandiri: Jika digunakan melalui Jupyter, Vanna dapat belajar otomatis dari kueri yang berhasil dijalankan.
  4. Mendukung semua database SQL: Dapat terhubung ke semua database SQL yang bisa dihubungkan melalui Python.
  5. Pilihan front-end: Bisa dimulai dari Jupyter Notebook lalu disediakan ke pengguna melalui Slackbot, aplikasi web, aplikasi Streamlit, atau front-end kustom.

Ekstensi Vanna

  • Vanna dirancang agar dapat terhubung ke semua database, LLM, dan database vektor.
  • Kelas dasar abstrak VannaBase mendefinisikan fungsi dasar dan menyediakan implementasi yang menggunakan OpenAI dan ChromaDB.

Materi tambahan

  • Tersedia dokumentasi lengkap, situs web, grup Discord untuk dukungan, dan lainnya.

GN⁺ berpendapat:

  • Vanna adalah alat yang kuat untuk mengotomatiskan pengelolaan database dan pembuatan kueri SQL, sehingga pengguna dapat dengan mudah membuat kueri SQL berakurasi tinggi untuk dataset yang kompleks.
  • Melalui antarmuka yang ramah pengguna dan fitur pembelajaran mandiri, bahkan pengguna nonspesialis dapat memanfaatkan database secara efisien, yang dapat semakin mempercepat pengambilan keputusan berbasis data.
  • Skalabilitas dan kemampuan adaptasi Vanna di masa depan memberi perusahaan peluang untuk merespons perubahan teknologi secara fleksibel dan terus meningkatkan proses pengelolaan data mereka.

1 komentar

 
GN⁺ 2024-01-15
Opini Hacker News
  • Pengalaman pengguna yang sedang mengembangkan proyek ChatDB.ai

    • Sedang mengembangkan proyek serupa bernama ChatDB.ai.
    • Pengalaman paling berhasil saat menggabungkan AI dan SQL adalah memberi umpan balik kesalahan dari penyedia SQL ke LLM setelah setiap iterasi.
    • Dengan menggunakan wrapper pesan error yang diformat dan secara kuat menyarankan kueri tabel sistem, cara ini sangat efektif untuk menemukan informasi skema.
    • Dengan penyesuaian kecil ini, sistem menjadi sangat mahir dalam menemukan kueri yang memerlukan join 4 tabel atau lebih.
  • Pengalaman pribadi menggunakan GPT-4

    • Sudah melakukan pekerjaan serupa menggunakan GPT-4.
    • Memeriksa struktur tabel dengan perintah SHOW TABLE di MySQL CLI, lalu membuat kueri berdasarkan tabel tersebut untuk menampilkan metrik bisnis seperti tingkat pengabaian keranjang belanja.
    • Pengalaman menunjukkan bahwa metode ini bekerja cukup baik.
  • Pandangan skeptis terhadap sistem yang menerjemahkan bahasa alami ke SQL

    • Meski mengakui upaya pengembangan sistem yang menerjemahkan bahasa alami ke SQL, tetap skeptis karena sifat dasar bahasa alami dan model bersifat perkiraan dan kurang presisi.
    • Database SQL dalam banyak kasus dirancang untuk pemrosesan informasi yang akurat dan presisi, dan memasukkan lapisan yang bersifat perkiraan dapat memperburuk masalah.
    • Mempertanyakan apakah upaya seperti ini benar-benar produktif dalam menyelesaikan kebutuhan dunia nyata secara efektif.
  • Ketertarikan pada produk serupa, termasuk startup yang didukung YC

    • Mengikuti beberapa produk serupa seperti Minds DB (YC W20), Buster (YC W24), dan DB Pilot, serta sangat tertarik pada bidang ini.
    • Juga sedang mencari solusi semacam ini.
  • Pengalaman dengan layanan pelaporan berbasis duckdb

    • Secara umum bekerja dengan baik, tetapi menemui beberapa masalah:
      • GPT-4 kadang menyimpang dari contoh atau skema meski pengaturan temperatur rendah.
      • Layanan meng-host data yang umum, tetapi pelanggan meminta pembuatan laporan dalam bahasa domain mereka sendiri.
      • Debugging prompt LLM itu rumit. Pelanggan dapat dengan mudah membingungkan model.
      • Memberikan "penjelasan" atas kueri yang dihasilkan kepada pelanggan agar transparan mengenai apa yang digunakan untuk menulis laporan.
  • Kekhawatiran dan penjelasan tentang cara kerja RAG

    • Menyampaikan kekhawatiran tentang penggunaan istilah "train".
    • Menghabiskan banyak waktu untuk menjelaskan bahwa RAG tidak memerlukan training atau fine-tuning, hanya persiapan data, chunking, dan vectorization.
  • Rasa penasaran tentang masalah halusinasi LLM

    • Penasaran bagaimana LLM menafsirkan konsep waktu seperti "kemarin", dan tentang masalah ketika SQL yang dihasilkan valid secara sintaks tetapi berbeda dari maksud yang diinginkan.
    • Khususnya pada kueri agregasi seperti MAX dan COUNT, ada risiko menghasilkan angka yang salah, dan untuk memverifikasinya harus membaca SQL secara langsung, yang bertentangan dengan tujuan utamanya.
  • Berbagi pengalaman menggunakan dataset dan teknologi sendiri

    • Menggunakan teknologi serupa untuk mengembangkan bot yang memungkinkan karyawan internal berinteraksi dengan dataset terstruktur.
    • Dalam praktiknya memang cukup bekerja, tetapi ada beberapa tantangan:
      • Ada banyak enum dan tipe data khusus pekerjaan yang tidak ada di model dasar, sehingga harus didefinisikan secara manual dan ditambahkan ke prompt sebagai konteks.
      • Menangani pertanyaan terkait waktu itu sulit.
      • Karena pengguna bisa menanyakan apa saja, dibutuhkan banyak contoh kueri SQL untuk satu tabel.
      • Sulit untuk diperluas ke berbagai tabel, dan penasaran apakah ada metode yang lebih efisien.
      • Menggunakan model Llama2 70B Gen, tetapi penasaran apakah model lain menunjukkan performa yang lebih baik dalam menghasilkan kueri SQL.
  • Pengalaman di bit.io dan respons pelanggan

    • Pernah melakukan pekerjaan serupa di bit.io, dan orang-orang menyukainya.
    • Ada beberapa artikel tentang temuan selama pengerjaan, dan layanan tersebut kini telah diakuisisi oleh Databricks lalu dihentikan.
    • Siap menjawab pertanyaan sebisa mungkin.