Structured Query Language (SQL) adalah bahasa kompleks yang memerlukan pemahaman tentang database dan metadata. Hari ini, AI generatif dapat mengaktifkan orang tanpa pengetahuan SQL. Tugas AI generatif ini disebut text-to-SQL, yang menghasilkan kueri SQL dari pemrosesan bahasa alami (NLP) dan mengubah teks menjadi SQL yang benar secara semantik. Solusi dalam postingan ini bertujuan untuk membawa operasi analitik perusahaan ke tingkat berikutnya dengan memperpendek jalur ke data Anda menggunakan bahasa alami.
Dengan munculnya model bahasa besar (LLM), generasi SQL berbasis NLP telah mengalami transformasi yang signifikan. Mendemonstrasikan kinerja luar biasa, LLM kini mampu menghasilkan kueri SQL yang akurat dari deskripsi bahasa alami. Namun, tantangan masih tetap ada. Pertama, bahasa manusia pada dasarnya bersifat ambigu dan bergantung pada konteks, sedangkan SQL bersifat tepat, matematis, dan terstruktur. Kesenjangan ini dapat mengakibatkan konversi kebutuhan pengguna ke dalam SQL yang dihasilkan tidak akurat. Kedua, Anda mungkin perlu membuat fitur text-to-SQL untuk setiap database karena data sering kali tidak disimpan dalam satu target. Anda mungkin harus membuat ulang kemampuan setiap database untuk memungkinkan pengguna dengan pembuatan SQL berbasis NLP. Ketiga, meskipun adopsi solusi analitik terpusat seperti data lake dan gudang semakin besar, kompleksitas meningkat seiring dengan perbedaan nama tabel dan metadata lain yang diperlukan untuk membuat SQL untuk sumber yang diinginkan. Oleh karena itu, pengumpulan metadata yang komprehensif dan berkualitas tinggi juga masih menjadi tantangan. Untuk mempelajari selengkapnya tentang praktik terbaik dan pola desain text-to-SQL, lihat Menghasilkan nilai dari data perusahaan: Praktik terbaik untuk Text2SQL dan AI generatif.
Solusi kami bertujuan untuk mengatasi tantangan tersebut dengan menggunakan Batuan Dasar Amazon dan Layanan AWS Analytics. Kita gunakan Claude Antropik v2.1 di Amazon Bedrock sebagai LLM kami. Untuk mengatasi tantangan ini, solusi kami pertama-tama menggabungkan metadata sumber data di dalamnya Katalog Data AWS Glue untuk meningkatkan keakuratan kueri SQL yang dihasilkan. Alur kerja juga mencakup evaluasi akhir dan putaran koreksi, jika ada masalah SQL yang teridentifikasi Amazon Athena, yang digunakan hilir sebagai mesin SQL. Athena juga mengizinkan kita menggunakan banyak titik akhir dan konektor yang didukung untuk mencakup sejumlah besar sumber data.
Setelah kami menjalani langkah-langkah untuk membangun solusi, kami menyajikan hasil beberapa skenario pengujian dengan tingkat kompleksitas SQL yang bervariasi. Terakhir, kita membahas betapa mudahnya memasukkan sumber data yang berbeda ke kueri SQL Anda.
Ikhtisar solusi
Ada tiga komponen penting dalam arsitektur kami: Retrieval Augmented Generation (RAG) dengan metadata database, loop koreksi mandiri multi-langkah, dan Athena sebagai mesin SQL kami.
Kami menggunakan metode RAG untuk mengambil deskripsi tabel dan deskripsi skema (kolom) dari metastore AWS Glue untuk memastikan bahwa permintaan terkait dengan tabel dan kumpulan data yang tepat. Dalam solusi kami, kami membangun langkah-langkah individual untuk menjalankan kerangka kerja RAG dengan AWS Glue Data Catalog untuk tujuan demonstrasi. Namun, Anda juga bisa menggunakannya basis pengetahuan di Amazon Bedrock untuk membangun solusi RAG dengan cepat.
Komponen multi-langkah memungkinkan LLM mengoreksi kueri SQL yang dihasilkan agar akurat. Di sini, SQL yang dihasilkan dikirim untuk kesalahan sintaksis. Kami menggunakan pesan kesalahan Athena untuk memperkaya permintaan kami untuk LLM agar koreksi yang lebih akurat dan efektif dalam SQL yang dihasilkan.
Anda dapat mempertimbangkan pesan kesalahan yang kadang-kadang datang dari Athena seperti umpan balik. Implikasi biaya dari langkah koreksi kesalahan dapat diabaikan dibandingkan dengan nilai yang diberikan. Anda bahkan dapat memasukkan langkah-langkah perbaikan ini sebagai contoh pembelajaran yang diperkuat dengan pengawasan untuk menyempurnakan LLM Anda. Namun, kami tidak membahas alur ini dalam postingan kami untuk tujuan kesederhanaan.
Perhatikan bahwa selalu ada risiko ketidakakuratan, yang biasanya muncul pada solusi AI generatif. Meskipun pesan kesalahan Athena sangat efektif untuk memitigasi risiko ini, Anda dapat menambahkan lebih banyak kontrol dan tampilan, seperti masukan manusia atau contoh kueri untuk penyesuaian, untuk lebih meminimalkan risiko tersebut.
Athena tidak hanya memungkinkan kita memperbaiki kueri SQL, namun juga menyederhanakan masalah keseluruhan bagi kita karena berfungsi sebagai hub, di mana jari-jarinya adalah berbagai sumber data. Manajemen akses, sintaksis SQL, dan lainnya semuanya ditangani melalui Athena.
Diagram berikut menggambarkan arsitektur solusi.
Alur proses mencakup langkah-langkah berikut:
- Buat Katalog Data AWS Glue menggunakan crawler AWS Glue (atau metode lain).
- Menggunakan Model Penyematan Teks Titan di Amazon Bedrock, ubah metadata menjadi penyematan dan simpan di Amazon OpenSearch Tanpa Server toko vektor, yang berfungsi sebagai basis pengetahuan kami dalam kerangka RAG kami.
Pada tahap ini, proses siap menerima query dalam bahasa alami. Langkah 7โ9 mewakili putaran koreksi, jika memungkinkan.
- Pengguna memasukkan kueri mereka dalam bahasa alami. Anda dapat menggunakan aplikasi web apa pun untuk menyediakan UI obrolan. Oleh karena itu, kami tidak membahas detail UI di postingan kami.
- Solusinya menerapkan kerangka RAG melalui pencarian kesamaan, yang menambahkan konteks tambahan dari metadata dari database vektor. Tabel ini digunakan untuk mencari tabel, database, dan atribut yang benar.
- Kueri digabungkan dengan konteks dan dikirim ke Claude Antropik v2.1 di Amazon Batuan Dasar.
- Model mendapatkan kueri SQL yang dihasilkan dan terhubung ke Athena untuk memvalidasi sintaksis.
- Jika Athena memberikan pesan kesalahan yang menyebutkan sintaks salah, model akan menggunakan teks kesalahan dari respons Athena.
- Prompt baru menambahkan respons Athena.
- Model membuat SQL yang diperbaiki dan melanjutkan prosesnya. Iterasi ini dapat dilakukan berkali-kali.
- Terakhir, kami menjalankan SQL menggunakan Athena dan menghasilkan output. Di sini, keluarannya disajikan kepada pengguna. Demi kesederhanaan arsitektur, kami tidak menunjukkan langkah ini.
Prasyarat
Untuk posting ini, Anda harus menyelesaikan prasyarat berikut:
- punya Akun AWS.
- Install itu Antarmuka Baris Perintah AWS (AWS CLI).
- Siapkan SDK untuk Python (Boto3).
- Buat Katalog Data AWS Glue menggunakan crawler AWS Glue (atau metode lain).
- Menggunakan Model Penyematan Teks Titan di Amazon Bedrock, ubah metadata menjadi penyematan dan simpan di OpenSearch Tanpa Server toko vektor.
Terapkan solusinya
Anda dapat menggunakan yang berikut ini: Notebook Jupyter, yang mencakup semua cuplikan kode yang disediakan di bagian ini, untuk membangun solusi. Kami merekomendasikan penggunaan Studio Amazon SageMaker untuk membuka notebook ini dengan instance ml.t3.medium dengan kernel Python 3 (Ilmu Data). Untuk instruksi, lihat Melatih Model Pembelajaran Mesin. Selesaikan langkah-langkah berikut untuk menyiapkan solusi:
- Buat basis pengetahuan di OpenSearch Service untuk kerangka RAG:
- Bangun perintah (
final_question
) dengan menggabungkan input pengguna dalam bahasa alami (user_query
), metadata yang relevan dari penyimpanan vektor (vector_search_match
), dan instruksi kami (details
): - Panggil Amazon Bedrock untuk LLM (Claude v2) dan minta untuk menghasilkan kueri SQL. Dalam kode berikut, ia melakukan beberapa upaya untuk mengilustrasikan langkah koreksi diri:x
- Jika ada masalah yang diterima dengan kueri SQL yang dihasilkan (
{sqlgenerated}
) dari tanggapan Athena ({syntaxcheckmsg}
), perintah baru (prompt
) dihasilkan berdasarkan respons dan model mencoba lagi untuk menghasilkan SQL baru: - Setelah SQL dibuat, klien Athena dipanggil untuk menjalankan dan menghasilkan output:
Uji solusinya
Di bagian ini, kami menjalankan solusi kami dengan contoh skenario berbeda untuk menguji tingkat kompleksitas kueri SQL yang berbeda.
Untuk menguji text-to-SQL kami, kami menggunakan dua kumpulan data tersedia dari IMDB. Subkumpulan data IMDb tersedia untuk penggunaan pribadi dan non-komersial. Anda dapat mengunduh kumpulan data dan menyimpannya Layanan Penyimpanan Sederhana Amazon (Amazon S3). Anda dapat menggunakan cuplikan Spark SQL berikut untuk membuat tabel di AWS Glue. Untuk contoh ini, kami menggunakan title_ratings
dan title
:
Simpan data di Amazon S3 dan metadata di AWS Glue
Dalam skenario ini, kumpulan data kami disimpan dalam bucket S3. Athena memiliki konektor S3 yang memungkinkan Anda menggunakan Amazon S3 sebagai sumber data yang dapat dikueri.
Untuk kueri pertama kami, kami memberikan masukan โSaya baru dalam hal ini. Bisakah Anda membantu saya melihat semua tabel dan kolom di skema imdb?โ
Berikut ini adalah kueri yang dihasilkan:
Tangkapan layar dan kode berikut menunjukkan keluaran kami.
Untuk pertanyaan kedua, kami meminta โTunjukkan semua judul dan detail di wilayah AS yang ratingnya lebih dari 9.5.โ
Berikut ini adalah kueri yang kami buat:
Tanggapannya adalah sebagai berikut.
Untuk kueri ketiga, kami memasukkan โRespon Hebat! Sekarang tunjukkan kepada saya semua judul tipe asli yang memiliki rating lebih dari 7.5 dan bukan di wilayah AS.โ
Kueri berikut dihasilkan:
Kami mendapatkan hasil berikut.
Hasilkan SQL yang dikoreksi sendiri
Skenario ini menyimulasikan kueri SQL yang memiliki masalah sintaksis. Di sini, SQL yang dihasilkan akan dikoreksi sendiri berdasarkan respons dari Athena. Sebagai tanggapan berikut, Athena memberikan a COLUMN_NOT_FOUND
kesalahan dan menyebutkan itu table_description
tidak dapat diselesaikan:
Menggunakan solusi dengan sumber data lain
Untuk menggunakan solusi dengan sumber data lain, Athena akan menangani tugasnya untuk Anda. Untuk melakukan ini, Athena menggunakan konektor sumber data yang dapat digunakan dengan pertanyaan gabungan. Anda dapat mempertimbangkan konektor sebagai perpanjangan dari mesin kueri Athena. Konektor sumber data Athena yang dibuat sebelumnya tersedia untuk sumber data seperti Log Amazon CloudWatch, Amazon DynamoDB, Amazon DocumentDB (dengan kompatibilitas MongoDB), dan Layanan Database Relasional Amazon (Amazon RDS), dan sumber data relasional yang sesuai dengan JDBC seperti MySQL, dan PostgreSQL di bawah lisensi Apache 2.0. Setelah Anda menyiapkan koneksi ke sumber data apa pun, Anda dapat menggunakan basis kode sebelumnya untuk memperluas solusinya. Untuk informasi lebih lanjut, lihat Kueri sumber data apa pun dengan kueri gabungan baru Amazon Athena.
Membersihkan
Untuk membersihkan sumber daya, Anda bisa memulainya membersihkan ember S3 Anda dimana datanya berada. Kecuali jika aplikasi Anda memanggil Amazon Bedrock, aplikasi tersebut tidak akan dikenakan biaya apa pun. Demi praktik terbaik pengelolaan infrastruktur, sebaiknya hapus sumber daya yang dibuat dalam demonstrasi ini.
Kesimpulan
Dalam postingan ini, kami menyajikan solusi yang memungkinkan Anda menggunakan NLP untuk menghasilkan kueri SQL kompleks dengan berbagai sumber daya yang diaktifkan oleh Athena. Kami juga meningkatkan keakuratan kueri SQL yang dihasilkan melalui putaran evaluasi multi-langkah berdasarkan pesan kesalahan dari proses hilir. Selain itu, kami menggunakan metadata di Katalog Data AWS Glue untuk mempertimbangkan nama tabel yang ditanyakan dalam kueri melalui kerangka RAG. Kami kemudian menguji solusi tersebut dalam berbagai skenario realistis dengan tingkat kompleksitas kueri yang berbeda. Terakhir, kita membahas cara menerapkan solusi ini ke berbagai sumber data yang didukung oleh Athena.
Amazon Bedrock adalah inti dari solusi ini. Amazon Bedrock dapat membantu Anda membangun banyak aplikasi AI generatif. Untuk memulai Amazon Bedrock, kami menyarankan Anda mengikuti langkah cepat berikut ini GitHub repo dan membiasakan diri Anda dalam membuat aplikasi AI generatif. Anda juga dapat mencoba basis pengetahuan di Amazon Bedrock untuk membangun solusi RAG tersebut dengan cepat.
Tentang Penulis
Sanjeeb Panda adalah insinyur Data dan ML di Amazon. Dengan latar belakang AI/ML, Ilmu Data, dan Big Data, Sanjeeb merancang dan mengembangkan solusi data dan ML inovatif yang memecahkan tantangan teknis kompleks dan mencapai tujuan strategis bagi penjual 3P global yang mengelola bisnis mereka di Amazon. Di luar pekerjaannya sebagai insinyur Data dan ML di Amazon, Sanjeeb Panda adalah seorang pecinta kuliner dan musik.
Burak Gozluklu adalah Arsitek Solusi Spesialis AI/ML Utama yang berlokasi di Boston, MA. Dia membantu pelanggan strategis mengadopsi teknologi AWS dan khususnya solusi AI Generatif untuk mencapai tujuan bisnis mereka. Burak memiliki gelar PhD di bidang Aerospace Engineering dari METU, MS di bidang Systems Engineering, dan post-doc di bidang dinamika sistem dari MIT di Cambridge, MA. Burak masih menjadi afiliasi penelitian di MIT. Burak sangat menyukai yoga dan meditasi.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- PlatoData.Jaringan Vertikal Generatif Ai. Berdayakan Diri Anda. Akses Di Sini.
- PlatoAiStream. Intelijen Web3. Pengetahuan Diperkuat. Akses Di Sini.
- PlatoESG. Karbon, teknologi bersih, energi, Lingkungan Hidup, Tenaga surya, Penanganan limbah. Akses Di Sini.
- PlatoHealth. Kecerdasan Uji Coba Biotek dan Klinis. Akses Di Sini.
- Sumber: https://aws.amazon.com/blogs/machine-learning/build-a-robust-text-to-sql-solution-generating-complex-queries-self-correcting-and-querying-diverse-data-sources/
- :memiliki
- :adalah
- :bukan
- :Di mana
- $NAIK
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 16
- 20
- 2024
- 22
- 23
- 29
- 30
- 32
- 39
- 50
- 500
- 521
- 7
- 8
- 9
- a
- Tentang Kami
- atas
- mengakses
- ketepatan
- tepat
- Mencapai
- menambahkan
- Selain itu
- alamat
- Menambahkan
- mengambil
- Adopsi
- Aerospace
- Bergabung
- Setelah
- lagi
- AI
- AI / ML
- bertujuan
- Rata
- Semua
- memungkinkan
- juga
- alternatif
- selalu
- am
- Amazon
- Amazon RDS
- Amazon Web Services
- an
- analisis
- dan
- menjawab
- Antropik
- Apa pun
- Apache
- berlaku
- Aplikasi
- aplikasi
- berlaku
- Mendaftar
- arsitektur
- arsitektur
- ADALAH
- AS
- meminta
- At
- atlanta
- usaha
- Mencoba
- atribut
- ditambah
- berwenang
- tersedia
- AWS
- Lem AWS
- latar belakang
- mendasarkan
- berdasarkan
- BE
- karena
- di bawah
- TERBAIK
- Praktik Terbaik
- Besar
- Big data
- Memblokir
- boston
- membawa
- membangun
- Bangunan
- dibangun di
- bisnis
- bisnis
- tapi
- by
- bernama
- cambridge
- CAN
- tidak bisa
- kemampuan
- mampu
- yang
- kasus
- katalog
- pusat
- terpusat
- menantang
- tantangan
- mengobrol
- diperiksa
- memeriksa
- membersihkan
- cli
- klien
- kode
- basis kode
- Mengumpulkan
- Kolom
- Kolom
- menggabungkan
- datang
- kedatangan
- dibandingkan
- pembandingan
- kesesuaian
- lengkap
- kompleks
- kompleksitas
- komponen
- komponen
- luas
- koneksi
- menghubungkan
- Mempertimbangkan
- konteks
- terus
- kontrol
- Konversi
- mengubah
- benar
- dikoreksi
- Koreksi
- Biaya
- menghitung
- menutupi
- membuat
- dibuat
- menciptakan
- kritis
- pelanggan
- data
- ilmu data
- Basis Data
- database
- kumpulan data
- Tanggal
- tanggal Waktu
- disampaikan
- menunjukkan
- Mendesain
- pola desain
- diinginkan
- Meskipun
- rincian
- mengembangkan
- diagram
- MELAKUKAN
- berbeda
- membahas
- dibahas
- beberapa
- do
- docs
- dokumen
- Download
- selama
- dinamika
- Efektif
- lain
- munculnya
- aktif
- diaktifkan
- Mesin
- insinyur
- Teknik
- memperkaya
- memastikan
- Enter
- Enterprise
- Masuk
- penggemar
- kesalahan
- kesalahan
- evaluasi
- Bahkan
- Setiap
- contoh
- contoh
- luar biasa
- mengeksekusi
- ada
- ada
- Menjelaskan
- memperpanjang
- perpanjangan
- tambahan
- Gagal
- palsu
- Fitur
- umpan balik
- terakhir
- Akhirnya
- temuan
- Pertama
- aliran
- mengikuti
- berikut
- berikut
- Untuk
- Kerangka
- dari
- lebih lanjut
- celah
- memberikan
- menghasilkan
- dihasilkan
- menghasilkan
- menghasilkan
- generasi
- generatif
- AI generatif
- mendapatkan
- mendapat
- Aksi
- Anda
- mendapat
- Menangani
- Memiliki
- memiliki
- he
- membantu
- membantu
- di sini
- berkualitas tinggi
- sangat
- -nya
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- Namun
- HTML
- http
- HTTPS
- Pusat
- manusia
- i
- diidentifikasi
- if
- menjelaskan
- menggambarkan
- implikasi
- penting
- in
- tidak akurat
- memasukkan
- termasuk
- menggabungkan
- menggabungkan
- salah
- Meningkatkan
- Pada meningkat
- indeks
- sendiri-sendiri
- Info
- informasi
- Infrastruktur
- inheren
- secara inheren
- mulanya
- batin
- inovatif
- memasukkan
- contoh
- instruksi
- ke
- dipanggil
- memanggil
- isu
- masalah
- IT
- perulangan
- Pekerjaan
- ikut
- jpg
- pengetahuan
- danau
- bahasa
- besar
- lebih besar
- BELAJAR
- pengetahuan
- Tingkat
- adalah ide yang bagus
- Lisensi
- 'like'
- MEMBATASI
- baris
- LLM
- terletak
- cinta
- mesin
- Mesin belajar
- membuat
- MEMBUAT
- pengelolaan
- pelaksana
- banyak
- matematis
- Mungkin..
- me
- meditasi
- medium
- tersebut
- sebutan
- pesan
- pesan
- Metadata
- metode
- mungkin
- memperkecil
- MIT
- Mengurangi
- ML
- model
- model
- MongoDB
- lebih
- MS
- beberapa
- banyaknya
- musik
- mysql
- nama
- nama
- Alam
- Pengolahan Bahasa alami
- Perlu
- kebutuhan
- New
- berikutnya
- nLP
- non-komersial
- buku catatan
- sekarang
- jumlah
- target
- of
- sering
- on
- hanya
- Buka
- Operasi
- or
- urutan
- asli
- Lainnya
- kami
- keluaran
- di luar
- secara keseluruhan
- Lulus
- bergairah
- path
- pola
- Konsultan Ahli
- prestasi
- dilakukan
- pribadi
- phd
- plato
- Kecerdasan Data Plato
- Data Plato
- silahkan
- Pos
- Postgresql
- praktek
- mendahului
- perlu
- prasyarat
- menyajikan
- disajikan
- Utama
- Masalah
- proses
- proses
- pengolahan
- meminta
- memberikan
- disediakan
- menyediakan
- tujuan
- Ular sanca
- query
- pertanyaan
- pertanyaan
- Cepat
- segera
- tanda kutip
- lap
- penilaian
- peringkat
- Baca
- siap
- realistis
- menerima
- diterima
- sarankan
- lihat
- wilayah
- terkait
- relevan
- tinggal
- sisa
- mewakili
- permintaan
- wajib
- Persyaratan
- membutuhkan
- penelitian
- tinggal
- menyelesaikan
- diselesaikan
- Sumber
- menghormati
- tanggapan
- mengakibatkan
- Hasil
- pengambilan
- kembali
- benar
- Bangkit
- Risiko
- risiko
- kuat
- BARIS
- Run
- pembuat bijak
- sake
- sama
- melihat
- skenario
- skenario
- Ilmu
- mencari
- Kedua
- Bagian
- melihat
- memilih
- DIRI
- Penjual
- mengirim
- Tanpa Server
- melayani
- layanan
- Layanan
- set
- harus
- Menunjukkan
- menunjukkan
- ditunjukkan
- sisi
- penting
- Sederhana
- kesederhanaan
- disederhanakan
- tunggal
- potongan
- larutan
- Solusi
- MEMECAHKAN
- beberapa
- sumber
- sumber
- percikan
- spesialis
- Secara khusus
- Tahap
- awal
- mulai
- Negara
- Pernyataan
- Status
- Langkah
- Tangga
- Masih
- penyimpanan
- menyimpan
- tersimpan
- mudah
- Strategis
- Tali
- tersusun
- seperti itu
- Didukung
- yakin
- sintaksis
- SYS
- sistem
- sistem
- tabel
- Mengambil
- target
- tugas
- Teknis
- Teknologi
- uji
- diuji
- teks
- dari
- bahwa
- Grafik
- hub
- mereka
- Mereka
- kemudian
- Sana.
- karena itu
- Ini
- Ketiga
- ini
- itu
- tiga
- Melalui
- kali
- Judul
- judul
- untuk
- hari ini
- Transformasi
- mencoba
- dua
- mengetik
- jenis
- ui
- bawah
- mengalami
- pemahaman
- kecuali kalau
- Memperbarui
- diperbarui
- us
- menggunakan
- bekas
- Pengguna
- Pengguna
- kegunaan
- menggunakan
- MENGESAHKAN
- nilai
- variasi
- berbagai
- bervariasi
- melalui
- 'view'
- Bangun
- berjalan
- Cara..
- we
- jaringan
- aplikasi web
- layanan web
- sedangkan
- yang
- sementara
- yang
- akan
- dengan
- dalam
- tanpa
- Kerja
- alur kerja
- menulis
- penulisan
- X
- Yoga
- Kamu
- Anda
- diri
- zephyrnet.dll