Usar modelos de inserciones con el motor de RAG de Vertex AI

En esta página se describen las opciones de modelos de inserción y se muestra cómo usar tu modelo de inserción para crear un corpus de RAG. La asociación entre tu modelo de inserción y el corpus de RAG se mantiene fija durante la vida útil del corpus de RAG.

Introducción a los embeddings

Las inserciones son representaciones numéricas de las entradas. Puedes usar las inserciones en tus aplicaciones para reconocer significados complejos y relaciones semánticas, así como para procesar y generar lenguaje.

Los embeddings funcionan convirtiendo texto, imágenes y vídeos en matrices de números de coma flotante llamados vectores. Cuanto más cerca estén dos vectores en su espacio de inserción, mayor será la similitud de sus entradas.

Los modelos de inserción son un componente importante de los sistemas de recuperación semántica. El rendimiento de un sistema de recuperación depende de lo bien que el modelo de inserciones mapee las relaciones de tus datos.

Opciones de modelo de inserción

Vertex AI RAG Engine implementa la generación aumentada de recuperación (RAG) y te ofrece la opción de usar los siguientes modelos de inserción en un corpus de RAG:

Tipo de modelo de inserción Descripción
Modelos de inserciones de texto de Vertex AI Modelos entrenados por el editor, como Google. Los modelos se entrenan con un gran conjunto de datos de texto y proporcionan una base sólida para muchas tareas.
Modelos de inserciones de texto de Vertex AI ajustados Los modelos de inserción de texto de Vertex AI se ajustan para tener conocimientos especializados o un rendimiento muy personalizado.
Modelos de inserciones de software libre Modelos de inserción de código abierto de terceros en inglés y en varios idiomas.

Modelos de inserción admitidos

Los modelos de inserción se usan para crear un corpus y para buscar y recuperar información durante la generación de respuestas. En esta sección se enumeran los modelos de inserción admitidos.

Versión del modelo Descripción
text-embedding-005 Modelo de inserción predeterminado.

Se recomienda usarlo con un corpus de RAG.

text-embedding-004
text-multilingual-embedding-002 Se recomienda usarlo con un corpus de RAG.

Modelos de inserción de código abierto

También se admiten los siguientes modelos de inserción abierta. Puedes encontrarlos en Model Garden.

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

Usar modelos de inserción de texto de Vertex AI

La API de inserciones de texto de Vertex AI usa los modelos de inserciones de Gecko, que producen un vector de inserción denso con 768 dimensiones. Las incrustaciones densas almacenan el significado del texto, a diferencia de los vectores dispersos, que suelen asignar palabras directamente a números. La ventaja de usar incrustaciones de vectores densos en la IA generativa es que, en lugar de buscar coincidencias directas de palabras o sintaxis, puedes buscar mejor pasajes que se ajusten al significado de la consulta, aunque no utilicen el mismo idioma.

Modelos de Gecko

Los modelos Gecko están disponibles en inglés y en versiones multilingües. A diferencia de los modelos Gecko ajustados, los modelos Gecko de editores no tienen que desplegarse, por lo que son el conjunto de modelos preferido para usar con el motor RAG de Vertex AI.

Para identificar el modelo de incrustación predeterminado que se usa o si necesitas una lista de modelos de Gecko que se recomienden para usar con un corpus de RAG, consulta Modelos de incrustación admitidos.

Cuando se retiran los modelos Gecko

Es posible que se dejen de fabricar los modelos Gecko de editor. Si esto ocurre, los modelos Gecko del editor no se podrán usar con Vertex AI RAG Engine, ni siquiera para un corpus de RAG que se haya creado antes de la discontinuación. Cuando se deje de ofrecer tu modelo Gecko, debes migrar el corpus de RAG, lo que significa que debes crear un nuevo corpus de RAG y volver a importar los datos. Otra opción es usar un modelo de Gecko ajustado o un modelo de inserción de software libre implementado por el usuario, que se admitirá después de que se deje de ofrecer el modelo.

Crear un corpus de RAG con un modelo Gecko de editor

En estos ejemplos de código se muestra cómo crear un corpus de RAG con un modelo Gecko de editor.

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 de Vertex AI para 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.RagEmbeddingModelConfig(
        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, rag_embedding_model_config=embedding_model_config
  )

Usar modelos de inserciones de texto de Vertex AI optimizados

Aunque los modelos de editores fundacionales se entrenan con un gran conjunto de datos de texto y proporcionan una base sólida para muchas tareas, puede haber casos en los que necesites que los modelos tengan conocimientos especializados o un rendimiento muy personalizado. En estos casos, el ajuste de modelos te permite perfeccionar las representaciones del modelo con tus datos relevantes. Otra ventaja de este enfoque es que, cuando se ajusta el modelo, la imagen resultante es de tu propiedad y no se ve afectada por la retirada del modelo Gecko. Todos los modelos de incrustaciones de Gecko ajustados generan incrustaciones con vectores de 768 dimensiones. Para obtener más información sobre estos modelos, consulte Obtener inserciones de texto.

Para obtener más información sobre cómo optimizar los modelos de inserción, consulta Optimizar inserciones de texto.

En estos ejemplos de código se muestra cómo crear un corpus de RAG con el modelo Gecko que has desplegado y ajustado.

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 de Vertex AI para 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.RagEmbeddingModelConfig(
      endpoint=${MODEL_ENDPOINT},
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

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

Usar modelos de inserción de software libre

El motor de RAG de Vertex AI admite modelos de inserciones de código abierto de terceros en variantes solo en inglés y multilingües. En esta tabla se indican los modelos de E5 compatibles.

Versión del modelo Modelo base Parámetros Dimensión de embedding Solo en inglés
e5-base-v2 MiniLM 109M 17.
e5-large-v2 MiniLM 335M 1024
e5-small-v2 MiniLM 33 M 384
multilingual-e5-large xlm-roberta-large 560 M 1024
multilingual-e5-small microsoft/Multilingual-MiniLM-L12-H384 118 M 384

Para usar modelos E5 con Vertex AI RAG Engine, el modelo E5 debe desplegarse desde Model Garden. Para desplegar tu modelo E5, consulta E5 Text Embedding en la consola de Google Cloud .

En estos ejemplos de código se muestra cómo crear un corpus de RAG con el modelo E5 que has desplegado.

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 de Vertex AI para 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.RagEmbeddingModelConfig(
      endpoint=MODEL_ENDPOINT,
  )

  # Name your corpus
  DISPLAY_NAME = "YOUR_CORPUS_DISPLAY_NAME"

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

Siguientes pasos