Structured Query Language (SQL) este un limbaj complex care necesită înțelegerea bazelor de date și a metadatelor. Astăzi, AI generativă poate permite persoanelor fără cunoștințe SQL. Această sarcină AI generativă se numește text-to-SQL, care generează interogări SQL din procesarea limbajului natural (NLP) și convertește textul în SQL corect din punct de vedere semantic. Soluția din această postare își propune să aducă operațiunile de analiză a întreprinderii la următorul nivel, scurtând calea către datele dvs. folosind limbajul natural.
Odată cu apariția modelelor de limbaj mari (LLM), generarea SQL bazată pe NLP a suferit o transformare semnificativă. Demonstrând performanțe excepționale, LLM-urile sunt acum capabile să genereze interogări SQL precise din descrierile în limbaj natural. Cu toate acestea, provocări încă rămân. În primul rând, limbajul uman este în mod inerent ambiguu și dependent de context, în timp ce SQL este precis, matematic și structurat. Acest decalaj poate duce la conversia inexactă a nevoilor utilizatorului în SQL-ul generat. În al doilea rând, ar putea fi necesar să construiți caracteristici text-to-SQL pentru fiecare bază de date, deoarece datele nu sunt adesea stocate într-o singură țintă. Este posibil să trebuiască să recreați capacitatea pentru fiecare bază de date pentru a permite utilizatorilor generarea SQL bazată pe NLP. În al treilea rând, în ciuda adoptării mai mari a soluțiilor de analiză centralizată, cum ar fi lacurile de date și depozitele, complexitatea crește cu diferite nume de tabel și alte metadate care sunt necesare pentru a crea SQL-ul pentru sursele dorite. Prin urmare, colectarea metadatelor cuprinzătoare și de înaltă calitate rămâne, de asemenea, o provocare. Pentru a afla mai multe despre cele mai bune practici text-to-SQL și modele de proiectare, consultați Generarea de valoare din datele companiei: Cele mai bune practici pentru Text2SQL și AI generativă.
Soluția noastră își propune să abordeze aceste provocări folosind Amazon Bedrock și Servicii de analiză AWS. Folosim Claude antropic v2.1 pe Amazon Bedrock ca LLM nostru. Pentru a aborda provocările, soluția noastră încorporează mai întâi metadatele surselor de date în cadrul Catalogul de date AWS Glue pentru a crește acuratețea interogării SQL generate. Fluxul de lucru include, de asemenea, o evaluare finală și o buclă de corecție, în cazul în care sunt identificate probleme SQL Amazon Atena, care este folosit în aval ca motor SQL. Athena ne permite, de asemenea, să folosim o multitudine de puncte finale și conectori acceptate pentru a acoperi un set mare de surse de date.
După ce parcurgem pașii pentru construirea soluției, prezentăm rezultatele unor scenarii de testare cu diferite niveluri de complexitate SQL. În cele din urmă, discutăm despre modul în care este simplu să încorporați diferite surse de date la interogările dvs. SQL.
Prezentare generală a soluțiilor
Există trei componente critice în arhitectura noastră: Retrieval Augmented Generation (RAG) cu metadate ale bazei de date, o buclă de autocorecție în mai mulți pași și Athena ca motor SQL.
Folosim metoda RAG pentru a prelua descrierile tabelelor și descrierile schemei (coloane) din metamagazinul AWS Glue pentru a ne asigura că cererea este legată de tabelul și seturile de date potrivite. În soluția noastră, am construit pașii individuali pentru a rula un cadru RAG cu Catalogul de date AWS Glue în scopuri demonstrative. Cu toate acestea, puteți utiliza și baze de cunoștințe în Amazon Bedrock pentru a construi rapid soluții RAG.
Componenta cu mai mulți pași permite LLM să corecteze interogarea SQL generată pentru acuratețe. Aici, SQL-ul generat este trimis pentru erori de sintaxă. Folosim mesajele de eroare Athena pentru a ne îmbogăți solicitarea pentru LLM pentru corecții mai precise și mai eficiente în SQL-ul generat.
Puteți lua în considerare mesajele de eroare care vin ocazional de la Athena ca feedback. Implicațiile de cost ale unui pas de corectare a erorilor sunt neglijabile în comparație cu valoarea livrată. Puteți chiar să includeți acești pași corectivi ca exemple de învățare consolidată supervizată pentru a vă ajusta mai fine cursurile LLM. Cu toate acestea, nu am acoperit acest flux în postarea noastră din motive de simplitate.
Rețineți că există întotdeauna riscul inerent de a avea inexactități, care vine în mod natural cu soluții AI generative. Chiar dacă mesajele de eroare Athena sunt extrem de eficiente pentru a atenua acest risc, puteți adăuga mai multe controale și vizualizări, cum ar fi feedback uman sau exemple de interogări pentru reglare fină, pentru a minimiza și mai mult astfel de riscuri.
Athena nu numai că ne permite să corectăm interogările SQL, dar simplifică și problema generală pentru noi, deoarece servește drept hub, unde spițele sunt surse multiple de date. Gestionarea accesului, sintaxa SQL și multe altele sunt toate gestionate prin Athena.
Următoarea diagramă ilustrează arhitectura soluției.
Fluxul procesului include următorii pași:
- Creați catalogul de date AWS Glue folosind un crawler AWS Glue (sau o altă metodă).
- Utilizarea Modelul Titan-Text-Embeddings pe Amazon Bedrock, convertiți metadatele în înglobări și stocați-le într-un Amazon OpenSearch Serverless magazin de vectori, care servește drept bază de cunoștințe în cadrul nostru RAG.
În această etapă, procesul este gata să primească interogarea în limbaj natural. Pașii 7–9 reprezintă o buclă de corecție, dacă este cazul.
- Utilizatorul introduce interogarea în limbaj natural. Puteți utiliza orice aplicație web pentru a furniza interfața de chat. Prin urmare, nu am acoperit detaliile UI în postarea noastră.
- Soluția aplică un cadru RAG prin căutarea de similaritate, care adaugă contextul suplimentar din metadatele din baza de date vectorială. Acest tabel este folosit pentru a găsi tabelul, baza de date și atributele corecte.
- Interogarea este îmbinată cu contextul și trimisă către Claude antropic v2.1 pe Amazon Bedrock.
- Modelul primește interogarea SQL generată și se conectează la Athena pentru a valida sintaxa.
- Dacă Athena oferă un mesaj de eroare care menționează că sintaxa este incorectă, modelul folosește textul de eroare din răspunsul Athena.
- Noul prompt adaugă răspunsul Athenei.
- Modelul creează SQL-ul corectat și continuă procesul. Această iterație poate fi efectuată de mai multe ori.
- În cele din urmă, rulăm SQL folosind Athena și generăm ieșire. Aici, rezultatul este prezentat utilizatorului. De dragul simplității arhitecturale, nu am arătat acest pas.
Cerințe preliminare
Pentru această postare, ar trebui să îndepliniți următoarele cerințe preliminare:
- Au un Cont AWS.
- Instala il Interfața liniei de comandă AWS (CLI AWS).
- Configurați SDK pentru Python (Boto3).
- Creați catalogul de date AWS Glue folosind un crawler AWS Glue (sau o altă metodă).
- Utilizarea Modelul Titan-Text-Embeddings pe Amazon Bedrock, convertiți metadatele în încorporare și stocați-le într-un OpenSearch Serverless magazin de vectori.
Implementează soluția
Puteți utiliza următoarele Caiet Jupyter, care include toate fragmentele de cod furnizate în această secțiune, pentru a construi soluția. Vă recomandăm să utilizați Amazon SageMaker Studio pentru a deschide acest notebook cu o instanță ml.t3.medium cu nucleul Python 3 (Data Science). Pentru instrucțiuni, consultați Antrenați un model de învățare automată. Parcurgeți următorii pași pentru a configura soluția:
- Creați baza de cunoștințe în OpenSearch Service pentru cadrul RAG:
- Creați promptul (
final_question
) prin combinarea intrărilor utilizatorului în limbaj natural (user_query
), metadatele relevante din magazinul de vectori (vector_search_match
), și instrucțiunile noastre (details
): - Invocați Amazon Bedrock pentru LLM (Claude v2) și solicitați-i să genereze interogarea SQL. În următorul cod, face mai multe încercări pentru a ilustra pasul de autocorecție:x
- Dacă se primesc probleme cu interogarea SQL generată (
{sqlgenerated}
) din răspunsul Athena ({syntaxcheckmsg}
), noul prompt (prompt
) este generat pe baza răspunsului și modelul încearcă din nou să genereze noul SQL: - După ce SQL este generat, clientul Athena este invocat pentru a rula și a genera rezultatul:
Testați soluția
În această secțiune, rulăm soluția noastră cu diferite scenarii de exemplu pentru a testa diferite niveluri de complexitate ale interogărilor SQL.
Pentru a testa text-to-SQL, folosim două seturi de date disponibile de la IMDB. Subseturi de date IMDb sunt disponibile pentru uz personal și necomercial. Puteți descărca seturile de date și le puteți stoca în Serviciul Amazon de stocare simplă (Amazon S3). Puteți utiliza următorul fragment Spark SQL pentru a crea tabele în AWS Glue. Pentru acest exemplu, folosim title_ratings
și title
:
Stocați date în Amazon S3 și metadate în AWS Glue
În acest scenariu, setul nostru de date este stocat într-o găleată S3. Athena are un conector S3 care vă permite să utilizați Amazon S3 ca sursă de date care poate fi interogată.
Pentru prima noastră interogare, oferim intrarea „Sunt nou în acest sens. Mă puteți ajuta să văd toate tabelele și coloanele din schema imdb?”
Următoarea este interogarea generată:
Următoarea captură de ecran și codul arată rezultatul nostru.
Pentru a doua noastră interogare, întrebăm „Arată-mi toate titlurile și detaliile din regiunea SUA a cărei evaluare este mai mare de 9.5”.
Următoarea este interogarea noastră generată:
Răspunsul este următorul.
Pentru a treia întrebare, introducem „Great Response! Acum arată-mi toate titlurile de tip original cu evaluări mai mari de 7.5 și nu în regiunea SUA.”
Este generată următoarea interogare:
Obținem următoarele rezultate.
Generați SQL auto-corectat
Acest scenariu simulează o interogare SQL care are probleme de sintaxă. Aici, SQL-ul generat va fi autocorectat pe baza răspunsului de la Athena. În următorul răspuns, Atena a dat a COLUMN_NOT_FOUND
eroare și a menționat că table_description
nu se poate rezolva:
Utilizarea soluției cu alte surse de date
Pentru a utiliza soluția cu alte surse de date, Athena se ocupă de treaba pentru tine. Pentru a face acest lucru, Athena folosește conectori pentru sursa de date care poate fi folosit cu interogări federate. Puteți considera un conector ca o extensie a motorului de interogări Athena. Conectori de surse de date Athena preconstruiți există pentru surse de date precum Jurnalele Amazon CloudWatch, Amazon DynamoDB, Amazon DocumentDB (cu compatibilitate cu MongoDB), și Serviciul de baze de date relaționale Amazon (Amazon RDS) și surse de date relaționale compatibile cu JDBC, cum ar fi MySQL și PostgreSQL sub licența Apache 2.0. După ce ați configurat o conexiune la orice sursă de date, puteți utiliza baza de cod anterioară pentru a extinde soluția. Pentru mai multe informații, consultați Interogați orice sursă de date cu noua interogare federată a Amazon Athena.
A curăța
Pentru a curăța resursele, puteți începe prin curăță-ți găleata S3 unde se află datele. Cu excepția cazului în care aplicația dvs. invocă Amazon Bedrock, aceasta nu va suporta niciun cost. De dragul celor mai bune practici de gestionare a infrastructurii, vă recomandăm să ștergeți resursele create în această demonstrație.
Concluzie
În această postare, am prezentat o soluție care vă permite să utilizați NLP pentru a genera interogări SQL complexe cu o varietate de resurse activate de Athena. De asemenea, am crescut acuratețea interogărilor SQL generate printr-o buclă de evaluare în mai mulți pași bazată pe mesajele de eroare din procesele din aval. În plus, am folosit metadatele din Catalogul de date AWS Glue pentru a lua în considerare numele tabelelor solicitate în interogare prin cadrul RAG. Apoi am testat soluția în diferite scenarii realiste cu diferite niveluri de complexitate a interogărilor. În cele din urmă, am discutat despre cum să aplicăm această soluție la diferite surse de date susținute de Athena.
Amazon Bedrock este în centrul acestei soluții. Amazon Bedrock vă poate ajuta să construiți multe aplicații AI generative. Pentru a începe cu Amazon Bedrock, vă recomandăm să urmați pornirea rapidă de mai jos GitHub repo și familiarizarea cu construirea de aplicații AI generative. Poti incerca si tu baze de cunoștințe în Amazon Bedrock pentru a construi astfel de soluții RAG rapid.
Despre Autori
Sanjeeb Panda este inginer de date și ML la Amazon. Cu experiență în AI/ML, Data Science și Big Data, Sanjeeb proiectează și dezvoltă soluții inovatoare de date și ML care rezolvă provocări tehnice complexe și ating obiective strategice pentru vânzătorii globale 3P care își gestionează afacerile pe Amazon. În afara muncii sale ca inginer de date și ML la Amazon, Sanjeeb Panda este un pasionat de gastronomie și pasionat de muzică.
Burak Gozluklu este arhitect principal în soluții de specialitate AI/ML, situat în Boston, MA. El îi ajută pe clienții strategici să adopte tehnologii AWS și, în special, soluții Generative AI pentru a-și atinge obiectivele de afaceri. Burak are un doctorat în Inginerie Aerospațială de la METU, un MS în Ingineria Sistemelor și un post-doctorat în dinamica sistemelor de la MIT din Cambridge, MA. Burak este încă un afiliat de cercetare în MIT. Burak este pasionat de yoga și meditație.
- Distribuție de conținut bazat pe SEO și PR. Amplifică-te astăzi.
- PlatoData.Network Vertical Generative Ai. Împuterniciți-vă. Accesați Aici.
- PlatoAiStream. Web3 Intelligence. Cunoștințe amplificate. Accesați Aici.
- PlatoESG. carbon, CleanTech, Energie, Mediu inconjurator, Solar, Managementul deșeurilor. Accesați Aici.
- PlatoHealth. Biotehnologie și Inteligență pentru studii clinice. Accesați Aici.
- Sursa: https://aws.amazon.com/blogs/machine-learning/build-a-robust-text-to-sql-solution-generating-complex-queries-self-correcting-and-querying-diverse-data-sources/
- :are
- :este
- :nu
- :Unde
- $UP
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 16
- 20
- 2024
- 22
- 23
- 29
- 30
- 32
- 39
- 50
- 500
- 521
- 7
- 8
- 9
- a
- Despre Noi
- mai sus
- acces
- precizie
- precis
- Obține
- adăuga
- În plus,
- adresa
- Adaugă
- adopta
- Adoptare
- Industria aerospațială
- Parteneri
- După
- din nou
- AI
- AI / ML
- isi propune
- Se aliniază
- TOATE
- permite
- de asemenea
- alternativă
- mereu
- am
- Amazon
- Amazon RDS
- Amazon Web Services
- an
- Google Analytics
- și
- răspunde
- Antropică
- Orice
- Apache
- aplicabil
- aplicație
- aplicatii
- se aplică
- Aplică
- arhitectural
- arhitectură
- SUNT
- AS
- cere
- At
- atlanta
- încercare
- Încercările
- atribute
- augmented
- autorizat
- disponibil
- AWS
- AWS Adeziv
- fundal
- de bază
- bazat
- BE
- deoarece
- de mai jos
- CEL MAI BUN
- Cele mai bune practici
- Mare
- Datele mari
- Bloca
- boston
- aduce
- construi
- Clădire
- construit
- afaceri
- întreprinderi
- dar
- by
- denumit
- Cambridge
- CAN
- nu poti
- capacitate
- capabil
- pasă
- caz
- catalog
- Centru
- centralizat
- contesta
- provocări
- Chat
- verificat
- control
- curat
- cli
- client
- cod
- baza codului
- Colectare
- Coloană
- Coloane
- combinând
- vine
- venire
- comparație
- compararea
- compatibilitate
- Completă
- complex
- complexitate
- component
- componente
- cuprinzător
- conexiune
- Connects
- Lua în considerare
- context
- continuă
- controale
- Convertire
- converti
- corecta
- corectat
- Corectarea
- A costat
- conta
- acoperi
- crea
- a creat
- creează
- critic
- clienţii care
- de date
- știința datelor
- Baza de date
- baze de date
- seturi de date
- Data
- datetime
- livrate
- demonstrând
- Amenajări
- modele de design
- dorit
- În ciuda
- detalii
- dezvolta
- diagramă
- FĂCUT
- diferit
- discuta
- discutat
- diferit
- do
- docs
- documente
- Descarca
- în timpul
- dinamică
- Eficace
- altfel
- apariție
- permite
- activat
- Motor
- inginer
- Inginerie
- îmbogăți
- asigura
- Intrați
- Afacere
- intră
- entuziast
- eroare
- Erori
- evaluare
- Chiar
- Fiecare
- exemplu
- exemple
- excepțional
- executând
- exista
- existent
- Explica
- extinde
- extensie
- suplimentar
- A eșuat
- fals
- DESCRIERE
- feedback-ul
- final
- În cele din urmă
- descoperire
- First
- debit
- urma
- următor
- urmează
- Pentru
- Cadru
- din
- mai mult
- decalaj
- a dat
- genera
- generată
- generează
- generator
- generaţie
- generativ
- AI generativă
- obține
- devine
- Caritate
- Goluri
- am
- Mânere
- Avea
- având în
- he
- ajutor
- ajută
- aici
- de înaltă calitate
- extrem de
- lui
- Cum
- Cum Pentru a
- Totuși
- HTML
- http
- HTTPS
- Butuc
- uman
- i
- identificat
- if
- ilustra
- ilustrează
- implicații
- important
- in
- inexact
- include
- include
- incorpora
- încorporează
- incorect
- Crește
- a crescut
- index
- individ
- info
- informații
- Infrastructură
- inerent
- în mod inerent
- inițială
- interior
- inovatoare
- intrare
- instanță
- instrucțiuni
- în
- invocat
- invocă
- problema
- probleme de
- IT
- repetare
- Loc de munca
- alătura
- jpg
- cunoştinţe
- lacuri
- limbă
- mare
- mai mare
- AFLAȚI
- învăţare
- Nivel
- nivelurile de
- Licență
- ca
- LIMITĂ
- Linie
- LLM
- situat
- dragoste
- maşină
- masina de învățare
- face
- FACE
- administrare
- de conducere
- multe
- matematic
- Mai..
- me
- meditaţie
- mediu
- menționat
- menționează
- mesaj
- mesaje
- Metadata
- metodă
- ar putea
- minimaliza
- MIT
- diminua
- ML
- model
- Modele
- MongoDB
- mai mult
- MS
- multiplu
- multitudine
- Muzică
- MySQL
- nume
- nume
- Natural
- Procesarea limbajului natural
- Nevoie
- nevoilor
- Nou
- următor
- nlp
- non-comercial
- caiet
- acum
- număr
- Obiectivele
- of
- de multe ori
- on
- afară
- deschide
- Operațiuni
- or
- comandă
- original
- Altele
- al nostru
- producție
- exterior
- global
- Trecut
- pasionat
- cale
- modele
- oameni
- performanță
- efectuată
- personal
- PhD
- Plato
- Informații despre date Platon
- PlatoData
- "vă rog"
- Post
- postgresql
- practicile
- precedent
- precis
- premise
- prezenta
- prezentat
- Principal
- Problemă
- proces
- procese
- prelucrare
- solicitări
- furniza
- prevăzut
- furnizează
- scopuri
- Piton
- interogări
- întrebare
- întrebare
- Rapid
- repede
- Citate
- cârpă
- evaluare
- evaluări
- Citeste
- gata
- realist
- a primi
- primit
- recomanda
- trimite
- regiune
- legate de
- rămâne
- rămășițe
- reprezenta
- solicita
- necesar
- Cerinţe
- Necesită
- cercetare
- rezidă
- rezolvă
- hotărât
- Resurse
- respect
- răspuns
- rezultat
- REZULTATE
- regăsire
- reveni
- dreapta
- Urca
- Risc
- Riscurile
- robust
- RÂND
- Alerga
- sagemaker
- sake
- acelaşi
- văzut
- scenariu
- scenarii
- Ştiinţă
- căutare
- Al doilea
- Secțiune
- vedea
- selecta
- SELF
- Vanzatorii
- trimis
- serverless
- servește
- serviciu
- Servicii
- set
- să
- Arăta
- arătând
- indicat
- parte
- semnificativ
- simplu
- simplitate
- Simplifică
- singur
- fragment
- soluţie
- soluţii
- REZOLVAREA
- unele
- Sursă
- Surse
- Scânteie
- specialist
- specific
- Etapă
- Începe
- început
- Stat
- Declarație
- Stare
- Pas
- paşi
- Încă
- depozitare
- stoca
- stocate
- simplu
- Strategic
- Şir
- structurat
- astfel de
- Suportat
- sigur
- sintaxă
- SYS
- sistem
- sisteme
- tabel
- Lua
- Ţintă
- Sarcină
- Tehnic
- Tehnologii
- test
- testat
- a) Sport and Nutrition Awareness Day in Manasia Around XNUMX people from the rural commune Manasia have participated in a sports and healthy nutrition oriented activity in one of the community’s sports ready yards. This activity was meant to gather, mainly, middle-aged people from a Romanian rural community and teach them about the benefits that sports have on both their mental and physical health and on how sporting activities can be used to bring people from a community closer together. Three trainers were made available for this event, so that the participants would get the best possible experience physically and so that they could have the best access possible to correct information and good sports/nutrition practices. b) Sports Awareness Day in Poiana Țapului A group of young participants have taken part in sporting activities meant to teach them about sporting conduct, fairplay, and safe physical activities. The day culminated with a football match.
- decât
- acea
- hubul
- lor
- Lor
- apoi
- Acolo.
- prin urmare
- Acestea
- Al treilea
- acest
- aceste
- trei
- Prin
- ori
- Titlu
- titluri
- la
- astăzi
- Transformare
- încerca
- Două
- tip
- Tipuri
- ui
- în
- supuse unei
- înţelegere
- dacă nu
- Actualizează
- actualizat
- us
- utilizare
- utilizat
- Utilizator
- utilizatorii
- utilizări
- folosind
- VALIDA
- valoare
- varietate
- diverse
- variabil
- de
- vizualizari
- Trezi
- umbla
- Cale..
- we
- web
- aplicatie web
- servicii web
- întrucât
- care
- în timp ce
- a caror
- voi
- cu
- în
- fără
- Apartamente
- flux de lucru
- scrie
- scris
- X
- yoga
- Tu
- Ta
- te
- zephyrnet