Generarea de valoare din datele companiei: Cele mai bune practici pentru Text2SQL și AI generativă | Amazon Web Services

Generarea de valoare din datele companiei: Cele mai bune practici pentru Text2SQL și AI generativă | Amazon Web Services

AI generativă a deschis mult potențial în domeniul AI. Vedem numeroase utilizări, inclusiv generarea de text, generarea de cod, rezumat, traducere, chatbot și multe altele. Un astfel de domeniu care evoluează este utilizarea procesării limbajului natural (NLP) pentru a debloca noi oportunități de accesare a datelor prin interogări SQL intuitive. În loc să se ocupe de un cod tehnic complex, utilizatorii de afaceri și analiștii de date pot adresa întrebări legate de date și informații într-un limbaj simplu. Scopul principal este de a genera automat interogări SQL din text în limbaj natural. Pentru a face acest lucru, introducerea textului este transformată într-o reprezentare structurată, iar din această reprezentare se creează o interogare SQL care poate fi folosită pentru a accesa o bază de date.

În această postare, oferim o introducere în textul SQL (Text2SQL) și explorăm cazuri de utilizare, provocări, modele de proiectare și cele mai bune practici. Mai exact, discutăm despre următoarele:

  • De ce avem nevoie de Text2SQL
  • Componentele cheie pentru Text to SQL
  • Considerații de inginerie prompte pentru limbajul natural sau Text to SQL
  • Optimizări și bune practici
  • Modele de arhitectură

De ce avem nevoie de Text2SQL?

Astăzi, o cantitate mare de date este disponibilă în analiza tradițională a datelor, depozitarea datelor și bazele de date, ceea ce poate să nu fie ușor de interogat sau de înțeles pentru majoritatea membrilor organizației. Scopul principal al Text2SQL este de a face bazele de date de interogare mai accesibile pentru utilizatorii non-tehnici, care își pot furniza interogările în limbaj natural.

NLP SQL le permite utilizatorilor de afaceri să analizeze datele și să obțină răspunsuri tastând sau rostind întrebări în limbaj natural, cum ar fi următoarele:

  • „Afișați vânzările totale pentru fiecare produs luna trecută”
  • „Ce produse au generat mai multe venituri?”
  • „Ce procent de clienți sunt din fiecare regiune?”

Amazon Bedrock este un serviciu complet gestionat care oferă o gamă de modele de fundație (FM) de înaltă performanță printr-un singur API, permițând construirea și scalarea cu ușurință a aplicațiilor Gen AI. Poate fi folosit pentru a genera interogări SQL pe baza întrebărilor similare cu cele enumerate mai sus și pentru a interoga date structurate organizaționale și pentru a genera răspunsuri în limbaj natural din datele de răspuns la interogare.

Componentele cheie pentru text în SQL

Sistemele text-to-SQL implică mai multe etape pentru a converti interogările în limbaj natural în SQL rulabil:

  • Procesarea limbajului natural:
    • Analizați interogarea de intrare a utilizatorului
    • Extrageți elementele cheie și intenția
    • Convertiți într-un format structurat
  • generare SQL:
    • Hartă detaliile extrase în sintaxa SQL
    • Generați o interogare SQL validă
  • Interogare baza de date:
    • Rulați interogarea SQL generată de AI în baza de date
    • Preluați rezultatele
    • Returnează rezultatele utilizatorului

O capacitate remarcabilă a modelelor de limbaj mari (LLM) este generarea de cod, inclusiv limbajul de interogare structurat (SQL) pentru baze de date. Aceste LLM-uri pot fi utilizate pentru a înțelege întrebarea limbajului natural și pentru a genera o interogare SQL corespunzătoare ca rezultat. LLM-urile vor beneficia de adoptarea setărilor de învățare în context și de reglare fină, pe măsură ce sunt furnizate mai multe date.

Următoarea diagramă ilustrează un flux Text2SQL de bază.

Text 2 Flux de proces de nivel înalt SQL

Considerații de inginerie prompte pentru limbajul natural la SQL

Promptul este crucial atunci când se utilizează LLM-uri pentru a traduce limbajul natural în interogări SQL și există câteva considerații importante pentru inginerie promptă.

Eficace inginerie promptă este cheia dezvoltării limbajului natural pentru sistemele SQL. Instrucțiuni clare și directe oferă instrucțiuni mai bune pentru modelul de limbă. Furnizarea contextului în care utilizatorul solicită o interogare SQL împreună cu detalii relevante ale schemei bazei de date permite modelului să traducă intenția cu acuratețe. Includerea câtorva exemple adnotate de solicitări în limbaj natural și interogări SQL corespunzătoare ajută la ghidarea modelului pentru a produce rezultate compatibile cu sintaxa. În plus, încorporarea Retrieval Augmented Generation (RAG), în care modelul preia exemple similare în timpul procesării, îmbunătățește și mai mult acuratețea cartografierii. Instrucțiunile bine concepute, care oferă modelului suficiente instrucțiuni, context, exemple și creșterea recuperării sunt cruciale pentru traducerea fiabilă a limbajului natural în interogări SQL.

