Questo post è stato scritto in collaborazione con Stanislav Yeshchenko di Q4 Inc.
Le aziende si rivolgono alla Retrieval Augmented Generation (RAG) come approccio tradizionale alla creazione di chatbot per domande e risposte. Continuiamo a vedere sfide emergenti derivanti dalla natura dell’assortimento di set di dati disponibili. Questi set di dati sono spesso un mix di dati numerici e di testo, a volte strutturati, non strutturati o semistrutturati.
Q4 Inc. necessari per affrontare alcune di queste sfide in uno dei loro numerosi casi d'uso dell'intelligenza artificiale basati su AWS. In questo post, discutiamo di un caso d'uso di bot di domande e risposte implementato da Q4, delle sfide presentate da set di dati numerici e strutturati e di come Q4 ha concluso che l'utilizzo di SQL potrebbe essere una soluzione praticabile. Infine, diamo uno sguardo più da vicino a come ha utilizzato il team Q4 Roccia Amazzonica e SQLDatabaseChain per implementare una soluzione basata su RAG con generazione SQL.
Panoramica dei casi d'uso
Q4 Inc., con sede a Toronto e uffici a New York e Londra, è una delle principali piattaforme di accesso ai mercati dei capitali che sta trasformando il modo in cui emittenti, investitori e venditori si connettono, comunicano e interagiscono tra loro in modo efficiente. La piattaforma Q4 facilita le interazioni nei mercati dei capitali attraverso prodotti web IR, soluzioni per eventi virtuali, analisi del coinvolgimento, relazioni con gli investitori Customer Relationship Management (CRM), analisi degli azionisti e del mercato, sorveglianza e strumenti ESG.
Nel panorama finanziario odierno, frenetico e basato sui dati, gli Investor Relations Officer (IRO) svolgono un ruolo fondamentale nel favorire la comunicazione tra un'azienda e i suoi azionisti, analisti e investitori. Nell'ambito delle loro attività quotidiane, gli IRO analizzano diversi set di dati, tra cui CRM, registri di proprietà e dati del mercato azionario. L'aggregato di questi dati viene utilizzato per generare report finanziari, stabilire obiettivi di relazione con gli investitori e gestire la comunicazione con gli investitori esistenti e potenziali.
Per soddisfare la crescente domanda di un recupero dati efficiente e dinamico, Q4 mirava a creare uno strumento di domande e risposte chatbot che fornisse agli IRO un metodo intuitivo e diretto per accedere alle informazioni necessarie di cui hanno bisogno in un formato facile da usare.
L'obiettivo finale era creare un chatbot che integrasse perfettamente i dati disponibili al pubblico, insieme ai dati proprietari del quarto trimestre specifici del cliente, mantenendo il massimo livello di sicurezza e privacy dei dati. Per quanto riguarda le prestazioni, l'obiettivo era mantenere un tempo di risposta alle query di pochi secondi per garantire un'esperienza positiva agli utenti finali.
I mercati finanziari sono un settore regolamentato con una posta in gioco elevata. Fornire informazioni errate o obsolete può avere un impatto sulla fiducia degli investitori e degli azionisti, oltre ad altri possibili rischi per la privacy dei dati. Comprendendo il settore e i requisiti, Q4 definisce la privacy dei dati e l'accuratezza della risposta come principi guida nella valutazione di qualsiasi soluzione prima che possa essere immessa sul mercato.
Per la prova di concetto, Q4 ha deciso di utilizzare un set di dati sulla proprietà finanziaria. Il set di dati è costituito da punti dati di serie temporali che rappresentano il numero di beni posseduti; la cronologia delle transazioni tra istituti di investimento, privati e società pubbliche; e molti altri elementi.
Poiché Q4 voleva assicurarsi di poter soddisfare tutti i requisiti funzionali e non funzionali di cui abbiamo discusso, il progetto doveva anche rimanere commercialmente fattibile. Ciò è stato rispettato durante tutto il processo decisionale sull'approccio, sull'architettura, sulla scelta della tecnologia e sugli elementi specifici della soluzione.
Sperimentazione e sfide
Era chiaro fin dall'inizio che per comprendere una domanda sul linguaggio umano e generare risposte accurate, Q4 avrebbe dovuto utilizzare modelli linguistici di grandi dimensioni (LLM).
Di seguito sono riportati alcuni degli esperimenti condotti dal team, insieme alle sfide identificate e alle lezioni apprese:
- Pre-allenamento – Q4 ha compreso la complessità e le sfide che derivano dalla pre-formazione di un LLM utilizzando il proprio set di dati. È diventato subito evidente che questo approccio richiede molte risorse con molti passaggi non banali, come la preelaborazione dei dati, la formazione e la valutazione. Oltre allo sforzo richiesto, i costi sarebbero proibitivi. Considerando la natura del set di dati delle serie temporali, Q4 si è anche reso conto che avrebbe dovuto eseguire continuamente un pre-addestramento incrementale man mano che arrivavano nuovi dati. Ciò avrebbe richiesto un team interdisciplinare dedicato con esperienza in scienza dei dati, apprendimento automatico e dominio conoscenza.
- Ritocchi – La messa a punto di un modello di fondazione pre-addestrato (FM) ha comportato l’utilizzo di diversi esempi etichettati. Questo approccio ha mostrato un certo successo iniziale, ma in molti casi l’allucinazione modello è stata una sfida. Il modello ha faticato a comprendere i segnali contestuali più sfumati e ha restituito risultati errati.
- RAG con ricerca semantica – Il RAG convenzionale con ricerca semantica è stato l’ultimo passo prima di passare alla generazione SQL. Il team ha sperimentato l'utilizzo della ricerca, della ricerca semantica e degli incorporamenti per estrarre il contesto. Durante l'esperimento sugli incorporamenti, il set di dati è stato convertito in incorporamenti, archiviato in un database vettoriale e quindi abbinato agli incorporamenti della domanda per estrarre il contesto. Il contesto recuperato in uno qualsiasi dei tre esperimenti è stato quindi utilizzato per aumentare il prompt originale come input per LLM. Questo approccio ha funzionato bene per i contenuti basati su testo, in cui i dati sono costituiti da linguaggio naturale con parole, frasi e paragrafi. Considerando la natura del set di dati del quarto trimestre, che consiste principalmente di dati finanziari costituiti da numeri, transazioni finanziarie, quotazioni azionarie e date, i risultati in tutti e tre i casi non erano ottimali. Anche quando si utilizzavano gli incorporamenti, gli incorporamenti generati dai numeri avevano difficoltà con la classificazione della somiglianza e in molti casi portavano al recupero di informazioni errate.
Conclusione del quarto trimestre: la generazione di SQL è la strada da seguire
Considerando le sfide affrontate utilizzando la metodologia RAG convenzionale, il team ha iniziato a prendere in considerazione la generazione SQL. L'idea era di utilizzare LLM per generare prima un'istruzione SQL dalla domanda dell'utente, presentata a LLM in linguaggio naturale. La query generata viene quindi eseguita sul database per recuperare il contesto rilevante. Il contesto viene infine utilizzato per aumentare la richiesta di input per una fase di riepilogo.
L'ipotesi di Q4 era che per ottenere un richiamo più elevato per la fase di recupero, in particolare per il set di dati numerici, fosse necessario prima generare SQL dalla domanda dell'utente. Si credeva che ciò non solo aumentasse la precisione, ma mantenesse anche il contesto all'interno del dominio aziendale per una determinata domanda. Per la generazione di query e per generare SQL accurato, Q4 doveva rendere il LLM pienamente consapevole del contesto della struttura del set di dati. Ciò significava che la richiesta doveva includere lo schema del database, alcune righe di dati di esempio e spiegazioni di campo leggibili dall'uomo per i campi che non sono facili da comprendere.
Sulla base dei test iniziali, questo metodo ha mostrato ottimi risultati. Il LLM dotato di tutte le informazioni necessarie è stato in grado di generare l'SQL corretto, che è stato poi eseguito sul database per recuperare il contesto corretto. Dopo aver sperimentato l'idea, Q4 ha deciso che la generazione di SQL era la strada da seguire per affrontare le sfide di estrazione del contesto per il proprio set di dati specifico.
Iniziamo descrivendo l'approccio globale alla soluzione, scomponendolo nei suoi componenti e poi mettendo insieme i pezzi.
Panoramica della soluzione
Gli LLM sono modelli di grandi dimensioni con miliardi di parametri pre-addestrati utilizzando grandi quantità di dati provenienti da una varietà di fonti. A causa dell'ampiezza dei set di dati di formazione, ci si aspetta che i LLM abbiano conoscenze generali in una varietà di domini. Gli LLM sono noti anche per le loro capacità di ragionamento, che variano da un modello all'altro. Questo comportamento generale può essere ottimizzato per un dominio o un settore specifico ottimizzando ulteriormente un modello di base utilizzando dati di pre-addestramento aggiuntivi specifici del dominio o perfezionando l'utilizzo di dati etichettati. Dato il contesto, i metadati e le istruzioni corretti, un LLM per scopi generali ben selezionato può produrre SQL di buona qualità purché abbia accesso al giusto contesto specifico del dominio.
Nel caso d'uso del quarto trimestre, iniziamo con la traduzione della domanda del cliente in SQL. Lo facciamo combinando la domanda dell'utente, lo schema del database, alcune righe di database di esempio e istruzioni dettagliate come richiesta a LLM di generare SQL. Dopo aver ottenuto l'SQL, possiamo eseguire una fase di convalida se ritenuto necessario. Quando siamo soddisfatti della qualità dell'SQL, eseguiamo la query sul database per recuperare il contesto rilevante di cui abbiamo bisogno per il passaggio successivo. Ora che abbiamo il contesto rilevante, possiamo inviare la domanda originale dell'utente, il contesto recuperato e una serie di istruzioni al LLM per produrre una risposta riepilogativa finale. L'obiettivo dell'ultimo passaggio è fare in modo che il LLM riassuma i risultati e fornisca una risposta contestuale e accurata che possa poi essere trasmessa all'utente.
La scelta del LLM utilizzato in ogni fase del processo ha un impatto significativo sull'accuratezza, sui costi e sulle prestazioni. Scegliere una piattaforma o una tecnologia che possa consentire la flessibilità di passare da un LLM all'altro all'interno dello stesso caso d'uso (più viaggi LLM per attività diverse) o tra casi d'uso diversi, può essere utile per ottimizzare la qualità dell'output, della latenza e dei costi . Affronteremo la scelta di LLM più avanti in questo post.
Elementi costitutivi della soluzione
Ora che abbiamo evidenziato l'approccio ad alto livello, entriamo nei dettagli, iniziando dagli elementi costitutivi della soluzione.
Roccia Amazzonica
Amazon Bedrock è un servizio completamente gestito che offre una scelta di FM ad alte prestazioni di aziende leader, tra cui AI21 Labs, Anthropic, Cohere, Meta, Stability AI e Amazon. Amazon Bedrock offre inoltre un'ampia gamma di strumenti necessari per creare applicazioni di intelligenza artificiale generativa, semplificare il processo di sviluppo e mantenere la privacy e la sicurezza. Inoltre, con Amazon Bedrock puoi scegliere tra varie opzioni FM e perfezionare ulteriormente i modelli in privato utilizzando i tuoi dati per allineare le risposte dei modelli ai requisiti del tuo caso d'uso. Amazon Bedrock è completamente serverless e non dispone di un'infrastruttura sottostante per gestire l'estensione dell'accesso ai modelli disponibili tramite un'unica API. Infine, Amazon Bedrock supporta diversi requisiti di sicurezza e privacy, tra cui l'idoneità HIPAA e la conformità GDPR.
Nella soluzione del quarto trimestre, utilizziamo Amazon Bedrock come elemento costitutivo di un modello serverless, basato su API e multifondamenta. Poiché intendiamo effettuare più viaggi al LLM all'interno dello stesso caso d'uso, in base al tipo di attività, possiamo scegliere il modello più ottimale per un'attività specifica, che si tratti di generazione SQL, convalida o riepilogo.
LangChain
LangChain è un framework di integrazione e orchestrazione open source con una serie di moduli predefiniti (I/O, recupero, catene e agenti) che è possibile utilizzare per integrare e orchestrare attività tra FM, origini dati e strumenti. Il framework facilita la creazione di applicazioni di intelligenza artificiale generativa che richiedono l’orchestrazione di più passaggi per produrre l’output desiderato, senza dover scrivere il codice da zero. LangChain supporta Amazon Bedrock come modello API multi-fondazione.
Specifico per il caso d'uso del quarto trimestre, utilizziamo LangChain per coordinare e orchestrare le attività nel nostro flusso di lavoro, inclusa la connessione a origini dati e LLM. Questo approccio ha semplificato il nostro codice perché possiamo utilizzare i moduli LangChain esistenti.
SQLDatabaseChain
SQLDatabaseChain è una catena LangChain che può essere importata da langchain_experimental. SLDatabaseChain semplifica la creazione, l'implementazione e l'esecuzione di query SQL, utilizzando le sue efficaci conversioni e implementazioni da testo a SQL.
Nel nostro caso d'uso, utilizziamo SQLDatabaseChain nella generazione SQL, semplificando e orchestrando le interazioni tra il database e LLM.
Il set di dati
Il nostro set di dati strutturati può risiedere in un database SQL, data Lake o data warehouse purché disponiamo del supporto per SQL. Nella nostra soluzione possiamo utilizzare qualsiasi tipo di set di dati con supporto SQL; questo dovrebbe essere astratto dalla soluzione e non dovrebbe modificare la soluzione in alcun modo.
Dettagli di implementazione
Ora che abbiamo esplorato l'approccio alla soluzione, i componenti della soluzione, la scelta della tecnologia e degli strumenti, possiamo mettere insieme i pezzi. Il diagramma seguente evidenzia la soluzione end-to-end.
Esaminiamo i dettagli di implementazione e il flusso del processo.
Genera la query SQL
Per semplificare la codifica, utilizziamo i framework esistenti. Utilizziamo LangChain come framework di orchestrazione. Iniziamo con la fase di input, dove riceviamo la domanda dell'utente in linguaggio naturale.
In questa prima fase, prendiamo questo input e generiamo un SQL equivalente che possiamo eseguire sul database per l'estrazione del contesto. Per generare SQL, utilizziamo SQLDatabaseChain, che si basa su Amazon Bedrock per l'accesso al nostro LLM desiderato. Con Amazon Bedrock, utilizzando un'unica API, abbiamo accesso a una serie di LLM sottostanti e possiamo scegliere quello giusto per ogni viaggio LLM che effettuiamo. Per prima cosa stabiliamo una connessione al database e recuperiamo lo schema della tabella richiesta insieme ad alcune righe di esempio dalle tabelle che intendiamo utilizzare.
Nei nostri test, abbiamo riscontrato che 2-5 righe di dati della tabella sono sufficienti per fornire informazioni sufficienti al modello senza aggiungere troppi costi inutili. Tre righe erano appena sufficienti per fornire il contesto, senza sovraccaricare il modello con troppi input. Nel nostro caso d'uso, abbiamo iniziato con Anthropic Claudio V2. Il modello è noto per il suo ragionamento avanzato e per le risposte contestuali articolate quando viene fornito con il contesto e le istruzioni giusti. Come parte delle istruzioni, possiamo includere dettagli più chiarificatori nel LLM. Ad esempio, possiamo descrivere quella colonna Comp_NAME
sta per il nome dell'azienda. Ora possiamo costruire il prompt combinando la domanda dell'utente così com'è, lo schema del database, tre righe di esempio della tabella che intendiamo utilizzare e una serie di istruzioni per generare l'SQL richiesto in un formato SQL pulito senza commenti o aggiunte.
Tutti gli elementi di input combinati sono considerati come il prompt di input del modello. Un prompt di input ben progettato e adattato alla sintassi preferita del modello ha un impatto significativo sia sulla qualità che sulle prestazioni dell'output. Anche la scelta del modello da utilizzare per un'attività specifica è importante, non solo perché influisce sulla qualità dell'output, ma anche perché ha implicazioni in termini di costi e prestazioni.
Discuteremo la selezione del modello, l'ingegneria e l'ottimizzazione tempestiva più avanti in questo post, ma vale la pena notare che per la fase di generazione della query, abbiamo notato che Claude Instant è stato in grado di produrre risultati comparabili, soprattutto quando la domanda dell'utente è ben formulata e non così sofisticata. Tuttavia, Claude V2 ha prodotto risultati migliori anche con input dell'utente più complessi e indiretti. Lo abbiamo imparato, sebbene in alcuni casi Claudio Istantaneo potrebbe fornire una precisione sufficiente con una latenza e un prezzo migliori, il nostro caso per la generazione di query era più adatto per Claude V2.
Verificare la query SQL
Il nostro prossimo passo è verificare che LLM abbia generato con successo la corretta sintassi della query e che la query abbia senso contestuale considerando gli schemi del database e le righe di esempio fornite. Per questo passaggio di verifica, possiamo ripristinare la convalida della query nativa all'interno di SQLDatabaseChain oppure possiamo eseguire un secondo viaggio in LLM includendo la query generata insieme alle istruzioni di convalida.
Se utilizziamo un LLM per la fase di convalida, possiamo utilizzare lo stesso LLM di prima (Claude V2) o un LLM più piccolo e più performante per un compito più semplice, come Claude Instant. Poiché stiamo utilizzando Amazon Bedrock, questa regolazione dovrebbe essere molto semplice. Utilizzando la stessa API, possiamo modificare il nome del modello nella nostra chiamata API, che si occupa della modifica. È importante notare che nella maggior parte dei casi, un LLM più piccolo può fornire una migliore efficienza sia in termini di costi che di latenza e dovrebbe essere preso in considerazione, purché si ottenga la precisione desiderata. Nel nostro caso, i test hanno dimostrato che la query generata era costantemente accurata e con la giusta sintassi. Sapendo ciò, siamo stati in grado di saltare questo passaggio di convalida e risparmiare su latenza e costi.
Esegui la query SQL
Ora che abbiamo la query SQL verificata, possiamo eseguirla sul database e recuperare il contesto rilevante. Questo dovrebbe essere un passo semplice.
Prendiamo il contesto generato, lo forniamo al LLM di nostra scelta con la domanda iniziale dell'utente e alcune istruzioni e chiediamo al modello di generare un riepilogo contestuale e articolato. Presentiamo quindi all'utente il riepilogo generato come risposta alla domanda iniziale, il tutto in linea con il contesto estratto dal nostro set di dati.
Per il LLM coinvolto nella fase di riepilogo, possiamo utilizzare Titan Text Express o Claude Instant. Entrambi presenterebbero buone opzioni per il compito di riepilogo.
Integrazione dell'applicazione
La funzionalità chatbot di domande e risposte è uno dei servizi di intelligenza artificiale di Q4. Per garantire modularità e scalabilità, Q4 crea servizi di intelligenza artificiale come microservizi accessibili alle applicazioni Q4 tramite API. Questo approccio basato su API consente un'integrazione perfetta con l'ecosistema della piattaforma Q4 e facilita l'esposizione delle capacità dei servizi di intelligenza artificiale alla suite completa di applicazioni della piattaforma.
L'obiettivo principale dei servizi di intelligenza artificiale è fornire funzionalità semplici per il recupero di dati da qualsiasi fonte di dati pubblica o proprietaria utilizzando il linguaggio naturale come input. Inoltre, i servizi di intelligenza artificiale forniscono ulteriori livelli di astrazione per garantire il rispetto dei requisiti funzionali e non funzionali, come la privacy e la sicurezza dei dati. Il diagramma seguente illustra il concetto di integrazione.
Sfide di attuazione
Oltre alle sfide presentate dalla natura del set di dati numerici strutturati di cui abbiamo discusso in precedenza, il quarto trimestre ha dovuto affrontare una serie di altre sfide di implementazione che dovevano essere affrontate.
Selezione e prestazioni del LLM
Selezionare il LLM giusto per l'attività è fondamentale perché influisce direttamente sulla qualità dell'output e sulle prestazioni (latenza di andata e ritorno). Ecco alcuni fattori che giocano nel processo di selezione LLM:
- Tipo di LLM – Il modo in cui i FM sono progettati e i dati iniziali su cui il modello è stato pre-addestrato determinano i tipi di attività in cui il LLM sarebbe bravo e quanto sarà valido. Ad esempio, un LLM di testo sarebbe utile per la generazione e il riepilogo del testo, mentre un modello da testo a immagine o da immagine a testo sarebbe più orientato all'analisi delle immagini e alle attività di generazione.
- dimensione LLM – Le dimensioni FM sono misurate dal numero di parametri del modello che un particolare modello ha, tipicamente in miliardi per i moderni LLM. In genere, quanto più grande è il modello, tanto più costoso sarà l'addestramento iniziale o la successiva messa a punto. D’altra parte, in generale, a parità di architettura, più il modello è grande, più ci si aspetta che sia intelligente nell’eseguire il tipo di compito a cui è orientato.
- Prestazioni LLM – In genere, più grande è il modello, maggiore è il tempo necessario per generare l'output, presupponendo che si utilizzino gli stessi parametri di calcolo e I/O (dimensione prompt e output). Inoltre, per le stesse dimensioni del modello, le prestazioni sono fortemente influenzate dal livello di ottimizzazione del prompt, dalla dimensione dei token I/O e dalla chiarezza e sintassi del prompt. Un prompt ben progettato, insieme a una dimensione del token I/O ottimizzata, può migliorare il tempo di risposta del modello.
Pertanto, quando ottimizzi la tua attività, considera le seguenti best practice:
- Scegli un modello adatto al compito da svolgere
- Seleziona la dimensione del modello più piccola in grado di produrre la precisione che stai cercando
- Ottimizza la struttura dei prompt e sii il più specifico possibile con le istruzioni in un modo che sia facile da comprendere per il modello
- Utilizza il prompt di input più piccolo in grado di fornire istruzioni e contesto sufficienti per produrre il livello di precisione che stai cercando
- Limita la dimensione di output alla dimensione più piccola che può essere significativa per te e soddisfare i tuoi requisiti di output
Tenendo conto della selezione del modello e dei fattori di ottimizzazione delle prestazioni, ci siamo messi al lavoro per ottimizzare il nostro caso d'uso di generazione SQL. Dopo alcuni test, abbiamo notato che, a condizione che avessimo il contesto e le istruzioni corretti, Claude Instant, con gli stessi dati rapidi, produrrebbe una qualità SQL paragonabile a quella di Claude V2 con prestazioni e prezzo molto migliori. Ciò è vero quando l'input dell'utente è più diretto e di natura più semplice. Per input più sofisticati, era necessario Claude V2 per produrre la precisione desiderata.
L'applicazione della stessa logica all'attività di riepilogo ci ha portato a concludere che l'utilizzo di Claude Instant o Titan Text Express produrrebbe la precisione richiesta a un punto di prestazione molto migliore rispetto all'utilizzo di un modello più grande come Claude V2. Titan Text Expressed offriva anche un migliore rapporto qualità-prezzo, come abbiamo discusso in precedenza.
La sfida dell'orchestrazione
Ci siamo resi conto che c'è molto da orchestrare prima di poter ottenere una risposta di output significativa per la domanda dell'utente. Come mostrato nella panoramica della soluzione, il processo ha coinvolto più viaggi nel database e più viaggi LLM intrecciati. Se avessimo dovuto costruire da zero, avremmo dovuto fare un investimento significativo nel lavoro pesante indifferenziato solo per preparare il codice di base. Siamo passati rapidamente all'utilizzo di LangChain come framework di orchestrazione, sfruttando la potenza della comunità open source e riutilizzando i moduli esistenti senza reinventare la ruota.
La sfida dell'SQL
Ci siamo anche resi conto che generare SQL non è così semplice come i meccanismi di estrazione del contesto come la ricerca semantica o l'utilizzo degli incorporamenti. Dobbiamo prima ottenere lo schema del database e alcune righe di esempio da includere nel nostro prompt per LLM. C'è anche la fase di convalida SQL, in cui dovevamo interagire sia con il database che con LLM. SQLDatabaseChain era la scelta ovvia dello strumento. Poiché fa parte di LangChain, è stato semplice adattarlo e ora possiamo gestire la generazione SQL e la verifica assistita con la catena, riducendo al minimo la quantità di lavoro che dovevamo svolgere.
Sfide prestazionali
Con l'uso di Claude V2 e dopo un'adeguata progettazione tempestiva (di cui parleremo nella sezione successiva), siamo stati in grado di produrre SQL di alta qualità. Considerando la qualità dell'SQL generato, abbiamo iniziato a esaminare il valore effettivamente aggiunto dalla fase di convalida. Dopo un'ulteriore analisi dei risultati, è apparso chiaro che la qualità dell'SQL generato era costantemente accurata, tanto da rendere sfavorevole il rapporto costi/benefici dell'aggiunta di una fase di convalida SQL. Alla fine abbiamo eliminato la fase di convalida SQL senza influire negativamente sulla qualità del nostro output e abbiamo ridotto i tempi di andata e ritorno della convalida SQL.
Oltre a ottimizzare per un LLM più efficiente in termini di costi e prestazioni per la fase di riepilogo, siamo stati in grado di utilizzare Titan Text Express per ottenere prestazioni migliori ed efficienza in termini di costi.
Un'ulteriore ottimizzazione delle prestazioni ha comportato la messa a punto del processo di generazione delle query utilizzando efficienti tecniche di prompt engineering. Piuttosto che fornire un'abbondanza di token, l'attenzione si è concentrata sul fornire il minor numero di token di input, nella giusta sintassi che il modello è addestrato a comprendere e con un set di istruzioni minimo ma ottimale. Ne parleremo più approfonditamente nella sezione successiva: è un argomento importante applicabile non solo in questo caso ma anche in altri casi d'uso.
Ingegneria e ottimizzazione tempestive
Puoi adattare Claude su Amazon Bedrock per vari casi d'uso aziendali se vengono impiegate le giuste tecniche di prompt engineering. Claude agisce principalmente come assistente conversazionale che utilizza un formato umano/assistente. Claude è addestrato a compilare il testo per il ruolo di assistente. Date le istruzioni e i rapidi completamenti desiderati, possiamo ottimizzare i nostri suggerimenti per Claude utilizzando diverse tecniche.
Iniziamo con un modello di prompt formattato correttamente che fornisca un completamento valido, quindi possiamo ottimizzare ulteriormente le risposte sperimentando il prompt con vari set di input rappresentativi dei dati del mondo reale. Si consiglia di ottenere molti input durante lo sviluppo di un modello di prompt. È inoltre possibile utilizzare set separati di dati di sviluppo tempestivo e dati di test.
Un altro modo per ottimizzare la risposta di Claude è sperimentare e ripetere aggiungendo regole, istruzioni e ottimizzazioni utili. Da queste ottimizzazioni è possibile visualizzare diversi tipi di completamenti, ad esempio dicendo a Claude di dire "Non lo so" per evitare allucinazioni, pensando passo dopo passo, utilizzando il concatenamento di prompt, dando spazio al "pensare" mentre genera risposte e ricontrollandone la comprensione e l'accuratezza.
Usiamo la nostra attività di generazione di query e discutiamo alcune delle tecniche che abbiamo utilizzato per ottimizzare il nostro prompt. C'erano alcuni elementi fondamentali che hanno giovato ai nostri sforzi di generazione di query:
- Utilizzando la corretta sintassi uomo/assistente
- Utilizzo dei tag XML (Claude rispetta e comprende i tag XML)
- Aggiunte istruzioni chiare per il modello per prevenire allucinazioni
Il seguente esempio generico mostra come abbiamo utilizzato la sintassi uomo/assistente, applicato tag XML e aggiunto istruzioni per limitare l'output a SQL e istruire il modello a dire "scusa, non posso aiutarti" se non riesce a produrre SQL pertinente . I tag XML sono stati utilizzati per inquadrare le istruzioni, i suggerimenti aggiuntivi, lo schema del database, le spiegazioni aggiuntive delle tabelle e le righe di esempio.
La soluzione operativa finale
Dopo aver affrontato tutte le sfide identificate durante la prova di concetto, abbiamo soddisfatto tutti i requisiti della soluzione. Il quarto trimestre è stato soddisfatto della qualità dell'SQL generato da LLM. Ciò è vero per attività semplici che richiedevano solo una clausola WHERE per filtrare i dati e anche per attività più complesse che richiedevano aggregazioni basate sul contesto con GROUP BY e funzioni matematiche. La latenza end-to-end della soluzione complessiva rientrava in ciò che era stato definito accettabile per il caso d'uso: secondi a una cifra. Tutto questo grazie alla scelta di un LLM ottimale in ogni fase, a un'adeguata ingegneria tempestiva, all'eliminazione della fase di verifica SQL e all'utilizzo di un LLM efficiente per la fase di riepilogo (Titan Text Express o Claude Instant).
Vale la pena notare che l'utilizzo di Amazon Bedrock come servizio completamente gestito e la possibilità di accedere a una suite di LLM tramite la stessa API hanno consentito la sperimentazione e il passaggio senza interruzioni tra LLM modificando il nome del modello nella chiamata API. Con questo livello di flessibilità, Q4 è stato in grado di scegliere il LLM più performante per ciascuna chiamata LLM in base alla natura dell'attività, che si tratti di generazione di query, verifica o riepilogo.
Conclusione
Non esiste una soluzione adatta a tutti i casi d’uso. In un approccio RAG, la qualità dell’output dipende in larga misura dalla fornitura del giusto contesto. Estrarre il contesto corretto è fondamentale e ogni set di dati è diverso con le sue caratteristiche uniche.
In questo post, abbiamo dimostrato che per set di dati numerici e strutturati, l'utilizzo di SQL per estrarre il contesto utilizzato per l'aumento può portare a risultati più favorevoli. Abbiamo anche dimostrato che framework come LangChain possono ridurre al minimo lo sforzo di codifica. Inoltre, abbiamo discusso della necessità di poter passare da un LLM all'altro all'interno dello stesso caso d'uso per ottenere precisione, prestazioni e costi ottimali. Infine, abbiamo evidenziato come Amazon Bedrock, essendo serverless e con una varietà di LLM sotto il cofano, offra la flessibilità necessaria per creare applicazioni sicure, performanti e ottimizzate in termini di costi con il minimo sforzo.
Inizia il tuo viaggio verso la creazione di applicazioni generative abilitate all'intelligenza artificiale identificando un caso d'uso di valore per la tua azienda. La generazione di SQL, come ha appreso il team del quarto trimestre, può rappresentare un punto di svolta nella creazione di applicazioni intelligenti che si integrano con i tuoi archivi dati, sbloccando potenziali ricavi.
Circa gli autori
Il domatore Soliman è un Senior Solutions Architect presso AWS. Aiuta i clienti dei fornitori di software indipendenti (ISV) a innovare, creare e scalare su AWS. Vanta oltre vent'anni di esperienza nel settore della consulenza, della formazione e dei servizi professionali. È un inventore multibrevetto con tre brevetti concessi e la sua esperienza abbraccia diversi settori tecnologici tra cui telecomunicazioni, reti, integrazione di applicazioni, AI/ML e implementazioni cloud. È specializzato in reti AWS e ha una profonda passione per il machine leaning, l'intelligenza artificiale e l'intelligenza artificiale generativa.
Mani Khanuja è un Tech Lead – Generative AI Specialists, autore del libro – Applied Machine Learning and High Performance Computing on AWS e membro del Consiglio di amministrazione della Women in Manufacturing Education Foundation. Conduce progetti di machine learning (ML) in vari settori come la visione artificiale, l'elaborazione del linguaggio naturale e l'intelligenza artificiale generativa. Aiuta i clienti a creare, addestrare e distribuire modelli di machine learning di grandi dimensioni su larga scala. Partecipa a conferenze interne ed esterne come re:Invent, Women in Manufacturing West, webinar su YouTube e GHC 23. Nel tempo libero le piace fare lunghe corse lungo la spiaggia.
Stanislav Yeschenko è un Software Architect presso Q4 Inc.. Ha oltre un decennio di esperienza nel settore dello sviluppo software e dell'architettura di sistema. Il suo background diversificato, che abbraccia ruoli come responsabile tecnico e sviluppatore full stack senior, contribuisce a promuovere l'innovazione della piattaforma Q4. Stanislav si dedica a promuovere l'innovazione tecnica e a definire soluzioni strategiche sul campo.
- 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/how-q4-inc-used-amazon-bedrock-rag-and-sqldatabasechain-to-address-numerical-and-structured-dataset-challenges-building-their-qa-chatbot/
- :ha
- :È
- :non
- :Dove
- $ SU
- 100
- 118
- 125
- 15%
- 23
- 7
- a
- abilità
- capacità
- capace
- astrazione
- abbondanza
- accettabile
- accesso
- accessibile
- Il mio account
- precisione
- preciso
- Raggiungere
- operanti in
- atti
- effettivamente
- adattare
- aggiunto
- l'aggiunta di
- aggiunta
- aggiuntivo
- Inoltre
- integrazioni
- indirizzo
- indirizzata
- Adattamento
- Avanzate
- avanzando
- Vantaggio
- Dopo shavasana, sedersi in silenzio; saluti;
- contro
- agenti
- aggregato
- AI
- Servizi di intelligenza artificiale
- casi d'uso ai
- AI / ML
- Mirato
- allineare
- Allineati
- Tutti
- consentire
- permesso
- lungo
- anche
- Sebbene il
- am
- Amazon
- Amazon Web Services
- quantità
- importi
- an
- .
- Gli analisti
- analitica
- analizzare
- l'analisi
- ed
- Un altro
- rispondere
- risposte
- Antropico
- in qualsiasi
- nulla
- api
- API
- applicabile
- Applicazioni
- applicazioni
- applicato
- approccio
- architettura
- SONO
- AS
- chiedere
- Attività
- Assistant
- assistito
- assortimento
- At
- aumentare
- aumentata
- autore
- disponibile
- consapevole
- AWS
- precedente
- sfondo
- basato
- basic
- BE
- Beach
- è diventato
- perché
- stato
- prima
- Inizio
- comportamento
- essendo
- creduto
- benefico
- MIGLIORE
- best practice
- Meglio
- fra
- miliardi
- Bloccare
- Blocchi
- tavola
- Consiglio di Amministrazione
- libro
- Bot
- entrambi
- ampiezza
- Rompere
- ampio
- costruire
- Costruzione
- costruisce
- costruito
- affari
- ma
- by
- chiamata
- è venuto
- Materiale
- Può ottenere
- funzionalità
- capacità
- capitale
- Mercati capitali
- che
- Custodie
- casi
- catena
- Catene
- Challenge
- sfide
- costruzione di sfide
- il cambiamento
- Changer
- cambiando
- caratteristiche
- chatbot
- chatbots
- scegliere
- Scegli
- la scelta
- chiarezza
- cavedano
- pulire campo
- più vicino
- Cloud
- codice
- codifica
- Colonna
- combinato
- combinando
- Venire
- Commenti
- commercialmente
- comunicare
- Comunicazione
- comunità
- Aziende
- azienda
- paragonabile
- completamento
- complesso
- complessità
- conformità
- componenti
- comprendere
- Calcolare
- computer
- Visione computerizzata
- informatica
- concetto
- concludere
- concluso
- conclusione
- condotto
- conferenze
- Connettiti
- Collegamento
- veloce
- Prendere in considerazione
- considerato
- considerando
- costantemente
- Consistente
- consiste
- costruire
- consulting
- contenuto
- contesto
- contestuale
- continua
- continuamente
- contributi
- convenzionale
- discorsivo
- conversioni
- convertito
- coordinamento
- Nucleo
- correggere
- Costo
- potuto
- creare
- critico
- CRM
- cruciale
- cliente
- Clienti
- alle lezioni
- dati
- Lago di dati
- punti dati
- privacy dei dati
- Privacy e sicurezza dei dati
- scienza dei dati
- data-driven
- Banca Dati
- dataset
- Date
- decennio
- decenni
- deciso
- Decidere
- dedicato
- ritenuto
- definito
- Richiesta
- dimostrato
- dimostra
- dipende
- schierare
- implementazioni
- descrivere
- descrivendo
- desiderato
- dettagliati
- dettagli
- determina
- Costruttori
- in via di sviluppo
- Mercato
- diverso
- dirette
- direttamente
- Amministrazione
- discutere
- discusso
- immersione
- paesaggio differenziato
- do
- dominio
- domini
- Dont
- doppio controllo
- giù
- guida
- dovuto
- durante
- dinamico
- ogni
- In precedenza
- facile
- ecosistema
- Istruzione
- Efficace
- efficienza
- efficiente
- in modo efficiente
- sforzo
- sforzi
- o
- elementi
- eleggibilità
- eliminando
- emergenti del mondo
- occupato
- Abilita
- fine
- da un capo all'altro
- finito
- impegnarsi
- Fidanzamento
- Ingegneria
- abbastanza
- garantire
- attrezzato
- Equivalente
- ESG
- particolarmente
- stabilire
- la valutazione
- valutazione
- Anche
- eventi
- Ogni
- esempio
- Esempi
- esistente
- attenderti
- previsto
- costoso
- esperienza
- esperimento
- esperimenti
- esperto
- competenza
- Esplorazione
- esprimere
- espresso
- estendendo
- esterno
- estratto
- estrazione
- di fronte
- facilita
- Fattori
- fast-paced
- favorevole
- fattibile
- pochi
- campo
- campi
- riempire
- filtro
- finale
- Infine
- finanziario
- dati finanziari
- Nome
- Flessibilità
- flusso
- Focus
- seguire
- i seguenti
- Nel
- formato
- Avanti
- promozione
- essere trovato
- Fondazione
- TELAIO
- Contesto
- quadri
- Gratis
- da
- pieno
- Stack completo
- completamente
- funzionale
- funzioni
- ulteriormente
- gioco
- game-changer
- GDPR
- Conformità del DPPP
- orientata
- Generale
- generare
- generato
- genera
- la generazione di
- ELETTRICA
- generativo
- AI generativa
- ottenere
- ottenere
- Dare
- dato
- dà
- Dare
- Go
- scopo
- Obiettivi
- buono
- concesso
- grande
- Gruppo
- Crescita
- ha avuto
- cura
- contento
- Avere
- avendo
- he
- con sede
- pesante
- sollevamento pesante
- Aiuto
- aiuta
- suo
- qui
- Alta
- ad alte prestazioni
- alta qualità
- superiore
- massimo
- Evidenziato
- evidenzia
- vivamente
- suggerimenti
- il suo
- storia
- cappuccio
- Come
- Tuttavia
- HTTPS
- umano
- leggibile dagli umani
- i
- idea
- identificato
- identificazione
- if
- Immagine
- Impact
- impattato
- impatto
- impatti
- realizzare
- implementazione
- implementazioni
- implementato
- implicazioni
- importante
- competenze
- in
- In altre
- Inc.
- includere
- Compreso
- Aumento
- incrementale
- studente indipendente
- individui
- industria
- informazioni
- Infrastruttura
- inizialmente
- inizialmente
- innovare
- Innovazione
- ingresso
- Ingressi
- immediato
- istituzioni
- istruzioni
- integrare
- integrazione
- intendono
- interagire
- interazioni
- interno
- intrecciate
- ai miglioramenti
- intuitivo
- investimento
- investitore
- Investitori
- coinvolto
- emittenti
- isv
- IT
- SUO
- viaggio
- jpg
- ad appena
- mantenere
- Le
- Conoscere
- conoscenze
- conosciuto
- Labs
- lago
- paesaggio
- Lingua
- grandi
- superiore, se assunto singolarmente.
- Cognome
- infine
- Latenza
- dopo
- galline ovaiole
- portare
- principale
- Leads
- imparato
- apprendimento
- meno
- Guidato
- Lezioni
- Lezioni apprese
- Livello
- di sollevamento
- piace
- piace
- LLM
- logica
- Londra
- Lunghi
- Guarda
- cerca
- lotto
- macchina
- machine learning
- fatto
- Principale
- principalmente
- corrente principale
- mantenere
- Mantenere
- make
- FA
- gestire
- gestito
- gestione
- consigliato per la
- molti
- Rappresentanza
- Analisi di mercato
- Dati di mercato
- Mercati
- abbinato
- matematico
- Maggio..
- significativo
- significava
- meccanismi di
- Soddisfare
- membro
- di cartone
- Meta
- Metadati
- metodo
- Metodologia
- microservices
- minimo
- minimizzando
- scelta
- ML
- modello
- modelli
- moderno
- moduli
- Scopri di più
- maggior parte
- soprattutto
- in movimento
- molti
- Multi
- multiplo
- Nome
- nativo
- Naturale
- Elaborazione del linguaggio naturale
- Natura
- necessaria
- Bisogno
- di applicazione
- negativamente
- internazionale
- New
- New York
- GENERAZIONE
- no
- Nota
- notando
- adesso
- numero
- numeri
- obiettivo
- ovvio
- of
- MENO
- offerto
- Offerte
- ufficiali
- uffici
- di frequente
- on
- ONE
- esclusivamente
- aprire
- open source
- ottimale
- ottimizzazione
- OTTIMIZZA
- ottimizzati
- ottimizzazione
- Opzioni
- or
- orchestrare
- orchestrazione
- minimo
- i
- Altro
- nostro
- produzione
- ancora
- complessivo
- panoramica
- travolgente
- proprio
- Di proprietà
- proprietà
- parametri
- parte
- particolare
- Passato
- passione
- brevetto
- Brevetti
- sentiero
- Eseguire
- performance
- esecuzione
- scegliere
- pezzi
- piattaforma
- Platone
- Platone Data Intelligence
- PlatoneDati
- Giocare
- punto
- punti
- positivo
- possibile
- Post
- potenziale
- energia
- potenze
- pratiche
- preferito
- presenti
- presentata
- prevenire
- prezzo
- principi
- Privacy
- Privacy e sicurezza
- processi
- lavorazione
- produrre
- Prodotto
- Prodotti
- professionale
- profonda
- progetto
- progetti
- istruzioni
- prova
- prova del concetto
- corretto
- proprio
- dimostrato
- fornire
- purché
- fornisce
- fornitura
- la percezione
- aziende pubbliche
- pubblicamente
- scopo
- metti
- Domande e risposte
- qualità
- query
- domanda
- rapidamente
- virgolette
- Posizione
- piuttosto
- RE
- pronto
- mondo reale
- realizzato
- ricevere
- raccomandato
- record
- riferimento
- regolamentati
- relazioni
- rapporto
- pertinente
- Report
- rappresentante
- che rappresenta
- rappresenta
- richiedere
- necessario
- Requisiti
- risorsa
- rispettati
- omaggio
- risposta
- risposte
- limitare
- Risultati
- Le vendite
- ritornare
- revisione
- destra
- rischi
- Ruolo
- ruoli
- Prenotazione sale
- tondo
- norme
- Correre
- corre
- stesso
- soddisfatte
- soddisfatto
- Risparmi
- dire
- Scalabilità
- Scala
- Scienze
- graffiare
- senza soluzione di continuità
- senza soluzione di continuità
- Cerca
- Secondo
- secondo
- Sezione
- sicuro
- problemi di
- vedere
- prodotti
- Sellers
- inviare
- anziano
- senso
- separato
- Serie
- serverless
- servizio
- Servizi
- set
- Set
- alcuni
- sagomatura
- azionista
- Azionisti
- lei
- dovrebbero
- ha mostrato
- mostrato
- Spettacoli
- significativa
- Un'espansione
- semplice
- semplificata
- semplificare
- semplificando
- singolo
- Taglia
- Dimensioni
- inferiore
- smart
- più intelligente
- Software
- lo sviluppo del software
- soluzione
- Soluzioni
- alcuni
- sofisticato
- Fonte
- fonti
- tensione
- campate
- Parla
- specialisti
- specializzata
- specifico
- in particolare
- Stabilità
- pila
- Stage
- posta in gioco
- stare in piedi
- si
- inizia a
- iniziato
- Di partenza
- dichiarazione
- soggiorno
- step
- Passi
- azione
- borsa
- memorizzati
- negozi
- lineare
- Strategico
- La struttura
- strutturato
- Successivamente
- il successo
- Con successo
- tale
- sufficiente
- adatto
- suite
- riassumere
- SOMMARIO
- supporto
- supporti
- sorveglianza
- Interruttore
- sintassi
- sistema
- tavolo
- su misura
- Fai
- preso
- prende
- presa
- Task
- task
- team
- Tech
- Consulenza
- tecniche
- Tecnologia
- telecom
- raccontare
- modello
- test
- Testing
- test
- testo
- di
- Grazie
- che
- Il
- La capitale
- loro
- poi
- Là.
- Strumenti Bowman per analizzare le seguenti finiture:
- di
- Pensiero
- questo
- tre
- Attraverso
- per tutto
- tempo
- Serie storiche
- volte
- titano
- a
- di oggi
- insieme
- token
- Tokens
- pure
- strumenti
- argomento
- toronto
- verso
- Treni
- allenato
- Training
- delle transazioni
- Le transazioni
- trasformazione
- viaggio
- vero
- Affidati ad
- TURNO
- seconda
- Digitare
- Tipi di
- tipicamente
- incapace
- per
- sottostante
- capire
- e una comprensione reciproca
- capisce
- inteso
- unico
- sblocco
- inutile
- us
- uso
- caso d'uso
- utilizzato
- Utente
- user-friendly
- utilizzando
- utilizza
- un valido
- convalida
- APPREZZIAMO
- varietà
- vario
- venditore
- Convalida
- verificato
- verificare
- molto
- vitale
- Visualizza
- virtuale
- visione
- camminare
- ricercato
- Prima
- Modo..
- we
- sito web
- servizi web
- Webinars
- Sito web
- WELL
- è andato
- sono stati
- ovest
- Che
- Ruota
- quando
- mentre
- quale
- while
- volere
- con
- entro
- senza
- Donna
- parole
- Lavora
- lavorato
- flusso di lavoro
- lavoro
- valore
- sarebbe
- scrivere
- scrivere codice
- XML
- ancora
- York
- Tu
- Trasferimento da aeroporto a Sharm
- youtube
- zefiro