Generativ AI har öppnat upp mycket potential inom AI-området. Vi ser många användningsområden, inklusive textgenerering, kodgenerering, sammanfattning, översättning, chatbots och mer. Ett sådant område som utvecklas är att använda naturlig språkbehandling (NLP) för att låsa upp nya möjligheter för att komma åt data genom intuitiva SQL-frågor. Istället för att ta itu med komplex teknisk kod, kan företagsanvändare och dataanalytiker ställa frågor relaterade till data och insikter i klartext. Det primära målet är att automatiskt generera SQL-frågor från text på naturligt språk. För att göra detta omvandlas textinmatningen till en strukturerad representation, och från denna representation skapas en SQL-fråga som kan användas för att komma åt en databas.
I det här inlägget ger vi en introduktion till text till SQL (Text2SQL) och utforskar användningsfall, utmaningar, designmönster och bästa praxis. Specifikt diskuterar vi följande:
- Varför behöver vi Text2SQL
- Nyckelkomponenter för text till SQL
- Snabba tekniska överväganden för naturligt språk eller text till SQL
- Optimering och bästa praxis
- Arkitektur mönster
Varför behöver vi Text2SQL?
Idag finns en stor mängd data tillgänglig i traditionell dataanalys, datalager och databaser, vilket kanske inte är lätt att fråga eller förstå för majoriteten av organisationens medlemmar. Det primära målet med Text2SQL är att göra frågedatabaser mer tillgängliga för icke-tekniska användare, som kan tillhandahålla sina frågor på naturligt språk.
NLP SQL gör det möjligt för företagsanvändare att analysera data och få svar genom att skriva eller tala frågor på naturligt språk, som följande:
- "Visa total försäljning för varje produkt förra månaden"
- "Vilka produkter genererade mer intäkter?"
- "Hur stor andel av kunderna kommer från varje region?"
Amazonas berggrund är en helt hanterad tjänst som erbjuder ett urval av högpresterande grundmodeller (FM) via ett enda API, vilket gör det enkelt att bygga och skala Gen AI-applikationer. Det kan utnyttjas för att generera SQL-frågor baserade på frågor som liknar de som listas ovan och fråga efter organisatorisk strukturerad data och generera naturliga språksvar från frågesvarsdata.
Nyckelkomponenter för text till SQL
Text-till-SQL-system involverar flera steg för att konvertera naturliga språkfrågor till körbar SQL:
- Naturlig språkbehandling:
- Analysera användarens inmatningsfråga
- Extrahera nyckelelement och avsikt
- Konvertera till ett strukturerat format
- SQL-generering:
- Mappa extraherade detaljer till SQL-syntax
- Generera en giltig SQL-fråga
- Databasfråga:
- Kör den AI-genererade SQL-frågan på databasen
- Hämta resultat
- Returnera resultat till användaren
En anmärkningsvärd förmåga hos Large Language Models (LLM) är generering av kod, inklusive Structured Query Language (SQL) för databaser. Dessa LLM:er kan utnyttjas för att förstå frågan om naturligt språk och generera en motsvarande SQL-fråga som en utdata. LLM:erna kommer att dra nytta av att anta inlärning i sammanhang och finjustera inställningar när mer data tillhandahålls.
Följande diagram illustrerar ett grundläggande Text2SQL-flöde.
Snabba tekniska överväganden för naturligt språk till SQL
Uppmaningen är avgörande när du använder LLM:er för att översätta naturligt språk till SQL-frågor, och det finns flera viktiga överväganden för snabb ingenjörskonst.
Effektiv snabb ingenjörskonst är nyckeln till att utveckla naturligt språk till SQL-system. Tydliga, enkla uppmaningar ger bättre instruktioner för språkmodellen. Genom att tillhandahålla sammanhang som användaren begär en SQL-fråga tillsammans med relevanta databasschemadetaljer gör det möjligt för modellen att översätta avsikten korrekt. Att inkludera några kommenterade exempel på naturliga språkuppmaningar och motsvarande SQL-frågor hjälper modellen att producera syntaxkompatibel utdata. Dessutom förbättrar kartläggningsnoggrannheten ytterligare genom att införliva Retrieval Augmented Generation (RAG), där modellen hämtar liknande exempel under bearbetning. Väl utformade uppmaningar som ger modellen tillräckliga instruktioner, sammanhang, exempel och hämtningsförstärkning är avgörande för att tillförlitligt översätta naturligt språk till SQL-frågor.
Följande är ett exempel på en baslinjeprompt med kodrepresentation av databasen från whitepaper Förbättra få-shot text-till-SQL-förmåga hos stora språkmodeller: en studie om snabba designstrategier.
Som illustreras i det här exemplet ger promptbaserad få-shot-inlärning modellen med en handfull kommenterade exempel i själva prompten. Detta visar målmappningen mellan naturligt språk och SQL för modellen. Vanligtvis skulle prompten innehålla cirka 2–3 par som visar en naturlig språkfråga och motsvarande SQL-sats. Dessa få exempel vägleder modellen för att generera syntaxkompatibla SQL-frågor från naturligt språk utan att kräva omfattande träningsdata.
Finjustering kontra snabb ingenjörskonst
När vi bygger naturligt språk till SQL-system kommer vi ofta in i diskussionen om huruvida finjustering av modellen är rätt teknik eller om effektiv prompt ingenjörskonst är vägen att gå. Båda tillvägagångssätten kan övervägas och väljas utifrån rätt uppsättning krav:
-
- Finjustering – Baslinjemodellen är förtränad på en stor allmän textkorpus och kan sedan användas instruktionsbaserad finjustering, som använder märkta exempel för att förbättra prestandan för en förtränad grundmodell på text-SQL. Detta anpassar modellen till måluppgiften. Finjustering tränar modellen direkt på slutuppgiften men kräver många text-SQL-exempel. Du kan använda övervakad finjustering baserat på din LLM för att förbättra effektiviteten av text-till-SQL. För detta kan du använda flera datauppsättningar som Spider, WikiSQL, JAGA, BIRD-SQL, eller CoSQL.
- Snabb ingenjörskonst – Modellen är tränad för att slutföra prompter som är utformade för att uppmana SQL-målsyntaxen. När du genererar SQL från naturligt språk med hjälp av LLM:er är det viktigt att tillhandahålla tydliga instruktioner i prompten för att kontrollera modellens utdata. I uppmaningen att kommentera olika komponenter som att peka på kolumner, schema och sedan instruera vilken typ av SQL som ska skapas. Dessa fungerar som instruktioner som talar om för modellen hur SQL-utdata ska formateras. Följande prompt visar ett exempel där du pekar på tabellkolumner och instruerar att skapa en MySQL-fråga:
Ett effektivt tillvägagångssätt för text-till-SQL-modeller är att först börja med en baslinje LLM utan någon uppgiftsspecifik finjustering. Väl utformade uppmaningar kan sedan användas för att anpassa och driva basmodellen för att hantera text-till-SQL-mappningen. Denna snabba teknik låter dig utveckla kapaciteten utan att behöva göra finjusteringar. Om prompt ingenjörskonst på basmodellen inte uppnår tillräcklig noggrannhet, kan finjustering av en liten uppsättning text-SQL-exempel sedan utforskas tillsammans med ytterligare prompt ingenjörskonst.
Kombinationen av finjustering och snabb ingenjörskonst kan krävas om snabb konstruktion på den råa förtränade modellen ensam inte uppfyller kraven. Det är dock bäst att först försöka omedelbar ingenjörskonst utan finjustering, eftersom detta tillåter snabb iteration utan datainsamling. Om detta inte ger adekvat prestanda är finjustering tillsammans med snabb konstruktion ett hållbart nästa steg. Detta övergripande tillvägagångssätt maximerar effektiviteten samtidigt som det tillåter anpassning om rent promptbaserade metoder är otillräckliga.
Optimering och bästa praxis
Optimering och bästa praxis är avgörande för att öka effektiviteten och säkerställa att resurser används optimalt och att rätt resultat uppnås på bästa möjliga sätt. Teknikerna hjälper till att förbättra prestanda, kontrollera kostnader och uppnå ett resultat av bättre kvalitet.
När du utvecklar text-till-SQL-system med hjälp av LLM:er kan optimeringstekniker förbättra prestanda och effektivitet. Följande är några viktiga områden att tänka på:
- caching – För att förbättra latens, kostnadskontroll och standardisering kan du cachelagra den analyserade SQL-en och de igenkända frågemeddelandena från text-till-SQL LLM. Detta undviker att bearbeta upprepade frågor.
- Övervakning – Loggar och mätvärden kring frågeanalys, promptigenkänning, SQL-generering och SQL-resultat bör samlas in för att övervaka text-till-SQL LLM-systemet. Detta ger synlighet för optimeringsexemplet genom att uppdatera prompten eller återgå till finjusteringen med en uppdaterad datauppsättning.
- Materialiserade vyer kontra tabeller – Materialiserade vyer kan förenkla SQL-generering och förbättra prestanda för vanliga text-till-SQL-frågor. Att fråga efter tabeller direkt kan resultera i komplex SQL och även resultera i prestandaproblem, inklusive ständigt skapande av prestandatekniker som index. Dessutom kan du undvika prestandaproblem när samma tabell används för andra användningsområden samtidigt.
- Uppdaterar data – Materialiserade vyer måste uppdateras enligt ett schema för att hålla data aktuell för text-till-SQL-frågor. Du kan använda batch- eller inkrementella uppdateringsmetoder för att balansera overhead.
- Central datakatalog – Att skapa en centraliserad datakatalog ger en enda glasruta till en organisations datakällor och hjälper LLM:er att välja lämpliga tabeller och scheman för att ge mer exakta svar. Vektor inbäddningar skapad från en central datakatalog kan levereras till en LLM tillsammans med information som efterfrågas för att generera relevanta och exakta SQL-svar.
Genom att tillämpa bästa praxis för optimering som cachning, övervakning, materialiserade vyer, schemalagd uppdatering och en central katalog, kan du avsevärt förbättra prestandan och effektiviteten hos text-till-SQL-system som använder LLM.
Arkitektur mönster
Låt oss titta på några arkitekturmönster som kan implementeras för ett text till SQL-arbetsflöde.
Snabb ingenjörskonst
Följande diagram illustrerar arkitekturen för att generera frågor med en LLM med hjälp av promptteknik.
I det här mönstret skapar användaren promptbaserad få-shot-inlärning som förser modellen med kommenterade exempel i själva prompten, som inkluderar tabell- och schemadetaljer och några exempelfrågor med dess resultat. LLM använder den angivna prompten för att returnera den AI-genererade SQL, som valideras och sedan körs mot databasen för att få resultaten. Detta är det enklaste mönstret för att komma igång med snabb teknik. För detta kan du använda Amazonas berggrund or grundmodeller in Amazon SageMaker JumpStart.
I det här mönstret skapar användaren en promptbaserad få-shot-inlärning som förser modellen med kommenterade exempel i själva prompten, som inkluderar tabell- och schemadetaljer och några exempelfrågor med dess resultat. LLM använder den tillhandahållna prompten för att returnera den AI-genererade SQL som valideras och körs mot databasen för att få resultaten. Detta är det enklaste mönstret för att komma igång med snabb teknik. För detta kan du använda Amazonas berggrund som är en helt hanterad tjänst som erbjuder ett urval av högpresterande grundmodeller (FM) från ledande AI-företag via ett enda API, tillsammans med en bred uppsättning funktioner du behöver för att bygga generativa AI-applikationer med säkerhet, integritet och ansvarsfull AI eller JumpStart Foundation-modeller som erbjuder toppmoderna grundmodeller för användningsfall som innehållsskrivning, kodgenerering, frågesvar, copywriting, sammanfattning, klassificering, informationssökning och mer
Snabb ingenjörskonst och finjustering
Följande diagram illustrerar arkitekturen för att generera frågor med en LLM med hjälp av snabb ingenjörskonst och finjustering.
Detta flöde liknar det tidigare mönstret, som för det mesta bygger på snabb konstruktion, men med ett ytterligare flöde av finjustering på den domänspecifika datamängden. Den finjusterade LLM används för att generera SQL-frågor med minimalt värde i sammanhanget för prompten. För detta kan du använda SageMaker JumpStart för att finjustera en LLM på en domänspecifik datauppsättning på samma sätt som du skulle träna och distribuera vilken modell som helst på Amazon SageMaker.
Snabb ingenjörskonst och RAG
Följande diagram illustrerar arkitekturen för att generera frågor med en LLM med promptteknik och RAG.
I detta mönster använder vi Retrieval Augmented Generation med hjälp av vektorinbäddningsbutiker, som Amazon Titan-inbäddningar or Cohere EmbedÅ Amazonas berggrund från en central datakatalog, t.ex AWS-lim Datakatalog, av databaser inom en organisation. Vektorinbäddningarna lagras i vektordatabaser som Vector Engine för Amazon OpenSearch Serverless, Amazon Relational Database Service (Amazon RDS) för PostgreSQL med pgvektor förlängning, eller Amazon Kendra. LLM:er använder vektorinbäddningar för att snabbare välja rätt databas, tabeller och kolumner från tabeller när du skapar SQL-frågor. Att använda RAG är till hjälp när data och relevant information som behöver hämtas av LLM:er lagras i flera separata databassystem och LLM behöver kunna söka eller fråga efter data från alla dessa olika system. Det är här att tillhandahålla vektorinbäddningar av en centraliserad eller enhetlig datakatalog till LLM:erna resulterar i mer exakt och heltäckande information som returneras av LLM:erna.
Slutsats
I det här inlägget diskuterade vi hur vi kan generera värde från företagsdata med hjälp av naturligt språk till SQL-generering. Vi undersökte nyckelkomponenter, optimering och bästa praxis. Vi lärde oss också arkitekturmönster från grundläggande promptteknik till finjustering och RAG. För att lära dig mer, se Amazonas berggrund för att enkelt bygga och skala generativa AI-applikationer med grundmodeller
Om författarna
Randy DeFauw är Senior Principal Solutions Architect på AWS. Han har en MSEE från University of Michigan, där han arbetade med datorseende för autonoma fordon. Han har också en MBA från Colorado State University. Randy har haft en mängd olika positioner inom teknikområdet, allt från mjukvaruteknik till produkthantering. In gick in i Big Data-utrymmet 2013 och fortsätter att utforska det området. Han arbetar aktivt med projekt inom ML-området och har presenterat på ett flertal konferenser inklusive Strata och GlueCon.
Nitin Eusebius är Sr. Enterprise Solutions Architect på AWS, erfaren inom mjukvaruteknik, Enterprise Architecture och AI/ML. Han brinner djupt för att utforska möjligheterna med generativ AI. Han samarbetar med kunder för att hjälpa dem att bygga väldesignade applikationer på AWS-plattformen och är dedikerad till att lösa tekniska utmaningar och hjälpa till med deras molnresa.
Arghya Banerjee är Sr. Solutions Architect på AWS i San Francisco Bay Area fokuserad på att hjälpa kunder att adoptera och använda AWS Cloud. Arghya är fokuserat på Big Data, Data Lakes, Streaming, Batch Analytics och AI/ML tjänster och teknologier.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/generating-value-from-enterprise-data-best-practices-for-text2sql-and-generative-ai/
- : har
- :är
- :inte
- :var
- $UPP
- 100
- 13
- 2013
- 24
- 7
- a
- Able
- Om Oss
- ovan
- tillgång
- tillgänglig
- åtkomst
- noggrannhet
- exakt
- exakt
- Uppnå
- uppnås
- uppnå
- Agera
- aktivt
- anpassa
- anpassar sig
- Annat
- Dessutom
- anta
- Anta
- mot
- ålder
- AI
- AI / ML
- Alla
- tillåta
- tillåter
- ensam
- längs
- vid sidan av
- också
- amason
- Amazon RDS
- Amazon Web Services
- mängd
- an
- analytiker
- analytics
- analysera
- och
- svara
- svar
- vilken som helst
- api
- Ansökan
- tillämpningar
- Tillämpa
- tillvägagångssätt
- tillvägagångssätt
- lämpligt
- arkitektur
- ÄR
- OMRÅDE
- områden
- runt
- AS
- be
- bistå
- At
- försök
- augmented
- automatiskt
- autonom
- autonoma fordon
- tillgänglig
- undvika
- AWS
- tillbaka
- Balansera
- bas
- baserat
- Baslinje
- grundläggande
- bukt
- BE
- därför att
- fördel
- BÄST
- bästa praxis
- Bättre
- mellan
- Stor
- Stora data
- båda
- bred
- SLUTRESULTAT
- Byggnad
- företag
- men
- by
- Cache
- KAN
- kapacitet
- kapacitet
- fall
- katalog
- centrala
- centraliserad
- utmaningar
- chatbots
- val
- klassificering
- klar
- cloud
- koda
- de samarbetar
- samling
- Colorado
- Kolonner
- kombination
- Gemensam
- Företag
- fullborda
- komplex
- komponenter
- omfattande
- dator
- Datorsyn
- konferenser
- Tänk
- överväganden
- anses
- konstant
- innehålla
- innehåll
- Innehållsskrivning
- sammanhang
- fortsätter
- kontroll
- styrning
- konvertera
- copywriting
- Motsvarande
- Pris
- Kostar
- kunde
- skapa
- skapas
- skapar
- Skapa
- skapande
- avgörande
- Aktuella
- Kunder
- anpassning
- datum
- Data Analytics
- Databas
- databaser
- datauppsättningar
- som handlar om
- dedicerad
- djupt
- demonstrerar
- distribuera
- Designa
- Design mönster
- utformade
- detaljer
- utveckla
- utveckla
- olika
- direkt
- diskutera
- diskuteras
- diskussion
- do
- inte
- driv
- under
- varje
- lätt
- lätt
- Effektiv
- effektivitet
- effektivitet
- element
- anställda
- möjliggör
- möjliggör
- änden
- Motor
- Teknik
- förbättra
- säkerställa
- gick in i
- Företag
- Motsvarande
- väsentlig
- utvecklas
- exempel
- exempel
- finns
- erfaren
- utforska
- utforskas
- Utforska
- förlängning
- omfattande
- misslyckas
- snabbare
- få
- fält
- Förnamn
- flöda
- fokuserade
- efter
- För
- utländska
- format
- fundament
- Francisco
- från
- fullständigt
- ytterligare
- Gen
- Allmänt
- generera
- genereras
- generera
- generering
- generativ
- Generativ AI
- skaffa sig
- GitHub
- Ge
- ges
- glas
- Go
- Målet
- styra
- näve
- hantera
- he
- höjd
- Held
- hjälpa
- hjälp
- hjälpa
- hjälper
- Hög
- högpresterande
- innehar
- Hur ser din drömresa ut
- How To
- Men
- html
- HTTPS
- if
- illustrerar
- genomföras
- med Esport
- förbättra
- förbättrar
- förbättra
- in
- innefattar
- Inklusive
- införlivande
- steg
- index
- informationen
- initialt
- ingång
- insikter
- istället
- instruktioner
- uppsåt
- in
- Beskrivning
- intuitiv
- engagera
- problem
- IT
- iteration
- DESS
- sig
- delta
- resa
- jpg
- Ha kvar
- Nyckel
- Nyckelområden
- sjöar
- språk
- Large
- Efternamn
- Latens
- ledande
- LÄRA SIG
- lärt
- inlärning
- Nivå
- belånade
- tycka om
- BEGRÄNSA
- Noterade
- LLM
- se
- såg
- Lot
- lägst
- Maskinen
- maskininlärning
- Majoritet
- göra
- förvaltade
- ledning
- många
- kartläggning
- maximerar
- Maj..
- Möt
- Medlemmar
- metoder
- Metrics
- Michigan
- minimum
- ML
- modell
- modeller
- Övervaka
- övervakning
- mer
- mest
- för det mesta
- multipel
- mysql
- namn
- Natural
- Naturlig språkbehandling
- Behöver
- behöver
- behov
- Nya
- Nästa
- nlp
- inte teknisk
- talrik
- of
- Erbjudanden
- kontor
- Ofta
- on
- ONE
- ettor
- öppnade
- möjligheter
- optimering
- or
- beställa
- organisation
- organisatoriska
- Övriga
- Resultat
- produktion
- övergripande
- par
- panelen
- brinner
- Mönster
- mönster
- Personer
- procentuell
- prestanda
- Enkel
- plattform
- plato
- Platon Data Intelligence
- PlatonData
- Punkt
- poäng
- positioner
- Möjligheterna
- möjlig
- Inlägg
- potentiell
- praxis
- exakt
- presenteras
- föregående
- primär
- Principal
- privatpolicy
- process
- bearbetning
- producera
- Produkt
- produktledning
- Produkter
- projekt
- prompter
- ge
- förutsatt
- ger
- tillhandahålla
- rent
- sökfrågor
- fråga
- frågor
- som sträcker sig
- snabb
- Raw
- verklig
- erkännande
- erkänt
- hänvisa
- referenser
- region
- relaterad
- relevanta
- anmärkningsvärd
- upprepade
- representation
- begärande
- Obligatorisk
- Krav
- Kräver
- Resurser
- respons
- svar
- ansvarig
- resultera
- Resultat
- avkastning
- intäkter
- höger
- Körning
- sagemaker
- försäljning
- Samma
- San
- San Francisco
- Skala
- tidtabellen
- planerad
- Sök
- säkerhet
- se
- välj
- vald
- senior
- separat
- service
- Tjänster
- in
- inställningar
- flera
- skall
- Visar
- signifikant
- liknande
- förenkla
- enda
- Small
- Mjukvara
- mjukvaruutveckling
- Lösningar
- Lösa
- några
- Källor
- Utrymme
- tala
- specifikt
- stadier
- standardisering
- starta
- igång
- Ange
- state-of-the-art
- .
- Steg
- Fortfarande
- lagras
- lagrar
- okomplicerad
- streaming
- strukturerade
- Läsa på
- sådana
- tillräcklig
- levereras
- syntax
- system
- System
- T1
- bord
- Målet
- uppgift
- Teknisk
- Tekniken
- tekniker
- Tekniken
- Teknologi
- tala
- text
- den där
- Smakämnen
- deras
- Dem
- sedan
- Där.
- Dessa
- detta
- Genom
- tid
- titan
- till
- Totalt
- traditionell
- Tåg
- tränad
- Utbildning
- tåg
- transformerad
- Översätt
- Översättning
- Typ
- typiskt
- förstå
- enhetlig
- universitet
- låsa
- uppdaterad
- uppdatering
- användning
- Begagnade
- Användare
- användare
- användningar
- med hjälp av
- giltigt
- validerade
- värde
- mängd
- fordon
- via
- genomförbar, livskraftig
- utsikt
- visningar
- synlighet
- syn
- vs
- Sätt..
- we
- webb
- webbservice
- när
- som
- medan
- whitepaper
- VEM
- kommer
- med
- inom
- utan
- arbetade
- arbetsflöde
- arbetssätt
- skulle
- skrivning
- Om er
- Din
- zephyrnet