Următorul este un exemplu de prompt de bază cu reprezentarea codului bazei de date din whitepaper Îmbunătățirea capacităților Text-to-SQL cu puține inregistrări ale modelelor de limbaj mari: Un studiu asupra strategiilor de proiectare promptă.

/* Given the following database schema : */
CREATE TABLE IF NOT EXISTS " gymnast " ( " Gymnast_ID " int , " Floor_Exercise_Points " real , " Pommel_Horse_Points " real , " Rings_Points " real , " Vault_Points " real , " Parallel_Bars_Points " real , " Horizontal_Bar_Points " real , " Total_Points " real , PRIMARY KEY ( " Gymnast_ID " ) , FOREIGN KEY ( " Gymnast_ID " ) REFERENCES " people " ( " People_ID " ) ) ; CREATE TABLE IF NOT EXISTS " people " ( " People_ID " int , " Name " text , " Age " real , " Height " real , " Hometown " text , PRIMARY KEY ( " People_ID " ) ) ; /* Answer the following : Return the total points of the gymnast with the lowest age .
*/ select t1 . total_points from gymnast as t1 join people as t2 on t1 . gymnast_id = t2 .
people_id order by t2 . age asc limit 1

Așa cum este ilustrat în acest exemplu, învățarea cu câteva injecții bazată pe prompt oferă modelului o mână de exemple adnotate în promptul în sine. Aceasta demonstrează maparea țintă dintre limbajul natural și SQL pentru model. De obicei, promptul ar conține aproximativ 2–3 perechi care arată o interogare în limbaj natural și instrucțiunea SQL echivalentă. Aceste câteva exemple ghidează modelul pentru a genera interogări SQL conforme cu sintaxă din limbaj natural, fără a necesita date extinse de antrenament.

Reglaj fin vs inginerie promptă

Când construim limbaj natural pentru sistemele SQL, deseori intrăm în discuția dacă reglarea fină a modelului este tehnica potrivită sau dacă o inginerie eficientă promptă este calea de urmat. Ambele abordări ar putea fi luate în considerare și selectate pe baza setului corect de cerințe:

    • Reglaj fin – Modelul de bază este pregătit în prealabil pe un corp de text general mare și apoi poate fi utilizat reglare fină bazată pe instrucțiuni, care utilizează exemple etichetate pentru a îmbunătăți performanța unui model de fundație pre-antrenat pe text-SQL. Acest lucru adaptează modelul la sarcina țintă. Reglarea fină antrenează direct modelul cu privire la sarcina finală, dar necesită multe exemple text-SQL. Puteți utiliza reglarea fină supravegheată bazată pe LLM pentru a îmbunătăți eficiența text-to-SQL. Pentru aceasta, puteți utiliza mai multe seturi de date, cum ar fi Păianjen, WikiSQL, URMARIRE, BIRD-SQL, Sau CoSQL.
    • Inginerie promptă – Modelul este antrenat să completeze solicitări concepute pentru a solicita sintaxa SQL țintă. Când se generează SQL din limbaj natural folosind LLM-uri, furnizarea de instrucțiuni clare în prompt este importantă pentru controlul rezultatului modelului. În solicitarea de adnotare a diferitelor componente, cum ar fi indicarea coloanelor, schema și apoi instruiți ce tip de SQL să creați. Acestea acționează ca instrucțiuni care îi spun modelului cum să formateze ieșirea SQL. Următorul prompt arată un exemplu în care indicați coloane de tabel și instruiți să creați o interogare MySQL:
Table offices, columns = [OfficeId, OfficeName]
Table employees, columns = [OfficeId, EmployeeId,EmployeeName]
Create a MySQL query for all employees in the Machine Learning Department

O abordare eficientă pentru modelele text-to-SQL este să începeți mai întâi cu un LLM de bază fără nicio ajustare fină specifică sarcinii. Prompturile bine concepute pot fi apoi folosite pentru a adapta și a conduce modelul de bază pentru a gestiona maparea text-la-SQL. Această inginerie promptă vă permite să dezvoltați capacitatea fără a fi nevoie să faceți o reglare fină. Dacă inginerie promptă pe modelul de bază nu atinge o precizie suficientă, reglarea fină a unui set mic de exemple text-SQL poate fi apoi explorată împreună cu inginerie promptă suplimentară.

