Generare valore dai dati aziendali: best practice per Text2SQL e intelligenza artificiale generativa | Servizi Web di Amazon

Generare valore dai dati aziendali: best practice per Text2SQL e intelligenza artificiale generativa | Servizi Web di Amazon

L’intelligenza artificiale generativa ha aperto molte potenzialità nel campo dell’intelligenza artificiale. Stiamo assistendo a numerosi usi, tra cui la generazione di testo, la generazione di codice, il riepilogo, la traduzione, i chatbot e altro ancora. Una di queste aree in evoluzione è l’utilizzo dell’elaborazione del linguaggio naturale (NLP) per sbloccare nuove opportunità di accesso ai dati tramite query SQL intuitive. Invece di occuparsi di codici tecnici complessi, gli utenti aziendali e gli analisti di dati possono porre domande relative ai dati e agli approfondimenti in un linguaggio semplice. L'obiettivo principale è generare automaticamente query SQL da testo in linguaggio naturale. A tale scopo il testo immesso viene trasformato in una rappresentazione strutturata e da questa rappresentazione viene creata una query SQL con la quale è possibile accedere a un database.

In questo post forniamo un'introduzione al testo in SQL (Text2SQL) ed esploriamo casi d'uso, sfide, modelli di progettazione e best practice. Nello specifico, discutiamo di quanto segue:

  • Perché abbiamo bisogno di Text2SQL
  • Componenti chiave per Text to SQL
  • Promuovere considerazioni ingegneristiche per il linguaggio naturale o Text to SQL
  • Ottimizzazioni e best practice
  • Modelli di architettura

Perché abbiamo bisogno di Text2SQL?

Oggi, nell'analisi dei dati tradizionale, nel data warehousing e nei database è disponibile una grande quantità di dati che potrebbero non essere facili da interrogare o comprendere per la maggior parte dei membri dell'organizzazione. L'obiettivo principale di Text2SQL è rendere le query sui database più accessibili agli utenti non tecnici, che possono fornire le proprie query in linguaggio naturale.

NLP SQL consente agli utenti aziendali di analizzare dati e ottenere risposte digitando o pronunciando domande in linguaggio naturale, come le seguenti:

  • "Mostra le vendite totali per ciascun prodotto il mese scorso"
  • "Quali prodotti hanno generato più entrate?"
  • "Quale percentuale di clienti proviene da ciascuna regione?"

Roccia Amazzonica è un servizio completamente gestito che offre una scelta di Foundation Model (FM) ad alte prestazioni tramite un'unica API, consentendo di creare e scalare facilmente applicazioni Gen AI. Può essere sfruttato per generare query SQL basate su domande simili a quelle elencate sopra ed eseguire query su dati strutturati dell'organizzazione e generare risposte in linguaggio naturale dai dati di risposta alle query.

Componenti chiave per il testo in SQL

I sistemi text-to-SQL prevedono diverse fasi per convertire le query in linguaggio naturale in SQL eseguibile:

  • Elaborazione del linguaggio naturale:
    • Analizzare la query di input dell'utente
    • Estrai gli elementi chiave e l'intento
    • Converti in un formato strutturato
  • Generazione SQL:
    • Mappa i dettagli estratti nella sintassi SQL
    • Genera una query SQL valida
  • Interrogazione del database:
    • Esegui la query SQL generata dall'intelligenza artificiale sul database
    • Recupera i risultati
    • Restituire i risultati all'utente

Una capacità notevole dei Large Language Models (LLM) è la generazione di codice, incluso Structured Query Language (SQL) per i database. Questi LLM possono essere sfruttati per comprendere la domanda sul linguaggio naturale e generare una query SQL corrispondente come output. Gli LLM trarranno vantaggio dall'adozione di impostazioni di apprendimento e messa a punto in contesto man mano che verranno forniti più dati.

Il diagramma seguente illustra un flusso Text2SQL di base.

Testo 2 Flusso del processo SQL di alto livello

Promuovere considerazioni di ingegneria per il linguaggio naturale in SQL

Il prompt è fondamentale quando si utilizzano LLM per tradurre il linguaggio naturale in query SQL e ci sono diverse considerazioni importanti per il prompt engineering.

