Ustvarjanje vrednosti iz podatkov podjetja: najboljše prakse za Text2SQL in generativni AI | Spletne storitve Amazon

Ustvarjanje vrednosti iz podatkov podjetja: najboljše prakse za Text2SQL in generativni AI | Spletne storitve Amazon

Generativna umetna inteligenca je odprla veliko potenciala na področju umetne inteligence. Vidimo številne uporabe, vključno z ustvarjanjem besedila, ustvarjanjem kode, povzemanjem, prevajanjem, chatboti in še več. Eno takih področij, ki se razvija, je uporaba obdelave naravnega jezika (NLP) za odklepanje novih priložnosti za dostop do podatkov prek intuitivnih poizvedb SQL. Namesto da bi se ukvarjali s kompleksno tehnično kodo, lahko poslovni uporabniki in analitiki podatkov postavljajo vprašanja v zvezi s podatki in vpogledi v preprostem jeziku. Primarni cilj je samodejno ustvarjanje poizvedb SQL iz besedila v naravnem jeziku. Da bi to naredili, se vnos besedila pretvori v strukturirano predstavitev in iz te predstavitve se ustvari poizvedba SQL, ki jo je mogoče uporabiti za dostop do baze podatkov.

V tej objavi ponujamo uvod v besedilo v SQL (Text2SQL) in raziskujemo primere uporabe, izzive, vzorce oblikovanja in najboljše prakse. Natančneje, razpravljamo o naslednjem:

  • Zakaj potrebujemo Text2SQL
  • Ključne komponente za besedilo v SQL
  • Hitri inženirski premisleki za naravni jezik ali besedilo v SQL
  • Optimizacije in najboljše prakse
  • Arhitekturni vzorci

Zakaj potrebujemo Text2SQL?

Danes je v tradicionalni podatkovni analitiki, skladiščenju podatkov in bazah podatkov na voljo velika količina podatkov, ki jih večina članov organizacije morda ne bo enostavno poizvedovati ali razumeti. Primarni cilj Text2SQL je narediti baze podatkov za poizvedovanje bolj dostopne netehničnim uporabnikom, ki lahko zagotovijo svoje poizvedbe v naravnem jeziku.

NLP SQL poslovnim uporabnikom omogoča analizo podatkov in pridobivanje odgovorov s tipkanjem ali govorjenjem vprašanj v naravnem jeziku, kot so naslednja:

  • »Prikaži skupno prodajo za vsak izdelek prejšnji mesec«
  • "Kateri izdelki so ustvarili več prihodkov?"
  • "Kolikšen odstotek strank je iz posamezne regije?"

Amazon Bedrock je popolnoma upravljana storitev, ki ponuja izbiro visoko zmogljivih temeljnih modelov (FM) prek enega samega API-ja, kar omogoča preprosto gradnjo in prilagajanje aplikacij Gen AI. Izkoristiti ga je mogoče za ustvarjanje poizvedb SQL na podlagi vprašanj, podobnih zgoraj navedenim, in poizvedovanje po strukturiranih organizacijskih podatkih ter ustvarjanje odgovorov v naravnem jeziku iz podatkov odgovorov na poizvedbo.

Ključne komponente za besedilo v SQL

Sistemi besedila v SQL vključujejo več stopenj za pretvorbo poizvedb v naravnem jeziku v zagonski SQL:

  • Obdelava naravnega jezika:
    • Analizirajte uporabnikovo vnosno poizvedbo
    • Izluščite ključne elemente in namen
    • Pretvori v strukturirano obliko
  • Generiranje SQL:
    • Preslikaj ekstrahirane podrobnosti v sintakso SQL
    • Ustvarite veljavno poizvedbo SQL
  • Poizvedba po bazi podatkov:
    • Zaženite poizvedbo SQL, ki jo ustvari umetna inteligenca, v bazi podatkov
    • Pridobi rezultate
    • Vrnite rezultate uporabniku