Combinația de reglare fină și inginerie promptă poate fi necesară dacă inginerie promptă numai pe modelul brut pre-antrenat nu îndeplinește cerințele. Cu toate acestea, cel mai bine este să încercați inițial o inginerie promptă fără reglaj fin, deoarece acest lucru permite o iterație rapidă fără colectarea de date. Dacă acest lucru nu reușește să ofere performanță adecvată, reglarea fină alături de inginerie promptă este un următor pas viabil. Această abordare generală maximizează eficiența, permițând totuși personalizarea dacă metodele bazate doar pe prompt sunt insuficiente.

Optimizare și bune practici

Optimizarea și cele mai bune practici sunt esențiale pentru creșterea eficacității și pentru a garanta că resursele sunt utilizate în mod optim și că rezultatele corecte sunt obținute în cel mai bun mod posibil. Tehnicile ajută la îmbunătățirea performanței, la controlul costurilor și la obținerea unui rezultat de mai bună calitate.

Atunci când se dezvoltă sisteme text-to-SQL folosind LLM-uri, tehnicile de optimizare pot îmbunătăți performanța și eficiența. Următoarele sunt câteva domenii cheie de luat în considerare:

  • Caching – Pentru a îmbunătăți latența, controlul costurilor și standardizarea, puteți stoca în cache SQL-ul analizat și solicitările de interogare recunoscute din LLM text-to-SQL. Acest lucru evită reprocesarea interogărilor repetate.
  • Monitorizarea – Jurnalele și valorile privind analizarea interogărilor, recunoașterea promptă, generarea SQL și rezultatele SQL ar trebui să fie colectate pentru a monitoriza sistemul LLM text-to-SQL. Acest lucru oferă vizibilitate pentru exemplul de optimizare, actualizarea promptului sau revizuirea reglajului cu un set de date actualizat.
  • Vederi materializate vs. tabele – Vizualizările materializate pot simplifica generarea SQL și pot îmbunătăți performanța pentru interogările comune text-to-SQL. Interogarea directă a tabelelor poate duce la SQL complex și, de asemenea, poate duce la probleme de performanță, inclusiv crearea constantă de tehnici de performanță, cum ar fi indecși. În plus, puteți evita problemele de performanță atunci când același tabel este utilizat pentru alte domenii de aplicare în același timp.
  • Reîmprospătarea datelor – Vizualizările materializate trebuie reîmprospătate conform unui program pentru a menține datele actuale pentru interogările text-to-SQL. Puteți utiliza abordări de reîmprospătare în lot sau incrementale pentru a echilibra cheltuielile generale.
  • Catalog central de date – Crearea unui catalog de date centralizat oferă un singur panou de vizualizare a surselor de date ale unei organizații și îi va ajuta pe LLM să selecteze tabele și scheme adecvate pentru a oferi răspunsuri mai precise. Vector încastrări creat dintr-un catalog central de date poate fi furnizat unui LLM împreună cu informațiile solicitate pentru a genera răspunsuri SQL relevante și precise.

Prin aplicarea celor mai bune practici de optimizare, cum ar fi memorarea în cache, monitorizarea, vizualizările materializate, reîmprospătarea programată și un catalog central, puteți îmbunătăți semnificativ performanța și eficiența sistemelor text-to-SQL folosind LLM-uri.

Modele de arhitectură

Să ne uităm la câteva modele de arhitectură care pot fi implementate pentru un flux de lucru text to SQL.

Inginerie promptă

Următoarea diagramă ilustrează arhitectura pentru generarea de interogări cu un LLM utilizând inginerie promptă.

ilustrează arhitectura pentru generarea de interogări cu un LLM folosind inginerie promptă

În acest model, utilizatorul creează învățare cu câteva inregistrări bazată pe prompt care oferă modelului exemple adnotate în promptul în sine, care include detaliile tabelului și schemei și câteva exemple de interogări cu rezultatele sale. LLM utilizează promptul furnizat pentru a returna SQL-ul generat de AI, care este validat și apoi rulat pe baza de date pentru a obține rezultate. Acesta este modelul cel mai simplu pentru a începe să utilizați inginerie promptă. Pentru aceasta, puteți folosi Amazon Bedrock or modele de fundație in Amazon SageMaker JumpStart.

În acest model, utilizatorul creează o învățare cu câteva inregistrări bazată pe prompt care oferă modelului exemple adnotate în promptul în sine, care include detaliile tabelului și schemei și câteva exemple de interogări cu rezultatele sale. LLM utilizează promptul furnizat pentru a returna SQL-ul generat de AI, care este validat și rulat pe baza de date pentru a obține rezultate. Acesta este modelul cel mai simplu pentru a începe să utilizați inginerie promptă. Pentru aceasta, puteți folosi Amazon Bedrock care este un serviciu complet gestionat care oferă o gamă de modele de bază (FM) de înaltă performanță de la companiile lider în AI printr-un singur API, împreună cu un set larg de capabilități de care aveți nevoie pentru a construi aplicații AI generative cu securitate, confidențialitate și AI responsabilă. sau Modele JumpStart Foundation care oferă modele de bază de ultimă generație pentru cazuri de utilizare, cum ar fi scrierea de conținut, generarea de cod, răspunsul la întrebări, scrierea de copii, rezumarea, clasificarea, recuperarea informațiilor și multe altele

