Genera incorporaciones de texto con la función ML.GENERATE_OPTIMIDING
En este documento, se muestra cómo crear un modelo remoto de BigQuery ML que hace referencia a un modelo de incorporación. Luego, usa ese modelo con la función ML.GENERATE_EMBEDDING
para crear incorporaciones de texto con los datos de una tabla estándar de BigQuery.
Se admiten los siguientes tipos de modelos remotos:
- Modelos remotos sobre modelos de incorporación de Vertex AI.
- Modelos remotos sobre modelos abiertos compatibles (vista previa).
Roles requeridos
Para crear un modelo remoto y usar la función ML.GENERATE_EMBEDDING
, necesitas los siguientes roles de Identity and Access Management (IAM):
- Crear y usar conjuntos de datos, tablas y modelos de BigQuery: Editor de datos de BigQuery (
roles/bigquery.dataEditor
) en tu proyecto Crea, delega y usa conexiones de BigQuery: Administrador de conexiones de BigQuery (
roles/bigquery.connectionsAdmin
) en tu proyecto.Si no tienes configurada una conexión predeterminada, puedes crear y establecer una como parte de la ejecución de la instrucción
CREATE MODEL
. Para ello, debes tener el rol de administrador de BigQuery (roles/bigquery.admin
) en tu proyecto. Para obtener más información, consulta Cómo configurar la conexión predeterminada.Otorga permisos a la cuenta de servicio de la conexión: Administrador de IAM del proyecto (
roles/resourcemanager.projectIamAdmin
) en el proyecto que contiene el extremo de Vertex AI. Este es el proyecto actual para los modelos remotos que creas especificando el nombre del modelo como un extremo. Este es el proyecto identificado en la URL de los modelos remotos que creas especificando una URL como extremo.Crear trabajos de BigQuery: Usuario de trabajo de BigQuery (
roles/bigquery.jobUser
) en tu proyecto
Estos roles predefinidos contienen los permisos necesarios para realizar las tareas de este documento. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:
Permisos necesarios
- Crea un conjunto de datos:
bigquery.datasets.create
- Crea, delega y usa una conexión:
bigquery.connections.*
- Configura los permisos de la cuenta de servicio:
resourcemanager.projects.getIamPolicy
yresourcemanager.projects.setIamPolicy
- Crea un modelo y ejecuta la inferencia:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
- Consultar datos de tablas:
bigquery.tables.getData
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Antes de comenzar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para que contenga tus recursos:
Console
En la consola de Google Cloud , ve a la página BigQuery.
En el panel de la izquierda, haz clic en
Explorar:Si no ves el panel izquierdo, haz clic en
Expandir panel izquierdo para abrirlo.En el panel Explorador, haz clic en el nombre de tu proyecto.
Haz clic en
Ver acciones > Crear conjunto de datos.En la página Crear conjunto de datos, haz lo siguiente:
En ID de conjunto de datos, escribe un nombre para el conjunto de datos.
En Tipo de ubicación, selecciona Región o Multirregión.
- Si seleccionaste Región, selecciona una ubicación de la lista Región.
- Si seleccionaste Multirregión, selecciona EE.UU. o Europa en la lista Multirregión.
Haz clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos nuevo, usa el comando
bq mk
con la marca--location
:bq --location=LOCATION mk -d DATASET_ID
Reemplaza lo siguiente:
LOCATION
: la ubicación del conjunto de datos.DATASET_ID
es el ID del conjunto de datos que crearás.
Confirma que se haya creado el conjunto de datos:
bq ls
Crear una conexión
Puedes omitir este paso si tienes configurada una conexión predeterminada o si tienes el rol de administrador de BigQuery.
Crea una conexión de recurso de Cloud para que la use el modelo remoto y obtén la cuenta de servicio de la conexión. Crea la conexión en la misma ubicación que el conjunto de datos que creaste en el paso anterior.
Selecciona una de las siguientes opciones:
Console
Ve a la página de BigQuery.
En el panel Explorador, haz clic en
Agregar datos:Se abrirá el diálogo Agregar datos.
En el panel Filtrar por, en la sección Tipo de fuente de datos, selecciona Aplicaciones empresariales.
También puedes ingresar
Vertex AI
en el campo Buscar fuentes de datos.En la sección Fuentes de datos destacadas, haz clic en Vertex AI.
Haz clic en la tarjeta de solución Vertex AI Models: BigQuery Federation.
En la lista Tipo de conexión, selecciona Modelos remotos de Vertex AI, funciones remotas, BigLake y Spanner (Cloud Resource).
En el campo ID de conexión, ingresa un nombre para tu conexión.
Haz clic en Crear conexión (Create connection).
Haz clic en Ir a la conexión.
En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.
bq
En un entorno de línea de comandos, crea una conexión:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
El parámetro
--project_id
anula el proyecto predeterminado.Reemplaza lo siguiente:
REGION
: tu región de conexiónPROJECT_ID
: El ID de tu proyecto de Google CloudCONNECTION_ID
: Es un ID para tu conexión.
Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.
Solución de problemas: Si recibes el siguiente error de conexión, actualiza el SDK de Google Cloud:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
El resultado es similar a este:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Terraform
Usa el recurso google_bigquery_connection
.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
En el siguiente ejemplo, se crea una conexión de recursos de Cloud llamada my_cloud_resource_connection
en la región US
:
Para aplicar tu configuración de Terraform en un proyecto Google Cloud , completa los pasos de las siguientes secciones.
Prepara Cloud Shell
- Inicia Cloud Shell
-
Establece el proyecto Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.
Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.
Prepara el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión
.tf
, por ejemplo,main.tf
. En este instructivo, el archivo se denominamain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.
Copia el código de muestra en el
main.tf
recién creado.De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.
- Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo debes hacerlo una vez por directorio.
terraform init
De manera opcional, incluye la opción
-upgrade
para usar la última versión del proveedor de Google:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
terraform plan
Corrige la configuración según sea necesario.
-
Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe
yes
cuando se te solicite:terraform apply
Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.
- Abre tu proyecto Google Cloud para ver los resultados. En la consola de Google Cloud , navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.
Otorga un rol a la cuenta de servicio de la conexión del modelo remoto
Debes otorgar a la cuenta de servicio de la conexión el rol de usuario de Vertex AI.
Si planeas especificar el extremo como una URL cuando crees el modelo remoto, por ejemplo, endpoint = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/publishers/google/models/text-embedding-005'
, otorga este rol en el mismo proyecto que especifiques en la URL.
Si planeas especificar el extremo con el nombre del modelo cuando crees el modelo remoto, por ejemplo, endpoint = 'text-embedding-005'
, otorga este rol en el mismo proyecto en el que planeas crear el modelo remoto.
Si otorgas el rol en un proyecto diferente, se produce el error bqcx-1234567890-wxyz@gcp-sa-bigquery-condel.iam.gserviceaccount.com does not have the permission to access resource
.
Para otorgar el rol, sigue estos pasos:
Console
Ir a la página IAM y administración
Haz clic en
Otorgar acceso.Se abre el cuadro de diálogo Agregar principales.
En el campo Principales nuevas (New principals), ingresa el ID de la cuenta de servicio que copiaste antes.
En el campo Selecciona un rol, selecciona Vertex AI y, luego, Usuario de Vertex AI.
Haz clic en Guardar.
gcloud
Usa el comando gcloud projects add-iam-policy-binding
:
gcloud projects add-iam-policy-binding 'PROJECT_NUMBER' --member='serviceAccount:MEMBER' --role='roles/aiplatform.user' --condition=None
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número de tu proyecto.MEMBER
: el ID de la cuenta de servicio que copiaste antes
Elige un método de implementación de modelos abiertos
Si creas un modelo remoto sobre un modelo abierto compatible, puedes implementar automáticamente el modelo abierto al mismo tiempo que creas el modelo remoto. Para ello, especifica el ID del modelo de Vertex AI Model Garden o de Hugging Face en la instrucción CREATE MODEL
.
Como alternativa, primero puedes implementar el modelo abierto de forma manual y, luego, usarlo con el modelo remoto especificando el extremo del modelo en la instrucción CREATE MODEL
. Para obtener más información, consulta Implementa modelos abiertos.
Crea un modelo remoto de BigQuery ML
Crea un modelo remoto:
Nuevos modelos abiertos
En la consola de Google Cloud , ve a la página BigQuery.
Crea un modelo remoto con el editor de SQL:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( {HUGGING_FACE_MODEL_ID = 'HUGGING_FACE_MODEL_ID' | MODEL_GARDEN_MODEL_NAME = 'MODEL_GARDEN_MODEL_NAME'} [, HUGGING_FACE_TOKEN = 'HUGGING_FACE_TOKEN' ] [, MACHINE_TYPE = 'MACHINE_TYPE' ] [, MIN_REPLICA_COUNT = MIN_REPLICA_COUNT ] [, MAX_REPLICA_COUNT = MAX_REPLICA_COUNT ] [, RESERVATION_AFFINITY_TYPE = {'NO_RESERVATION' | 'ANY_RESERVATION' | 'SPECIFIC_RESERVATION'} ] [, RESERVATION_AFFINITY_KEY = 'compute.googleapis.com/reservation-name' ] [, RESERVATION_AFFINITY_VALUES = RESERVATION_AFFINITY_VALUES ] [, ENDPOINT_IDLE_TTL = ENDPOINT_IDLE_TTL ] );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contendrá el modelo. Este conjunto de datos debe estar en la misma ubicación que la conexión que usas.MODEL_NAME
: el nombre del modeloREGION
: Es la región que usa la conexión.CONNECTION_ID
por el ID de la conexión de BigQuery.Puedes obtener este valor viendo los detalles de conexión en la consola de Google Cloud y copiando el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión. Por ejemplo:
projects/myproject/locations/connection_location/connections/myconnection
.HUGGING_FACE_MODEL_ID
: Un valorSTRING
que especifica el ID del modelo para un modelo compatible de Hugging Face, en el formatoprovider_name
/model_name
. Por ejemplo,deepseek-ai/DeepSeek-R1
. Para obtener el ID del modelo, haz clic en el nombre del modelo en Hugging Face Model Hub y, luego, copia el ID del modelo de la parte superior de la tarjeta del modelo.MODEL_GARDEN_MODEL_NAME
: Es un valorSTRING
que especifica el ID y la versión de un modelo compatible de Model Garden de Vertex AI, en el formatopublishers/publisher
/models/model_name
@model_version
. Por ejemplo,publishers/openai/models/gpt-oss@gpt-oss-120b
. Para obtener el ID del modelo, haz clic en la tarjeta del modelo en Model Garden de Vertex AI y, luego, copia el ID del modelo del campo ID del modelo. Puedes obtener la versión predeterminada del modelo copiándola del campo Versión en la tarjeta del modelo. Para ver otras versiones del modelo que puedes usar, haz clic en Implementar modelo y, luego, en el campo ID de recurso.HUGGING_FACE_TOKEN
: Un valorSTRING
que especifica el token de acceso de usuario de Hugging Face que se usará. Solo puedes especificar un valor para esta opción si también especificas un valor para la opciónHUGGING_FACE_MODEL_ID
.El token debe tener, como mínimo, el rol de
read
, pero también se aceptan tokens con un alcance más amplio. Esta opción es obligatoria cuando el modelo identificado por el valorHUGGING_FACE_MODEL_ID
es un modelo restringido o privado de Hugging Face.Algunos modelos restringidos requieren la aceptación explícita de sus condiciones del servicio antes de otorgar el acceso. Para aceptar estas condiciones, sigue estos pasos:
- Navega a la página del modelo en el sitio web de Hugging Face.
- Ubica y revisa las condiciones del servicio del modelo. Por lo general, en la tarjeta del modelo se incluye un vínculo al acuerdo de servicio.
- Acepta las condiciones cuando se te solicite en la página.
MACHINE_TYPE
: Es un valorSTRING
que especifica el tipo de máquina que se usará cuando se implemente el modelo en Vertex AI. Para obtener información sobre los tipos de máquinas compatibles, consulta Tipos de máquinas. Si no especificas un valor para la opciónMACHINE_TYPE
, se usará el tipo de máquina predeterminado de Vertex AI Model Garden para el modelo.MIN_REPLICA_COUNT
: Es un valorINT64
que especifica la cantidad mínima de réplicas de máquinas que se usan cuando se implementa el modelo en un extremo de Vertex AI. El servicio aumenta o disminuye el recuento de réplicas según lo requiera la carga de inferencia en el extremo. La cantidad de réplicas que se usa nunca es inferior al valorMIN_REPLICA_COUNT
ni superior al valorMAX_REPLICA_COUNT
. El valorMIN_REPLICA_COUNT
debe estar en el rango[1, 4096]
. El valor predeterminado es1
.MAX_REPLICA_COUNT
: Es un valorINT64
que especifica la cantidad máxima de réplicas de máquinas que se usan cuando se implementa el modelo en un extremo de Vertex AI. El servicio aumenta o disminuye el recuento de réplicas según lo requiera la carga de inferencia en el extremo. La cantidad de réplicas que se usa nunca es inferior al valorMIN_REPLICA_COUNT
ni superior al valorMAX_REPLICA_COUNT
. El valorMAX_REPLICA_COUNT
debe estar en el rango[1, 4096]
. El valor predeterminado es el valor deMIN_REPLICA_COUNT
.RESERVATION_AFFINITY_TYPE
: Determina si el modelo implementado usa reservas de Compute Engine para proporcionar disponibilidad garantizada de máquina virtual (VM) cuando se entregan predicciones y especifica si el modelo usa VMs de todas las reservas disponibles o solo de una reserva específica. Para obtener más información, consulta Afinidad de reservas de Compute Engine.Solo puedes usar las reservas de Compute Engine que se comparten con Vertex AI. Para obtener más información, consulta Cómo permitir que se consuma una reserva.
Los valores admitidos son los siguientes:
NO_RESERVATION
: No se consume ninguna reserva cuando tu modelo se implementa en un extremo de Vertex AI. EspecificarNO_RESERVATION
tiene el mismo efecto que no especificar una afinidad de reserva.ANY_RESERVATION
: La implementación del modelo de Vertex AI consume máquinas virtuales (VMs) de las reservas de Compute Engine que se encuentran en el proyecto actual o que se comparten con el proyecto, y que están configuradas para el consumo automático. Solo se usan las VMs que cumplen con los siguientes requisitos:- Usan el tipo de máquina especificado por el valor
MACHINE_TYPE
. - Si el conjunto de datos de BigQuery en el que creas el modelo remoto es de una sola región, la reserva debe estar en la misma región. Si el conjunto de datos está en la multirregión
US
, la reserva debe estar en la regiónus-central1
. Si el conjunto de datos está en la multirregiónEU
, la reserva debe estar en la regióneurope-west4
.
Si no hay suficiente capacidad en las reservas disponibles o no se encuentran reservas adecuadas, el sistema aprovisiona VMs de Compute Engine según demanda para satisfacer los requisitos de recursos.
- Usan el tipo de máquina especificado por el valor
SPECIFIC_RESERVATION
: La implementación del modelo de Vertex AI consume VMs solo de la reserva que especificas en el valorRESERVATION_AFFINITY_VALUES
. Esta reserva debe estar configurada para un consumo con una orientación específica. Deployment falla si la reserva especificada no tiene capacidad suficiente.
RESERVATION_AFFINITY_KEY
: La cadenacompute.googleapis.com/reservation-name
. Debes especificar esta opción cuando el valor deRESERVATION_AFFINITY_TYPE
seaSPECIFIC_RESERVATION
.RESERVATION_AFFINITY_VALUES
: Un valorARRAY<STRING>
que especifica el nombre completo del recurso de la reserva de Compute Engine, en el siguiente formato:
projects/myproject/zones/reservation_zone/reservations/reservation_name
Por ejemplo,
RESERVATION_AFFINITY_values = ['projects/myProject/zones/us-central1-a/reservations/myReservationName']
.Puedes obtener el nombre y la zona de la reserva en la página Reservas de la consola de Google Cloud . Para obtener más información, consulta Cómo ver las reservas.
Debes especificar esta opción cuando el valor de
RESERVATION_AFFINITY_TYPE
seaSPECIFIC_RESERVATION
.ENDPOINT_IDLE_TTL
: Un valorINTERVAL
que especifica la duración de la inactividad después de la cual el modelo abierto se deja de implementar automáticamente desde el extremo de Vertex AI.Para habilitar la anulación automática de la implementación, especifica un valor de literal de intervalo entre 390 minutos (6.5 horas) y 7 días. Por ejemplo, especifica
INTERVAL 8 HOUR
para que el modelo deje de implementarse después de 8 horas de inactividad. El valor predeterminado es de 390 minutos (6.5 horas).La inactividad del modelo se define como la cantidad de tiempo que transcurrió desde que se realizó alguna de las siguientes operaciones en el modelo:
- Ejecuta la sentencia
CREATE MODEL
. - Ejecuta la instrucción
ALTER MODEL
con el argumentoDEPLOY_MODEL
establecido enTRUE
. - Envía una solicitud de inferencia al extremo del modelo. Por ejemplo, ejecutando la función
ML.GENERATE_EMBEDDING
oML.GENERATE_TEXT
.
Cada una de estas operaciones restablece el temporizador de inactividad a cero. El restablecimiento se activa al inicio del trabajo de BigQuery que realiza la operación.
Después de que se anula la implementación del modelo, las solicitudes de inferencia que se envían a este muestran un error. El objeto del modelo de BigQuery permanece sin cambios, incluidos los metadatos del modelo. Para volver a usar el modelo para la inferencia, debes volver a implementarlo ejecutando la sentencia
ALTER MODEL
en el modelo y configurando la opciónDEPLOY_MODEL
enTRUE
.- Ejecuta la sentencia
Modelos abiertos implementados
En la consola de Google Cloud , ve a la página BigQuery.
Crea un modelo remoto con el editor de SQL:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS ( ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID' );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contendrá el modelo. Este conjunto de datos debe estar en la misma ubicación que la conexión que usas.MODEL_NAME
: el nombre del modeloREGION
: Es la región que usa la conexión.CONNECTION_ID
por el ID de la conexión de BigQuery.Puedes obtener este valor viendo los detalles de conexión en la consola de Google Cloud y copiando el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión. Por ejemplo:
projects/myproject/locations/connection_location/connections/myconnection
.ENDPOINT_REGION
: Es la región en la que se implementa el modelo abierto.ENDPOINT_PROJECT_ID
: Es el proyecto en el que se implementa el modelo abierto.ENDPOINT_ID
: Es el ID del extremo HTTPS que usa el modelo abierto. Puedes obtener el ID del extremo. Para ello, ubica el modelo abierto en la página Predicción en línea y copia el valor del campo ID.
Todos los demás modelos
En la consola de Google Cloud , ve a la página BigQuery.
Crea un modelo remoto con el editor de SQL:
CREATE OR REPLACE MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME` REMOTE WITH CONNECTION {DEFAULT | `PROJECT_ID.REGION.CONNECTION_ID`} OPTIONS (ENDPOINT = 'ENDPOINT');
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contendrá el modelo. Este conjunto de datos debe estar en la misma ubicación que la conexión que usas.MODEL_NAME
: el nombre del modeloREGION
: Es la región que usa la conexión.CONNECTION_ID
por el ID de la conexión de BigQuery.Puedes obtener este valor viendo los detalles de conexión en la consola de Google Cloud y copiando el valor en la última sección del ID de conexión completamente calificado que se muestra en ID de conexión. Por ejemplo:
projects/myproject/locations/connection_location/connections/myconnection
.ENDPOINT
: Es el nombre de un modelo de incorporación que se usará. Para obtener más información, consultaENDPOINT
.El modelo de Vertex AI que especifiques debe estar disponible en la ubicación en la que crees el modelo remoto. Para obtener más información, consulta Ubicaciones.
Generar incorporaciones de texto
Genera incorporaciones de texto con la función ML.GENERATE_EMBEDDING
usando datos de texto de una columna de tabla o una consulta.
Por lo general, usarías un modelo de incorporación de texto para casos de uso de solo texto y un modelo de incorporación multimodal para casos de uso de búsqueda multimodal, en los que las incorporaciones para texto y contenido visual se generan en el mismo espacio semántico.
Texto de Vertex AI
Genera embeddings de texto con un modelo remoto sobre un modelo de embedding de texto de Vertex AI:
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (CONTENT_QUERY)}, STRUCT(FLATTEN_JSON AS flatten_json_output, TASK_TYPE AS task_type, OUTPUT_DIMENSIONALITY AS output_dimensionality) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: El nombre del modelo remoto sobre un modelo de embedding.TABLE_NAME
: el nombre de la tabla que contiene el texto que se incorporará. Esta tabla debe tener una columna llamadacontent
, o puedes usar un alias para usar una columna con nombre diferente.CONTENT_QUERY
: una consulta cuyo resultado contiene una columnaSTRING
llamadacontent
.FLATTEN_JSON
: un valorBOOL
que indica si se debe analizar la incorporación en una columna separada. El valor predeterminado esTRUE
.TASK_TYPE
: Es un literalSTRING
que especifica la aplicación descendente prevista para ayudar al modelo a producir incorporaciones de mejor calidad.TASK_TYPE
acepta los siguientes valores:RETRIEVAL_QUERY
: especifica que el texto dado es una consulta en un parámetro de configuración de búsqueda o recuperación.RETRIEVAL_DOCUMENT
: especifica que el texto dado de un documento en un parámetro de configuración de búsqueda o recuperación.Cuando se usa este tipo de tarea, es útil incluir el título del documento en la instrucción de búsqueda para mejorar la calidad de la incorporación. El título del documento debe estar en una columna llamada
title
o con el aliastitle
, por ejemplo:SELECT * FROM ML.GENERATE_EMBEDDING( MODEL
mydataset.embedding_model
, (SELECT abstract as content, header as title, publication_number FROMmydataset.publications
), STRUCT(TRUE AS flatten_json_output, 'RETRIEVAL_DOCUMENT' as task_type) );Si especificas la columna de título en la consulta de entrada, se propagará el campo
title
del cuerpo de la solicitud que se envía al modelo. Si especificas un valor detitle
cuando usas cualquier otro tipo de tarea, esa entrada se ignora y no tiene ningún efecto en los resultados de la incorporación.SEMANTIC_SIMILARITY
: especifica que el texto dado se usará para la similitud textual semántica (STS).CLASSIFICATION
: especifica que las incorporaciones se usarán para la clasificación.CLUSTERING
: especifica que las incorporaciones se usarán para el agrupamiento en clústeres.QUESTION_ANSWERING
: Especifica que los embeddings se usarán para responder preguntas.FACT_VERIFICATION
: Especifica que las incorporaciones se usarán para la verificación de datos.CODE_RETRIEVAL_QUERY
: Especifica que las incorporaciones se usarán para la recuperación de código.
OUTPUT_DIMENSIONALITY
: Un valorINT64
que especifica la cantidad de dimensiones que se usarán cuando se generen embedding. Por ejemplo, si especificas256 AS output_dimensionality
, la columna de salidaml_generate_embedding_result
contiene 256 embeddings para cada valor de entrada.Para los modelos remotos sobre modelos
gemini-embedding-001
, el valor deOUTPUT_DIMENSIONALITY
debe estar en el rango[1, 3072]
. El valor predeterminado es3072
. Para los modelos remotos sobre modelostext-embedding
otext-multilingual-embedding
, el valor deOUTPUT_DIMENSIONALITY
debe estar en el rango de[1, 768]
. El valor predeterminado es768
.Si usas un modelo remoto sobre un modelo
text-embedding
, la versión del modelotext-embedding
debe sertext-embedding-004
o posterior. Si usas un modelo remoto sobre un modelotext-multilingual-embedding
, la versión del modelotext-multilingual-embedding
debe sertext-multilingual-embedding-002
o posterior.
Ejemplo: Incorpora texto en una tabla
En el siguiente ejemplo, se muestra una solicitud para incorporar la columna content
de la tabla text_data
:
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `mydataset.embedding_model`, TABLE mydataset.text_data, STRUCT(TRUE AS flatten_json_output, 'CLASSIFICATION' AS task_type) );
Texto abierto
Genera embeddings de texto con un modelo remoto sobre un modelo de embedding abierto:
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (CONTENT_QUERY)}, STRUCT(FLATTEN_JSON AS flatten_json_output) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: El nombre del modelo remoto sobre un modelo de embedding.TABLE_NAME
: el nombre de la tabla que contiene el texto que se incorporará. Esta tabla debe tener una columna llamadacontent
, o puedes usar un alias para usar una columna con nombre diferente.CONTENT_QUERY
: una consulta cuyo resultado contiene una columnaSTRING
llamadacontent
.FLATTEN_JSON
: un valorBOOL
que indica si se debe analizar la incorporación en una columna separada. El valor predeterminado esTRUE
.
Vertex AI multimodal
Genera embeddings de texto con un modelo remoto sobre un modelo de incorporación multimodal de Vertex AI:
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `PROJECT_ID.DATASET_ID.MODEL_NAME`, {TABLE PROJECT_ID.DATASET_ID.TABLE_NAME | (CONTENT_QUERY)}, STRUCT(FLATTEN_JSON AS flatten_json_output, OUTPUT_DIMENSIONALITY AS output_dimensionality) );
Reemplaza lo siguiente:
PROJECT_ID
: el ID de tu proyectoDATASET_ID
: El ID del conjunto de datos que contiene el modelo.MODEL_NAME
: el nombre del modelo remoto sobre un modelomultimodalembedding@001
.TABLE_NAME
: el nombre de la tabla que contiene el texto que se incorporará. Esta tabla debe tener una columna llamadacontent
, o puedes usar un alias para usar una columna con nombre diferente.CONTENT_QUERY
: Una consulta cuyo resultado contiene una columnaSTRING
llamadacontent
.FLATTEN_JSON
: UnBOOL
que indica si se debe analizar la incorporación en una columna separada. El valor predeterminado esTRUE
.OUTPUT_DIMENSIONALITY
: Un valorINT64
que especifica la cantidad de dimensiones que se usarán cuando se generen embeddings. Los valores válidos son128
,256
,512
y1408
. El valor predeterminado es1408
. Por ejemplo, si especificas256 AS output_dimensionality
, la columna de salidaml_generate_embedding_result
contiene 256 embeddings para cada valor de entrada.
Ejemplo: Usa embeddings para clasificar la similitud semántica
En el siguiente ejemplo, se incorpora una colección de reseñas de películas y se las ordena por distancia del coseno a la reseña "Esta película fue promedio" con la función VECTOR_SEARCH
.
Una distancia más pequeña indica una mayor similitud semántica.
Para obtener más información sobre la búsqueda de vectores y el índice de vectores, consulta Introducción a la búsqueda de vectores.
CREATE TEMPORARY TABLE movie_review_embeddings AS ( SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `bqml_tutorial.embedding_model`, ( SELECT "This movie was fantastic" AS content UNION ALL SELECT "This was the best movie I've ever seen!!" AS content UNION ALL SELECT "This movie was just okay..." AS content UNION ALL SELECT "This movie was terrible." AS content ), STRUCT(TRUE AS flatten_json_output) ) ); WITH average_review_embedding AS ( SELECT ml_generate_embedding_result FROM ML.GENERATE_EMBEDDING( MODEL `bqml_tutorial.embedding_model`, (SELECT "This movie was average" AS content), STRUCT(TRUE AS flatten_json_output) ) ) SELECT base.content AS content, distance AS distance_to_average_review FROM VECTOR_SEARCH( TABLE movie_review_embeddings, "ml_generate_embedding_result", (SELECT ml_generate_embedding_result FROM average_review_embedding), distance_type=>"COSINE", top_k=>-1 ) ORDER BY distance_to_average_review;
El resultado es el siguiente:
+------------------------------------------+----------------------------+ | content | distance_to_average_review | +------------------------------------------+----------------------------+ | This movie was just okay... | 0.062789813467745592 | | This movie was fantastic | 0.18579561313064263 | | This movie was terrible. | 0.35707466240930985 | | This was the best movie I've ever seen!! | 0.41844932504542975 | +------------------------------------------+----------------------------+
¿Qué sigue?
- Aprende a usar incorporaciones de texto y de imágenes para realizar una búsqueda semántica de texto a imagen.
- Aprende a usar embeddings de texto para la búsqueda semántica y la generación mejorada por recuperación (RAG).