Efficace ingegneria tempestiva è la chiave per sviluppare il linguaggio naturale nei sistemi SQL. Prompt chiari e diretti forniscono istruzioni migliori per il modello linguistico. Fornire il contesto in cui si indica che l'utente sta richiedendo una query SQL insieme ai dettagli rilevanti dello schema del database consente al modello di tradurre l'intento in modo accurato. Includere alcuni esempi annotati di prompt in linguaggio naturale e query SQL corrispondenti aiuta a guidare il modello a produrre output conforme alla sintassi. Inoltre, incorporando il Retrieval Augmented Generation (RAG), in cui il modello recupera esempi simili durante l'elaborazione, migliora ulteriormente la precisione della mappatura. Prompt ben progettati che forniscano al modello istruzioni, contesto, esempi e potenziamento del recupero sufficienti sono cruciali per tradurre in modo affidabile il linguaggio naturale in query SQL.

Di seguito è riportato un esempio di prompt di base con la rappresentazione del codice del database dal white paper Miglioramento delle capacità di conversione da testo a SQL in pochi passaggi di modelli linguistici di grandi dimensioni: uno studio sulle strategie di progettazione rapida.

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

Come illustrato in questo esempio, l'apprendimento "low-shot" basato su prompt fornisce al modello una manciata di esempi annotati nel prompt stesso. Ciò dimostra la mappatura di destinazione tra linguaggio naturale e SQL per il modello. In genere, il prompt conterrebbe circa 2-3 coppie che mostrano una query in linguaggio naturale e l'istruzione SQL equivalente. Questi pochi esempi guidano il modello a generare query SQL conformi alla sintassi dal linguaggio naturale senza richiedere dati di addestramento estesi.

Messa a punto e ingegneria tempestiva

Quando si crea un linguaggio naturale per i sistemi SQL, spesso si discute se la messa a punto del modello sia la tecnica giusta o se un'efficace ingegneria tempestiva sia la strada da percorrere. Entrambi gli approcci potrebbero essere considerati e selezionati in base al giusto insieme di requisiti:

    • Ritocchi – Il modello di base è pre-addestrato su un ampio corpus di testo generale e quindi può essere utilizzato messa a punto basata su istruzioni, che utilizza esempi etichettati per migliorare le prestazioni di un modello di base preaddestrato su testo-SQL. Ciò adatta il modello all'attività target. La regolazione fine addestra direttamente il modello sull'attività finale ma richiede molti esempi di testo SQL. Puoi utilizzare l'ottimizzazione supervisionata basata sul tuo LLM per migliorare l'efficacia della conversione da testo a SQL. Per questo, puoi utilizzare diversi set di dati come Spiders, WikiSQL, INSEGUIRE, BIRD-SQL, o CoSQL.
    • Ingegneria rapida – Il modello è addestrato per completare i prompt progettati per richiedere la sintassi SQL di destinazione. Quando si genera SQL dal linguaggio naturale utilizzando LLM, fornire istruzioni chiare nel prompt è importante per controllare l'output del modello. Nella richiesta di annotare diversi componenti come il puntamento a colonne, schema e quindi indicare quale tipo di SQL creare. Funzionano come istruzioni che indicano al modello come formattare l'output SQL. Il seguente prompt mostra un esempio in cui si puntano le colonne della tabella e si istruisce a creare una query MySQL:
Table offices, columns = [OfficeId, OfficeName]
Table employees, columns = [OfficeId, EmployeeId,EmployeeName]
Create a MySQL query for all employees in the Machine Learning Department

Un approccio efficace per i modelli da testo a SQL consiste nell'iniziare innanzitutto con un LLM di base senza alcuna messa a punto specifica dell'attività. È quindi possibile utilizzare prompt ben realizzati per adattare e guidare il modello di base per gestire la mappatura da testo a SQL. Questa progettazione tempestiva consente di sviluppare la capacità senza la necessità di effettuare ottimizzazioni. Se il prompt engineering sul modello di base non raggiunge una precisione sufficiente, è possibile esplorare la messa a punto di un piccolo insieme di esempi di testo SQL insieme a un’ulteriore ingegneria del prompt.

La combinazione di messa a punto e ingegneria tempestiva potrebbe essere necessaria se l’ingegneria rapida sul solo modello grezzo pre-addestrato non soddisfa i requisiti. Tuttavia, è meglio tentare inizialmente il prompt engineering senza messa a punto, perché ciò consente un’iterazione rapida senza raccolta dati. Se questo non riesce a fornire prestazioni adeguate, il passo successivo è la messa a punto e l’ingegneria tempestiva. Questo approccio complessivo massimizza l'efficienza consentendo comunque la personalizzazione se i metodi puramente basati sui prompt non sono sufficienti.

Ottimizzazione e migliori pratiche

