Migliora Amazon Lex con funzionalità di FAQ conversazionali utilizzando LLMs

Potenzia Amazon Lex con FAQ conversazionali tramite LLMs

Amazon Lex è un servizio che ti consente di costruire rapidamente e facilmente bot conversazionali (“chatbot”), agenti virtuali e sistemi di risposta vocale interattiva (IVR) per applicazioni come Amazon Connect.

L’intelligenza artificiale (IA) e il machine learning (ML) sono stati un focus per Amazon per oltre 20 anni, e molte delle funzionalità che i clienti utilizzano con Amazon sono guidate dal ML. Oggi, i grandi modelli di lingua (LLM) stanno trasformando il modo in cui sviluppatori e aziende risolvono sfide storicamente complesse legate alla comprensione del linguaggio naturale (NLU). Abbiamo recentemente annunciato Amazon Bedrock, che democratizza l’accesso al Modello Fondamentale per i developer per costruire e scalare facilmente applicazioni basate su intelligenza artificiale generativa, utilizzando strumenti e funzionalità AWS familiari. Una delle sfide che le aziende affrontano è quella di incorporare le loro conoscenze aziendali nei LLM per fornire risposte accurate e pertinenti. Quando utilizzate in modo efficace, le basi di conoscenza aziendali possono essere utilizzate per offrire esperienze di self-service personalizzate e assistite, fornendo informazioni che aiutano i clienti a risolvere problemi autonomamente e/o ad arricchire le conoscenze di un agente. Oggi, uno sviluppatore di bot può migliorare le esperienze di self-service senza utilizzare LLM in un paio di modi. In primo luogo, creando intenzioni, esempi di frase e risposte, coprendo così tutte le domande degli utenti previste all’interno di un bot Amazon Lex. In secondo luogo, gli sviluppatori possono anche integrare i bot con soluzioni di ricerca, che possono indicizzare documenti archiviati in una vasta gamma di repository e trovare il documento più pertinente per rispondere alla domanda del cliente. Questi metodi sono efficaci, ma richiedono risorse degli sviluppatori, rendendo difficile iniziare.

Uno dei vantaggi offerti dai LLM è la capacità di creare esperienze di self-service conversazionali pertinenti e coinvolgenti. Lo fanno sfruttando la base di conoscenza aziendale e fornendo risposte più accurate e contestuali. Questo post sul blog presenta una soluzione potente per arricchire Amazon Lex con funzionalità FAQ basate su LLM utilizzando Retrieval Augmented Generation (RAG). Esamineremo come l’approccio RAG integra le risposte alle FAQ di Amazon Lex utilizzando le fonti di dati aziendali. Inoltre, dimostreremo anche l’integrazione di Amazon Lex con LlamaIndex, che è un framework dati open-source che fornisce flessibilità di sorgente di conoscenza e di formato allo sviluppatore di bot. Man mano che uno sviluppatore di bot acquisisce fiducia nell’utilizzo di un LlamaIndex per esplorare l’integrazione di LLM, può estendere ulteriormente la capacità di Amazon Lex. Possono anche utilizzare servizi di ricerca aziendale come Amazon Kendra, che è integrato nativamente con Amazon Lex.

In questa soluzione, mostreremo l’applicazione pratica di un chatbot Amazon Lex con l’implementazione RAG basata su LLM. Utilizzeremo il caso di supporto clienti di Zappos come esempio per dimostrare l’efficacia di questa soluzione, che porta l’utente attraverso un’esperienza di FAQ potenziata (con LLM), anziché indirizzarlo al fallback (predefinito, senza LLM).

Panoramica della soluzione

RAG combina i punti di forza degli approcci tradizionali basati su recupero e quelli basati su intelligenza artificiale generativa per i sistemi di domande e risposte. Questa metodologia sfrutta la potenza dei grandi modelli di lingua, come Amazon Titan o modelli open-source (ad esempio, Falcon), per eseguire compiti generativi nei sistemi di recupero. Inoltre, tiene conto del contesto semantico dei documenti archiviati in modo più efficace ed efficiente.