Ena izjemna zmogljivost velikih jezikovnih modelov (LLM) je generiranje kode, vključno s strukturiranim jezikom poizvedb (SQL) za baze podatkov. Te LLM-je je mogoče uporabiti za razumevanje vprašanja naravnega jezika in ustvarjanje ustrezne poizvedbe SQL kot rezultat. Študenti LLM bodo imeli koristi od sprejemanja učenja v kontekstu in natančnega prilagajanja nastavitev, ko bo na voljo več podatkov.

Naslednji diagram prikazuje osnovni tok Text2SQL.

Besedilo 2 Tok procesa visoke ravni SQL

Hitri inženirski premisleki za naravni jezik v SQL

Poziv je ključnega pomena pri uporabi LLM-jev za prevajanje naravnega jezika v poizvedbe SQL in obstaja več pomembnih premislekov za hitro inženirstvo.

Učinkovito hiter inženiring je ključnega pomena za razvoj naravnega jezika v sistemih SQL. Jasni in enostavni pozivi zagotavljajo boljša navodila za jezikovni model. Zagotavljanje konteksta, v katerem uporabnik zahteva poizvedbo SQL, skupaj z ustreznimi podrobnostmi sheme baze podatkov omogoča modelu, da natančno prevede namen. Vključitev nekaj označenih primerov pozivov v naravnem jeziku in ustreznih poizvedb SQL pomaga pri usmerjanju modela pri izdelavi izpisa, skladnega s sintakso. Poleg tega vključitev Retrieval Augmented Generation (RAG), kjer model med obdelavo pridobi podobne primere, dodatno izboljša natančnost preslikave. Dobro zasnovani pozivi, ki dajejo modelu zadostna navodila, kontekst, primere in razširitev iskanja, so ključnega pomena za zanesljivo prevajanje naravnega jezika v poizvedbe SQL.

Sledi primer osnovnega poziva s kodno predstavitvijo baze podatkov iz bele knjige Izboljšanje zmožnosti nekajkratnega pretvorbe besedila v SQL velikih jezikovnih modelov: študija o strategijah hitrega načrtovanja.

