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 in grado di rispondere alle tue domande a partire dai dati che carichi
  • Come creare un datastore Vertex AI
  • 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. Questo è reso possibile da una tecnica chiamata Retrieval Augmented Generation (RAG), una tecnica chiave nell'IA moderna.

La RAG funziona recuperando prima i passaggi pertinenti da un corpus di documenti. Per farlo, vengono utilizzati diversi 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 le allucinazioni. Allucinazione è un termine utilizzato per descrivere la generazione di testo non supportato dalle prove nel corpus del documento. Ciò può accadere quando i modelli linguistici non sono in grado di distinguere tra informazioni pertinenti e non pertinenti.

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

La RAG è una tecnica efficace che viene utilizzata in una serie di applicazioni, tra cui motori di ricerca, chatbot e sistemi di risposta alle domande. È probabile che avrà un ruolo sempre più importante nell'IA nei prossimi anni.

Ecco alcuni esempi di come la RAG viene utilizzata nella pratica:

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

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

In questo codelab, creeremo un sistema RAG che può aiutarti a rispondere alle tue domande con il corpus fornito e caricato da te. 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, il che consente di perfezionare i sistemi RAG in base alle tue esigenze aziendali.

Cosa creerai

Al termine di questo codelab, avrai implementato un sistema RAG funzionante che può aiutarti a rispondere alle tue domande con informazioni oggettive, fondate e citate con i riferimenti giusti.

Inoltre, avrai una migliore comprensione di 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 Cloud Run, 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.
  • Raccogliere le risposte: gli utenti possono recuperare i risultati di ricerca/i candidati e verificare la veridicità/l'attendibilità della risposta recuperata in base alla pertinenza della query.

2. Configurazione dell'ambiente

  1. Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
  2. Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud. Scopri come verificare se la fatturazione è attivata per un progetto.
  3. Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in 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, potrai verificare di avere già eseguito l'autenticazione e che il progetto sia impostato sul tuo ID progetto utilizzando questo comando:
gcloud auth list
  1. Esegui il seguente comando in Cloud Shell per verificare che il comando gcloud conosca il tuo progetto.
gcloud config list project
  1. Se il progetto non è impostato, utilizza il seguente comando 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 i comandi e l'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 Agente Builder, fai clic su "Datastore" come mostrato nella barra di navigazione a sinistra.

f86f67d344d398fb.png

  • Fai clic su "Crea datastore"

e64e771f33543f46.png

  • Seleziona Cloud Storage come data store
  • 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
  • Tra le opzioni riportate 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:

  • Poco sopra il pulsante "Crea", puoi vedere l'opzione di elaborazione del documento.
  • Puoi provare diversi analizzatori, ad esempio quelli digitali, OCR o di layout
  • Puoi anche attivare il chunking avanzato e fornire i tuoi limiti personalizzati per le dimensioni dei chunk.

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 Consigli 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 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 vai 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 di riposo
  • Dockerfile: questo file conterrà tutti i comandi pertinenti per creare un container Dockerfile
  • Nella directory principale del repository, esegui il seguente comando che ti aiuterà a creare un'immagine Docker (nota: assicurati di utilizzare il flag - - platform quando crei i container Docker in MacBook che utilizzano chip Apple Silicon come M1, M2 e così via. Questo flag non è necessario se esegui la compilazione utilizzando una macchina Windows o se l'architettura della CPU è basata su Intel)

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

  • Una volta completata la creazione del container Docker, esegui il seguente comando per taggare il contenitore con i tag corretti in modo da fornire una versione dell'immagine. Ricorda che potrebbero essere presenti più versioni dell'applicazione e, di conseguenza, 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 completato il tagging dell'immagine del contenitore Docker, esegui il push dell'immagine in Google Artifact Registry (GAR). GAR è una piattaforma completamente gestita di Google che ti aiuta a gestire e controllare la versione 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 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".
  • Sotto, fai clic su "Seleziona".
  • A questo punto, vedrai una barra di navigazione sulla destra.
  • Assicurati di verificare che la scheda Artifact Registry sia selezionata
  • Assicurati di controllare 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 es. 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 eseguirà il deployment di un'istanza Cloud Run e il provisioning della stessa richiede qualche minuto.

b8b147265b8d457b.png

  • Una volta eseguito il deployment, potrai vedere l'URL disponibile pubblicamente 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 correlate 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 estratti
  • Aggiunta di risposte
  • Ottimizzazione dei risultati migliori per aiutare l'LLM a riepilogare la risposta (ad esempio Panoramica dell'IA nella Ricerca Google)
  • Come componente aggiuntivo, puoi anche aggiungere i tag dei metadati durante il caricamento del documento. Ciò contribuirà a 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 appena di cui hai eseguito il deployment ed eliminarlo.

10. Complimenti

Complimenti! Hai creato un sistema RAG rapido e pronto all'uso utilizzando i modelli all'avanguardia di Google e per fornire risultati di qualità Google alle tue query di ricerca. Questo codelab è solo a scopo dimostrativo. Per i casi d'uso di produzione devono essere configurate ulteriori misure di sicurezza e guardrail. Il link al repository completo è 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. Con l'evoluzione dell'IA generativa e dei modelli linguistici di grandi dimensioni, la creazione di questi sistemi RAG ci aiuta anche a evitare le insidie delle allucinazioni e la visualizzazione 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 in modo efficace ogni parte del processo della pipeline.