Utilizzare Vertex AI Search come backend di recupero utilizzando RAG Engine

Questa pagina illustra l'integrazione di Vertex AI Search con il motore RAG.

Vertex AI Search fornisce una soluzione per recuperare e gestire i dati all'interno delle applicazioni RAG di Vertex AI. Utilizzando Vertex AI Search come backend di recupero, puoi migliorare le prestazioni, la scalabilità e la facilità di integrazione.

  • Maggiore prestazioni e scalabilità: Vertex AI Search è progettato per gestire grandi volumi di dati con una latenza eccezionalmente bassa. Ciò si traduce in tempi di risposta più rapidi e in un miglioramento delle prestazioni per le applicazioni RAG, soprattutto quando si tratta di knowledge base complesse o ampie.

  • Gestione dei dati semplificata: importa i dati da varie origini, come siti web, set di dati BigQuery e bucket Cloud Storage, per semplificare la procedura di importazione dei dati.

  • Integrazione perfetta: Vertex AI offre un'integrazione integrata con Vertex AI Search, che ti consente di selezionare Vertex AI Search come backend del corpus per la tua applicazione RAG. In questo modo, il processo di integrazione viene semplificato e si contribuisce a garantire una compatibilità ottimale tra i componenti.

  • Miglioramento della qualità dell'output dell'LLM: utilizzando le funzionalità di recupero di Vertex AI Search, puoi contribuire ad assicurarti che la tua applicazione RAG recuperi le informazioni più pertinenti dal tuo corpus, il che porta a output generati da LLM più accurati e informativi.

Vertex AI Search riunisce il recupero approfondito di informazioni, l'elaborazione del linguaggio naturale e le più recenti funzionalità di elaborazione dei modelli linguistici di grandi dimensioni (LLM), il che consente di comprendere l'intenzione dell'utente e di restituire i risultati più pertinenti per l'utente.

Con Vertex AI Search puoi creare un'applicazione di ricerca di qualità Google utilizzando i dati che controlli.

Per configurare una ricerca Vertex AI, segui questi passaggi:

  1. Crea un datastore di ricerca.
  2. Crea un'applicazione di ricerca.

Utilizzare Vertex AI Search come backend di recupero per il motore RAG

Una volta configurato Vertex AI Search, segui questi passaggi per impostarlo come backend di recupero per l'applicazione RAG.

Imposta Vertex AI Search come backend di recupero per creare un corpus RAG

Questi esempi di codice mostrano come configurare Vertex AI Search come backend di recupero per un corpus RAG.

REST

Per utilizzare la riga di comando per creare un corpus RAG:

  1. Crea un corpus RAG

    Sostituisci le seguenti variabili utilizzate nell'esempio di codice:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • LOCATION: la regione in cui elaborare la richiesta.
    • DISPLAY_NAME: il nome visualizzato del corpus RAG che vuoi creare.
    • ENGINE_NAME: il nome completo della risorsa del motore di ricerca Vertex AI o del datastore di Vertex AI Search.
    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/ragCorpora" \
    -d '{
      "display_name" : "DISPLAY_NAME",
      "vertex_ai_search_config" : {
        "serving_config": "ENGINE_NAME/servingConfigs/default_search"
      }
    }'
    
  2. Monitorare l'avanzamento

    Sostituisci le seguenti variabili utilizzate nell'esempio di codice:

    • PROJECT_ID: l'ID del tuo progetto Google Cloud.
    • LOCATION: la regione in cui elaborare la richiesta.
    • OPERATION_ID: l'ID dell'operazione di creazione del corpus RAG.
    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
    

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python.

Sostituisci le seguenti variabili utilizzate nel codice campione:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • LOCATION: la regione in cui elaborare la richiesta.
  • DISPLAY_NAME: il nome visualizzato del corpus RAG che vuoi creare.
  • ENGINE_NAME: il nome completo della risorsa del motore di ricerca Vertex AI o del datastore Vertex AI Search.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION"
DISPLAY_NAME = "DISPLAY_NAME"
ENGINE_NAME = "ENGINE_NAME"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="us-central1")

# Create a corpus
vertex_ai_search_config = rag.VertexAiSearchConfig(
    serving_config=f"ENGINE_NAME/servingConfigs/default_search",
)

rag_corpus = rag.create_corpus(
    name=DISPLAY_NAME,
    vertex_ai_search_config=vertex_ai_search_config,
)

# Check the corpus just created
new_corpus = rag.get_corpus(name=rag_corpus.name)
print(new_corpus)

Recuperare i contesti utilizzando l'API RAG

Dopo la creazione del corpus RAG, i contesti pertinenti possono essere recuperati da Vertex AI Search tramite l'API RetrieveContexts.

