En esta página, se describen las opciones de modelos de incorporación y se muestra cómo usar tu modelo de incorporación para crear un corpus de RAG. La asociación entre tu modelo de incorporación y el corpus de RAG permanece fija durante el ciclo de vida de tu corpus de RAG.
Introducción a las incorporaciones
Las incorporaciones son representaciones numéricas de las entradas. Puedes usar incorporaciones en tus aplicaciones para reconocer significados complejos y relaciones semánticas, y para procesar y producir lenguaje.
Las incorporaciones funcionan mediante la conversión de texto, imagen y video en arreglos de números de punto flotante llamados vectores. Cuanto más cerca estén dos vectores en su espacio de incorporaciones, mayor será la similitud de sus entradas.
Los modelos de incorporación 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 incorporación asigne las relaciones en tus datos.
Opciones de modelos de incorporación
El motor de RAG de Vertex AI implementa la generación de aumento de recuperación (RAG) y te ofrece la opción de elegir entre los siguientes modelos de incorporación para usar en un corpus de RAG:
Tipo de modelo de incorporación | Descripción |
---|---|
Modelos de incorporación de texto de Vertex AI | 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 incorporación de texto de Vertex AI ajustados | Los modelos de incorporación de texto de Vertex AI están ajustados para tener conocimiento especializado o un rendimiento muy personalizado. |
Modelos de incorporación de OSS | Modelos de incorporación de código abierto de terceros en variantes solo en inglés y multilingües |
Modelos de incorporación compatibles
Los modelos de incorporación 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 incorporación predeterminado. Se recomienda usar con un corpus de RAG. |
text-embedding-004 |
|
text-multilingual-embedding-002 |
Se recomienda usar con un corpus de RAG. |
textembedding-gecko@003 |
|
textembedding-gecko-multilingual@001 |
|
textembedding-gecko@002 |
Solo versiones optimizadas. |
textembedding-gecko@001 |
Solo versiones optimizadas. |
Modelos de incorporación de código abierto
También se admiten los siguientes modelos de incorporación abierta. Puedes encontrarlos en Model Garden.
e5-base-v2
e5-large-v2
e5-small-v2
multilingual-e5-large
multilingual-e5-small
Usa modelos de incorporación de texto de Vertex AI
La API de incorporaciones de texto de Vertex AI usa los modelos de incorporación de Gecko, que producen un vector de incorporación densa con 768 dimensiones. Las incorporaciones densas almacenan el significado del texto, a diferencia de los vectores dispersos, que tienden a asignar palabras directamente a números. El beneficio de usar incorporaciones de vectores densas en la IA generativa es que, en lugar de buscar una palabra directa o coincidencias de sintaxis, puedes buscar mejor pasajes que se alineen con el significado de la consulta, incluso si los pasajes no usan el mismo idioma.
Modelos de Gecko
Los modelos de 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 del publicador, lo que los convierte en el conjunto de modelos preferido para usar con el motor de RAG de Vertex AI.
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 de Gecko
Es posible que se descataloguen los modelos de Gecko para publicadores. Si eso sucede, los modelos de Gecko del publicador no se pueden usar con el motor de RAG de Vertex AI, incluso para un corpus de RAG que se creó antes de la baja. Cuando se descontinua tu modelo de Gecko, debes migrar el corpus de RAG, lo que significa que debes crear un nuevo corpus de RAG y volver a importar los datos. Una alternativa es usar un modelo de Gecko optimizado o un modelo de incorporación de OSS autoimplementado, que es compatible después de que se descontinua el modelo.
Crea un corpus de RAG con un modelo de Gecko del publicador
En estas muestras de código, se muestra cómo crear un corpus de RAG con un modelo de Gecko del 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 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.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
)
Usa modelos de incorporación de texto de Vertex AI 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, es posible que haya situaciones en las que se requiera 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 de Gecko. Todos los modelos de incorporación de Gecko ajustados producen incorporaciones con vectores de 768 dimensiones. Para obtener más información sobre estos modelos, consulta Obtén incorporaciones de texto.
Para obtener más información sobre el ajuste de modelos de incorporación, consulta Ajusta los modelos de texto.
En estas muestras de código, se muestra cómo crear un corpus de RAG con tu modelo de Gecko implementado 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.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
)
Usa modelos de incorporación de OSS
El motor de RAG de Vertex AI 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 E5 admitidos.
Versión del modelo | Modelo base | Parámetros | dimensión de incorporación | Solo en inglés |
---|---|---|---|---|
e5-base-v2 |
MiniLM |
109 M | 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 el motor RAG de Vertex AI, el modelo E5 se debe implementar desde Model Garden. Para implementar tu modelo de E5, consulta Incorporación de texto de E5 en la consola de Google Cloud.
En estas muestras de código, se muestra 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 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.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
)