Usa modelli di incorporamento con RAG Engine

Questa pagina descrive le opzioni di modelli di embedding e mostra come utilizzare la tua scelta per creare un corpus RAG. L'associazione tra il modello e Il corpus RAG rimane fisso per l'intera durata del corpus RAG.

Gli incorporamenti 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 dati mobili numeri in punti denominati vettori. Più due vettori sono vicini nello spazio di embedding, maggiore è la somiglianza dei relativi input.

I modelli di incorporamento sono una 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.

RAG Engine implementa RAG (Retrieval Augmented Generation) e offre la scelta dei seguenti modelli di incorporamento da utilizzare all'interno di un corpus RAG:

  • Modelli di incorporamento di testo di Vertex AI: modelli addestrati dall'editore, ad esempio Google. I modelli vengono addestrati su un grande set di dati di testo, e forniscono una solida base per molte attività.
  • Modelli di incorporamento di testo Vertex AI ottimizzati: modelli addestrati per avere una conoscenza specializzata o prestazioni altamente personalizzate.
  • Modelli di incorporamento OSS: modelli di incorporamento open source di terze parti in Varianti solo in inglese e multilingue.

Utilizzare i modelli di embedding di testo di Vertex AI

L'API Vertex AI per l'embedding del testo 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 incorporamenti vettoriali densi nell'IA generativa è che, invece di cercare una parola diretta o corrispondenze di sintassi, puoi cerca passaggi in linea con il significato della query, anche se non usano la stessa lingua.

I modelli Gecko sono disponibili in versioni solo in inglese e multilingue. Non mi piace modelli Gecko perfezionati, i modelli Gecko degli editori non devono essere distribuiti, il che li rende il set di modelli più semplice da usare con RAG Engine. I seguenti modelli Gecko sono consigliati per l'utilizzo con un corpus RAG:

  • text-embedding-004
  • text-multilingual-embedding-002
  • textembedding-gecko@003
  • textembedding-gecko-multilingual@001

Se non specifichi un modello di embedding quando crei il corpus RAG, RAG Engine assegna per impostazione predefinita il modello text-embedding-004 per il corpus RAG.

I modelli Gecko del publisher potrebbero essere ritirati. In questo caso, i modelli Gecko del publisher non possono essere utilizzati con RAG Engine, anche per un corpus RAG creato prima del ritiro. Quando il modello Gecko viene ritirato, devi eseguire la migrazione del corpus RAG, ovvero creare un corpus RAG e importare i dati. Un'alternativa è utilizzare un modello Gecko ottimizzato o un sistema operativo di cui è stato eseguito il deployment autonomo di incorporamento, supportata dopo il ritiro del modello.

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.preview 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 Vertex AI ottimizzati

Sebbene i modelli publisher di base siano addestrati su un grande set di dati e forniscono una solida base per molte attività, potrebbero verificarsi scenari in cui potrebbero richiedere che i modelli abbiano una conoscenza specializzata o altamente personalizzati le prestazioni dei dispositivi. In questi casi, l'ottimizzazione del modello consente di mettere a punto rappresentazioni grafiche utilizzando i dati pertinenti. Un ulteriore vantaggio di questo approccio è che quando il modello viene perfezionato, l'immagine risultante è di tua proprietà ed è non interessate dal ritiro del modello Gecko. Tutti i modelli di incorporamento Gecko ottimizzati produrre incorporamenti con vettori a 768 dimensionali. Per scoprire di più su questi modelli, consulta Ottenere gli embedding di testo.

Per ottimizzare un modello Gecko, consulta Ottimizzare gli incorporamenti 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.preview 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
  )

Utilizza modelli di incorporamento OSS

RAG Engine supporta i modelli di incorporamento open source di terze parti in Varianti solo in inglese e multilingue. In questa tabella sono elencati 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 RAG Engine, è necessario eseguire il deployment del modello E5 da Model Garden. Consulta Incorporamento del testo E5 nella console Google Cloud per eseguire il deployment del tuo modello E5.

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

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.preview 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