REST

Questo esempio di codice mostra come recuperare i contesti utilizzando REST.

Sostituisci le seguenti variabili utilizzate nell'esempio di codice:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • LOCATION: la regione in cui elaborare la richiesta.
  • RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG.

    Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.

  • TEXT: il testo della query per ottenere contesti pertinenti.
curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION:retrieveContexts" \
  -d '{
    "vertex_rag_store": {
      "rag_resources": {
          "rag_corpus": "RAG_CORPUS_RESOURCE"
        }
    },
    "query": {
      "text": "TEXT"
    }
  }'

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python.

Sostituisci le seguenti variabili utilizzate nell'esempio di codice:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • LOCATION: la regione in cui elaborare la richiesta.
  • RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG.

    Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.

  • TEXT: il testo della query per ottenere contesti pertinenti.
from vertexai.preview import rag
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

response = rag.retrieval_query(
    rag_resources=[
        rag.RagResource(
            rag_corpus=CORPUS_NAME,
        )
    ],
    text="TEXT",
    similarity_top_k=10,  # Optional
)
print(response)
# Example response:
# contexts {
#   contexts {
#     source_uri: "gs://your-bucket-name/file.txt"
#     text: "....
#   ....

Generare contenuti utilizzando l'API Gemini di Vertex AI

REST

Per generare contenuti utilizzando i modelli Gemini, effettua una chiamata all'API GenerateContent Vertex AI. Se specifichi RAG_CORPUS_RESOURCE nella richiesta, i dati vengono recuperati automaticamente da Vertex AI Search.

Sostituisci le seguenti variabili utilizzate nel codice campione:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • LOCATION: la regione in cui elaborare la richiesta.
  • MODEL_ID: modello LLM per la generazione di contenuti. Ad esempio, gemini-1.5-flash-002.
  • GENERATION_METHOD: metodo LLM per la generazione di contenuti. Ad esempio, generateContent, streamGenerateContent.
  • INPUT_PROMPT: il testo inviato all'LLM per la generazione di contenuti. Prova a utilizzare un prompt pertinente ai documenti in Vertex AI Search.
  • RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: facoltativo. Il numero di contesti principali da recuperare.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:GENERATION_METHOD" \
-d '{
  "contents": {
    "role": "user",
    "parts": {
      "text": "INPUT_PROMPT"
    }
  },
  "tools": {
    "retrieval": {
      "disable_attribution": false,
      "vertex_rag_store": {
        "rag_resources": {
            "rag_corpus": "RAG_CORPUS_RESOURCE"
          },
        "similarity_top_k": SIMILARITY_TOP_K
      }
    }
  }
}'

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python.

Sostituisci le seguenti variabili utilizzate nel codice campione:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud.
  • LOCATION: la regione in cui elaborare la richiesta.
  • MODEL_ID: modello LLM per la generazione di contenuti. Ad esempio, gemini-1.5-flash-002.
  • GENERATION_METHOD: metodo LLM per la generazione di contenuti. Ad esempio, generateContent, streamGenerateContent.
  • INPUT_PROMPT: il testo inviato all'LLM per la generazione di contenuti. Prova a utilizzare un prompt pertinente ai documenti in Vertex AI Search.
  • RAG_CORPUS_RESOURCE: il nome della risorsa del corpus RAG. Formato: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}.
  • SIMILARITY_TOP_K: facoltativo. Il numero di contesti principali da recuperare.
from vertexai.preview import rag
from vertexai.preview.generative_models import GenerativeModel, Tool
import vertexai

PROJECT_ID = "PROJECT_ID"
CORPUS_NAME = "projects/PROJECT_ID/locations/LOCATION/ragCorpora/RAG_CORPUS_RESOURCE"

# Initialize Vertex AI API once per session
vertexai.init(project=PROJECT_ID, location="LOCATION")

rag_retrieval_tool = Tool.from_retrieval(
    retrieval=rag.Retrieval(
        source=rag.VertexRagStore(
            rag_resources=[
                rag.RagResource(
                    rag_corpus=RAG_CORPUS_RESOURCE,
                )
            ],
            similarity_top_k=10,  # Optional
        ),
    )
)

rag_model = GenerativeModel(
    model_name="MODEL_ID", tools=[rag_retrieval_tool]
)
response = rag_model.generate_content("INPUT_PROMPT")
print(response.text)
# Example response:
#   The sky appears blue due to a phenomenon called Rayleigh scattering.
#   Sunlight, which contains all colors of the rainbow, is scattered
#   by the tiny particles in the Earth's atmosphere....
#   ...

Passaggi successivi