Descripción general
Búsqueda de vectores de BigQuery La búsqueda de vectores te permite encontrar los elementos más similares en tu conjunto de datos comparando las representaciones matemáticas de sus atributos, conocidas como embeddings, en lugar de depender de coincidencias exactas de palabras clave.
¿Alguna vez te impresionó cómo un sitio web puede recomendar productos que son increíblemente similares a lo que estás buscando, incluso si no puedes describirlo con palabras exactas? Esta función suele estar impulsada por la búsqueda de vectores, una técnica que va más allá de la simple concordancia de palabras clave. En vez de solo buscar texto, la búsqueda de vectores analiza las características subyacentes de un elemento, lo que le permite encontrar similitudes conceptuales o visuales. En este lab, obtendrás experiencia práctica usando las capacidades de búsqueda de vectores avanzadas y escalables que están integradas directamente en BigQuery.
Para un comercio minorista global como Cymbal E-commerce, esta tecnología cambia por completo la experiencia del cliente. Imagina que un cliente busca una "chaqueta ligera para senderismo". Una búsqueda tradicional de palabras clave podría no encontrar el producto perfecto si en la descripción se usa el término "rompevientos" en lugar de "chaqueta". Con la búsqueda de vectores, Cymbal puede analizar embeddings (representaciones numéricas de imágenes y descripciones de productos) para devolver una lista de todas las prendas de abrigo relevantes, independientemente de la terminología exacta. Esto ayuda a los clientes a descubrir los productos que quieren más rápido, lo que aumenta su satisfacción y las ventas. ¡Comencemos a crearlo para Cymbal!
En este lab, aprenderás a usar BigQuery para realizar búsquedas de vectores.
** Nota: En este lab, usarás una base de datos pública de patentes en lugar de las fichas de productos y descripciones detalladas de Cymbal por motivos de privacidad. El proceso es el mismo: solo debes cambiar los nombres del conjunto de datos, la tabla y la columna para que coincidan con tus datos de origen.
Actividades
- Usar un modelo de AA para generar embeddings
- Crear un índice vectorial
- Usar la función
VECTOR_SEARCH en los embeddings que creaste
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que usarás para acceder a Google Cloud durante todo el lab.
Requisitos
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
- Tiempo para completar el lab
Nota: Si tienes un proyecto o una Cuenta de Google Cloud personal, no los uses en este lab.
Nota: Si utilizas una Pixelbook, abre una ventana de incógnito para ejecutar este lab.
Accede a la consola de Google Cloud
- En la pestaña o ventana del navegador que estás usando para esta sesión del lab, copia el Nombre de usuario del panel Detalles de la conexión y haz clic en el botón Abrir la consola de Google.
Nota: Si se te solicita que elijas una cuenta, haz clic en Usar otra cuenta.
- Cuando se te solicite, pega el nombre de usuario y, luego, la contraseña.
- Haz clic en Siguiente.
- Acepta los Términos y Condiciones.
Dado que esta es una cuenta temporal que tendrá la misma duración del lab, sigue estas recomendaciones:
- No agregues opciones de recuperación.
- No te registres para las pruebas gratuitas.
- Cuando se abra la consola, podrás ver la lista de servicios haciendo clic en el Menú de navegación (
) en la esquina superior izquierda.

Verifica o habilita las APIs necesarias
-
En la consola de Google Cloud, ingresa API de BigQuery en la barra de búsqueda superior.
-
Haz clic en el resultado de API de BigQuery en Marketplace.
-
Si la API no está habilitada todavía, haz clic en Habilitar.
-
Repite los pasos del 1 al 3 para la API de BigQuery Connection y, luego, para la API de Vertex AI.
Tarea 1: Crea un modelo remoto para la generación de embeddings de texto
En esta tarea, crearás un modelo de generación de embeddings de texto de Vertex AI que se requiere para una búsqueda de vectores y para crear los embeddings de la base de datos.
Crea un modelo de IA
-
En el menú de navegación (
) de la consola de Google Cloud, navega a BigQuery > Studio.
-
Selecciona la pestaña Consulta sin título.
-
Ingresa el siguiente código:
CREATE OR REPLACE MODEL `bqml_lab.embedding_model`
REMOTE WITH CONNECTION DEFAULT
OPTIONS (ENDPOINT = 'text-embedding-005');
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un modelo de AA
-
Haz clic en Ejecutar. La consulta tardará unos minutos en ejecutarse. Si recibes un error relacionado con una cuenta de servicio faltante, vuelve a ejecutar la misma consulta.
-
Reemplaza la consulta por el siguiente código:
CREATE OR REPLACE TABLE `bqml_lab.embeddings` AS
SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `bqml_lab.embedding_model`,
( SELECT
title,
url,
abstract AS content
FROM
`bqml_lab.patent_data`
LIMIT 200000))
WHERE LENGTH(ml_generate_embedding_status) = 0;
-
Haz clic en Ejecutar. La consulta tardará unos 5 minutos en ejecutarse.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una tabla llamada "embeddings" usando un modelo de BigQuery ML
-
Reemplaza la consulta por el siguiente código:
CREATE OR REPLACE VECTOR INDEX my_index
ON `bqml_lab.embeddings`(ml_generate_embedding_result)
OPTIONS(index_type = 'IVF',
distance_type = 'COSINE',
ivf_options = '{"num_lists":500}');
-
Haz clic en Ejecutar. La consulta tardará unos minutos en ejecutarse.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un índice vectorial en la tabla "embeddings"
-
Ingresa el siguiente código para verificar el estado del índice:
SELECT table_name,
index_name,
index_status,
coverage_percentage,
last_refresh_time,
disable_reason
FROM `{{{project_0.project_id | "Project ID"}}}.bqml_lab.INFORMATION_SCHEMA.VECTOR_INDEXES`;
-
Haz clic en Ejecutar. El índice está listo para usarse cuando el valor de la columna coverage_percentage es mayor que 0 y el valor de la columna last_refresh_time no es NULL. Si el índice no está listo la primera vez que ejecutas la consulta anterior, vuelve a ejecutarla de vez en cuando para verificar el estado del índice. Continúa con el lab cuando veas resultados que confirmen que el índice está listo para usarse.
Realiza una búsqueda de similitud de texto con el índice vectorial
Usarás la función VECTOR_SEARCH para buscar entradas relevantes para tu término de búsqueda, que en este ejemplo es la frase "improving online shopper search results". El modelo que uses para generar los embeddings cuando realizas búsquedas debe ser el mismo que utilizas para generar los embeddings en la tabla con la que comparas; de lo contrario, los resultados de la búsqueda no serán precisos.
-
En la pestaña de consulta de BigQuery, reemplaza el código por lo siguiente:
SELECT query.query, base.title, base.content
FROM VECTOR_SEARCH(
TABLE `bqml_lab.embeddings`, 'ml_generate_embedding_result',
(
SELECT ml_generate_embedding_result, content AS query
FROM ML.GENERATE_EMBEDDING(
MODEL `bqml_lab.embedding_model`,
(SELECT 'improving online shopper search results' AS content))
),
top_k => 5, options => '{"fraction_lists_to_search": 0.01}');
-
Haz clic en Ejecutar.
-
Opcional: Si quieres probar otras búsquedas, reemplaza 'improving online shopper search results' en el código por una búsqueda diferente.
Haz clic en Revisar mi progreso para verificar el objetivo.
Realizar una búsqueda de similitud de texto con el índice vectorial
¡Felicitaciones!
Creaste un modelo de IA, embeddings para tus datos, un índice vectorial y realizaste una consulta con el índice para encontrar los elementos más relacionados con tu término de búsqueda.