RAG inizia con una fase di recupero iniziale per recuperare documenti pertinenti da una collezione in base alla query dell’utente. Successivamente, utilizza un modello di linguaggio per generare una risposta considerando sia i documenti recuperati che la query originale. Integrando RAG in Amazon Lex, possiamo fornire risposte accurate e complete alle query degli utenti, ottenendo un’esperienza utente più coinvolgente e soddisfacente.

L’approccio RAG richiede l’ingestione di documenti in modo che possano essere creati embedding per consentire la ricerca basata su LLM. Il diagramma seguente mostra come il processo di ingestione crea gli embedding che vengono poi utilizzati dal chatbot durante il fallback per rispondere alla domanda del cliente.

Con questa architettura di soluzione, è possibile scegliere l’LLM più adatto al proprio caso d’uso. Offre inoltre una scelta di endpoint di inferenza tra Amazon Bedrock (in anteprima limitata) e modelli ospitati su Amazon SageMaker JumpStart, offrendo una maggiore flessibilità di LLM.

Il documento viene caricato in un bucket Amazon Simple Storage Service (Amazon S3). Il bucket S3 ha un listener di eventi collegato che invoca una funzione AWS Lambda quando avvengono modifiche al bucket. Il listener di eventi ingesta il nuovo documento e posiziona gli embedding in un altro bucket S3. Gli embedding vengono quindi utilizzati dall’implementazione RAG nel bot Amazon Lex durante l’intento di fallback per rispondere alla domanda del cliente. Il diagramma successivo mostra l’architettura di come un bot FAQ all’interno di Lex può essere potenziato con LLM e RAG.

Esploriamo come possiamo integrare RAG basato su LlamaIndex in un bot Amazon Lex. Forniamo esempi di codice e un’importazione di AWS Cloud Development Kit (AWS CDK) per assisterti nella configurazione dell’integrazione. Puoi trovare gli esempi di codice nel nostro repository GitHub. Le sezioni seguenti forniscono una guida passo-passo per aiutarti a configurare l’ambiente e distribuire le risorse necessarie.

Come funziona RAG con Amazon Lex

Il flusso di RAG prevede un processo iterativo in cui il componente di recupero recupera passaggi rilevanti, la domanda e i passaggi aiutano a costruire il prompt e il componente di generazione produce una risposta. Questa combinazione di tecniche di recupero e generazione consente al modello RAG di sfruttare i punti di forza di entrambi gli approcci, fornendo risposte accurate e contestualmente appropriate alle domande degli utenti. Il flusso di lavoro fornisce le seguenti funzionalità:

  • Motore di recupero – Il modello RAG inizia con un componente di recupero responsabile del recupero di documenti rilevanti da un ampio corpus. Questo componente utilizza tipicamente una tecnica di recupero delle informazioni come TF-IDF o BM25 per classificare e selezionare documenti che probabilmente contengono la risposta a una determinata domanda. Il recupero analizza il corpus dei documenti e recupera un insieme di passaggi rilevanti.
  • Aiuto per il prompt – Dopo che il recupero ha identificato i passaggi rilevanti, il modello RAG passa alla creazione del prompt. Il prompt è una combinazione della domanda e dei passaggi recuperati, che serve come contesto aggiuntivo per il prompt, utilizzato come input per il componente di generazione. Per creare il prompt, il modello solitamente integra la domanda con i passaggi selezionati in un formato specifico.
  • Generazione della risposta – Il prompt, composto dalla domanda e dai passaggi rilevanti, viene inserito nel componente di generazione del modello RAG. Il componente di generazione è di solito un modello di linguaggio in grado di ragionare attraverso il prompt per generare una risposta coerente e pertinente.
  • Risposta finale – Infine, il modello RAG seleziona la risposta con il punteggio più alto come output e la presenta come risposta alla domanda originale. La risposta selezionata può essere ulteriormente post-elaborata o formattata come necessario prima di essere restituita all’utente. Inoltre, la soluzione consente il filtraggio della risposta generata se i risultati del recupero producono un punteggio di confidenza basso, il che implica che probabilmente si trova al di fuori della distribuzione (OOD).