Inginerie promptă și reglare fină

Următoarea diagramă ilustrează arhitectura pentru generarea de interogări cu un LLM folosind inginerie promptă și reglare fină.

ilustrează arhitectura pentru generarea de interogări cu un LLM folosind inginerie promptă și reglare fină

Acest flux este similar cu modelul anterior, care se bazează în mare parte pe inginerie promptă, dar cu un flux suplimentar de reglare fină a setului de date specific domeniului. LLM reglat fin este utilizat pentru a genera interogări SQL cu valoare minimă în context pentru prompt. Pentru aceasta, puteți utiliza SageMaker JumpStart pentru a regla fin un LLM pe un set de date specific unui domeniu, în același mod în care ați antrena și implementați orice model pe Amazon SageMaker.

Inginerie promptă și RAG

Următoarea diagramă ilustrează arhitectura pentru generarea de interogări cu un LLM utilizând inginerie promptă și RAG.

ilustrează arhitectura pentru generarea de interogări cu un LLM folosind inginerie promptă și RAG

În acest model, folosim Recuperare Augmented Generation folosind magazine de încorporare vectorială, cum ar fi Amazon Titan Embeddings or Cohere Embed, La Amazon Bedrock dintr-un catalog central de date, cum ar fi AWS Adeziv Catalog de date, a bazelor de date din cadrul unei organizații. Înglobările vectoriale sunt stocate în baze de date vectoriale, cum ar fi Motor vectorial pentru Amazon OpenSearch Serverless, Amazon Relational Database Service (Amazon RDS) pentru PostgreSQL cu pgvector extensie, sau Amazon Kendra. LLM-urile folosesc înglobările vectoriale pentru a selecta baza de date, tabelele și coloanele potrivite din tabele mai rapid atunci când creează interogări SQL. Utilizarea RAG este utilă atunci când datele și informațiile relevante care trebuie preluate de către LLM sunt stocate în mai multe sisteme de baze de date separate și LLM trebuie să poată căuta sau interoga date din toate aceste sisteme diferite. Acesta este locul în care furnizarea de înglobare vectorială a unui catalog de date centralizat sau unificat la LLM are ca rezultat informații mai precise și mai cuprinzătoare returnate de către LLM.

Concluzie

În această postare, am discutat despre cum putem genera valoare din datele întreprinderii folosind limbajul natural până la generarea SQL. Am analizat componentele cheie, optimizarea și cele mai bune practici. Am învățat, de asemenea, modele de arhitectură de la inginerie de bază promptă la reglaj fin și RAG. Pentru a afla mai multe, consultați Amazon Bedrock pentru a construi și scala cu ușurință aplicații AI generative cu modele de bază


Despre Autori

Generarea de valoare din datele companiei: Cele mai bune practici pentru Text2SQL și AI generativă | Amazon Web Services PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Randy DeFauw este arhitect principal principal de soluții la AWS. El deține un MSEE de la Universitatea din Michigan, unde a lucrat la viziunea computerizată pentru vehicule autonome. De asemenea, deține un MBA de la Universitatea de Stat din Colorado. Randy a ocupat o varietate de poziții în spațiul tehnologic, de la inginerie software la managementul produselor. In a intrat în spațiul Big Data în 2013 și continuă să exploreze acea zonă. Lucrează activ la proiecte în spațiul ML și a prezentat la numeroase conferințe, inclusiv Strata și GlueCon.

Generarea de valoare din datele companiei: Cele mai bune practici pentru Text2SQL și AI generativă | Amazon Web Services PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Nitin Eusebiu este arhitect senior de soluții de întreprindere la AWS, cu experiență în inginerie software, arhitectură întreprindere și AI/ML. El este profund pasionat de explorarea posibilităților AI generative. El colaborează cu clienții pentru a-i ajuta să construiască aplicații bine arhitecturate pe platforma AWS și este dedicat rezolvării provocărilor tehnologice și asistenței în călătoria lor în cloud.

Generarea de valoare din datele companiei: Cele mai bune practici pentru Text2SQL și AI generativă | Amazon Web Services PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Arghya Banerjee este un arhitect senior de soluții la AWS din San Francisco Bay Area, axat pe a ajuta clienții să adopte și să utilizeze AWS Cloud. Arghya se concentrează pe Big Data, Data Lakes, Streaming, Batch Analytics și servicii și tehnologii AI/ML.

Timestamp-ul:

Mai mult de la Învățare automată AWS