Struktureeritud päringukeel (SQL) on keeruline keel, mis nõuab andmebaaside ja metaandmete mõistmist. Täna generatiivne AI võimaldab inimestel ilma SQL-i teadmisteta. Seda generatiivset AI ülesannet nimetatakse tekstiks SQL-iks, mis genereerib SQL-päringuid loomuliku keele töötlemisest (NLP) ja teisendab teksti semantiliselt õigeks SQL-iks. Selle postituse lahenduse eesmärk on viia ettevõtte analüütikatoimingud järgmisele tasemele, lühendades teie andmeteni jõudmist loomuliku keele abil.
Suurte keelemudelite (LLM) ilmumisega on NLP-põhine SQL-i genereerimine läbi teinud olulise ümberkujundamise. Näidates erakordset jõudlust, on LLM-id nüüd võimelised genereerima loomuliku keele kirjeldustest täpseid SQL-päringuid. Siiski on endiselt väljakutseid. Esiteks on inimkeel oma olemuselt mitmetähenduslik ja kontekstist sõltuv, samas kui SQL on täpne, matemaatiline ja struktureeritud. See lünk võib põhjustada kasutaja vajaduste ebatäpse teisendamise loodud SQL-i. Teiseks võib tekkida vajadus luua iga andmebaasi jaoks tekstist SQL-i funktsioonid, kuna andmeid ei salvestata sageli ühte sihtmärki. NLP-põhise SQL-i genereerimise võimaldamiseks peate võib-olla iga andmebaasi jaoks uuesti looma. Kolmandaks, vaatamata tsentraliseeritud analüüsilahenduste, nagu andmejärvede ja laod, suuremale kasutuselevõtule suureneb keerukus erinevate tabelinimede ja muude metaandmetega, mida on vaja soovitud allikate jaoks SQL-i loomiseks. Seetõttu jääb väljakutseks ka terviklike ja kvaliteetsete metaandmete kogumine. Teksti-SQL-i parimate tavade ja kujundusmustrite kohta lisateabe saamiseks vt Ettevõtte andmetest väärtuse loomine: Text2SQL-i ja generatiivse AI parimad tavad.
Meie lahenduse eesmärk on lahendada need väljakutsed kasutades Amazonase aluspõhi ja AWS Analyticsi teenused. Me kasutame Antroopiline Claude v2.1 Amazon Bedrockis meie LLM-ina. Väljakutsete lahendamiseks hõlmab meie lahendus esmalt süsteemis olevate andmeallikate metaandmeid AWS-i liimiandmete kataloog genereeritud SQL-päringu täpsuse suurendamiseks. Töövoog sisaldab ka lõplikku hindamist ja parandustsüklit juhuks, kui SQL-i probleeme tuvastab Amazonase Athena, mida kasutatakse allavoolu SQL-mootorina. Athena võimaldab meil kasutada ka paljusid toetatud lõpp-punktid ja konnektorid et katta suur hulk andmeallikaid.
Pärast lahenduse loomise etappide läbimist esitame mõne erineva SQL-i keerukusastmega testistsenaariumi tulemused. Lõpuks arutame, kuidas on lihtne oma SQL-päringutesse lisada erinevaid andmeallikaid.
Lahenduse ülevaade
Meie arhitektuuris on kolm kriitilist komponenti: Retrieval Augmented Generation (RAG) koos andmebaasi metaandmetega, mitmeastmeline eneseparandussilmus ja Athena kui meie SQL-mootor.
Kasutame RAG-meetodit tabelikirjelduste ja skeemikirjelduste (veerude) hankimiseks AWS Glue'i metapoest, et tagada päringu seotus õigete tabelite ja andmekogumitega. Meie lahenduses koostasime üksikud sammud RAG-raamistiku käitamiseks koos AWS-i liimiandmete kataloogiga demonstratsiooni eesmärgil. Samas võid ka kasutada teadmistebaasid Amazon Bedrockis, et kiiresti RAG-lahendusi luua.
Mitmeastmeline komponent võimaldab LLM-il genereeritud SQL-päringut täpsuse huvides parandada. Siin saadetakse genereeritud SQL süntaksivigade jaoks. Kasutame Athena veateateid, et rikastada LLM-i viipa, et genereeritud SQL-is täpsemaid ja tõhusamaid parandusi teha.
Athenast aeg-ajalt tulevaid veateateid võib pidada tagasisideks. Veaparandusetapi kulumõjud on tarnitud väärtusega võrreldes tühised. Võite isegi lisada need korrigeerivad toimingud juhendatud tugevdatud õppe näidetena, et oma LLM-e täpsustada. Kuid me ei käsitlenud seda voolu oma postituses lihtsuse huvides.
Pange tähele, et alati on ebatäpsuste oht, mis loomulikult kaasneb generatiivsete AI-lahendustega. Isegi kui Athena veateated on selle riski maandamiseks väga tõhusad, saate selliste riskide edasiseks minimeerimiseks lisada rohkem juhtelemente ja vaateid, nagu inimeste tagasiside või näidispäringud peenhäälestamiseks.
Athena mitte ainult ei võimalda meil SQL-päringuid parandada, vaid lihtsustab ka meie üldist probleemi, kuna see toimib jaoturina, kus kodarateks on mitu andmeallikat. Juurdepääsu haldamine, SQL-i süntaks ja palju muud hallatakse Athena kaudu.
Järgnev diagramm illustreerib lahenduse arhitektuuri.
Protsessi voog sisaldab järgmisi samme:
- Looge AWS-i liimiandmete kataloog kasutades AWS Glue roomikut (või mõni muu meetod).
- kasutades Titan-Text-Embeddingsi mudel Amazon Bedrockis, teisendage metaandmed manusteks ja salvestage need a Amazon OpenSearch Serverita vektorpood, mis toimib meie teadmistebaasina meie RAGi raamistikus.
Selles etapis on protsess valmis päringu vastuvõtmiseks loomulikus keeles. Sammud 7–9 esindavad parandusahelat, kui see on kohaldatav.
- Kasutaja sisestab päringu loomulikus keeles. Vestluse kasutajaliidese pakkumiseks saate kasutada mis tahes veebirakendust. Seetõttu ei käsitlenud me oma postituses kasutajaliidese üksikasju.
- Lahendus rakendab RAG-i raamistikku sarnasuse otsing, mis lisab vektorandmebaasi metaandmetest täiendava konteksti. Seda tabelit kasutatakse õige tabeli, andmebaasi ja atribuutide leidmiseks.
- Päring liidetakse kontekstiga ja saadetakse aadressile Antroopiline Claude v2.1 Amazon Bedrockis.
- Mudel saab loodud SQL-päringu ja loob ühenduse Athenaga, et kinnitada süntaks.
- Kui Athena esitab veateate, milles mainitakse, et süntaks on vale, kasutab mudel Athena vastuse veateksti.
- Uus viip lisab Athena vastuse.
- Mudel loob parandatud SQL-i ja jätkab protsessi. Seda iteratsiooni saab teha mitu korda.
- Lõpuks käivitame SQL-i Athena abil ja genereerime väljundi. Siin esitatakse väljund kasutajale. Arhitektuurilise lihtsuse huvides me seda sammu ei näidanud.
Eeldused
Selle postituse jaoks peaksite täitma järgmised eeltingimused:
- on AWS-i konto.
- paigaldama the,en AWS-i käsurea liides (AWS CLI).
- Seadistage SDK Pythoni jaoks (Boto3).
- Looge AWS-i liimiandmete kataloog kasutades AWS Glue roomikut (või mõni muu meetod).
- kasutades Titan-Text-Embeddingsi mudel Amazon Bedrockis, teisendage metaandmed manusteks ja salvestage need OpenSearchi serverita vektorpood.
Rakenda lahendus
Võite kasutada järgmist Jupyteri märkmik, mis sisaldab kõiki selles jaotises esitatud koodilõike, et lahendus luua. Soovitame kasutada Amazon SageMaker Studio selle märkmiku avamiseks ml.t3.medium eksemplariga Python 3 (Data Science) tuumaga. Juhiste saamiseks vaadake Treenige masinõppemudelit. Lahenduse seadistamiseks tehke järgmised sammud.
- Looge RAG-raamistiku jaoks teadmistebaas OpenSearch Service'is:
- Koostage viip (
final_question
) kombineerides kasutaja sisendi loomulikus keeles (user_query
), asjakohased metaandmed vektorite salvest (vector_search_match
) ja meie juhised (details
): - Kutsuge LLM-i jaoks välja Amazon Bedrock (Claude v2) ja paluge tal genereerida SQL-päring. Järgmises koodis teeb see mitu katset, et illustreerida eneseparanduse sammu:x
- Kui genereeritud SQL-päringuga tekib probleeme (
{sqlgenerated}
) Athena vastusest ({syntaxcheckmsg}
), uus viip (prompt
) genereeritakse vastuse põhjal ja mudel proovib uuesti luua uut SQL-i: - Pärast SQL-i genereerimist kutsutakse Athena klient käivitama ja väljundit genereerima:
Testige lahendust
Selles jaotises käitame oma lahendust erinevate näidisstsenaariumitega, et testida SQL-päringute erinevaid keerukustasemeid.
Teksti-SQL-i testimiseks kasutame kahte IMDB-st saadaolevad andmestikud. IMDb andmete alamhulgad on saadaval isiklikuks ja mitteäriliseks kasutamiseks. Saate andmestikud alla laadida ja salvestada Amazoni lihtne salvestusteenus (Amazon S3). AWS Glue'is tabelite loomiseks saate kasutada järgmist Spark SQL-i fragmenti. Selle näite puhul kasutame title_ratings
ja title
:
Salvestage andmeid Amazon S3-s ja metaandmeid AWS Glue'is
Selle stsenaariumi korral salvestatakse meie andmestik S3 ämbrisse. Athenal on S3 pistik, mis võimaldab kasutada Amazon S3 andmeallikana, millest saab päringuid teha.
Esimese päringu jaoks anname sisendi „Ma olen selles uus. Kas saate aidata mul näha kõiki imdb skeemi tabeleid ja veerge?
Loodud päring on järgmine:
Järgmine ekraanipilt ja kood näitavad meie väljundit.
Teise päringu puhul palume "Kuva mulle kogu pealkiri ja üksikasjad USA piirkonnas, mille reiting on üle 9.5."
Järgmine on meie loodud päring:
Vastus on järgmine.
Kolmanda päringu jaoks sisestame "Suurepärane vastus! Nüüd näidake mulle kõiki originaaltüüpi pealkirju, mille reitingud on üle 7.5 ja mitte USA piirkonnas.
Genereeritakse järgmine päring:
Saame järgmised tulemused.
Looge isekorrigeeritud SQL
See stsenaarium simuleerib SQL-päringut, millel on süntaksiprobleemid. Siin korrigeeritakse loodud SQL-i Athena vastuse põhjal ise. Järgmises vastuses andis Athena a COLUMN_NOT_FOUND
viga ja mainis seda table_description
ei saa lahendada:
Lahenduse kasutamine koos teiste andmeallikatega
Lahenduse kasutamiseks koos teiste andmeallikatega tegeleb Athena selle tööga teie eest. Selleks kasutab Athena andmeallika konnektorid millega saab kasutada liitpäringud. Pistikut võite pidada Athena päringumootori laienduseks. Selliste andmeallikate jaoks on olemas eelehitatud Athena andmeallika konnektorid Amazon CloudWatchi logid, Amazon DynamoDB, Amazon DocumentDB (ühilduv MongoDB-ga)ja Amazoni relatsioonide andmebaasiteenus (Amazon RDS) ja JDBC-ga ühilduvad relatsiooniandmeallikad, nagu MySQL ja PostgreSQL Apache 2.0 litsentsi alusel. Pärast mis tahes andmeallikaga ühenduse loomist saate lahenduse laiendamiseks kasutada eelmist koodibaasi. Lisateabe saamiseks vaadake Tehke päringuid mis tahes andmeallikast Amazon Athena uue ühendatud päringuga.
Koristage
Ressursside puhastamiseks võite alustada puhastage oma S3 ämber kus andmed asuvad. Kui teie rakendus ei kasuta Amazon Bedrocki, ei kaasne sellega mingeid kulusid. Infrastruktuuri haldamise parimate tavade huvides soovitame selles demonstratsioonis loodud ressursid kustutada.
Järeldus
Selles postituses tutvustasime lahendust, mis võimaldab NLP-d kasutada keeruliste SQL-päringute genereerimiseks Athena võimaldatud mitmesuguste ressurssidega. Samuti suurendasime genereeritud SQL-päringute täpsust mitmeastmelise hindamistsükli kaudu, mis põhines allavoolu protsesside veateadetel. Lisaks kasutasime AWS-i liimiandmete kataloogi metaandmeid, et võtta arvesse RAG-raamistiku kaudu päringus küsitud tabelinimesid. Seejärel katsetasime lahendust erinevates realistlikes stsenaariumides ja erineva päringu keerukuse tasemega. Lõpuks arutasime, kuidas seda lahendust erinevatele Athena toetatud andmeallikatele rakendada.
Selle lahenduse keskmes on Amazon Bedrock. Amazon Bedrock aitab teil luua palju generatiivseid AI-rakendusi. Amazon Bedrockiga alustamiseks soovitame järgida alljärgnevat kiiret algust GitHub repo ja tutvuda generatiivsete AI-rakenduste loomisega. Võite ka proovida teadmistebaasid Amazon Bedrockis, et selliseid RAG-lahendusi kiiresti ehitada.
Autoritest
Sanjeeb Panda on Amazoni andme- ja ML-insener. AI/ML-i, andmeteaduse ja suurandmete taustaga Sanjeeb kavandab ja arendab uuenduslikke andme- ja ML-lahendusi, mis lahendavad keerulisi tehnilisi väljakutseid ja saavutavad strateegilisi eesmärke ülemaailmsete 3P-müüjate jaoks, kes haldavad oma äri Amazonis. Väljaspool oma tööd andmete ja ML-i insenerina Amazonis on Sanjeeb Panda innukas toidu- ja muusikaentusiast.
Burak Gozluklu on peamine AI/ML spetsialistilahenduste arhitekt, mis asub Bostonis, MA. Ta aitab strateegilistel klientidel oma ärieesmärkide saavutamiseks kasutusele võtta AWS-tehnoloogiaid ja konkreetselt generatiivseid AI-lahendusi. Burakil on doktorikraad lennundustehnika alal METU-st, magistrikraadikraad süsteemitehnika alal ja järeldoktorikraad süsteemidünaamika alal MIT-st Cambridge'is, MA. Burak on endiselt MIT-i teadusuuringute sidusettevõte. Burak on kirglik jooga ja meditatsiooni vastu.
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- PlatoData.Network Vertikaalne generatiivne Ai. Jõustage ennast. Juurdepääs siia.
- PlatoAiStream. Web3 luure. Täiustatud teadmised. Juurdepääs siia.
- PlatoESG. Süsinik, CleanTech, Energia, Keskkond päikeseenergia, Jäätmekäitluse. Juurdepääs siia.
- PlatoTervis. Biotehnoloogia ja kliiniliste uuringute luureandmed. Juurdepääs siia.
- Allikas: https://aws.amazon.com/blogs/machine-learning/build-a-robust-text-to-sql-solution-generating-complex-queries-self-correcting-and-querying-diverse-data-sources/
- :on
- :on
- :mitte
- : kus
- $ UP
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 16
- 20
- 2024
- 22
- 23
- 29
- 30
- 32
- 39
- 50
- 500
- 521
- 7
- 8
- 9
- a
- MEIST
- üle
- juurdepääs
- täpsus
- täpne
- Saavutada
- lisama
- Lisaks
- aadress
- Lisab
- vastu võtma
- Vastuvõtmine
- Aerospace
- filiaal
- pärast
- jälle
- AI
- AI / ML
- Eesmärgid
- Joondab
- Materjal: BPA ja flataatide vaba plastik
- võimaldab
- Ka
- alternatiiv
- alati
- am
- Amazon
- Amazoni RDS
- Amazon Web Services
- an
- analytics
- ja
- vastus
- Antroopne
- mistahes
- Apache
- kohaldatav
- taotlus
- rakendused
- kehtib
- kehtima
- arhitektuuri-
- arhitektuur
- OLEME
- AS
- küsima
- At
- Atlanta
- katse
- Katsed
- atribuudid
- suurendatud
- volitatud
- saadaval
- AWS
- AWS liim
- tagapõhi
- baas
- põhineb
- BE
- sest
- alla
- BEST
- parimaid tavasid
- Suur
- Big andmed
- Blokeerima
- boston
- tooma
- ehitama
- Ehitus
- ehitatud
- äri
- ettevõtted
- kuid
- by
- kutsutud
- Cambridge
- CAN
- ei saa
- võime
- võimeline
- mis
- juhul
- kataloog
- keskus
- tsentraliseeritud
- väljakutse
- väljakutseid
- vestlus
- kontrollitud
- kontroll
- puhastama
- cli
- klient
- kood
- koodi alus
- Kollektsioneerimine
- Veerg
- Veerud
- kombineerimine
- tuleb
- tulevad
- võrreldes
- võrrelda
- ühilduvus
- täitma
- keeruline
- keerukus
- komponent
- komponendid
- terviklik
- ühendus
- ühendab
- Arvestama
- kontekst
- pidev
- kontrolli
- Konverteerimine
- muutma
- parandada
- Parandatud
- Parandused
- Maksma
- loe
- cover
- looma
- loodud
- loob
- kriitiline
- Kliendid
- andmed
- andmeteadus
- andmebaas
- andmebaasid
- andmekogumid
- kuupäev
- kuupäev Kellaaeg
- esitatud
- näidates
- Disain
- kujundusmustrid
- soovitud
- Vaatamata
- detailid
- arendama
- skeem
- DID
- erinev
- arutama
- arutatud
- mitu
- do
- docs
- dokumendid
- lae alla
- ajal
- dünaamika
- Tõhus
- teine
- tekkimine
- võimaldama
- lubatud
- Mootor
- insener
- Inseneriteadus
- rikastab
- tagama
- sisene
- ettevõte
- Siseneb
- entusiast
- viga
- vead
- hindamine
- Isegi
- Iga
- näide
- näited
- erandlik
- hukkamine
- eksisteerima
- olemasolevate
- Selgitama
- laiendama
- laiendamine
- lisatasu
- Ebaõnnestunud
- vale
- FUNKTSIOONID
- tagasiside
- lõplik
- Lõpuks
- leidmine
- esimene
- voog
- järgima
- Järel
- järgneb
- eest
- Raamistik
- Alates
- edasi
- lõhe
- andis
- tekitama
- loodud
- genereerib
- teeniva
- põlvkond
- generatiivne
- Generatiivne AI
- saama
- saab
- Globaalne
- Eesmärgid
- sain
- Varred
- Olema
- võttes
- he
- aitama
- aitab
- siin
- kvaliteetne
- kõrgelt
- tema
- Kuidas
- Kuidas
- aga
- HTML
- http
- HTTPS
- Keskus
- inim-
- i
- tuvastatud
- if
- Illustreerima
- illustreerib
- mõjud
- oluline
- in
- ebatäpne
- sisaldama
- hõlmab
- lisada
- sisaldab
- ebaõige
- Suurendama
- kasvanud
- indeks
- eraldi
- info
- info
- Infrastruktuur
- omane
- olemuselt
- esialgne
- sisemine
- uuenduslik
- sisend
- Näiteks
- juhised
- sisse
- kutsutud
- kutsub
- probleem
- küsimustes
- IT
- iteratsioon
- töö
- liituma
- jpg
- teadmised
- järved
- keel
- suur
- suurem
- Õppida
- õppimine
- Tase
- taset
- litsents
- nagu
- LIMIT
- joon
- LLM
- asub
- armastus
- masin
- masinõpe
- tegema
- TEEB
- juhtimine
- juhtiv
- palju
- matemaatiline
- mai..
- me
- meditatsioon
- keskmine
- mainitud
- mainib
- sõnum
- kirjad
- Metaandmed
- meetod
- võib
- minimeerima
- MIT
- Leevendada
- ML
- mudel
- mudelid
- MongoDB
- rohkem
- MS
- mitmekordne
- rohkus
- muusika
- MySQL
- nimi
- nimed
- Natural
- Natural Language Processing
- Vajadus
- vajadustele
- Uus
- järgmine
- nlp
- mitteäriline
- märkmik
- nüüd
- number
- eesmärgid
- of
- sageli
- on
- ainult
- avatud
- Operations
- or
- et
- originaal
- Muu
- meie
- väljund
- väljaspool
- üldine
- Vastu võetud
- kirglik
- tee
- mustrid
- Inimesed
- jõudlus
- teostatud
- isiklik
- phd
- Platon
- Platoni andmete intelligentsus
- PlatoData
- palun
- post
- Postgresql
- tavad
- eelnev
- vajadus
- eeldused
- esitada
- esitatud
- Peamine
- Probleem
- protsess
- Protsessid
- töötlemine
- küsib
- anda
- tingimusel
- annab
- eesmärkidel
- Python
- päringud
- päringu
- küsimus
- Kiire
- kiiresti
- quotes
- rag
- hinnang
- hinnangust
- Lugenud
- valmis
- realistlik
- saama
- saadud
- soovitama
- viitama
- piirkond
- seotud
- asjakohane
- jääma
- jäänused
- esindama
- taotleda
- nõutav
- Nõuded
- Vajab
- teadustöö
- elab
- lahendama
- lahendatud
- Vahendid
- suhtes
- vastus
- kaasa
- Tulemused
- otsing
- tagasipöördumine
- õige
- Tõuseb
- Oht
- riskide
- jõuline
- ROW
- jooks
- salveitegija
- sake
- sama
- nägin
- stsenaarium
- stsenaariumid
- teadus
- otsimine
- Teine
- Osa
- vaata
- valima
- SELF
- Sellers
- Saadetud
- Serverita
- teenib
- teenus
- Teenused
- komplekt
- peaks
- näitama
- näidates
- näidatud
- külg
- märkimisväärne
- lihtne
- lihtsus
- lihtsustab
- ühekordne
- jupp
- lahendus
- Lahendused
- LAHENDAGE
- mõned
- allikas
- Allikad
- Säde
- spetsialist
- eriti
- Stage
- algus
- alustatud
- riik
- väljavõte
- olek
- Samm
- Sammud
- Veel
- ladustamine
- salvestada
- ladustatud
- lihtne
- Strateegiline
- nöör
- struktureeritud
- selline
- Toetatud
- kindel
- süntaks
- Sys
- süsteem
- süsteemid
- tabel
- Võtma
- sihtmärk
- Ülesanne
- Tehniline
- Tehnoloogiad
- test
- katsetatud
- tekst
- kui
- et
- .
- jaotur
- oma
- Neile
- SIIS
- Seal.
- seetõttu
- Need
- Kolmas
- see
- need
- kolm
- Läbi
- korda
- Kapslid
- pealkirjad
- et
- täna
- Transformation
- püüdma
- kaks
- tüüp
- liigid
- ui
- all
- läbitud
- mõistmine
- kui
- Värskendused
- ajakohastatud
- us
- kasutama
- Kasutatud
- Kasutaja
- Kasutajad
- kasutusalad
- kasutamine
- KINNITAGE
- väärtus
- sort
- eri
- varieeruv
- kaudu
- vaated
- Ärka
- kõndima
- Tee..
- we
- web
- Veebirakendus
- veebiteenused
- samas kui
- mis
- kuigi
- kelle
- will
- koos
- jooksul
- ilma
- Töö
- töövoog
- kirjutama
- kirjutamine
- X
- jooga
- sa
- Sinu
- ise
- sephyrnet