L’ottimizzazione e le migliori pratiche sono essenziali per migliorare l’efficacia e garantire che le risorse vengano utilizzate in modo ottimale e che i giusti risultati siano raggiunti nel miglior modo possibile. Le tecniche aiutano a migliorare le prestazioni, controllare i costi e ottenere risultati di migliore qualità.

Quando si sviluppano sistemi text-to-SQL utilizzando LLM, le tecniche di ottimizzazione possono migliorare le prestazioni e l'efficienza. Di seguito sono riportate alcune aree chiave da considerare:

  • Caching – Per migliorare la latenza, il controllo dei costi e la standardizzazione, è possibile memorizzare nella cache l'SQL analizzato e le richieste di query riconosciute dal LLM da testo a SQL. Ciò evita la rielaborazione di query ripetute.
  • Controllo – È necessario raccogliere registri e metriche relativi all'analisi delle query, al riconoscimento dei prompt, alla generazione di SQL e ai risultati SQL per monitorare il sistema LLM da testo a SQL. Ciò fornisce visibilità per l'esempio di ottimizzazione aggiornando il prompt o rivisitando la messa a punto con un set di dati aggiornato.
  • Viste materializzate e tabelle – Le viste materializzate possono semplificare la generazione SQL e migliorare le prestazioni per le query text-to-SQL comuni. L'esecuzione diretta di query sulle tabelle può comportare SQL complessi e causare anche problemi di prestazioni, inclusa la creazione costante di tecniche di prestazione come gli indici. Inoltre, è possibile evitare problemi di prestazioni quando la stessa tabella viene utilizzata contemporaneamente per altre aree di applicazione.
  • Aggiornamento dei dati – Le viste materializzate devono essere aggiornate in base a una pianificazione per mantenere i dati aggiornati per le query da testo a SQL. È possibile utilizzare approcci di aggiornamento batch o incrementale per bilanciare i costi generali.
  • Catalogo dati centrale – La creazione di un catalogo di dati centralizzato fornisce un unico pannello di visualizzazione delle origini dati di un'organizzazione e aiuterà gli LLM a selezionare tabelle e schemi appropriati per fornire risposte più accurate. Vettore incastri creato da un catalogo dati centrale può essere fornito a un LLM insieme alle informazioni richieste per generare risposte SQL pertinenti e precise.

Applicando le migliori pratiche di ottimizzazione come la memorizzazione nella cache, il monitoraggio, le visualizzazioni materializzate, l'aggiornamento pianificato e un catalogo centrale, puoi migliorare significativamente le prestazioni e l'efficienza dei sistemi da testo a SQL utilizzando LLM.

Modelli di architettura

Diamo un'occhiata ad alcuni modelli di architettura che possono essere implementati per un flusso di lavoro da testo a SQL.

Ingegneria rapida

Il diagramma seguente illustra l'architettura per la generazione di query con un LLM utilizzando il prompt engineering.

illustra l'architettura per generare query con un LLM utilizzando il prompt engineering

In questo modello, l'utente crea un apprendimento "low-shot" basato su prompt che fornisce al modello esempi annotati nel prompt stesso, che include i dettagli della tabella e dello schema e alcune query di esempio con i relativi risultati. LLM utilizza il prompt fornito per restituire l'SQL generato dall'intelligenza artificiale, che viene convalidato e quindi eseguito sul database per ottenere i risultati. Questo è il modello più semplice per iniziare a utilizzare il prompt engineering. Per questo, puoi usare Roccia Amazzonica or modelli di fondazione in JumpStart di Amazon SageMaker.

In questo modello, l'utente crea un apprendimento "low-shot" basato su prompt che fornisce al modello esempi annotati nel prompt stesso, che include i dettagli della tabella e dello schema e alcune query di esempio con i relativi risultati. LLM utilizza il prompt fornito per restituire l'SQL generato dall'intelligenza artificiale che viene convalidato ed eseguito sul database per ottenere i risultati. Questo è il modello più semplice per iniziare a utilizzare il prompt engineering. Per questo, puoi usare Roccia Amazzonica si tratta di un servizio completamente gestito che offre una scelta di Foundation Model (FM) ad alte prestazioni di aziende leader nel settore dell'intelligenza artificiale tramite un'unica API, insieme a un'ampia gamma di funzionalità necessarie per creare applicazioni di intelligenza artificiale generativa con sicurezza, privacy e intelligenza artificiale responsabile O Modelli della fondazione JumpStart che offre modelli di base all'avanguardia per casi d'uso come scrittura di contenuti, generazione di codice, risposta a domande, copywriting, riepilogo, classificazione, recupero di informazioni e altro ancora

