Utilizza la Ricerca e la Conversazione di Google Vertex AI per creare un chatbot RAG

Creare un chatbot RAG utilizzando la Ricerca e la Conversazione di Google Vertex AI

Fonte: Schema dell'autore

Google ha recentemente rilasciato il suo servizio RAG (Retrieval Augmented Generator) gestito, Vertex AI Search & Conversation, in GA (disponibilità generale). Questo servizio, precedentemente noto come Google Enterprise Search, porta ancora più competizione a un mercato dei chatbot LLM (Large Language Model) già fiorente.

Questo articolo assume che tu abbia una conoscenza del framework RAG per la costruzione di chatbot alimentati da LLM. Il seguente diagramma di Langchain fornisce una buona introduzione a RAG:

Fonte: https://python.langchain.com/docs/use_cases/question_answering/

In questo articolo, ci concentriamo principalmente sulla configurazione di un chatbot LLM con Google Vertex AI Search & Conversation (utilizzeremo Vertex AI Search nel resto dell’articolo).

Diagramma di soluzione

Fonte: Schema dell'autore

Datastore

Vertex AI Search supporta attualmente dati sorgente in formato html, pdf e csv.

Fonte: https://cloud.google.com/generative-ai-app-builder/docs/agent-data-store

Vertex AI Search supporta attualmente dati sorgente in formato html, pdf e csv. I dati sorgente vengono raccolti dall’indice di ricerca di Google (lo stesso indice utilizzato per Google Search). Questo è un vantaggio significativo rispetto ad altri fornitori che richiedono meccanismi di scraping separati per estrarre le informazioni dal sito web.

Per i dati non strutturati (attualmente supportati solo pdf e html), i file devono prima essere caricati in un bucket di Cloud Storage. Questo bucket di archiviazione può trovarsi in qualsiasi regione disponibile.

⚠️ Il datastore su Vertex AI Search è diverso dal Cloud Storage. È simile ai “database vettoriali” spesso citati da altri fornitori.

Ogni app su Vertex AI Search avrà attualmente i propri datastore. È possibile avere più datastore in un singolo App.

Fonte: Screenshot dell'autore dall'ambiente GCP