LlamaIndex: Un framework di dati open-source per applicazioni basate su LLM

In questo post, dimostriamo la soluzione RAG basata su LlamaIndex. LlamaIndex è un framework di dati open-source appositamente progettato per agevolare le applicazioni basate su LLM. Offre una soluzione robusta e scalabile per la gestione di raccolte di documenti in diversi formati. Con LlamaIndex, gli sviluppatori di bot sono in grado di integrare senza sforzo le capacità di QA (question answering) basate su LLM nelle loro applicazioni, eliminando le complessità associate alla gestione di soluzioni dedicate a raccolte di documenti su larga scala. Inoltre, questo approccio si rivela conveniente per repository di documenti di dimensioni più ridotte.

Prerequisiti

Dovresti avere i seguenti prerequisiti:

  • Un account AWS
  • Un utente IAM (Identity and Access Management) di AWS e autorizzazioni di ruolo per accedere ai seguenti servizi:
    • Amazon Lex
    • Lambda
    • Amazon SageMaker
    • Un bucket S3
  • Il CDK di AWS installato

Preparare l’ambiente di sviluppo

I principali requisiti di pacchetti di terze parti sono llama_index e sagemaker sdk. Segui i comandi specificati nel README del nostro repository GitHub per preparare correttamente il tuo ambiente.

Deploy delle risorse necessarie

Questo passaggio prevede la creazione di un bot Amazon Lex, di bucket S3 e di un endpoint SageMaker. Inoltre, è necessario creare un’immagine Docker del codice nella directory delle immagini Docker e caricare le immagini in Amazon Elastic Container Registry (Amazon ECR) in modo che possano essere eseguite in Lambda. Segui i comandi specificati nel README del nostro repository GitHub per effettuare il deploy dei servizi.

In questo passaggio, dimostriamo l’hosting di LLM tramite SageMaker Deep Learning Containers. Regola le impostazioni in base alle tue esigenze di calcolo:

  • Modello – Per trovare un modello che soddisfi le tue esigenze, puoi esplorare risorse come l’hub dei modelli di Hugging Face. Offre una varietà di modelli come Falcon 7B o Flan-T5-XXL. Inoltre, puoi trovare informazioni dettagliate su diverse architetture di modelli supportate ufficialmente, che ti aiutano a prendere una decisione informata. Per ulteriori informazioni sui diversi tipi di modelli, consulta le architetture ottimizzate.
  • Endpoint di inferenza del modello – Definisci il percorso del modello (ad esempio, Falcon 7B), scegli il tipo di istanza (ad esempio, g5.4xlarge) e utilizza la quantizzazione (ad esempio, quantizzazione int-8). Nota: questa soluzione ti offre la flessibilità di scegliere un altro endpoint di inferenza del modello. Puoi anche utilizzare Amazon Bedrock, che fornisce accesso ad altri LLM come Amazon Titan.

Configura l’indice del tuo documento tramite LlamaIndex

Per configurare l’indice del tuo documento, carica prima i dati del tuo documento. Supponiamo che tu abbia la fonte dei contenuti delle FAQ, come un file PDF o di testo.

Dopo aver caricato i dati del documento, il sistema LlamaIndex avvierà automaticamente il processo di creazione dell’indice del documento. Questo compito viene eseguito da una funzione Lambda, che genera l’indice e lo salva in un bucket S3.

Per consentire un recupero efficiente delle informazioni pertinenti, configura il recuperatore di documenti utilizzando il motore di interrogazione del recuperatore LlamaIndex. Questo motore offre diverse opzioni di personalizzazione, come ad esempio le seguenti:

  • Modelli di embedding – Puoi scegliere il tuo modello di embedding, come ad esempio l’embedding di Hugging Face.
  • Soglia di confidenza – Specifica una soglia di confidenza per determinare la qualità dei risultati di recupero. Se il punteggio di confidenza scende al di sotto di questa soglia, puoi scegliere di fornire risposte fuori dallo scope, indicando che la query è al di là dello scope dei documenti indicizzati.

