Creare un sistema di ricerca di qualità Google con Vertex AI

1. Prima di iniziare

Ecco alcuni aspetti da considerare prima di continuare questo codelab.

Prerequisiti

  • Conoscenza di base degli LLM
  • Conoscenza di base dei sistemi RAG

Cosa imparerai a fare

  • Come creare un motore di ricerca di qualità Google che possa rispondere alle tue domande dai dati che carichi
  • Come creare Vertex AI Datastore
  • Come creare agenti Vertex AI
  • Come sfruttare CloudRun per il deployment dell'applicazione

Che cosa ti serve

  • Un account Google Cloud.
  • Un progetto Google Cloud
  • Un IDE con un terminale

Introduzione

La Ricerca Google è un potente strumento che utilizza un enorme indice di pagine web e altri contenuti per fornire risultati pertinenti alle query degli utenti. Ciò è reso possibile da una tecnica chiamata RAG (Retrieval Augmented Generation), una tecnica chiave nell'IA moderna.

RAG funziona recuperando prima i passaggi pertinenti da un corpus di documenti. Per farlo, vengono utilizzati vari metodi, come la corrispondenza delle parole chiave, la somiglianza semantica e il machine learning. Una volta recuperati, i passaggi pertinenti vengono utilizzati per generare un riepilogo o una risposta alla query dell'utente.

Il vantaggio principale della RAG è che consente ai modelli linguistici di evitare allucinazioni. Allucinazione è un termine utilizzato per descrivere la generazione di testo non supportato dalle prove nel corpus del documento. Questo può accadere quando i modelli linguistici non sono in grado di distinguere tra informazioni pertinenti e irrilevanti.

RAG aiuta a evitare le allucinazioni garantendo che il testo generato si basi sempre sulle prove del corpus del documento. Questo lo rende una fonte di informazioni più affidabile e affidabile.

RAG è una potente tecnica utilizzata in numerose applicazioni, tra cui motori di ricerca, chatbot e sistemi di risposta alle domande. È probabile che abbia un ruolo sempre più importante nell'IA negli anni a venire.

Ecco alcuni esempi di come RAG viene utilizzato nella pratica:

  • Molti sistemi di ricerca utilizzano RAG per generare risultati di ricerca pertinenti alla query dell'utente.
  • I chatbot utilizzano RAG per generare risposte informative e coinvolgenti alle domande degli utenti.
  • I sistemi di question answering utilizzano RAG per generare risposte accurate e complete alle domande degli utenti.

RAG è una tecnica versatile che può essere utilizzata per generare testo in diversi domini e applicazioni. Si tratta di un potente strumento che contribuisce a rendere l'IA più intelligente e informativa.

In questo codelab, creeremo un sistema RAG in grado di aiutarti a rispondere alle tue domande con il corpus fornito che hai caricato. La piattaforma RAG pronta all'uso chiamata Vertex AI Search/Agent Builder ti aiuta ad accelerare la creazione di sistemi RAG evitando così il lavoro manuale di raccolta dei documenti, analisi, suddivisione, generazione di incorporamenti, espansione delle query, recupero e ranking dei candidati. Mentre il sistema RAG pronto all'uso ti consente di iniziare rapidamente, Google Cloud fornisce anche API discrete per ogni processo per creare i tuoi sistemi RAG fai da te, che aiutano a perfezionare i sistemi RAG in base alle tue esigenze aziendali.

Cosa creerai

Alla fine di questo codelab, avrai implementato un sistema RAG funzionante che ti aiuterà a rispondere alle tue domande con informazioni oggettive, basate e citate con riferimenti corretti.

Capirai inoltre meglio come utilizzare le API Vertex AI Search per creare questa architettura RAG su Google Cloud. Inoltre, imparerai a eseguire il deployment di questa applicazione di architettura RAG (con frontend e backend) su CloudRun, una piattaforma serverless per il deployment di applicazioni come container su Google Cloud.

2d055ded874603a6.png

Come funziona l'applicazione

  • Carica i tuoi dati: gli utenti possono caricare il proprio corpus di dati, ad esempio un file PDF come input.
  • Porre query nella barra di ricerca: gli utenti possono porre domande nella barra di ricerca in base al corpus di dati caricati.
  • Recupera le risposte: gli utenti possono recuperare i risultati di ricerca o i candidati e verificare l'oggettività o la legittimità della risposta recuperata in base alla pertinenza della query.

2. Configurazione dell'ambiente

  1. Nella pagina del selettore dei progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
  2. Assicurati che la fatturazione sia abilitata per il tuo progetto Google Cloud. Scopri come controllare se la fatturazione è abilitata per un progetto.
  3. Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione su Google Cloud. Per accedervi, fai clic su Attiva Cloud Shell nella parte superiore della console Google Cloud.

1829c3759227c19b.png

  1. Una volta stabilita la connessione a Cloud Shell, accertati di avere già eseguito l'autenticazione e che il progetto sia impostato sul tuo ID progetto utilizzando questo comando:
gcloud auth list
  1. Esegui questo comando in Cloud Shell per confermare che il comando gcloud è a conoscenza del tuo progetto.
