Generera värde från företagsdata: Bästa metoder för Text2SQL och generativ AI | Amazon webbtjänster

Generera värde från företagsdata: Bästa metoder för Text2SQL och generativ AI | Amazon webbtjänster

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.

Text 2 SQL processflöde på hög nivå

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.

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

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:
Table offices, columns = [OfficeId, OfficeName]
Table employees, columns = [OfficeId, EmployeeId,EmployeeName]
Create a MySQL query for all employees in the Machine Learning Department

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.

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.

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.

illustrerar arkitekturen för att generera frågor med en LLM med prompt ingenjörskonst 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

Generera värde från företagsdata: Bästa metoder för Text2SQL och generativ AI | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Generera värde från företagsdata: Bästa metoder för Text2SQL och generativ AI | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Generera värde från företagsdata: Bästa metoder för Text2SQL och generativ AI | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.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.

Tidsstämpel:

Mer från AWS maskininlärning