Introducción a los embeddings y la búsqueda de vectores
En este documento, se proporciona una descripción general de los embeddings y la búsqueda de vectores en BigQuery. La búsqueda de vectores es una técnica para comparar objetos similares con embeddings y se usa para potenciar los productos de Google, como la Búsqueda de Google, YouTube y Google Play. Puedes usar la búsqueda de vectores para realizar búsquedas a gran escala. Cuando usas índices de vectores con la búsqueda de vectores, puedes aprovechar tecnologías fundamentales, como la indexación de archivos invertidos (IVF) y el algoritmo ScaNN.
La búsqueda de vectores se basa en embeddings. Los embeddings son vectores numéricos de alta dimensión que representan una entidad determinada, como un fragmento de texto o un archivo de audio. Los modelos de aprendizaje automático (AA) usan embeddings para codificar la semántica de esas entidades y facilitar el razonamiento y la comparación. Por ejemplo, una operación común en los modelos de agrupamiento en clústeres, clasificación y recomendación es medir la distancia entre vectores en un espacio de incorporación para encontrar elementos que sean más semánticamente similares.
Este concepto de similitud y distancia semántica en un espacio de incorporación se demuestra visualmente cuando consideras cómo se podrían representar diferentes elementos. Por ejemplo, los términos como gato, perro y león, que representan tipos de animales, se agrupan cerca en este espacio debido a sus características semánticas compartidas. Del mismo modo, los términos como automóvil, camión y el término más genérico vehículo formarían otro clúster. Esto se muestra en la siguiente imagen:
Puedes ver que los clústeres de animales y vehículos están muy separados entre sí. La separación entre los grupos ilustra el principio de que cuanto más cerca estén los objetos en el espacio de incorporación, más similares serán semánticamente, y las distancias mayores indican una mayor disimilitud semántica.
Casos de uso
La combinación de la generación de embeddings y la búsqueda de vectores habilita muchos casos de uso interesantes. Estos son algunos casos de uso posibles:
- Generación aumentada por recuperación (RAG): Analiza documentos, realiza búsquedas de vectores en el contenido y genera respuestas resumidas a preguntas en lenguaje natural con los modelos de Gemini, todo dentro de BigQuery. Para ver un notebook que ilustra esta situación, consulta Cómo compilar una aplicación de Vector Search con BigQuery DataFrames.
- Recomendar productos sustitutos o productos coincidentes: Mejora las aplicaciones de comercio electrónico sugiriendo alternativas de productos según el comportamiento del cliente y la similitud de los productos.
- Análisis de registros: Ayuda a los equipos a priorizar de forma proactiva las anomalías en los registros y acelerar las investigaciones. También puedes usar esta capacidad para enriquecer el contexto de los LLM y, así, mejorar los flujos de trabajo de detección de amenazas, análisis forense y solución de problemas. Para ver un notebook que ilustra esta situación, consulta Detección e investigación de anomalías en registros con embeddings de texto y la búsqueda de vectores de BigQuery.
- Agrupación y segmentación: Segmenta públicos con precisión. Por ejemplo, una cadena de hospitales podría agrupar a los pacientes usando notas en lenguaje natural y datos estructurados, o un especialista en marketing podría segmentar los anuncios según la intención de la búsqueda. Para ver un notebook que ilustra esta situación, consulta Create-Campaign-Customer-Segmentation.
- Resolución de entidades y anulación de duplicados: Limpia y consolida los datos. Por ejemplo, una empresa de publicidad podría eliminar los registros duplicados de información de identificación personal (PII), o una empresa de bienes raíces podría identificar las direcciones postales coincidentes.
Genera embeddings
En las siguientes secciones, se describen las funciones que ofrece BigQuery para ayudarte a generar o trabajar con incorporaciones.
Genera embeddings únicos
Puedes usar la función AI.EMBED con los modelos de incorporación de Vertex AI para generar un solo embedding de tu entrada.
La función AI.EMBED admite los siguientes tipos de entrada:
- Datos de texto.
- Son los datos de la imagen representados por valores de
ObjectRef. (Vista previa) - Son los datos de la imagen representados por valores de
ObjectRefRuntime.
Genera una tabla de embeddings
Puedes usar AI.GENERATE_EMBEDDING para crear una tabla que tenga embeddings para todos los datos de una columna de tu tabla de entrada. Para todos los tipos de modelos compatibles, AI.GENERATE_EMBEDDING funciona con datos estructurados en tablas estándar. En el caso de los modelos de incorporación multimodales, AI.GENERATE_EMBEDDING también funciona con el contenido visual de las columnas de tablas estándar que contienen valores ObjectRef o de las tablas de objetos.
En los modelos remotos, toda la inferencia se produce en Vertex AI. Para otros tipos de modelos, toda la inferencia se produce en BigQuery. Los resultados se almacenan en BigQuery.
Usa los siguientes temas para probar la generación de embeddings en BigQuery ML:
- Genera texto, imágenes o videos con la función
AI.GENERATE_EMBEDDING. - Genera y busca incorporaciones multimodales
- Realiza una búsqueda semántica y una generación de recuperación aumentada
Generación autónoma de embeddings
Puedes usar la generación autónoma de embeddings para simplificar el proceso de creación, mantenimiento y consulta de embeddings. BigQuery mantiene una columna de embeddings en tu tabla basada en una columna de origen. Cuando agregas o modificas datos en la columna de origen, BigQuery genera o actualiza automáticamente la columna de incorporación para esos datos con un modelo de incorporación de Vertex AI. Esto es útil si deseas que BigQuery mantenga tus incorporaciones cuando tus datos fuente se actualicen con regularidad.
Buscar
Están disponibles las siguientes funciones de búsqueda:
VECTOR_SEARCH: Realiza una búsqueda de vectores con SQL.AI.SEARCH(Vista previa): Busca resultados que se acerquen a una cadena que proporciones. Puedes usar esta función si tu tabla tiene habilitada la generación de incorporaciones autónomas.AI.SIMILARITY(Vista previa): Compara dos entradas calculando la similitud del coseno entre sus embeddings. Esta función es útil si deseas realizar una pequeña cantidad de comparaciones y no precalculaste ninguna incorporación. Debes usarVECTOR_SEARCHcuando el rendimiento es fundamental y trabajas con una gran cantidad de incorporaciones. Compara sus funcionalidades para elegir la mejor función para tu caso de uso.
De forma opcional, puedes crear un índice vectorial con la declaración CREATE VECTOR INDEX.
Cuando se usa un índice vectorial, las funciones VECTOR_SEARCH y AI.SEARCH usan la técnica de búsqueda del vecino más cercano aproximado para mejorar el rendimiento de la búsqueda vectorial, con la compensación de reducir la recuperación y, por lo tanto, mostrar resultados más aproximados. Sin un índice de vectores, estas funciones usan la búsqueda por fuerza bruta para medir la distancia de cada registro. También puedes optar por usar la fuerza bruta para obtener resultados exactos, incluso cuando un índice vectorial está disponible.
Precios
Las funciones VECTOR_SEARCH y AI.SEARCH, y la sentencia CREATE VECTOR INDEX usan los precios de procesamiento de BigQuery.
Funciones
VECTOR_SEARCHyAI.SEARCH: Se te cobra por la búsqueda de similitud, con precios según demanda o por ediciones.- Según demanda: Se te cobra por la cantidad de bytes analizados en la tabla base, el índice y la búsqueda.
Precios de las ediciones: Se te cobra por las ranuras necesarias para completar el trabajo en la edición de tu reserva. Los cálculos de similitud más grandes y complejos generan más cargos.
Declaración de
CREATE VECTOR INDEX: No se aplican cargos por el procesamiento necesario para compilar y actualizar tus índices vectoriales siempre que el tamaño total de los datos de tablas indexadas esté por debajo del límite por organización. Para admitir la indexación más allá de este límite, debes proporcionar tu propia reserva para controlar los trabajos de administración de índices.
El almacenamiento también es un factor a tener en cuenta para las incorporaciones y los índices. La cantidad de bytes almacenados como incorporaciones e índices está sujeta a costos de almacenamiento activo.
- Los índices vectoriales generan costos de almacenamiento cuando están activos.
- Puedes encontrar el tamaño del almacenamiento de índices en la vista
INFORMATION_SCHEMA.VECTOR_INDEXES. Si el índice vectorial aún no tiene una cobertura del 100%, se te cobra por todo lo que se haya indexado. Puedes verificar la cobertura del índice con la vistaINFORMATION_SCHEMA.VECTOR_INDEXES.
Cuotas y límites
Para obtener más información, consulta Límites de los índices vectoriales y Límites de las funciones de IA generativa.
Limitaciones
BigQuery BI Engine no acelera las consultas que contienen la función VECTOR_SEARCH o AI.SEARCH.
¿Qué sigue?
- Obtén más información sobre cómo crear un índice vectorial.
- Aprende a realizar una búsqueda vectorial con la función
VECTOR_SEARCH. - Aprende a realizar búsquedas semánticas con la función
AI.SEARCH. - Obtén más información sobre la generación autónoma de incorporaciones.
- Prueba el instructivo Busca incorporaciones con búsqueda vectorial para aprender a crear un índice vectorial y, luego, realiza una búsqueda vectorial para incorporaciones con y sin el índice.
Prueba el instructivo Realiza búsquedas semánticas y generación de recuperación aumentada para aprender a hacer las siguientes tareas:
- Generar incorporaciones de texto.
- Crear un índice vectorial en las incorporaciones.
- Realizar una búsqueda vectorial con las incorporaciones para buscar texto similar.
- Realizar la generación de aumento de recuperación (RAG) con los resultados de la búsqueda vectorial para aumentar la entrada de instrucciones y mejorar los resultados.
Prueba el instructivo Analiza archivos PDF en una canalización de generación mejorada por recuperación para aprender a crear una canalización de RAG basada en contenido de PDF analizado.
También puedes realizar búsquedas de vectores con BigQuery DataFrames en Python. Para ver un notebook que ilustra este enfoque, consulta Cómo compilar una aplicación de Vector Search con BigQuery DataFrames.