/* 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

Kot je ponazorjeno v tem primeru, nekajkratno učenje, ki temelji na pozivu, nudi modelu nekaj primerov z opombami v samem pozivu. To prikazuje ciljno preslikavo med naravnim jezikom in SQL za model. Običajno bi poziv vseboval približno 2–3 pare, ki prikazujejo poizvedbo v naravnem jeziku in enakovreden stavek SQL. Teh nekaj primerov usmerja model za ustvarjanje poizvedb SQL, skladnih s sintakso, iz naravnega jezika, ne da bi zahtevali obsežne podatke za usposabljanje.

Fina nastavitev v primerjavi s hitrim inženiringom

Ko gradimo naravni jezik za sisteme SQL, se pogosto zapletemo v razpravo o tem, ali je fina nastavitev modela prava tehnika ali pa je učinkovita hitra izdelava prava pot. Oba pristopa je mogoče upoštevati in izbrati na podlagi pravega niza zahtev:

    • Fina nastavitev – Osnovni model je vnaprej naučen na velikem splošnem besedilnem korpusu in se nato lahko uporablja natančno prilagajanje na podlagi navodil, ki uporablja označene primere za izboljšanje zmogljivosti vnaprej usposobljenega temeljnega modela na besedilnem SQL. To prilagodi model ciljni nalogi. Natančna nastavitev neposredno usposobi model za končno nalogo, vendar zahteva veliko besedilnih primerov SQL. Za izboljšanje učinkovitosti pretvorbe besedila v SQL lahko uporabite nadzorovano fino uravnavanje, ki temelji na vašem LLM. Za to lahko uporabite več naborov podatkov, npr Spider, WikiSQL, LOV, BIRD-SQLali CoSQL.
    • Hiter inženiring – Model je usposobljen za izpolnjevanje pozivov, zasnovanih za pozivanje ciljne sintakse SQL. Pri ustvarjanju SQL iz naravnega jezika z uporabo LLM-jev je zagotavljanje jasnih navodil v pozivu pomembno za nadzor izhoda modela. V pozivu za označevanje različnih komponent, kot je kazanje na stolpce, shemo in nato navodilo, katero vrsto SQL ustvariti. Delujejo kot navodila, ki modelu povedo, kako naj oblikuje izhod SQL. Naslednji poziv prikazuje primer, kjer usmerite stolpce tabele in naročite, da ustvarite poizvedbo MySQL:
Table offices, columns = [OfficeId, OfficeName]
Table employees, columns = [OfficeId, EmployeeId,EmployeeName]
Create a MySQL query for all employees in the Machine Learning Department

Učinkovit pristop za modele besedila v SQL je, da najprej začnete z osnovnim LLM brez kakršnega koli natančnega prilagajanja, specifičnega za nalogo. Dobro oblikovane pozive je nato mogoče uporabiti za prilagoditev in poganjanje osnovnega modela za obdelavo preslikave besedila v SQL. Ta hitri inženiring vam omogoča, da razvijete zmogljivost, ne da bi vam bilo treba opraviti natančno nastavitev. Če takojšnje načrtovanje na osnovnem modelu ne doseže zadostne natančnosti, je mogoče raziskati natančno nastavitev na majhnem nizu primerov besedilnega SQL skupaj z nadaljnjim hitrim inženiringom.

Kombinacija natančnega prilagajanja in hitrega inženiringa bo morda potrebna, če samo hitro inženirstvo na neobdelanem predhodno usposobljenem modelu ne izpolnjuje zahtev. Vendar je najbolje, da na začetku poskusite s hitrim inženiringom brez natančnega prilagajanja, ker to omogoča hitro ponovitev brez zbiranja podatkov. Če to ne zagotavlja ustrezne zmogljivosti, je natančna nastavitev skupaj s hitrim inženiringom izvedljiv naslednji korak. Ta splošni pristop povečuje učinkovitost, hkrati pa omogoča prilagajanje, če metode, ki temeljijo zgolj na pozivu, ne zadostujejo.

Optimizacija in najboljše prakse

Optimizacija in najboljše prakse so bistvenega pomena za povečanje učinkovitosti in zagotavljanje optimalne uporabe virov ter doseganje pravih rezultatov na najboljši možni način. Tehnike pomagajo izboljšati učinkovitost, nadzorovati stroške in doseči kakovostnejši rezultat.

Pri razvoju sistemov besedila v SQL z uporabo LLM-jev lahko optimizacijske tehnike izboljšajo delovanje in učinkovitost. Sledi nekaj ključnih področij, ki jih je treba upoštevati:

  • Predpomnjenje – Če želite izboljšati zakasnitev, nadzor stroškov in standardizacijo, lahko predpomnite razčlenjen SQL in prepoznane pozive za poizvedbo iz besedila v SQL LLM. S tem se izognete ponovni obdelavi ponavljajočih se poizvedb.
  • Spremljanje – Dnevnike in meritve o razčlenjevanju poizvedb, takojšnjem prepoznavanju, generiranju SQL in rezultatih SQL je treba zbirati za spremljanje sistema besedila v SQL LLM. To zagotavlja vidnost za primer optimizacije, ki posodablja poziv ali ponovno obiskuje fino nastavitev s posodobljenim naborom podatkov.
  • Materializirani pogledi proti tabelam – Materializirani pogledi lahko poenostavijo generiranje SQL in izboljšajo zmogljivost za pogoste poizvedbe besedila v SQL. Neposredno poizvedovanje po tabelah lahko povzroči zapleten SQL in tudi težave z zmogljivostjo, vključno z nenehnim ustvarjanjem tehnik delovanja, kot so indeksi. Poleg tega se lahko izognete težavam z zmogljivostjo, če istočasno uporabljate isto tabelo za druga področja uporabe.
  • Osveževanje podatkov – Materializirane poglede je treba osveževati po urniku, da bodo podatki posodobljeni za poizvedbe besedila v SQL. Za uravnoteženje režijskih stroškov lahko uporabite pristope paketnega ali postopnega osveževanja.
  • Centralni katalog podatkov – Ustvarjanje centraliziranega kataloga podatkov zagotavlja enoten pogled na vire podatkov organizacije in bo pomagal LLM izbrati ustrezne tabele in sheme, da bi zagotovili natančnejše odgovore. Vektor vgradnje ustvarjen iz osrednjega podatkovnega kataloga, je mogoče posredovati LLM skupaj z zahtevanimi informacijami za ustvarjanje ustreznih in natančnih odgovorov SQL.

Z uporabo najboljših praks optimizacije, kot so predpomnjenje, spremljanje, materializirani pogledi, načrtovano osveževanje in osrednji katalog, lahko znatno izboljšate zmogljivost in učinkovitost sistemov besedila v SQL z uporabo LLM.

Arhitekturni vzorci

Oglejmo si nekaj vzorcev arhitekture, ki jih je mogoče implementirati za potek dela besedila v SQL.

Hiter inženiring

Naslednji diagram ponazarja arhitekturo za generiranje poizvedb z LLM z uporabo hitrega inženiringa.

ponazarja arhitekturo za generiranje poizvedb z LLM z uporabo hitrega inženiringa

V tem vzorcu uporabnik ustvari nekajkratno učenje, ki temelji na pozivu, ki modelu zagotovi označene primere v samem pozivu, ki vključuje podrobnosti tabele in sheme ter nekaj vzorčnih poizvedb z rezultati. LLM uporabi priloženi poziv za vrnitev SQL, ki ga ustvari umetna inteligenca, ki je preverjen in nato zagnan v zbirki podatkov, da dobi rezultate. To je najpreprostejši vzorec za začetek uporabe hitrega inženiringa. Za to lahko uporabite Amazon Bedrock or modeli temeljev in Amazon SageMaker JumpStart.

V tem vzorcu uporabnik ustvari nekajkratno učenje, ki temelji na pozivu, ki modelu zagotovi označene primere v samem pozivu, ki vključuje podrobnosti tabele in sheme ter nekaj vzorčnih poizvedb z rezultati. LLM uporabi posredovani poziv za vrnitev SQL, ustvarjenega z umetno inteligenco, ki je potrjen in se izvaja v bazi podatkov, da dobi rezultate. To je najpreprostejši vzorec za začetek uporabe hitrega inženiringa. Za to lahko uporabite Amazon Bedrock ki je v celoti upravljana storitev, ki ponuja izbiro visoko zmogljivih temeljnih modelov (FM) vodilnih podjetij z umetno inteligenco prek enega samega API-ja, skupaj s širokim naborom zmogljivosti, ki jih potrebujete za izdelavo generativnih aplikacij z umetno inteligenco z varnostjo, zasebnostjo in odgovornim umetno inteligenco. oz Modeli JumpStart Foundation ki ponuja najsodobnejše temeljne modele za primere uporabe, kot so pisanje vsebine, ustvarjanje kode, odgovarjanje na vprašanja, pisanje besedil, povzemanje, klasifikacija, iskanje informacij itd.

Hiter inženiring in fina nastavitev

Naslednji diagram ponazarja arhitekturo za generiranje poizvedb z LLM z uporabo hitrega inženiringa in natančnega prilagajanja.

ponazarja arhitekturo za generiranje poizvedb z LLM z uporabo hitrega inženiringa in natančnega prilagajanja

Ta tok je podoben prejšnjemu vzorcu, ki se večinoma zanaša na hitro načrtovanje, vendar z dodatnim tokom natančnega prilagajanja nabora podatkov, specifičnega za domeno. Natančno nastavljen LLM se uporablja za ustvarjanje poizvedb SQL z minimalno vrednostjo v kontekstu za poziv. Za to lahko uporabite SageMaker JumpStart za natančno nastavitev LLM na naboru podatkov, specifičnih za domeno, na enak način, kot bi učili in uvajali kateri koli model na Amazon SageMaker.

Hiter inženiring in RAG

Naslednji diagram ponazarja arhitekturo za generiranje poizvedb z LLM z uporabo hitrega inženiringa in RAG.

ponazarja arhitekturo za generiranje poizvedb z LLM z uporabo hitrega inženiringa in RAG

V tem vzorcu uporabljamo Povečana generacija pridobivanja z uporabo trgovin z vektorskimi vdelavami, npr Amazon Titan Embeddings or Cohere Embed, Na Amazon Bedrock iz centralnega kataloga podatkov, npr AWS lepilo Katalog podatkovpodatkovnih baz znotraj organizacije. Vdelane vektorje so shranjene v vektorskih zbirkah podatkov, kot je Vektorski mehanizem za Amazon OpenSearch Serverless, Amazon Relational Database Service (Amazon RDS) za PostgreSQL s pgvector razširitev, oz Amazonska Kendra. LLM-ji uporabljajo vektorske vdelave za hitrejšo izbiro prave baze podatkov, tabel in stolpcev iz tabel pri ustvarjanju poizvedb SQL. Uporaba RAG je koristna, kadar so podatki in ustrezne informacije, ki jih morajo pridobiti LLM-ji, shranjeni v več ločenih sistemih baz podatkov in LLM-ju mora biti omogočeno iskanje ali poizvedovanje po podatkih iz vseh teh različnih sistemov. Tukaj zagotavljanje vektorskih vdelav centraliziranega ali poenotenega kataloga podatkov LLM-jem povzroči natančnejše in celovitejše informacije, ki jih vrnejo LLM-ji.

zaključek

V tej objavi smo razpravljali o tem, kako lahko ustvarimo vrednost iz podatkov podjetja z uporabo naravnega jezika v generiranje SQL. Preučili smo ključne komponente, optimizacijo in najboljše prakse. Naučili smo se tudi arhitekturnih vzorcev od osnovnega hitrega inženiringa do natančne nastavitve in RAG. Če želite izvedeti več, glejte Amazon Bedrock za enostavno gradnjo in prilagajanje generativnih aplikacij AI s temeljnimi modeli


O avtorjih

Ustvarjanje vrednosti iz podatkov podjetja: najboljše prakse za Text2SQL in generativni AI | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Randy DeFauw je višji glavni arhitekt rešitev pri AWS. Ima MSEE z Univerze v Michiganu, kjer je delal na računalniškem vidu za avtonomna vozila. Ima tudi MBA z univerze Colorado State University. Randy je zasedal različne položaje v tehnološkem prostoru, od razvoja programske opreme do upravljanja izdelkov. V prostor velikih podatkov je vstopil leta 2013 in še naprej raziskuje to področje. Aktivno dela na projektih v prostoru ML in je predstavil na številnih konferencah, vključno s Strata in GlueCon.

Ustvarjanje vrednosti iz podatkov podjetja: najboljše prakse za Text2SQL in generativni AI | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Nitin Evzebij je višji arhitekt za podjetniške rešitve pri AWS, ima izkušnje s programskim inženiringom, podjetniško arhitekturo in AI/ML. Zelo je navdušen nad raziskovanjem možnosti generativne umetne inteligence. Sodeluje s strankami, da bi jim pomagal zgraditi dobro zasnovane aplikacije na platformi AWS, in je predan reševanju tehnoloških izzivov in pomoči pri njihovi poti v oblak.

Ustvarjanje vrednosti iz podatkov podjetja: najboljše prakse za Text2SQL in generativni AI | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Arghya Banerjee je starejši arhitekt rešitev pri AWS na območju zaliva San Francisco, ki se osredotoča na pomoč strankam pri sprejemanju in uporabi AWS Cloud. Arghya se osredotoča na storitve in tehnologije Big Data, Data Lakes, Streaming, Batch Analytics ter AI/ML.

Časovni žig:

Več od Strojno učenje AWS