Ingegneria e messa a punto tempestive

Il diagramma seguente illustra l'architettura per la generazione di query con un LLM utilizzando il prompt engineering e il fine tuning.

illustra l'architettura per generare query con un LLM utilizzando il prompt engineering e il fine tuning

Questo flusso è simile al modello precedente, che si basa principalmente sull'ingegneria tempestiva, ma con un flusso aggiuntivo di messa a punto sul set di dati specifico del dominio. Il LLM ottimizzato viene utilizzato per generare query SQL con un valore contestuale minimo per il prompt. A questo scopo, puoi utilizzare SageMaker JumpStart per mettere a punto un LLM su un set di dati specifico del dominio nello stesso modo in cui addestreresti e distribuiresti qualsiasi modello su Amazon Sage Maker.

Ingegneria rapida e RAG

Il diagramma seguente illustra l'architettura per la generazione di query con un LLM utilizzando Prompt Engineering e RAG.

illustra l'architettura per generare query con un LLM utilizzando prompt engineering e RAG

In questo modello, usiamo Recupero generazione aumentata utilizzando negozi di incorporamenti vettoriali, come Incorporamenti di Amazon Titan or Coerente Incorpora, Roccia Amazzonica da un catalogo di dati centrale, come Colla AWS Catalogo dati, dei database all'interno di un'organizzazione. Gli incorporamenti vettoriali sono archiviati in database vettoriali come Motore vettoriale per Amazon OpenSearch Serverless, Amazon Relational Database Service (Amazon RDS) per PostgreSQL con la pgvettore estensione, o Amazon Kendra. Gli LLM utilizzano gli incorporamenti vettoriali per selezionare più rapidamente il database, le tabelle e le colonne corretti dalle tabelle durante la creazione di query SQL. L'utilizzo di RAG è utile quando i dati e le informazioni rilevanti che devono essere recuperati dai LLM sono archiviati in più sistemi di database separati e il LLM deve essere in grado di cercare o interrogare i dati da tutti questi diversi sistemi. È qui che fornire incorporamenti vettoriali di un catalogo di dati centralizzato o unificato ai LLM si traduce in informazioni più accurate e complete restituite dai LLM.

Conclusione

In questo post abbiamo discusso di come possiamo generare valore dai dati aziendali utilizzando il linguaggio naturale per la generazione SQL. Abbiamo esaminato i componenti chiave, l'ottimizzazione e le migliori pratiche. Abbiamo anche imparato i modelli di architettura, dal prompt engineering di base alla messa a punto e al RAG. Per saperne di più, fare riferimento a Roccia Amazzonica per creare e scalare facilmente applicazioni di intelligenza artificiale generativa con modelli di base


Informazioni sugli autori

Generare valore dai dati aziendali: best practice per Text2SQL e intelligenza artificiale generativa | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Randy De Fauw è Senior Principal Solutions Architect presso AWS. Ha conseguito un MSEE presso l'Università del Michigan, dove ha lavorato alla visione artificiale per veicoli autonomi. Ha conseguito anche un MBA presso la Colorado State University. Randy ha ricoperto diverse posizioni nel settore tecnologico, dall'ingegneria del software alla gestione dei prodotti. In è entrato nello spazio dei Big Data nel 2013 e continua a esplorare quell'area. Sta lavorando attivamente a progetti nello spazio ML e ha presentato a numerose conferenze tra cui Strata e GlueCon.

Generare valore dai dati aziendali: best practice per Text2SQL e intelligenza artificiale generativa | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Nitin Eusebio è un Senior Enterprise Solutions Architect presso AWS, esperto in ingegneria del software, architettura aziendale e AI/ML. È profondamente appassionato nell’esplorare le possibilità dell’intelligenza artificiale generativa. Collabora con i clienti per aiutarli a creare applicazioni ben architettate sulla piattaforma AWS e si dedica alla risoluzione delle sfide tecnologiche e all'assistenza nel loro percorso verso il cloud.

Generare valore dai dati aziendali: best practice per Text2SQL e intelligenza artificiale generativa | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Arghya Banerjee è Sr. Solutions Architect presso AWS nella zona della Baia di San Francisco, il cui obiettivo è aiutare i clienti ad adottare e utilizzare AWS Cloud. Arghya è focalizzata su Big Data, Data Lakes, Streaming, Batch Analytics e servizi e tecnologie AI/ML.

Timestamp:

Di più da Apprendimento automatico di AWS