Structured Query Language (SQL) è un linguaggio complesso che richiede la comprensione di database e metadati. Oggi, IA generativa può consentire alle persone senza conoscenza di SQL. Questa attività di intelligenza artificiale generativa è chiamata text-to-SQL, che genera query SQL dall'elaborazione del linguaggio naturale (NLP) e converte il testo in SQL semanticamente corretto. La soluzione in questo post mira a portare le operazioni di analisi aziendale a un livello superiore accorciando il percorso verso i dati utilizzando il linguaggio naturale.
Con l'emergere di modelli linguistici di grandi dimensioni (LLM), la generazione SQL basata su NLP ha subito una trasformazione significativa. Dimostrando prestazioni eccezionali, gli LLM sono ora in grado di generare query SQL accurate da descrizioni in linguaggio naturale. Tuttavia, le sfide rimangono ancora. Innanzitutto, il linguaggio umano è intrinsecamente ambiguo e dipendente dal contesto, mentre SQL è preciso, matematico e strutturato. Questa lacuna potrebbe comportare una conversione imprecisa delle esigenze dell'utente nell'SQL generato. In secondo luogo, potrebbe essere necessario creare funzionalità di conversione da testo a SQL per ogni database poiché spesso i dati non vengono archiviati in un'unica destinazione. Potrebbe essere necessario ricreare la funzionalità di ogni database per consentire agli utenti la generazione SQL basata su NLP. In terzo luogo, nonostante la maggiore adozione di soluzioni di analisi centralizzate come data lake e warehouse, la complessità aumenta con nomi di tabelle diversi e altri metadati necessari per creare l’SQL per le origini desiderate. Pertanto, anche la raccolta di metadati completi e di alta qualità rimane una sfida. Per ulteriori informazioni sulle best practice e sui modelli di progettazione da testo a SQL, vedere Generare valore dai dati aziendali: best practice per Text2SQL e intelligenza artificiale generativa.
La nostra soluzione mira ad affrontare queste sfide utilizzando Roccia Amazzonica ed Servizi di analisi AWS. Noi usiamo Claude antropico v2.1 su Amazon Bedrock come nostro LLM. Per affrontare le sfide, la nostra soluzione incorpora innanzitutto i metadati delle origini dati all'interno del file Catalogo dati di AWS Glue per aumentare la precisione della query SQL generata. Il flusso di lavoro include anche un ciclo di valutazione e correzione finale, nel caso in cui vengano identificati problemi SQL Amazzone Atena, che viene utilizzato a valle come motore SQL. Athena ci consente anche di utilizzare una moltitudine di endpoint e connettori supportati per coprire un ampio insieme di origini dati.
Dopo aver eseguito i passaggi per creare la soluzione, presentiamo i risultati di alcuni scenari di test con diversi livelli di complessità SQL. Infine, discuteremo di come sia semplice incorporare diverse origini dati nelle query SQL.
Panoramica della soluzione
Ci sono tre componenti critici nella nostra architettura: Retrieval Augmented Generation (RAG) con metadati del database, un ciclo di autocorrezione in più fasi e Athena come motore SQL.
Utilizziamo il metodo RAG per recuperare le descrizioni delle tabelle e le descrizioni degli schemi (colonne) dal metastore AWS Glue per garantire che la richiesta sia correlata alla tabella e ai set di dati corretti. Nella nostra soluzione, abbiamo creato i singoli passaggi per eseguire un framework RAG con il catalogo dati di AWS Glue a scopo dimostrativo. Tuttavia, puoi anche usare basi di conoscenza in Amazon Bedrock per creare rapidamente soluzioni RAG.
Il componente in più passaggi consente a LLM di correggere la precisione della query SQL generata. Qui, l'SQL generato viene inviato per errori di sintassi. Utilizziamo i messaggi di errore Athena per arricchire il nostro prompt per LLM per correzioni più accurate ed efficaci nell'SQL generato.
Puoi considerare i messaggi di errore che occasionalmente provengono da Athena come un feedback. Le implicazioni in termini di costi di una fase di correzione degli errori sono trascurabili rispetto al valore fornito. Puoi anche includere questi passaggi correttivi come esempi di apprendimento rinforzato supervisionato per ottimizzare i tuoi LLM. Tuttavia, non abbiamo trattato questo flusso nel nostro post per ragioni di semplicità.
Tieni presente che esiste sempre il rischio intrinseco di avere imprecisioni, che naturalmente deriva dalle soluzioni di intelligenza artificiale generativa. Anche se i messaggi di errore di Athena sono molto efficaci per mitigare questo rischio, puoi aggiungere ulteriori controlli e visualizzazioni, come feedback umano o query di esempio per la messa a punto, per ridurre ulteriormente tali rischi.
Athena non solo ci consente di correggere le query SQL, ma ci semplifica anche il problema generale perché funge da hub, dove i raggi sono più origini dati. La gestione degli accessi, la sintassi SQL e altro ancora vengono gestiti tramite Athena.
Il diagramma seguente illustra l'architettura della soluzione.
Il flusso del processo include i seguenti passaggi:
- Crea il catalogo dati di AWS Glue utilizzando un crawler AWS Glue (o un metodo diverso).
- Usando il Modello Titan-Text-Embeddings su Amazon Bedrock, converti i metadati in incorporamenti e archiviali in un file Amazon OpenSearch senza server negozio di vettori, che funge da base di conoscenza nel nostro framework RAG.
In questa fase il processo è pronto a ricevere la query in linguaggio naturale. I passaggi 7–9 rappresentano un ciclo di correzione, se applicabile.
- L'utente inserisce la query in linguaggio naturale. È possibile utilizzare qualsiasi applicazione Web per fornire l'interfaccia utente della chat. Pertanto, non abbiamo trattato i dettagli dell'interfaccia utente nel nostro post.
- La soluzione applica un framework RAG tramite ricerca di somiglianza, che aggiunge il contesto extra dai metadati del database vettoriale. Questa tabella viene utilizzata per trovare la tabella, il database e gli attributi corretti.
- La query viene unita al contesto e inviata a Claude antropico v2.1 su Amazon Bedrock.
- Il modello ottiene la query SQL generata e si connette ad Athena per convalidare la sintassi.
- Se Athena fornisce un messaggio di errore che menziona che la sintassi non è corretta, il modello utilizza il testo dell'errore dalla risposta di Athena.
- Il nuovo prompt aggiunge la risposta di Atena.
- Il modello crea l'SQL corretto e continua il processo. Questa iterazione può essere eseguita più volte.
- Infine, eseguiamo l'SQL utilizzando Athena e generiamo l'output. Qui l'output viene presentato all'utente. Per ragioni di semplicità architettonica, non abbiamo mostrato questo passaggio.
Prerequisiti
Per questo post, è necessario completare i seguenti prerequisiti:
- Abbi un Account AWS.
- Installazione , il Interfaccia della riga di comando di AWS (interfaccia a riga di comando dell'AWS).
- Configura il SDK per Python (Boto3).
- Crea il catalogo dati di AWS Glue utilizzando un crawler AWS Glue (o un metodo diverso).
- Usando il Modello Titan-Text-Embeddings su Amazon Bedrock, converti i metadati in incorporamenti e archiviali in un OpenSearch Serverless negozio di vettori.
Implementa la soluzione
Puoi usare quanto segue Notebook Jupyter, che include tutti i frammenti di codice forniti in questa sezione, per creare la soluzione. Si consiglia di utilizzare Amazon Sage Maker Studio per aprire questo notebook con un'istanza ml.t3.medium con il kernel Python 3 (Data Science). Per istruzioni, fare riferimento a Addestrare un modello di machine learning. Completare i seguenti passaggi per configurare la soluzione:
- Creare la base di conoscenza nel servizio OpenSearch per il framework RAG:
- Costruisci il prompt (
final_question
) combinando l'input dell'utente in linguaggio naturale (user_query
), i metadati rilevanti dall'archivio vettoriale (vector_search_match
) e le nostre istruzioni (details
): - Richiama Amazon Bedrock per LLM (Claude v2) e chiedigli di generare la query SQL. Nel codice seguente vengono effettuati più tentativi per illustrare il passaggio di autocorrezione:x
- Se vengono ricevuti problemi con la query SQL generata (
{sqlgenerated}
) dalla risposta di Atena ({syntaxcheckmsg}
), il nuovo prompt (prompt
) viene generato in base alla risposta e il modello tenta nuovamente di generare il nuovo SQL: - Dopo aver generato l'SQL, viene richiamato il client Athena per eseguire e generare l'output:
Prova la soluzione
In questa sezione, eseguiamo la nostra soluzione con diversi scenari di esempio per testare diversi livelli di complessità delle query SQL.
Per testare il nostro text-to-SQL, ne utilizziamo due set di dati disponibili da IMDB. Sottoinsiemi di dati IMDb sono disponibili per uso personale e non commerciale. È possibile scaricare i set di dati e archiviarli in Servizio di archiviazione semplice Amazon (Amazon S3). Puoi utilizzare il seguente snippet Spark SQL per creare tabelle in AWS Glue. Per questo esempio utilizziamo title_ratings
ed title
:
Archivia i dati in Amazon S3 e i metadati in AWS Glue
In questo scenario, il nostro set di dati viene archiviato in un bucket S3. Athena dispone di un connettore S3 che ti consente di utilizzare Amazon S3 come origine dati su cui è possibile eseguire query.
Per la nostra prima query, forniamo l'input “Sono nuovo a questo. Puoi aiutarmi a vedere tutte le tabelle e le colonne nello schema imdb?"
Quella che segue è la query generata:
Lo screenshot e il codice seguenti mostrano il nostro output.
Per la nostra seconda query, chiediamo "Mostrami tutti i titoli e i dettagli nella regione degli Stati Uniti la cui valutazione è superiore a 9.5".
Quella che segue è la nostra query generata:
La risposta è la seguente.
Per la nostra terza query, inseriamo “Ottima risposta! Ora mostrami tutti i titoli di tipo originale con valutazioni superiori a 7.5 e non nella regione degli Stati Uniti."
Viene generata la seguente query:
Otteniamo i seguenti risultati.
Genera SQL autocorretto
Questo scenario simula una query SQL che presenta problemi di sintassi. Qui, l'SQL generato verrà auto-corretto in base alla risposta di Athena. Nella risposta seguente, Atena diede a COLUMN_NOT_FOUND
errore e l'ho menzionato table_description
non può essere risolto:
Utilizzo della soluzione con altre origini dati
Per utilizzare la soluzione con altre origini dati, Athena gestisce il lavoro per te. Per fare questo, Atena usa connettori di origine dati che può essere utilizzato con interrogazioni federate. Puoi considerare un connettore come un'estensione del motore di query Athena. Esistono connettori di origine dati Athena predefiniti per origini dati come Log di Amazon CloudWatch, Amazon DynamoDB, Amazon DocumentDB (con compatibilità MongoDB)e Servizio di database relazionale Amazon (Amazon RDS) e origini dati relazionali conformi a JDBC come MySQL e PostgreSQL con la licenza Apache 2.0. Dopo aver configurato una connessione a qualsiasi origine dati, puoi utilizzare la codebase precedente per estendere la soluzione. Per ulteriori informazioni, fare riferimento a Esegui query su qualsiasi origine dati con la nuova query federata di Amazon Athena.
ripulire
Per ripulire le risorse, puoi iniziare da ripulire il tuo bucket S3 dove risiedono i dati. A meno che la tua applicazione non richiami Amazon Bedrock, non comporterà alcun costo. Per motivi di best practice di gestione dell'infrastruttura, consigliamo di eliminare le risorse create in questa dimostrazione.
Conclusione
In questo post, abbiamo presentato una soluzione che consente di utilizzare la PNL per generare query SQL complesse con una varietà di risorse abilitate da Athena. Abbiamo inoltre aumentato la precisione delle query SQL generate tramite un ciclo di valutazione in più fasi basato sui messaggi di errore provenienti dai processi downstream. Inoltre, abbiamo utilizzato i metadati nel Catalogo dati di AWS Glue per considerare i nomi delle tabelle richiesti nella query tramite il framework RAG. Abbiamo quindi testato la soluzione in vari scenari realistici con diversi livelli di complessità delle query. Infine, abbiamo discusso come applicare questa soluzione a diverse origini dati supportate da Athena.
Amazon Bedrock è al centro di questa soluzione. Amazon Bedrock può aiutarti a creare molte applicazioni di intelligenza artificiale generativa. Per iniziare con Amazon Bedrock, ti consigliamo di seguire l'avvio rapido riportato di seguito Repository GitHub e familiarizzare con la creazione di applicazioni di intelligenza artificiale generativa. Puoi anche provare basi di conoscenza in Amazon Bedrock per creare rapidamente tali soluzioni RAG.
Informazioni sugli autori
Sanjeeb Panda è un ingegnere di dati e machine learning presso Amazon. Con un background in AI/ML, Data Science e Big Data, Sanjeeb progetta e sviluppa soluzioni innovative di dati e ML che risolvono sfide tecniche complesse e raggiungono obiettivi strategici per i venditori 3P globali che gestiscono le loro attività su Amazon. Al di fuori del suo lavoro come ingegnere di dati e machine learning presso Amazon, Sanjeeb Panda è un appassionato buongustaio e appassionato di musica.
Burak Gozluklu è un Principal AI/ML Specialist Solutions Architect con sede a Boston, MA. Aiuta i clienti strategici ad adottare le tecnologie AWS e in particolare le soluzioni di intelligenza artificiale generativa per raggiungere i propri obiettivi aziendali. Burak ha un dottorato in ingegneria aerospaziale presso il METU, un master in ingegneria dei sistemi e un post-doc in dinamica dei sistemi presso il MIT di Cambridge, MA. Burak è ancora un affiliato di ricerca del MIT. Burak è appassionato di yoga e meditazione.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/build-a-robust-text-to-sql-solution-generating-complex-queries-self-correcting-and-querying-diverse-data-sources/
- :ha
- :È
- :non
- :Dove
- $ SU
- 1
- 10
- 100
- 11
- 12
- 13
- 14
- 16
- 20
- 2024
- 22
- 23
- 29
- 30
- 32
- 39
- 50
- 500
- 521
- 7
- 8
- 9
- a
- WRI
- sopra
- accesso
- precisione
- preciso
- Raggiungere
- aggiungere
- Inoltre
- indirizzo
- Aggiunge
- adottare
- Adozione
- Aeronautico
- Affiliazione
- Dopo shavasana, sedersi in silenzio; saluti;
- ancora
- AI
- AI / ML
- mira
- Allinea
- Tutti
- consente
- anche
- alternativa
- sempre
- am
- Amazon
- Amazon RDS
- Amazon Web Services
- an
- analitica
- ed
- rispondere
- Antropico
- in qualsiasi
- Apache
- applicabile
- Applicazioni
- applicazioni
- si applica
- APPLICA
- architettonico
- architettura
- SONO
- AS
- chiedere
- At
- atlanta
- tentativo
- Tentativi
- gli attributi
- aumentata
- autorizzato
- disponibile
- AWS
- Colla AWS
- sfondo
- base
- basato
- BE
- perché
- sotto
- MIGLIORE
- best practice
- Big
- Big Data
- Bloccare
- Boston
- portare
- costruire
- Costruzione
- costruito
- affari
- aziende
- ma
- by
- detto
- cambridge
- Materiale
- non può
- capacità
- capace
- che
- Custodie
- catalogo
- centro
- centralizzata
- Challenge
- sfide
- chiacchierare
- controllato
- verifica
- cavedano
- cli
- cliente
- codice
- base del codice
- Raccolta
- Colonna
- colonne
- combinando
- viene
- arrivo
- rispetto
- confronto
- compatibilità
- completamento di una
- complesso
- complessità
- componente
- componenti
- globale
- veloce
- collega
- Prendere in considerazione
- contesto
- continua
- controlli
- Conversione
- convertire
- correggere
- corretto
- Correzioni
- Costo
- contare
- coprire
- creare
- creato
- crea
- critico
- Clienti
- dati
- scienza dei dati
- Banca Dati
- banche dati
- dataset
- Data
- datetime
- consegnato
- dimostrando
- Design
- modelli di progettazione
- desiderato
- Nonostante
- dettagli
- sviluppare
- diagramma
- DID
- diverso
- discutere
- discusso
- paesaggio differenziato
- do
- docs
- documenti
- scaricare
- durante
- dinamica
- Efficace
- altro
- emersione
- enable
- abilitato
- motore
- ingegnere
- Ingegneria
- arricchire
- garantire
- entrare
- Impresa
- entra
- appassionato
- errore
- errori
- valutazione
- Anche
- Ogni
- esempio
- Esempi
- eccezionale
- esecuzione
- esistere
- esistente
- Spiegare
- estendere
- estensione
- extra
- fallito
- falso
- Caratteristiche
- feedback
- finale
- Infine
- ricerca
- Nome
- flusso
- seguire
- i seguenti
- segue
- Nel
- Contesto
- da
- ulteriormente
- divario
- ha dato
- generare
- generato
- genera
- la generazione di
- ELETTRICA
- generativo
- AI generativa
- ottenere
- si
- globali
- Obiettivi
- ha ottenuto
- Maniglie
- Avere
- avendo
- he
- Aiuto
- aiuta
- qui
- alta qualità
- vivamente
- il suo
- Come
- Tutorial
- Tuttavia
- HTML
- http
- HTTPS
- Hub
- umano
- i
- identificato
- if
- illustrare
- illustra
- implicazioni
- importante
- in
- impreciso
- includere
- inclusi
- incorporare
- incorpora
- scorretto
- Aumento
- è aumentato
- Index
- individuale
- info
- informazioni
- Infrastruttura
- inerente
- intrinsecamente
- inizialmente
- interno
- creativi e originali
- ingresso
- esempio
- istruzioni
- ai miglioramenti
- invocato
- invoca
- problema
- sicurezza
- IT
- iterazione
- Lavoro
- join
- jpg
- conoscenze
- laghi
- Lingua
- grandi
- superiore, se assunto singolarmente.
- IMPARARE
- apprendimento
- Livello
- livelli
- Licenza
- piace
- LIMITE
- linea
- LLM
- collocato
- amore
- macchina
- machine learning
- make
- FA
- gestione
- gestione
- molti
- matematico
- Maggio..
- me
- meditazione
- medie
- menzionato
- menziona
- messaggio
- messaggi
- Metadati
- metodo
- forza
- ridurre al minimo
- CON
- Ridurre la perdita dienergia con una
- ML
- modello
- modelli
- MongoDB
- Scopri di più
- MS
- multiplo
- moltitudine
- Musica
- mysql
- Nome
- nomi
- Naturale
- Elaborazione del linguaggio naturale
- Bisogno
- esigenze
- New
- GENERAZIONE
- nlp
- non commerciale
- taccuino
- adesso
- numero
- Obiettivi d'Esame
- of
- di frequente
- on
- esclusivamente
- aprire
- Operazioni
- or
- minimo
- i
- Altro
- nostro
- produzione
- al di fuori
- complessivo
- Passato
- appassionato
- sentiero
- modelli
- Persone
- performance
- eseguita
- cronologia
- phd
- Platone
- Platone Data Intelligence
- PlatoneDati
- per favore
- Post
- Postgresql
- pratiche
- precedente
- bisogno
- prerequisiti
- presenti
- presentata
- Direttore
- Problema
- processi
- i processi
- lavorazione
- istruzioni
- fornire
- purché
- fornisce
- fini
- Python
- query
- domanda
- domanda
- Presto
- rapidamente
- virgolette
- straccio
- valutazione
- valutazioni
- Leggi
- pronto
- realistico
- ricevere
- ricevuto
- raccomandare
- riferimento
- regione
- relazionato
- pertinente
- rimanere
- resti
- rappresentare
- richiesta
- necessario
- Requisiti
- richiede
- riparazioni
- risiede
- risolvere
- risoluto
- Risorse
- rispetto
- risposta
- colpevole
- Risultati
- richiamo
- ritorno
- destra
- Rises
- Rischio
- rischi
- robusto
- RIGA
- Correre
- sagemaker
- sake
- stesso
- sega
- scenario
- Scenari
- Scienze
- ricerca
- Secondo
- Sezione
- vedere
- select
- AUTO
- Sellers
- inviato
- serverless
- serve
- servizio
- Servizi
- set
- dovrebbero
- mostrare attraverso le sue creazioni
- mostra
- mostrato
- lato
- significativa
- Un'espansione
- semplicità
- semplifica
- singolo
- frammento
- soluzione
- Soluzioni
- RISOLVERE
- alcuni
- Fonte
- fonti
- Scintilla
- specialista
- in particolare
- Stage
- inizia a
- iniziato
- Regione / Stato
- dichiarazione
- Stato dei servizi
- step
- Passi
- Ancora
- conservazione
- Tornare al suo account
- memorizzati
- lineare
- Strategico
- Corda
- strutturato
- tale
- supportato
- sicuro
- sintassi
- SYS
- sistema
- SISTEMI DI TRATTAMENTO
- tavolo
- Fai
- Target
- Task
- Consulenza
- Tecnologie
- test
- testato
- testo
- di
- che
- Il
- l'hub
- loro
- Li
- poi
- Là.
- perciò
- Strumenti Bowman per analizzare le seguenti finiture:
- Terza
- questo
- quelli
- tre
- Attraverso
- volte
- Titolo
- titoli
- a
- oggi
- Trasformazione
- prova
- seconda
- Digitare
- Tipi di
- ui
- per
- subita
- e una comprensione reciproca
- salvo che
- Aggiornanento
- aggiornato
- us
- uso
- utilizzato
- Utente
- utenti
- usa
- utilizzando
- CONVALIDARE
- APPREZZIAMO
- varietà
- vario
- variando
- via
- visualizzazioni
- Wake
- camminare
- Modo..
- we
- sito web
- applicazione web
- servizi web
- mentre
- quale
- while
- di chi
- volere
- con
- entro
- senza
- Lavora
- flusso di lavoro
- scrivere
- scrittura
- X
- Yoga
- Tu
- Trasferimento da aeroporto a Sharm
- te stesso
- zefiro