Utilizzare i modelli di embedding con il motore RAG di Vertex AI

Questa pagina descrive le scelte dei modelli di embedding e mostra come utilizzare il tuo modello di embedding per creare un corpus RAG. L'associazione tra il tuo modello di embedding e il corpus RAG rimane invariata per tutta la vita del corpus RAG.

Introduzione alle rappresentazioni distribuite

Le rappresentazioni distribuite sono rappresentazioni numeriche degli input. Puoi utilizzare gli embedding nelle tue applicazioni per riconoscere significati complessi e relazioni semantiche, nonché per elaborare e produrre il linguaggio.

Gli incorporamenti funzionano convertendo testo, immagini e video in array di numeri con virgola mobile chiamati vettori. Più due vettori sono vicini nello spazio di rappresentazione, maggiore è la somiglianza dei relativi input.

I modelli di embedding sono un componente importante dei sistemi di recupero semantico. Le prestazioni di un sistema di recupero dipendono dalla qualità con cui il modello di embedding mappa le relazioni nei dati.

Scelte del modello di embedding

Il motore RAG di Vertex AI implementa la generazione RAG (Retrieval-Augmented Generation) e ti offre la possibilità di scegliere tra i seguenti modelli di embedding da utilizzare all'interno di un corpus RAG:

Tipo di modello di embedding Descrizione
Modelli di embedding di testo Vertex AI Modelli addestrati dal publisher, ad esempio Google. I modelli vengono addestrati su un ampio set di dati di testo e forniscono una solida base di riferimento per molte attività.
Modelli di embedding di testo Vertex AI ottimizzati I modelli di embedding di testo di Vertex AI sono ottimizzati per avere conoscenze specializzate o prestazioni altamente personalizzate.
Modelli di incorporamento OSS Modelli di embedding open source di terze parti in varianti solo in inglese e multilingue.

Modelli di embedding supportati

I modelli di embedding vengono utilizzati per creare un corpus e per la ricerca e il recupero durante la generazione di risposte. Questa sezione elenca i modelli di embedding supportati.

Versione del modello Descrizione
text-embedding-005 Modello di embedding predefinito.

Consigliato per l'utilizzo con un corpus RAG.

text-embedding-004
text-multilingual-embedding-002 Consigliato per l'utilizzo con un corpus RAG.
textembedding-gecko@003
textembedding-gecko-multilingual@001
textembedding-gecko@002 Solo versioni ottimizzate.
textembedding-gecko@001 Solo versioni ottimizzate.

Modelli di incorporamento open source

Sono supportati anche i seguenti modelli di incorporamento aperti. Puoi trovarli in Model Garden.

  • e5-base-v2
  • e5-large-v2
  • e5-small-v2
  • multilingual-e5-large
  • multilingual-e5-small

Utilizzare i modelli di embedding di testo di Vertex AI

L'API Vertex AI Text Embedding utilizza i modelli di embedding Gecko, che producono un vettore di embedding denso con 768 dimensioni. Gli embedding densi memorzzano il significato del testo, a differenza dei vettori sparsi, che tendono a mappare direttamente le parole ai numeri. Il vantaggio dell'utilizzo di embedding vettoriali densi nell'AI generativa è che, anziché cercare corrispondenze di parole o sintassi dirette, puoi cercare meglio i passaggi in linea con il significato della query, anche se i passaggi non utilizzano la stessa lingua.

Modelli Gecko

I modelli Gecko sono disponibili in versioni solo in inglese e multilingue. A differenza dei modelli Gecko ottimizzati, non è necessario eseguire il deployment dei modelli Gecko del publisher, il che li rende l'insieme di modelli preferito da utilizzare con il motore RAG di Vertex AI.

Per identificare il modello di embedding predefinito utilizzato o se hai bisogno di un elenco di modelli Gecko consigliati per l'utilizzo con un corpus RAG, consulta Modelli di embedding supportati.

Quando i modelli Gecko vengono ritirati

I modelli Gecko del publisher potrebbero essere ritirati. In questo caso, i modelli Gecko del publisher non possono essere utilizzati con il motore RAG di Vertex AI, anche per un corpus RAG creato prima dell'interruzione. Quando il modello Gecko viene interrotto, devi eseguire la migrazione del corpus RAG, ovvero creare un nuovo corpus RAG e importare di nuovo i dati. Un'alternativa è utilizzare un modello Gecko ottimizzato o un modello di embedding OSS auto-implementato, che è supportato dopo il ritiro del modello.

Creare un corpus RAG con un modello Gecko del publisher

Questi esempi di codice mostrano come creare un corpus RAG con un modello Gecko del publisher.

curl

  ENDPOINT=us-central1-aiplatform.googleapis.com
  PROJECT_ID=YOUR_PROJECT_ID

  // Set this to your choice of publisher Gecko model. Note that the full resource name of the publisher model is required.
  // Example: projects/${PROJECT_ID}/locations/us-central1/publishers/google/models/text-embedding-004
  ENDPOINT_NAME=YOUR_ENDPOINT_NAME

  // Set a display name for your corpus.
  // For example, "my test corpus"
  CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME

  // CreateRagCorpus
  // Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
        "rag_embedding_model_config" : {
              "vertex_prediction_endpoint": {
                    "endpoint": '\""${ENDPOINT_NAME}"\"'
              }
        }
  }'