gcloud config list project
  1. Se il progetto non è configurato, utilizza il comando seguente per impostarlo:
gcloud config set project <YOUR_PROJECT_ID>
  1. Assicurati che siano abilitate le seguenti API:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

L'alternativa all'utilizzo del comando gcloud è attraverso la console utilizzando questo link. Per informazioni sui comandi e sull'utilizzo di gcloud, consulta la documentazione.

3. Passaggio 1: crea un bucket Google Cloud

  • Vai alla console e digita Cloud Storage sulla barra di ricerca.
  • Seleziona Cloud Storage dai risultati suggeriti. 21d2bc910e71f7ec.png
  • Fai clic su Crea bucket

adf5c0382f6c3540.png

  • Fornisci un nome globalmente univoco per il bucket
  • Fai clic su Continua
  • In Tipo di località, seleziona Più regioni.
  • Nel menu a discesa, assicurati di selezionare l'opzione us (multiple regions in United States).

731aead7d8497725.png

  • Fai clic su Crea bucket

f7ac409ed9c4af21.png

4. Passaggio 2: crea un datastore Vertex AI

  • Nella barra di ricerca della pagina della console, digita "Vertex AI Agent Builder"
  • Seleziona il primo prodotto, "Agent Builder"

c4a67b92bb7900e3.png

  • Nella pagina Agent Builder, fai clic su "Data Stores" come mostrato nella barra di navigazione a sinistra.

f86f67d344d398fb.png

  • Fai clic su "Crea datastore"

e64e771f33543f46.png

  • Seleziona Cloud Storage come datastore
  • Fai clic su "Seleziona" sotto l'icona di Cloud Storage

3a8d22888e7eedc2.png

  • Nella scheda sotto l'opzione "Cartella", fai clic sul pulsante "Sfoglia".
  • Seleziona il bucket che hai creato nel passaggio 1
  • Nelle opzioni di seguito, assicurati di selezionare "Documenti non strutturati collegati (JSONL con metadati)"
  • Fai clic su Continua

13876b5d12dbe1fb.png

  • Nella pagina Configurazione, seleziona "globale" come località del datastore
  • Fornisci un nome identificabile al datastore
  • Fai clic su Crea

618b7a456fbffad4.png

Brownie:

  • Subito sopra il pulsante "Crea" puoi vedere l'opzione di elaborazione del documento.
  • Puoi sperimentare diversi parser: digitale, OCR o di layout
  • Puoi anche abilitare il chunking avanzato e fornire limiti personalizzati per le dimensioni dei blocchi

38471c1d3411610d.png

5. Passaggio 3: crea un agente

  • Una volta creato il datastore, fai clic sull'app nella barra di navigazione a sinistra e scegli "App"
  • Fai clic sul pulsante "Crea app"
  • Seleziona "Ricerca" come tipo di app (puoi anche creare agenti, bot di conversazione, suggerimenti e così via)

ae5294e33f63567c.png

  • Assicurati di selezionare "Generico" in Contenuti. Puoi anche selezionare Contenuti multimediali o Suggerimenti in base al datastore e al tipo di dati e sistemi che vuoi creare.
  • Assicurati di attivare entrambe le funzionalità Enterprise Edition e LLM avanzate
  • Fornisci il nome della tua applicazione
  • Fornisci il nome della tua azienda

f8a41c9751f7a8d3.png

  • Assicurati di selezionare la regione in modo che sia "globale"
  • Fai clic su "Continua" ed17b18e094ba59a.png.
  • Nella schermata successiva, seleziona il datastore che hai creato nel passaggio 2.
  • Fai clic su "Crea".

bc77006e0025ae9e.png

6. Passaggio 4: Dockerizza l'applicazione

  • Apri il terminale nella console Google Cloud
  • Clona il repository <sample_repository_link> utilizzando il seguente comando

git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo

  • Cambia la directory e passa al repository clonato utilizzando il seguente comando

cd vertex-ai-search-agent-builder-demo

  • Struttura delle cartelle
  • Backend: contiene un'implementazione API basata su Python che aiuterà a creare endpoint riposanti con cui il frontend potrà interagire.
  • Frontend - Contiene un'applicazione basata sulle reazioni e pubblica l'interfaccia utente. Questo conterrà anche le chiamate a livello di applicazione necessarie al backend tramite endpoint REST
  • Dockerfile: questo file conterrà tutti i comandi pertinenti per creare un container Dockerfile
  • Nella radice della directory del repository, esegui questo comando che ti aiuterà a creare un'immagine Docker (nota: assicurati di utilizzare il flag - - platform durante la creazione di container Docker nei Macbook che utilizzano chip Apple Silicon come M1, M2 e così via. Questo flag non è necessario se stai creando un'immagine Docker o se l'architettura della CPU è basata su Intel)

docker build --platform linux/amd64 -t your-image-name .

  • Una volta completata la build del container Docker, esegui questo comando per taggare il container con i tag corretti e assicurarti di fornire una versione dell'immagine. Ricorda che potrebbero esistere più versioni dell'applicazione e quindi più versioni come tag nei container Docker. Garantire che venga sempre utilizzata l'ultima versione stabile è un buon approccio dal punto di vista di DevOps.

docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

  • Una volta che il tagging dell'immagine container Docker ha esito positivo, eseguiamo il push dell'immagine a Google Artifact Registry (GAR). GAR è una piattaforma completamente gestita da Google che ti aiuta a gestire e controllare le versioni dei tuoi container Docker. Esegui questo comando che eseguirà il push del container con il tag riportato sopra in GAR. Per saperne di più, consulta il seguente link [https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]

docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG

7. Passaggio 5: esegui il deployment dell'applicazione su Cloud Run

  • Riduci a icona il tuo terminale. Nella barra di ricerca della console Google Cloud, cerca Cloud Run.
  • Fai clic sul prodotto Cloud Run suggerito

592103eb61c16738.png

  • Fai clic su "Crea servizio"
  • Nella pagina successiva, assicurati che sia selezionata l'opzione "Esegui il deployment di una revisione da un'immagine container esistente".
  • Fai clic su "Seleziona" di seguito
  • Verrà visualizzata una barra di navigazione a destra.
  • Assicurati di verificare se Artifact Registry è selezionato come scheda
  • Assicurati di verificare se il progetto è selezionato correttamente
  • Fai clic sulla freccia per espandere l'accordazione sul link dell'immagine container di cui hai eseguito il deployment
  • Seleziona il tag contenitore ed espandi (seleziona sempre gli ultimi di cui è stato eseguito il deployment, con i tag più recenti corretti, ad esempio v1, v2 e così via).
  • Fai clic sull'immagine container visualizzata sotto il nome del tag contenitore

aac35d55d7dd874e.png

  • Nell'area Configura
  • Specifica un nome di servizio per la tua applicazione Cloud Run (questo sarà una parte dell'URL quando esegui il deployment dell'applicazione su Cloud Run)
  • Seleziona la regione appropriata (in questo caso us-central1 o un'altra regione a tua scelta).
  • Nella sezione "Autenticazione"
  • Assicurati che sia selezionata l'opzione "Consenti chiamate non autenticate"
  • Nella sezione Allocazione della CPU e prezzi
  • Seleziona "La CPU viene allocata solo durante l'elaborazione delle richieste"
  • Modifica il valore della scalabilità automatica del servizio su 1 (per scopi di produzione, ti consigliamo di eseguire il numero minimo di istanze in esecuzione per gestire il traffico giornaliero; puoi anche lasciarlo impostato su 0, ovvero zero)
  • Imposta "Controllo in entrata" su "Tutti" per consentire al traffico da internet di accedere alla tua applicazione
  • Fai clic su "Crea".
  • Questa operazione comporta il deployment di un'istanza Cloud Run e il provisioning della stessa istanza richiede alcuni minuti

b8b147265b8d457b.png

  • Una volta eseguito il deployment, potrai vedere l'URL pubblico da cui puoi accedere alla tua applicazione web

1dfdb007c52581a1.png

8. Come funziona

  • Nella home page dell'applicazione, fai clic sul pulsante "Carica documento".
  • Carica il file PDF
  • Una volta completato il caricamento
  • Fai clic sulla barra di ricerca nella parte superiore della pagina web.
  • Inizia a cercare query relative al documento caricato
  • Dopo aver digitato la query e fatto clic su Cerca, dovresti visualizzare tutte le risposte pertinenti del documento che hai appena caricato
  • Puoi giocare osservando il codice di backend e aggiungere altre configurazioni come quelle che seguono
  • Aggiunta di snippet
  • Aggiunta di segmenti estrattivi
  • Aggiunta delle risposte in corso...
  • Ottimizzazione dei risultati top-k per aiutare l'LLM a riassumere la risposta (ad esempio Panoramica dell'IA nella Ricerca Google)
  • Come componente aggiuntivo, puoi anche aggiungere tag di metadati durante il caricamento del documento. In questo modo, potrai generare facet e categorie filtrabili

9. Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo codelab, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.
  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.
  4. In alternativa, puoi andare a Cloud Run nella console, selezionare il servizio di cui hai appena eseguito il deployment ed eliminare il servizio.

10. Complimenti

Complimenti! Hai creato un rapido sistema RAG pronto all'uso utilizzando modelli all'avanguardia forniti da Google e per fornire risultati di qualità di Google alle tue query di ricerca. Questo codelab è solo a scopo dimostrativo, è necessario configurare ulteriori misure di sicurezza e misure di protezione per i casi d'uso di produzione. Il link al repository completo è disponibile qui. Sfruttando Google Cloud e con soli 5 passaggi, possiamo generare un sistema RAG end-to-end che può fornirti risultati di qualità Google pronti all'uso in pochi minuti. Man mano che l'IA generativa e i modelli linguistici di grandi dimensioni si evolvono, la creazione di questi sistemi RAG ci aiuta anche a evitare le insidie dell'allucinazione e della comparsa di informazioni non citate.

Anche se questo è solo un punto di partenza, possiamo fare miracoli con le API RAG fai da te completamente personalizzabili che offrono ancora più trasparenza, potenza ed efficienza per gestire ogni parte del processo della pipeline in modo efficace.