Structured Query Language (SQL) je kompleksen jezik, ki zahteva razumevanje baz podatkov in metapodatkov. danes, generativni AI lahko omogoči ljudem brez znanja SQL. Ta generativna naloga umetne inteligence se imenuje besedilo v SQL, ki ustvarja poizvedbe SQL iz obdelave naravnega jezika (NLP) in pretvori besedilo v semantično pravilen SQL. Rešitev v tej objavi želi prenesti analitične operacije podjetja na višjo raven s skrajšanjem poti do vaših podatkov z uporabo naravnega jezika.
S pojavom velikih jezikovnih modelov (LLM) je generacija SQL, ki temelji na NLP, doživela pomembno preobrazbo. LLM-ji, ki izkazujejo izjemno zmogljivost, so zdaj sposobni generirati natančne poizvedbe SQL iz opisov v naravnem jeziku. Vendar izzivi še vedno ostajajo. Prvič, človeški jezik je sam po sebi dvoumen in odvisen od konteksta, medtem ko je SQL natančen, matematičen in strukturiran. Ta vrzel lahko povzroči netočno pretvorbo uporabnikovih potreb v generirani SQL. Drugič, morda boste morali zgraditi funkcije besedila v SQL za vsako bazo podatkov, ker podatki pogosto niso shranjeni v enem samem cilju. Morda boste morali znova ustvariti zmogljivost za vsako zbirko podatkov, da uporabnikom omogočite generiranje SQL, ki temelji na NLP. Tretjič, kljub večjemu sprejemanju centraliziranih analitičnih rešitev, kot so podatkovna jezera in skladišča, kompleksnost narašča z različnimi imeni tabel in drugimi metapodatki, ki so potrebni za ustvarjanje SQL za želene vire. Zato ostaja izziv tudi zbiranje celovitih in kakovostnih metapodatkov. Če želite izvedeti več o najboljših praksah in vzorcih oblikovanja besedila v SQL, glejte Ustvarjanje vrednosti iz podatkov podjetja: najboljše prakse za Text2SQL in generativni AI.
Naša rešitev je namenjena reševanju teh izzivov z uporabo Amazon Bedrock in Analitske storitve AWS. Uporabljamo Antropični Claude v2.1 na Amazon Bedrock kot naš LLM. Za reševanje izzivov naša rešitev najprej vključuje metapodatke podatkovnih virov znotraj Katalog podatkov o lepilu AWS za povečanje natančnosti ustvarjene poizvedbe SQL. Potek dela vključuje tudi končno ocenjevanje in zanko popravljanja, v primeru, da odkrije kakršne koli težave s SQL Amazonska Atena, ki se na nižji stopnji uporablja kot mehanizem SQL. Athena nam omogoča tudi uporabo množice podprte končne točke in priključki za pokrivanje velikega nabora virov podatkov.
Ko se sprehodimo skozi korake za izdelavo rešitve, predstavimo rezultate nekaterih testnih scenarijev z različnimi stopnjami kompleksnosti SQL. Nazadnje razpravljamo o tem, kako je preprosto vključiti različne vire podatkov v vaše poizvedbe SQL.
Pregled rešitev
V naši arhitekturi so tri kritične komponente: Retrieval Augmented Generation (RAG) z metapodatki baze podatkov, večstopenjska zanka za samopopravljanje in Athena kot naš motor SQL.
Metodo RAG uporabljamo za pridobivanje opisov tabel in opisov shem (stolpcev) iz metashrambe AWS Glue, da zagotovimo, da je zahteva povezana s pravo tabelo in nabori podatkov. V naši rešitvi smo zgradili posamezne korake za izvajanje ogrodja RAG s katalogom podatkov AWS Glue Data Catalog za namene predstavitve. Vendar pa lahko uporabite tudi baze znanja v Amazon Bedrock za hitro izdelavo rešitev RAG.
Večstopenjska komponenta omogoča LLM, da popravi ustvarjeno poizvedbo SQL za natančnost. Tukaj se ustvarjeni SQL pošlje za sintaksne napake. Sporočila o napakah Athena uporabljamo za obogatitev našega poziva za LLM za natančnejše in učinkovitejše popravke v ustvarjenem SQL.
Sporočila o napakah, ki občasno prihajajo iz Athene, lahko obravnavate kot povratne informacije. Stroškovne posledice koraka odprave napak so zanemarljive v primerjavi z dostavljeno vrednostjo. Te korektivne korake lahko celo vključite kot nadzorovane primere okrepljenega učenja za natančno nastavitev svojih LLM. Vendar tega toka zaradi poenostavitve nismo zajeli v naši objavi.
Upoštevajte, da vedno obstaja neločljivo tveganje za netočnosti, kar seveda prihaja z generativnimi rešitvami AI. Tudi če so sporočila o napakah Athena zelo učinkovita za ublažitev tega tveganja, lahko dodate več kontrolnikov in pogledov, kot so človeške povratne informacije ali primeri poizvedb za natančno nastavitev, da dodatno zmanjšate takšna tveganja.
Athena nam ne samo omogoča, da popravimo poizvedbe SQL, ampak nam tudi poenostavi celotno težavo, saj služi kot središče, kjer so kraki več virov podatkov. Upravljanje dostopa, sintaksa SQL in drugo se upravlja prek Athene.
Naslednji diagram prikazuje arhitekturo rešitev.
Potek postopka vključuje naslednje korake:
- Ustvarite katalog podatkov o lepilu AWS z uporabo pajka AWS Glue (ali drugačna metoda).
- Uporaba Model Titan-Text-Embeddings na Amazon Bedrock, metapodatke pretvorite v vdelave in jih shranite v Amazon OpenSearch brez strežnika vektorska trgovina, ki služi kot naša baza znanja v našem ogrodju RAG.
Na tej stopnji je proces pripravljen za sprejem poizvedbe v naravnem jeziku. Koraki 7–9 predstavljajo korekcijsko zanko, če je primerna.
- Uporabnik svojo poizvedbo vnese v naravnem jeziku. Za uporabniški vmesnik za klepet lahko uporabite katero koli spletno aplikacijo. Zato v naši objavi nismo zajeli podrobnosti uporabniškega vmesnika.
- Rešitev uporablja okvir RAG prek iskanje podobnosti, ki doda dodaten kontekst iz metapodatkov iz vektorske zbirke podatkov. Ta tabela se uporablja za iskanje prave tabele, baze podatkov in atributov.
- Poizvedba se združi s kontekstom in pošlje v Antropični Claude v2.1 na Amazon Bedrock.
- Model dobi ustvarjeno poizvedbo SQL in se poveže z Atheno, da potrdi sintakso.
- Če Athena prikaže sporočilo o napaki, ki omenja, da je sintaksa napačna, model uporabi besedilo napake iz Atheninega odgovora.
- Nov poziv doda Athenin odgovor.
- Model ustvari popravljeni SQL in nadaljuje postopek. To ponovitev je mogoče izvesti večkrat.
- Na koncu zaženemo SQL z uporabo Athene in ustvarimo izhod. Tukaj je rezultat predstavljen uporabniku. Zaradi arhitekturne preprostosti tega koraka nismo prikazali.
Predpogoji
Za to objavo morate izpolniti naslednje predpogoje:
- imeti AWS račun.
- namestitev o Vmesnik ukazne vrstice AWS (AWS CLI).
- Nastavite SDK za Python (Boto3).
- Ustvarite katalog podatkov o lepilu AWS z uporabo pajka AWS Glue (ali drugačna metoda).
- Uporaba Model Titan-Text-Embeddings na Amazon Bedrock, metapodatke pretvorite v vdelave in jih shranite v OpenSearch Serverless vektorska trgovina.
Izvedite rešitev
Uporabite lahko naslednje Jupyterjev zvezek, ki vključuje vse izrezke kode v tem razdelku, za izdelavo rešitve. Priporočamo uporabo Amazon SageMaker Studio da odprete ta zvezek s primerkom ml.t3.medium z jedrom Python 3 (Data Science). Za navodila glejte Usposobite model strojnega učenja. Izvedite naslednje korake za nastavitev rešitve:
- Ustvarite bazo znanja v storitvi OpenSearch za ogrodje RAG:
- Zgradite poziv (
final_question
) s kombiniranjem uporabniškega vnosa v naravnem jeziku (user_query
), ustrezne metapodatke iz vektorske shrambe (vector_search_match
), in naša navodila (details
): - Prikličite Amazon Bedrock za LLM (Claude v2) in ga pozovite, naj ustvari poizvedbo SQL. V naslednji kodi naredi več poskusov, da ponazori korak samopopravljanja:x
- Če pride do težav z ustvarjeno poizvedbo SQL (
{sqlgenerated}
) iz odgovora Athene ({syntaxcheckmsg}
), novi poziv (prompt
) se ustvari na podlagi odgovora in model poskuša znova ustvariti nov SQL: - Ko je SQL ustvarjen, se kliče odjemalec Athena, da se zažene in ustvari izhod:
Preizkusite raztopino
V tem razdelku izvajamo našo rešitev z različnimi primeri scenarijev za preizkušanje različnih stopenj kompleksnosti poizvedb SQL.
Za testiranje našega besedila v SQL uporabljamo dva nabori podatkov so na voljo na IMDB. Podmnožice podatkov IMDb so na voljo za osebno in nekomercialno uporabo. Nabore podatkov lahko prenesete in jih shranite Preprosta storitev shranjevanja Amazon (Amazon S3). Za ustvarjanje tabel v AWS Glue lahko uporabite naslednji delček SQL Spark. Za ta primer uporabljamo title_ratings
in title
:
Shranite podatke v Amazon S3 in metapodatke v AWS Glue
V tem scenariju je naš nabor podatkov shranjen v vedru S3. Athena ima priključek S3, ki omogoča uporabo storitve Amazon S3 kot vira podatkov, po katerem lahko poizvedujete.
Za našo prvo poizvedbo zagotovimo vnos »Sem nov v tem. Ali mi lahko pomagate videti vse tabele in stolpce v shemi imdb?«
Sledi ustvarjena poizvedba:
Naslednji posnetek zaslona in koda prikazujeta naš rezultat.
Za našo drugo poizvedbo vprašamo "Pokaži mi vse naslove in podrobnosti v regiji ZDA, katere ocena je višja od 9.5."
Sledi naša ustvarjena poizvedba:
Odgovor je naslednji.
Za našo tretjo poizvedbo vnesemo »Odličen odziv! Zdaj pa mi pokaži vse naslove izvirne vrste z ocenami več kot 7.5 in niso v regiji ZDA.«
Ustvari se naslednja poizvedba:
Dobimo naslednje rezultate.
Ustvarite samopopravljeni SQL
Ta scenarij simulira poizvedbo SQL, ki ima težave s sintakso. Tukaj bo ustvarjeni SQL samodejno popravljen na podlagi odgovora Athene. V naslednjem odgovoru je Athena dala a COLUMN_NOT_FOUND
napako in to omenil table_description
ni mogoče rešiti:
Uporaba rešitve z drugimi viri podatkov
Če želite rešitev uporabiti z drugimi viri podatkov, Athena opravi delo namesto vas. Za to uporablja Athena priključki vira podatkov ki se lahko uporablja z zvezne poizvedbe. Konektor lahko obravnavate kot razširitev mehanizma poizvedb Athena. Za vire podatkov, kot je npr Dnevniki Amazon CloudWatch, Amazon DynamoDB, Amazon DocumentDB (z združljivostjo z MongoDB)in Služba za relacijske baze podatkov Amazon (Amazon RDS) in viri relacijskih podatkov, skladni z JDBC, kot sta MySQL in PostgreSQL pod licenco Apache 2.0. Ko nastavite povezavo s katerim koli virom podatkov, lahko uporabite prejšnjo osnovo kode za razširitev rešitve. Za več informacij glejte Izvedite poizvedbo po katerem koli viru podatkov z novo zvezno poizvedbo Amazon Athena.
Čiščenje
Če želite očistiti vire, lahko začnete z čiščenje vašega vedra S3 kjer se podatki nahajajo. Razen če vaša aplikacija prikliče Amazon Bedrock, ne bo povzročila nobenih stroškov. Zaradi najboljših praks upravljanja infrastrukture priporočamo, da izbrišete vire, ustvarjene v tej predstavitvi.
zaključek
V tej objavi smo predstavili rešitev, ki vam omogoča uporabo NLP za ustvarjanje kompleksnih poizvedb SQL z različnimi viri, ki jih omogoča Athena. Povečali smo tudi natančnost ustvarjenih poizvedb SQL prek večstopenjske ocenjevalne zanke, ki temelji na sporočilih o napakah iz nadaljnjih procesov. Poleg tega smo uporabili metapodatke v katalogu podatkov AWS Glue Data Catalog, da smo upoštevali imena tabel, zahtevana v poizvedbi prek ogrodja RAG. Rešitev smo nato preizkusili v različnih realističnih scenarijih z različnimi stopnjami kompleksnosti poizvedbe. Nazadnje smo razpravljali o tem, kako uporabiti to rešitev za različne vire podatkov, ki jih podpira Athena.
Amazon Bedrock je središče te rešitve. Amazon Bedrock vam lahko pomaga zgraditi številne generativne aplikacije AI. Če želite začeti uporabljati Amazon Bedrock, priporočamo, da sledite naslednjemu hitremu začetku GitHub repo in se seznanite z gradnjo generativnih aplikacij AI. Lahko tudi poskusite baze znanja v Amazon Bedrock za hitro izdelavo takšnih rešitev RAG.
O avtorjih
Sanjeeb Panda je inženir podatkov in ML pri Amazonu. Z ozadjem na področju AI/ML, Data Science in Big Data Sanjeeb oblikuje in razvija inovativne rešitve za podatke in ML, ki rešujejo zapletene tehnične izzive in dosegajo strateške cilje za globalne 3P prodajalce, ki upravljajo svoja podjetja na Amazonu. Sanjeeb Panda je poleg svojega dela inženirja za podatke in ML pri Amazonu navdušen gurman in glasbeni navdušenec.
Burak Gozluklu je glavni arhitekt za rešitve AI/ML s sedežem v Bostonu, MA. Strateškim strankam pomaga pri sprejemanju tehnologij AWS in posebej Generative AI rešitev za doseganje njihovih poslovnih ciljev. Burak ima doktorat iz vesoljskega inženiringa na METU, magisterij iz sistemskega inženiringa in postdoktorski študij sistemske dinamike na MIT v Cambridgeu, MA. Burak je še vedno raziskovalec na MIT. Burak se navdušuje nad jogo in meditacijo.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- PlatoHealth. Obveščanje o biotehnologiji in kliničnih preskušanjih. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/machine-learning/build-a-robust-text-to-sql-solution-generating-complex-queries-self-correcting-and-querying-diverse-data-sources/
- :ima
- : je
- :ne
- :kje
- $GOR
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 16
- 20
- 2024
- 22
- 23
- 29
- 30
- 32
- 39
- 50
- 500
- 521
- 7
- 8
- 9
- a
- O meni
- nad
- dostop
- natančnost
- natančna
- Doseči
- dodajte
- Poleg tega
- Naslov
- Dodaja
- sprejme
- Sprejetje
- Aerospace
- Affiliate Program
- po
- spet
- AI
- AI / ML
- Cilje
- Poravnava
- vsi
- omogoča
- Prav tako
- alternativa
- vedno
- am
- Amazon
- Amazon RDS
- Amazon Web Services
- an
- analitika
- in
- odgovor
- Antropično
- kaj
- Apache
- primerno
- uporaba
- aplikacije
- velja
- Uporabi
- architectural
- Arhitektura
- SE
- AS
- vprašati
- At
- atlanta
- poskus
- Poskusi
- lastnosti
- Povečana
- pooblaščeni
- Na voljo
- AWS
- AWS lepilo
- ozadje
- baza
- temeljijo
- BE
- ker
- spodaj
- BEST
- najboljše prakse
- Big
- Big Podatki
- Block
- maribor
- prinašajo
- izgradnjo
- Building
- zgrajena
- poslovni
- podjetja
- vendar
- by
- se imenuje
- Cambridge
- CAN
- ne more
- zmožnost
- lahko
- ki
- primeru
- Katalog
- center
- centralizirano
- izziv
- izzivi
- klepet
- preverjeno
- preverjanje
- čiščenje
- cli
- stranke
- Koda
- baza kod
- Zbiranje
- Stolpec
- Stolpci
- združevanje
- prihaja
- prihajajo
- v primerjavi z letom
- primerjavo
- združljivost
- dokončanje
- kompleksna
- kompleksnost
- komponenta
- deli
- celovito
- povezava
- povezuje
- Razmislite
- ozadje
- se nadaljuje
- Nadzor
- Pretvorba
- pretvorbo
- popravi
- popravljen
- Popravki
- strošek
- štetje
- pokrov
- ustvarjajo
- ustvaril
- ustvari
- kritično
- Stranke, ki so
- datum
- znanost o podatkih
- Baze podatkov
- baze podatkov
- nabor podatkov
- Datum
- Datum čas
- dostavi
- dokazuje
- Oblikovanje
- oblikovalski vzorci
- želeno
- Kljub
- Podrobnosti
- Razvoj
- diagram
- DID
- drugačen
- razpravlja
- razpravljali
- razne
- do
- docs
- Dokumenti
- prenesi
- med
- dinamika
- Učinkovito
- ostalo
- pojav
- omogočajo
- omogočena
- Motor
- inženir
- Inženiring
- obogatiti
- zagotovitev
- Vnesite
- Podjetje
- Vstopi
- navdušenec
- Napaka
- napake
- Ocena
- Tudi
- Tudi vsak
- Primer
- Primeri
- izjemno
- izvršitve
- obstajajo
- obstoječih
- Pojasnite
- razširiti
- razširitev
- dodatna
- ni uspelo
- false
- Lastnosti
- povratne informacije
- končna
- končno
- iskanje
- prva
- Pretok
- sledi
- po
- sledi
- za
- Okvirni
- iz
- nadalje
- vrzel
- dal
- ustvarjajo
- ustvarila
- ustvarja
- ustvarjajo
- generacija
- generativno
- Generativna AI
- dobili
- dobi
- Globalno
- Cilji
- prisodil
- Ročaji
- Imajo
- ob
- he
- pomoč
- Pomaga
- tukaj
- visoka kvaliteta
- zelo
- njegov
- Kako
- Kako
- Vendar
- HTML
- http
- HTTPS
- Hub
- človeškega
- i
- identificirati
- if
- ilustrirajte
- ponazarja
- posledice
- Pomembno
- in
- netočne
- vključujejo
- vključuje
- vključi
- vključuje
- nepravilna
- Povečajte
- povečal
- Indeks
- individualna
- info
- Podatki
- Infrastruktura
- inherentno
- inherentno
- začetna
- notranja
- inovativne
- vhod
- primer
- Navodila
- v
- sklican
- prikliče
- vprašanje
- Vprašanja
- IT
- ponovitev
- Job
- pridružite
- jpg
- znanje
- jezera
- jezik
- velika
- večja
- UČITE
- učenje
- Stopnja
- ravni
- Licenca
- kot
- LIMIT
- vrstica
- LLM
- nahaja
- ljubezen
- stroj
- strojno učenje
- Znamka
- IZDELA
- upravljanje
- upravljanje
- več
- matematični
- Maj ..
- me
- meditacija
- srednje
- omenjeno
- omenja
- Sporočilo
- sporočil
- metapodatki
- Metoda
- morda
- zmanjšajo
- MIT
- Omiliti
- ML
- Model
- modeli
- MongoDB
- več
- MS
- več
- Množica
- Glasba
- mysql
- Ime
- Imena
- naravna
- Obdelava Natural Language
- Nimate
- potrebe
- Novo
- Naslednja
- nlp
- nekomercialno
- prenosnik
- zdaj
- Številka
- Cilji
- of
- pogosto
- on
- samo
- odprite
- operacije
- or
- Da
- izvirno
- Ostalo
- naši
- izhod
- zunaj
- Splošni
- opravil
- strastno
- pot
- vzorci
- ljudje
- performance
- opravljeno
- Osebni
- Dr.
- platon
- Platonova podatkovna inteligenca
- PlatoData
- prosim
- Prispevek
- postgresql
- vaje
- pred
- natančna
- predpogoji
- predstaviti
- predstavljeni
- , ravnateljica
- problem
- Postopek
- Procesi
- obravnavati
- pozove
- zagotavljajo
- če
- zagotavlja
- namene
- Python
- poizvedbe
- poizvedba
- vprašanje
- Hitri
- hitro
- kotacije
- krpa
- ocena
- ocen
- Preberi
- pripravljen
- realistična
- prejeti
- prejetih
- Priporočamo
- glejte
- okolica
- povezane
- pomembno
- ostajajo
- ostanki
- predstavljajo
- zahteva
- obvezna
- Zahteve
- zahteva
- Raziskave
- prebiva
- reševanje
- rešiti
- viri
- spoštovanje
- Odgovor
- povzroči
- Rezultati
- iskanje
- vrnitev
- Pravica
- Dvigne
- Tveganje
- tveganja
- robusten
- ROW
- Run
- sagemaker
- sake
- Enako
- Videl
- Scenarij
- scenariji
- Znanost
- iskanje
- drugi
- Oddelek
- glej
- izberite
- SAMO
- Prodajalci
- poslan
- Brez strežnika
- služi
- Storitev
- Storitve
- nastavite
- shouldnt
- Prikaži
- Prikaz
- pokazale
- strani
- pomemben
- Enostavno
- preprostost
- poenostavlja
- sam
- delček
- Rešitev
- rešitve
- SOLVE
- nekaj
- vir
- Viri
- Spark
- specialist
- posebej
- Stage
- Začetek
- začel
- Država
- Izjava
- Status
- Korak
- Koraki
- Še vedno
- shranjevanje
- trgovina
- shranjeni
- naravnost
- Strateško
- String
- strukturirano
- taka
- Podprti
- Preverite
- sintaksa
- SYS
- sistem
- sistemi
- miza
- Bodite
- ciljna
- Naloga
- tehnični
- Tehnologije
- Test
- Testiran
- besedilo
- kot
- da
- O
- pesto
- njihove
- Njih
- POTEM
- Tukaj.
- zato
- te
- tretja
- ta
- tisti,
- 3
- skozi
- krat
- Naslov
- naslove
- do
- danes
- Preoblikovanje
- poskusite
- dva
- tip
- Vrste
- ui
- pod
- podvrženi
- razumevanje
- če
- Nadgradnja
- posodobljeno
- us
- uporaba
- Rabljeni
- uporabnik
- Uporabniki
- uporablja
- uporabo
- POTRDI
- vrednost
- raznolikost
- različnih
- različno
- preko
- ogledov
- Wake
- sprehod
- način..
- we
- web
- Spletna aplikacija
- spletne storitve
- medtem ko
- ki
- medtem
- katerih
- bo
- z
- v
- brez
- delo
- potek dela
- pisati
- pisanje
- X
- Joga
- Vi
- Vaša rutina za
- sami
- zefirnet