Costruisci un’applicazione aziendale sicura con Generative AI e RAG utilizzando Amazon SageMaker JumpStart

Crea un'app aziendale sicura con Generative AI e RAG usando Amazon SageMaker JumpStart

L’IA generativa è un tipo di intelligenza artificiale che può creare nuovi contenuti e idee, tra cui conversazioni, storie, immagini, video e musica. È alimentata da grandi modelli di linguaggio (LLM) che sono preaddestrati su vaste quantità di dati e comunemente definiti come modelli di base (FM).

Con l’avvento di questi LLM o FM, i clienti possono semplicemente creare applicazioni basate sull’IA generativa per la pubblicità, la gestione delle conoscenze e il supporto clienti. Realizzando l’impatto di queste applicazioni, è possibile fornire agli utenti una maggiore comprensione e migliorare l’efficienza delle prestazioni nell’organizzazione, con un facile recupero delle informazioni e l’automatizzazione di determinate attività che richiedono tempo.

Con l’IA generativa su AWS, è possibile reinventare le proprie applicazioni, creare esperienze completamente nuove per i clienti e migliorare la produttività complessiva.

In questo post, costruiremo un’applicazione enterprise sicura utilizzando AWS Amplify che richiama un modello di base JumpStart di Amazon SageMaker, endpoint di Amazon SageMaker e il servizio Amazon OpenSearch per spiegare come creare un modello di generazione di testo-imagine o testo-testo e Retrieval Augmented Generation (RAG). È possibile utilizzare questo post come riferimento per creare applicazioni enterprise sicure nel campo dell’IA generativa utilizzando i servizi AWS.

Panoramica della soluzione

Questa soluzione utilizza modelli JumpStart di SageMaker per distribuire modelli di testo-testo, testo-immagine e modelli di embedding di testo come endpoint di SageMaker. Questi endpoint di SageMaker vengono utilizzati nell’applicazione React di Amplify tramite Amazon API Gateway e funzioni AWS Lambda. Per proteggere l’applicazione e le API da accessi indesiderati, Amazon Cognito è integrato in Amplify React, API Gateway e funzioni Lambda. Gli endpoint di SageMaker e Lambda vengono distribuiti in una VPC privata, quindi la comunicazione da API Gateway alle funzioni Lambda è protetta mediante collegamenti VPC di API Gateway. Il seguente diagramma di flusso illustra questa soluzione.

Il flusso di lavoro include i seguenti passaggi:

  1. Configurazione iniziale: I modelli JumpStart di SageMaker vengono distribuiti come endpoint di SageMaker, con tre endpoint creati dai modelli JumpStart di SageMaker. Il modello di testo-immagine è un modello di base Stability AI Stable Diffusion che verrà utilizzato per generare immagini. Il modello di testo-testo utilizzato per generare testo e distribuito nella soluzione è un modello Hugging Face Flan T5 XL. Il modello di embedding di testo, che verrà utilizzato per generare l’embedding da indicizzare nel servizio Amazon OpenSearch o per cercare il contesto della domanda in arrivo, è un modello di embedding Hugging Face GPT 6B FP16. Modelli LLM alternativi possono essere distribuiti in base al caso d’uso e alle prestazioni del modello. Per ulteriori informazioni sui modelli di base, consultare Introduzione a Amazon SageMaker JumpStart.
  2. Accedi all’applicazione React dal tuo computer. L’app React ha tre pagine: una pagina che richiede suggerimenti di immagini e mostra l’immagine generata; una pagina che richiede suggerimenti di testo e mostra il testo generato; e una pagina che richiede una domanda, trova il contesto corrispondente alla domanda e mostra la risposta generata dal modello di testo-testo.
  3. L’app React costruita utilizzando le librerie di Amplify è ospitata su Amplify e servita all’utente nell’URL di hosting di Amplify. Amplify fornisce l’ambiente di hosting per l’applicazione React. L’interfaccia della riga di comando di Amplify viene utilizzata per inizializzare l’ambiente di hosting di Amplify e distribuire il codice nell’ambiente di hosting di Amplify.
  4. Se non sei stato autenticato, verrai autenticato tramite Amazon Cognito utilizzando la libreria UI di Amplify React.
  5. Quando fornisci un input e invii il modulo, la richiesta viene elaborata tramite API Gateway.
  6. Le funzioni Lambda sanificano l’input dell’utente e richiamano i rispettivi endpoint di SageMaker. Le funzioni Lambda costruiscono anche i suggerimenti dall’input dell’utente sanificato nel formato previsto dal LLM. Queste funzioni Lambda riformattano anche l’output dai LLM e inviano la risposta all’utente.
  7. Gli endpoint di SageMaker vengono distribuiti per i modelli di testo-testo (Flan T5 XXL), di embedding di testo (GPTJ-6B) e di testo-immagine (Stability AI). Vengono distribuiti tre endpoint separati utilizzando i tipi di istanza di SageMaker consigliati per impostazione predefinita.
  8. Vengono generati gli embedding per i documenti utilizzando il modello di embedding di testo e questi embedding vengono indicizzati in OpenSearch Service. Viene abilitato un indice di k-Nearest Neighbor (k-NN) per consentire la ricerca degli embedding dal servizio OpenSearch.
  9. Un lavoro AWS Fargate prende i documenti e li segmenta in pacchetti più piccoli, richiama il modello LLM di embedding di testo e indica gli embedding restituiti in OpenSearch Service per la ricerca del contesto come descritto in precedenza.