Testa l’integrazione

Definisci la definizione del tuo bot con un intento di fallback e usa la console Amazon Lex per testare le richieste delle FAQ. Per ulteriori dettagli, consulta il repository GitHub. La seguente schermata mostra un esempio di conversazione con il bot.

Consigli per migliorare l’efficienza del tuo bot

I seguenti consigli potrebbero migliorare ulteriormente l’efficienza del tuo bot:

  • Archiviazione dell’indice – Archivia il tuo indice in un bucket S3 o in un servizio con capacità di database vettoriale come Amazon OpenSearch. Utilizzando soluzioni di archiviazione basate su cloud, puoi migliorare l’accessibilità e la scalabilità del tuo indice, ottenendo tempi di recupero più rapidi e migliorando le prestazioni complessive. Inoltre, consulta questo post del blog per un bot Amazon Lex che utilizza una soluzione di ricerca Amazon Kendra.
  • Ottimizzazione del recupero – Sperimenta con diverse dimensioni di modelli di embedding per il recuperatore. La scelta del modello di embedding può influire significativamente sui requisiti di input del tuo LLM. Trovare il giusto equilibrio tra dimensione del modello e prestazioni di recupero può migliorare l’efficienza e i tempi di risposta più rapidi.
  • Ingegneria delle prompt – Sperimenta con diversi formati, lunghezze e stili di prompt per ottimizzare le prestazioni e la qualità delle risposte del tuo bot.
  • Selezione del modello LLM – Seleziona il modello LLM più adatto per il tuo caso d’uso specifico. Considera fattori come la dimensione del modello, le capacità linguistiche e la compatibilità con i requisiti della tua applicazione. La scelta del giusto modello LLM garantisce prestazioni ottimali e un utilizzo efficiente delle risorse di sistema.

Le conversazioni dei centri di contatto possono spaziare dall’auto-assistenza all’interazione umana in diretta. Per casi d’uso che coinvolgono interazioni umane su Amazon Connect, puoi utilizzare Wisdom per cercare e trovare contenuti in più repository, come domande frequenti (FAQ), wiki, articoli e istruzioni passo passo per gestire diverse problematiche dei clienti.

Pulizia

Per evitare spese future, procedi eliminando tutte le risorse che sono state distribuite come parte di questo esercizio. Abbiamo fornito uno script per arrestare l’endpoint SageMaker in modo corretto. I dettagli sull’utilizzo sono nel file README. Inoltre, per rimuovere tutte le altre risorse, puoi eseguire il comando cdk destroy nella stessa directory degli altri comandi cdk per deprovisionare tutte le risorse dello stack.

Sommario

In questo post sono stati discussi i seguenti passaggi per migliorare Amazon Lex con funzionalità di domande e risposte basate su LLM utilizzando la strategia RAG e LlamaIndex:

  • Installare le dipendenze necessarie, inclusa la libreria LlamaIndex
  • Configurare l’hosting del modello tramite Amazon SageMaker o Amazon Bedrock (in anteprima limitata)
  • Configurare LlamaIndex creando un indice e popolandolo con documenti pertinenti
  • Integrare RAG in Amazon Lex modificando la configurazione e configurando RAG per l’utilizzo di LlamaIndex per il recupero dei documenti
  • Testare l’integrazione impegnandosi in conversazioni con il chatbot e osservando il suo recupero e la generazione di risposte accurate

Seguendo questi passaggi, puoi integrare senza soluzione di continuità potenti capacità di QA basate su LLM e un efficiente indicizzazione dei documenti nel tuo chatbot Amazon Lex, ottenendo interazioni più accurate, complete e consapevoli del contesto con gli utenti. Come follow up, ti invitiamo anche a leggere il nostro prossimo articolo sul blog, che esplora come migliorare l’esperienza di FAQ di Amazon Lex utilizzando l’ingestione di URL e LLM.