Usa modelos de embedding con RAG Engine

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

Introducción a los embeddings

Los embeddings son representaciones numéricas de las entradas. Puedes usar embeddings en tus aplicaciones para reconocer significados complejos y relaciones semánticas, y para procesar y producir lenguaje.

Las incorporaciones funcionan convirtiendo texto, imágenes y videos en arrays de números de punto flotante llamados vectores. Cuanto más cerca estén dos vectores en su espacio de embedding, mayor será la similitud de sus entradas.

Los modelos de embeddings son un componente importante de los sistemas de recuperación semántica. El rendimiento de un sistema de recuperación depende de qué tan bien el modelo de embeddings asigne las relaciones en tus datos.

Opciones de modelos de embeddings

RAG Engine implementa la generación mejorada por recuperación (RAG) y te ofrece la opción de elegir entre los siguientes modelos de embeddings para usar dentro de un corpus de RAG:

Tipo de modelo de embedding Descripción
Modelos de embedding de texto de Gemini Enterprise Agent Platform Modelos entrenados por el publicador, como Google. Los modelos se entrenan con un gran conjunto de datos de texto y proporcionan un modelo de referencia sólido para muchas tareas.
Modelos de embedding de texto de Agent Platform ajustados Los modelos de embedding de texto de Agent Platform se ajustan para tener conocimientos especializados o un rendimiento altamente personalizado.
Modelos de embedding de OSS Modelos de embeddings de código abierto de terceros en variantes solo en inglés y multilingües.

Modelos de incorporación compatibles

Los modelos de embeddings se usan para crear un corpus y para la búsqueda y recuperación durante la generación de respuestas. En esta sección, se enumeran los modelos de incorporación compatibles.

Versión del modelo Descripción
text-embedding-005 Es el modelo de embedding predeterminado.

Se recomienda usarlo con un corpus de RAG.

text-embedding-004 Se accede a text-embedding-004 directamente a través de la API de Embedding y no está disponible en Model Garden.
text-multilingual-embedding-002 Se recomienda usarlo con un corpus de RAG.

Modelos de incorporación de código abierto

También se admiten los siguientes modelos de embedding abiertos. Puedes encontrarlos en Model Garden.

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

Usa modelos de embedding de texto de Agent Platform

La API de embedding de texto de Agent Platform admite varios modelos de embedding, que producen un vector de embedding denso con 768 dimensiones. Los embeddings densos almacenan el significado del texto, a diferencia de los vectores dispersos, que tienden a asignar palabras directamente a números. La ventaja de usar embeddings de vectores densos en la IA generativa es que, en lugar de buscar coincidencias de palabras o sintaxis directas, puedes buscar mejor pasajes que se alineen con el significado de la consulta, incluso si los fragmentos no usan el mismo idioma.

Para obtener una lista de los modelos compatibles, consulta Modelos de embeddings.

Modelos Gecko

Los modelos Gecko están disponibles en versiones solo en inglés y multilingües. A diferencia de los modelos de Gecko ajustados, no es necesario implementar los modelos de Gecko de publicador, lo que los convierte en el conjunto de modelos preferido para usar con RAG Engine.

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

Cuándo se descontinuarán los modelos Gecko

Es posible que se descontinúen los modelos Gecko del publicador. Si eso sucede, los modelos de Gecko del publicador no se podrán usar con RAG Engine, ni siquiera para un corpus de RAG que se haya creado antes de la descontinuación. Cuando se descontinúe tu modelo de Gecko, deberás migrar el corpus de RAG, lo que significa que crearás un corpus de RAG nuevo y volverás a importar los datos. Una alternativa es usar un modelo de Gecko ajustado o un modelo de incorporación de OSS autoimplementado, que se admite después de que se descontinúa el modelo.

Crea un corpus de RAG con un modelo Gecko de publicador

En estas muestras de código, se indica cómo crear un corpus de RAG con un modelo de Gecko de publicador.

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 Agent Platform 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
  )

Usa modelos de embedding de texto de Agent Platform ajustados

Aunque los modelos de publicador de base se entrenan con un gran conjunto de datos de texto y proporcionan un modelo de referencia sólido para muchas tareas, puede haber situaciones en las que necesites que los modelos tengan un conocimiento especializado o un rendimiento muy personalizado. En esos casos, el ajuste del modelo te permite definir mejor las representaciones del modelo con tus datos relevantes. Un beneficio adicional de este enfoque es que, cuando se ajusta el modelo, la imagen resultante es de tu propiedad y no se ve afectada por la baja del modelo Gecko. Todos los modelos de embedding de Gecko ajustados producen embeddings con vectores de 768 dimensiones. Para obtener más información sobre estos modelos, consulta Obtén embeddings de texto.

Para obtener más información sobre el ajuste de modelos de embedding, consulta Ajusta los embeddings de texto.

En estas muestras de código, se indica cómo crear un corpus de RAG con tu modelo de Gecko ajustado y, luego, implementarlo.

curl

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

  // Your Agent Platform 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 Agent Platform 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
  )

Usa modelos de incorporación de OSS

RAG Engine admite modelos de incorporación de código abierto de terceros en variantes solo en inglés y multilingües. En esta tabla, se enumeran 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 109 millones 768 ✔
e5-large-v2 MiniLM 335 millones 1,024 ✔
e5-small-v2 MiniLM 33 millones 384 ✔
multilingual-e5-large xlm-roberta-large 560 millones 1,024 ✗
multilingual-e5-small microsoft/Multilingual-MiniLM-L12-H384 118 millones 384 ✗

Para usar modelos E5 con RAG Engine, el modelo E5 debe implementarse desde Model Garden. Para implementar tu modelo de E5, consulta Embedding de texto de E5 en la consola de Google Cloud .

En estas muestras de código, se indica cómo crear un corpus de RAG con tu modelo de E5 implementado.

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 Agent Platform 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
  )

¿Qué sigue?