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

1. Prima di iniziare

Ecco alcune cose da notare 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 Vertex AI Datastore
  • Come creare Vertex AI Agents
  • Come sfruttare Cloud Run per eseguire il deployment dell'applicazione

Che cosa ti serve

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

Introduzione

La Ricerca Google è uno strumento potente 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 Retrieval Augmented Generation (RAG), che è una tecnica chiave nell'AI moderna.

La RAG funziona recuperando prima i passaggi pertinenti da un corpus di documenti. Ciò avviene utilizzando una serie di metodi, come la corrispondenza delle parole chiave, la similarità semantica e il machine learning. Una volta recuperati i passaggi pertinenti, questi vengono utilizzati per generare un riepilogo o una risposta alla query dell'utente.

Il vantaggio principale di 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 di documenti. Ciò può accadere quando i modelli linguistici non sono in grado di distinguere tra informazioni pertinenti e non pertinenti.

La RAG aiuta a evitare le allucinazioni garantendo che il testo generato sia sempre basato su prove tratte dal corpus di documenti. Ciò lo rende una fonte di informazioni più affidabile.

La RAG è una tecnica potente che viene utilizzata in una serie di applicazioni, tra cui motori di ricerca, chatbot e sistemi di risposta a domande. È probabile che svolga un ruolo sempre più importante nell'AI negli anni a venire.

Ecco alcuni esempi di utilizzo pratico della RAG:

  • Molti sistemi di ricerca utilizzano RAG per generare risultati di ricerca pertinenti alla query dell'utente.
  • I chatbot utilizzano la RAG per generare risposte informative e coinvolgenti alle domande degli utenti.
  • 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 varietà di domini e applicazioni. È uno strumento potente che contribuisce a rendere l'AI 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ì lo sforzo manuale di raccolta, analisi, suddivisione in blocchi, generazione di embedding, espansione delle query, recupero e classificazione dei candidati. Sebbene il sistema RAG predefinito ti aiuti a iniziare rapidamente, Google Cloud fornisce anche API discrete per ogni processo per creare i tuoi sistemi RAG fai da te, il che ti aiuta a perfezionare i sistemi RAG in base alle esigenze della tua attività.

Cosa creerai

Al termine di questo codelab, avrai implementato un sistema RAG funzionante in grado di rispondere alle tue domande con informazioni oggettive, basate e citate con i riferimenti corretti.

Avrai anche una migliore comprensione di come utilizzare le API Vertex AI Search per creare questa architettura RAG su Google Cloud. Oltre a questo, imparerai anche 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 la procedura di richiesta

  • 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 caricato.
  • Recuperare le risposte: gli utenti possono recuperare i risultati di ricerca/i candidati e verificare la veridicità/fondatezza 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. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud. Scopri come verificare se la fatturazione è abilitata 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 eseguita la connessione a Cloud Shell, verifica di essere già autenticato e che il progetto sia impostato sul tuo ID progetto utilizzando il seguente comando:
gcloud auth list
  1. Esegui questo 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 le seguenti API siano abilitate:
  • Cloud Run
  • Vertex AI
  • Cloud Storage

L'alternativa all'utilizzo del comando gcloud è la console, utilizzando questo link. Per i comandi e l'utilizzo di gcloud, consulta la documentazione.

3. Passaggio 1: crea un bucket GCP

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

adf5c0382f6c3540.png

  • Fornisci un nome univoco a livello globale 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" (Datastore), 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 riportate di seguito, assicurati di selezionare "Documenti non strutturati collegati (JSONL con metadati)".
  • Fai clic su Continua

13876b5d12dbe1fb.png

  • Nella pagina di configurazione, seleziona "globale" come località del datastore.
  • Fornisci un nome identificabile per il datastore
  • Fai clic su Crea.

618b7a456fbffad4.png