A scopo dimostrativo, utilizzeremo un esempio di pdf di un manuale dello studente disponibile online (https://www.bcci.edu.au/images/pdf/student-handbook.pdf). Nota: non siamo affiliati a questa organizzazione (è solo un esempio di pdf che possiamo trovare online…)

Passaggio 1 — Preparare i file pdf:

Suddividere il manuale pdf in pagine multiple utilizzando Python. Questo richiede solo pochi secondi.

from PyPDF2 import PdfWriter, PdfReaderinputpdf = PdfReader(open("student-handbook.pdf", "rb"))for i in range(len(inputpdf.pages)):    output = PdfWriter()    output.add_page(inputpdf.pages[i])    with open("./split_pdfs_student_handbook/document-page%s.pdf" % i, "wb") as outputStream:        output.write(outputStream)

Passaggio 2 — Caricamento nel bucket GCS:

Dovremo caricare i file PDF su un archivio storage di Google Cloud. Puoi farlo tramite la Console di Google o utilizzare GCP SDK con il linguaggio che preferisci.

Se è necessario solo un singolo documento in PDF, per questa dimostrazione sarà sufficiente cliccare su “clickops”.

Lascia cadere i file PDF in un bucket di Cloud Storage.

Fonte: Screenshot dell'autore dall'ambiente GCP

Passaggio 3 — Configurazione dell’app e del datastore:

Fonte: Screenshot dell'autore dall'ambiente GCP

Nella console di GCP, trova ‘Ricerca e Conversazione’ e clicca su ‘Crea app’. Seleziona il tipo di app di chat. Configura l’app dando un nome alla tua azienda e all’agente. Nota: l’agente è disponibile solo nella regione globale.

Fonte: Screenshot dell'autore dall'ambiente GCP

Successivamente, crea un datastore. Seleziona “Cloud Storage” e scegli il bucket creato al passaggio 2.

Fonte: Screenshot dell'autore dall'ambiente GCP

Dopo, ti verrà chiesto di creare un datastore. In realtà, si tratta di un datastore a vettori che memorizza i “embeddings” per la ricerca semantica e LLM.

Seleziona “Cloud Storage”. Quindi, seleziona il cloud storage che abbiamo creato nello scorso passaggio.

Fonte: Screenshot dell'autore dall'ambiente GCP

Dopo ciò, clicca su “Continua”. Poi, inizia l’elaborazione degli “embeddings”. Questo processo richiederà da pochi minuti ad un’ora, a seconda della quantità di dati. Inoltre, GCP dispone di librerie SDK con clienti asincroni disponibili, che possono accelerare l’intero processo. In alternativa, puoi sempre utilizzare la console GCP. Di default, utilizza chiamate API sincrone.

Puoi controllare l’avanzamento dell’importazione (degli “embeddings”) nella scheda delle attività.

Fonte: Screenshot dell'autore dall'ambiente GCP

Una volta completata l’importazione, vai su “Anteprima” a sinistra, ti porterà alla Console Dialogflow CX.

Passaggio 4 — Dialogflow:

Fonte: Screenshot dell'autore dall'ambiente GCP

Nella Console Dialogflow, clicca su “Pagina Iniziale”. Si apriranno le impostazioni del datastore sulla destra. Puoi selezionare più datastore (siti web, file PDF, ecc.) contemporaneamente. In questo caso, lasciala essere il manuale dello studente che abbiamo creato al Passaggio 3.

Trova ‘Generator’ nelle impostazioni del data store.

Fonte: Screenshot dell'autore dall'ambiente GCP

Aggiungi il seguente prompt:

Sei un assistente virtuale che lavora presso The Best College. Fornirai consigli generali agli studenti basati sul manuale dello studente. Rispondi sempre in modo educato e con linguaggio costruttivo. La conversazione precedente: $conversation \nQuesta è la domanda dell'utente $last-user-utterance \nEcco alcune conoscenze di contesto che devi conoscere: $request.knowledge.answers \nLa tua risposta:

$conversation, $last-user-utterance, $request.knowledge.answers sono parametri di Dialogflow.

Fonte: Screenshot dell'autore dall'ambiente GCP

Nel ‘Parametro di input’, digita $last-user-utterance. In questo modo, la domanda dell’utente verrà passata al generatore. Nel ‘Parametro di output’, digita $request.generative.student-assistant-response. Ricorda sempre di premere il pulsante ‘Salva’ in alto!

Fonte: Screenshot dell'autore dall'ambiente GCP

Nell’area Agent dice, non dimenticare di digitare $request.generative.student-assistant-response. In questo modo, l’output del generatore verrà rilevato nella chat dell’agente.

Passaggio 5 – Test e integrazione:

Per testare questo bot, puoi fare clic sul simulatore ‘Test Agent’ nell’angolo in alto a destra o utilizzare la scheda Gestisci a sinistra per selezionare un’integrazione. Personalmente, preferisco utilizzare ‘Dialogflow Messenger’ anziché ‘Test Agent’, poiché mi mostra il formato finale della risposta.

Fonte: Screenshot dell'autore dall'ambiente GCP

Dopo aver cliccato su Dialogflow Messenger, scegli ‘abilita l’API non autenticata’. Questo è solo per il test. Nel caso reale, a seconda dei requisiti di autenticazione, puoi scegliere se abilitare ciò.

Fonte: Screenshot dell'autore dall'ambiente GCP
Fonte: Screenshot dell'autore dall'ambiente GCP

Ora puoi digitare le domande che hai. Le risposte generate da RAG si baseranno sul pdf del manuale degli studenti. Viene fornito anche un link di riferimento in fondo. Se ci fai clic, ti porta alla pagina pdf specifica che contiene le informazioni.