Panoramica del dataset

Il dataset utilizzato per questa soluzione è pile-of-law all’interno del repository Hugging Face. Questo dataset è un ampio corpus di dati legali e amministrativi. Per questo esempio, utilizziamo train.cc_casebooks.jsonl.xz all’interno di questo repository. Si tratta di una raccolta di casebook educativi curati in formato JSONL come richiesto dai LLM.

Prerequisiti

Prima di iniziare, assicurati di avere i seguenti prerequisiti:

  • Un account AWS.
  • Una policy di dominio gestita di Amazon SageMaker Studio collegata al ruolo di esecuzione di AWS Identity and Access Management (IAM). Per istruzioni su come assegnare le autorizzazioni al ruolo, consulta Permessi API di Amazon SageMaker: Azioni, Autorizzazioni e Riferimenti alle Risorse. In questo caso, è necessario assegnare le autorizzazioni allocate ad Amazon Augmented AI (Amazon A2I). Per ulteriori informazioni, consulta Esempi di policy basate sull’identità di Amazon SageMaker.
  • Un bucket di Amazon Simple Storage Service (Amazon S3). Per istruzioni, consulta Creazione di un bucket.
  • Per questo post, utilizzi il kit di sviluppo AWS Cloud (AWS CDK) con Python. Segui le istruzioni in Guida introduttiva al AWS CDK per configurare il tuo ambiente locale e avviare il tuo account di sviluppo.
  • Questo progetto AWS CDK richiede istanze di SageMaker (due ml.g5.2xlarge e una ml.p3.2xlarge). Potrebbe essere necessario richiedere un aumento del limite.

Implementa la soluzione

È stata resa disponibile un progetto AWS CDK che include tutti i componenti architetturali in questo repository AWS Samples GitHub. Per implementare questa soluzione, segui i seguenti passaggi:

  1. Clona il repository GitHub sul tuo computer.
  2. Vai alla cartella principale.
  3. Inizializza l’ambiente virtuale Python.
  4. Installa le dipendenze richieste specificate nel file requirements.txt.
  5. Inizializza AWS CDK nella cartella del progetto.
  6. Avvia AWS CDK nella cartella del progetto.
  7. Utilizzando il comando di deploy di AWS CDK, deploya gli stack.
  8. Vai alla cartella Amplify all’interno della cartella del progetto.
  9. Inizializza Amplify e accetta i valori predefiniti forniti dalla CLI.
  10. Aggiungi l’hosting di Amplify.
  11. Pubblica l’interfaccia utente di Amplify dalla cartella Amplify e annota il nome di dominio fornito alla fine dell’esecuzione.
  12. Nella console di Amazon Cognito, aggiungi un utente all’istanza di Amazon Cognito che è stata fornita con il deployment.
  13. Vai al nome di dominio dal passaggio 11 e fornisci i dettagli di accesso di Amazon Cognito per accedere all’applicazione.

Trigger di un job di indicizzazione di OpenSearch

Il progetto AWS CDK ha deployato una funzione Lambda chiamata GenAIServiceTxt2EmbeddingsOSIndexingLambda. Naviga verso questa funzione sulla console Lambda.

Esegui un test con un payload vuoto, come mostrato nella seguente schermata.

Questa funzione Lambda attiva un task Fargate su Amazon Elastic Container Service (Amazon ECS) in esecuzione all’interno della VPC. Questo task Fargate prende il file JSONL incluso per segmentare e creare un indice di embeddings. Ciascun embedding dei segmenti è il risultato dell’invocazione dell’endpoint LLM di text-to-embeddings deployato come parte del progetto AWS CDK.

Pulizia

Per evitare addebiti futuri, elimina l’endpoint di SageMaker e arresta tutte le funzioni Lambda. Inoltre, elimina i dati di output in Amazon S3 che hai creato durante l’esecuzione del flusso di lavoro dell’applicazione. Devi eliminare i dati nei bucket S3 prima di poter eliminare i bucket.

Conclusioni

In questo post, abbiamo dimostrato un approccio end-to-end per creare un’applicazione enterprise sicura utilizzando l’IA generativa e RAG. Questo approccio può essere utilizzato per sviluppare applicazioni di IA generativa sicure e scalabili su AWS. Ti incoraggiamo a deployare l’app AWS CDK nel tuo account e a creare la soluzione di IA generativa.

Risorse aggiuntive

Per ulteriori informazioni sulle applicazioni di Intelligenza Artificiale Generativa su AWS, fare riferimento ai seguenti:

  • Accelerare il tuo apprendimento per gli esami di certificazione AWS con la generazione di quiz automatizzata utilizzando i modelli di base di Amazon SageMaker
  • Costruire un potente bot di risposta alle domande con Amazon SageMaker, Amazon OpenSearch Service, Streamlit e LangChain
  • Implementare modelli di Intelligenza Artificiale generativa da Amazon SageMaker JumpStart utilizzando l’AWS CDK
  • Iniziare con l’Intelligenza Artificiale generativa su AWS utilizzando Amazon SageMaker JumpStart
  • Costruire un backend di sintesi delle riunioni serverless con grandi modelli linguistici su Amazon SageMaker JumpStart