SDK Vertex AI per Python

  import vertexai
  from vertexai import rag

  # Set Project
  PROJECT_ID = "YOUR_PROJECT_ID"
  vertexai.init(project=${PROJECT_ID}, location="us-central1")

  # Configure a Google first-party embedding model
  embedding_model_config = rag.EmbeddingModelConfig(
        publisher_model="publishers/google/models/text-embedding-004"
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

  rag_corpus = rag.create_corpus(
        display_name=DISPLAY_NAME, embedding_model_config=embedding_model_config
  )

Utilizzare modelli di embedding di testo di Vertex AI ottimizzati

Sebbene i modelli di publisher di base siano addestrati su un ampio set di dati di testo e forniscano una solida base di riferimento per molte attività, potrebbero esserci scenari in cui potresti richiedere ai modelli conoscenze specializzate o un rendimento molto personalizzato. In questi casi, la regolazione del modello ti consente di perfezionare le rappresentazioni del modello utilizzando i tuoi dati pertinenti. Un ulteriore vantaggio di questo approccio è che, quando il modello viene ottimizzato, l'immagine risultante è di tua proprietà e non è interessata dal ritiro del modello Gecko. Tutti i modelli di embedding Gecko ottimizzati producono embedding con vettori di 768 dimensioni. Per scoprire di più su questi modelli, consulta Ottenere gli embedding di testo.

Per saperne di più sull'ottimizzazione dei modelli di embedding, consulta Ottimizzare gli embedding di testo.

Questi esempi di codice mostrano come creare un corpus RAG con il modello Gecko ottimizzato e di cui è stato eseguito il deployment.

curl

  ENDPOINT=us-central1-aiplatform.googleapis.com
  PROJECT_ID=YOUR_PROJECT_ID

  // Your Vertex AI endpoint resource with the deployed fine-tuned Gecko model
  // Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
  ENDPOINT_NAME=YOUR_ENDPOINT_NAME

  // Set a display name for your corpus.
  // For example, "my test corpus"
  CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME

  // CreateRagCorpus
  // Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME}"\"',
        "rag_embedding_model_config" : {
                "vertex_prediction_endpoint": {
                      "endpoint": '\""${ENDPOINT_NAME}"\"'
                }
        }
    }'

SDK Vertex AI per Python

  import vertexai
  from vertexai import rag

  # Set Project
  PROJECT_ID = "YOUR_PROJECT_ID"
  vertexai.init(project=${PROJECT_ID}, location="us-central1")

  # Your Vertex Endpoint resource with the deployed fine-tuned Gecko model
  ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
  MODEL_ENDPOINT = "projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT_ID}"

  embedding_model_config = rag.EmbeddingModelConfig(
      endpoint=${MODEL_ENDPOINT},
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

  rag_corpus = rag.create_corpus(
      display_name=${DISPLAY_NAME}, embedding_model_config=embedding_model_config
  )

Utilizzare i modelli di embedding OSS

Il motore RAG di Vertex AI supporta i modelli di embedding open source di terze parti nelle varianti solo in inglese e multilingue. Questa tabella elenca i modelli E5 supportati.

Versione del modello Modello di base Parametri dimensione di embedding Solo in inglese
e5-base-v2 MiniLM 109 MLN 768
e5-large-v2 MiniLM 335 Mln 1024
e5-small-v2 MiniLM 33 Mln 384
multilingual-e5-large xlm-roberta-large 560 MLN 1024
multilingual-e5-small microsoft/Multilingual-MiniLM-L12-H384 118 MLN 384

Per utilizzare i modelli E5 con il motore RAG di Vertex AI, il modello E5 deve essere dipiegato da Model Garden. Per eseguire il deployment del modello E5, consulta Embedding di testo E5 nella console Google Cloud.

Questi esempi di codice mostrano come creare un corpus RAG con il modello E5 di cui è stato eseguito il deployment.

curl

  ENDPOINT=us-central1-aiplatform.googleapis.com
  PROJECT_ID=YOUR_PROJECT_ID

  // Your Vertex Endpoint resource with the deployed E5 model
  // Example: projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT_ID}
  ENDPOINT_NAME=YOUR_ENDPOINT_NAME

  // Set a display name for your corpus.
  // For example, "my test corpus"
  CORPUS_DISPLAY_NAME=YOUR_CORPUS_DISPLAY_NAME

  // CreateRagCorpus
  // Input: ENDPOINT, PROJECT_ID, ENDPOINT_NAME, CORPUS_DISPLAY_NAME
  curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  https://${ENDPOINT}/v1beta1/projects/${PROJECT_ID}/locations/us-central1/ragCorpora \
  -d '{
        "display_name" : '\""${CORPUS_DISPLAY_NAME</var>}"\"',
        "rag_embedding_model_config" : {
                "vertex_prediction_endpoint": {
                      "endpoint": '\""${ENDPOINT_NAME}"\"'
                }
        }
    }'

SDK Vertex AI per Python

  import vertexai
  from vertexai import rag

  # Set Project
  PROJECT_ID = "YOUR_PROJECT_ID"
  vertexai.init(project=PROJECT_ID, location="us-central1")

  # Your Vertex Endpoint resource with the deployed E5 model
  ENDPOINT_ID = "YOUR_MODEL_ENDPOINT_ID"
  MODEL_ENDPOINT = "projects/{PROJECT_ID}/locations/us-central1/endpoints/{ENDPOINT_ID}"

  embedding_model_config = rag.EmbeddingModelConfig(
      endpoint=MODEL_ENDPOINT,
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

  rag_corpus = rag.create_corpus(
      display_name=DISPLAY_NAME, embedding_model_config=embedding_model_config
  )

Passaggi successivi