Brownie:

  • Appena sopra il pulsante "Crea", puoi vedere l'opzione di elaborazione del documento.
  • Puoi sperimentare diversi parser come quello digitale, OCR o di layout.
  • Puoi anche attivare la suddivisione avanzata 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 il tipo di app "Ricerca" (puoi anche creare agenti, bot conversazionali, consigli 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 sia le funzionalità della versione Enterprise che quelle LLM avanzate.
  • Fornisci il nome della tua applicazione
  • Fornisci il nome della tua azienda

f8a41c9751f7a8d3.png

  • Assicurati di selezionare la regione "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: crea il container Docker dell'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 directory e vai al repository clonato utilizzando il seguente comando

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

  • Struttura delle cartelle
  • Backend: conterrà un'implementazione dell'API basata su Python che aiuterà a creare endpoint RESTful con cui interagire per il frontend.
  • Frontend: conterrà un'applicazione basata su React e servirà l'interfaccia utente. Contiene anche le chiamate a livello di applicazione necessarie al backend tramite gli endpoint REST
  • Dockerfile: questo file conterrà tutti i comandi pertinenti per creare un container Docker
  • Nella radice della directory del repository, esegui questo comando che ti aiuterà a creare un'immagine Docker (nota: assicurati di utilizzare il flag - - platform quando crei container Docker su MacBook che utilizzano chip Apple Silicon come M1, M2 e così via. Questo flag non è necessario se crei 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 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 consigliato dal punto di vista di DevOps.

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

  • Una volta completata l'assegnazione dei tag all'immagine container Docker, eseguiamo il push dell'immagine in Google Artifact Registry (GAR). GAR è una piattaforma completamente gestita di Google che consente di gestire e controllare le versioni dei container Docker. Esegui il comando seguente, che eseguirà il push del container con tag precedente 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".
  • Di seguito, fai clic su "Seleziona".
  • Ora vedrai una barra di navigazione sulla destra.
  • Assicurati di verificare se Artifact Registry è selezionato come scheda
  • Assicurati di verificare che il progetto sia selezionato correttamente.
  • Fai clic sulla freccia per espandere la sezione a fisarmonica sul link all'immagine container di cui è stato eseguito il deployment.
  • Seleziona il tag del contenitore ed espandilo (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 mostrata sotto il nome del tag container.

aac35d55d7dd874e.png

  • Nell'area Configura
  • Fornisci un nome di servizio per l'applicazione Cloud Run (farà parte dell'URL quando esegui il deployment dell'applicazione su Cloud Run)
  • Seleziona la regione appropriata (in questo caso us-central1 o qualsiasi altra a tua scelta).
  • Nella sezione Autenticazione
  • Assicurati che l'opzione "Consenti chiamate non autenticate" sia selezionata.
  • In Allocazione e prezzi della CPU
  • Seleziona "La CPU viene allocata solo durante l'elaborazione delle richieste".
  • Modifica il servizio di scalabilità automatica a 1 (per scopi di produzione, è consigliabile avere un numero minimo di istanze in esecuzione per gestire il traffico giornaliero, puoi anche lasciarlo a 0, ovvero zero)
  • Imposta "Controllo in entrata" su "Tutto" per consentire al traffico da internet di accedere alla tua applicazione.
  • Fai clic su "Crea".
  • Verrà eseguito il deployment di un'istanza Cloud Run e il provisioning potrebbe richiedere alcuni minuti

b8b147265b8d457b.png

  • Una volta eseguito il deployment, potrai visualizzare l'URL disponibile pubblicamente da cui puoi accedere alla tua applicazione web.

1dfdb007c52581a1.png

8. Come funziona

  • Una volta 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
  • Una volta digitata la query e fatto clic su Cerca, dovrebbero essere visualizzate tutte le risposte pertinenti del documento appena caricato.
  • Puoi sperimentare esaminando il codice di backend e aggiungere altre configurazioni come la seguente
  • Aggiunta di snippet
  • Aggiunta di segmenti estrattivi
  • Aggiungere risposte
  • Ottimizzazione dei primi k risultati per aiutare il LLM a riepilogare la risposta (come AI Overview nella Ricerca Google)
  • Come componente aggiuntivo, puoi anche aggiungere tag di metadati durante il caricamento del documento. In questo modo verranno generate sfaccettature 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 eliminarlo.

10. Complimenti

Complimenti! Hai creato correttamente un sistema RAG rapido e pronto all'uso utilizzando modelli all'avanguardia basati su Google per fornire risultati di qualità Google alle tue query di ricerca. Questo codelab è solo a scopo dimostrativo. Per i casi d'uso di produzione, è necessario configurare maggiore sicurezza e misure di protezione. 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. Man mano che l'AI generativa e i modelli linguistici di grandi dimensioni si evolvono, la creazione di questi sistemi RAG ci aiuta anche a evitare i problemi di allucinazioni e la visualizzazione di informazioni non citate.

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