Introducción a la búsqueda vectorial
En este documento se ofrece una descripción general de la búsqueda de vectores en BigQuery. La búsqueda de vectores es una técnica para comparar objetos similares mediante embeddings. 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 hacer búsquedas a gran escala. Cuando usas índices vectoriales con la búsqueda vectorial, 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 las incrustaciones. Las incrustaciones 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 usan las inserciones para codificar la semántica de estas entidades, lo que facilita el razonamiento y la comparación entre ellas. Por ejemplo, una operación habitual en los modelos de agrupamiento en clústeres, clasificación y recomendación es medir la distancia entre vectores en un espacio de inserción para encontrar los elementos que sean más similares semánticamente.
Este concepto de similitud semántica y distancia en un espacio de inserción se demuestra visualmente cuando se considera cómo se pueden representar diferentes elementos. Por ejemplo, los términos gato, perro y león, que representan tipos de animales, se agrupan en este espacio debido a sus características semánticas compartidas. Del mismo modo, los términos coche, 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 inserción, más similares serán semánticamente, y cuanto mayor sea la distancia, mayor será la diferencia semántica.
BigQuery ofrece una experiencia integral para generar incrustaciones, indexar contenido y realizar búsquedas vectoriales. Puedes completar cada una de estas tareas de forma independiente o en un solo proceso. Para ver un tutorial sobre cómo completar todas estas tareas, consulta Realizar búsquedas semánticas y generación aumentada de recuperación.
Para realizar una búsqueda de vectores mediante SQL, usa la función VECTOR_SEARCH
.
También puedes crear un índice vectorial mediante la instrucción CREATE VECTOR INDEX
.
Cuando se usa un índice vectorial, VECTOR_SEARCH
utiliza la técnica de búsqueda del elemento aproximado más cercano para mejorar el rendimiento de la búsqueda vectorial, lo que conlleva una reducción de la retirada y, por lo tanto, se devuelven resultados más aproximados. Sin un índice vectorial, VECTOR_SEARCH
usa la búsqueda por fuerza bruta para medir la distancia de cada registro. También puedes usar la fuerza bruta para obtener resultados exactos aunque haya un índice vectorial disponible.
Este documento se centra en el enfoque de SQL, pero también puedes realizar búsquedas vectoriales con BigQuery DataFrames en Python. Para ver un cuaderno que ilustra el enfoque de Python, consulta Crear una aplicación de búsqueda vectorial con BigQuery DataFrames.
Casos prácticos
La combinación de la generación de inserciones y la búsqueda vectorial permite muchos casos prácticos interesantes. Estos son algunos casos prácticos posibles:
- Generación aumentada por recuperación (RAG): analiza documentos, realiza búsquedas vectoriales en el contenido y genera respuestas resumidas a preguntas en lenguaje natural con modelos de Gemini, todo en BigQuery. Para ver un cuaderno que ilustra este caso práctico, consulta Crear una aplicación de búsqueda vectorial con DataFrames de BigQuery.
- Recomendar productos sustitutivos o similares: mejora las aplicaciones de comercio electrónico sugiriendo alternativas de productos basadas en el comportamiento de los clientes y en la similitud de los productos.
- Analíticas de registros: ayuda a los equipos a priorizar de forma proactiva las anomalías en los registros y a acelerar las investigaciones. También puedes usar esta función para enriquecer el contexto de los LLMs y, de este modo, mejorar los flujos de trabajo de detección de amenazas, análisis forense y solución de problemas. Para ver un cuaderno que ilustra este caso práctico, consulta Detección e investigación de anomalías en registros con incrustaciones de texto y búsqueda vectorial de BigQuery.
- Agrupación y segmentación: segmenta las audiencias con precisión. Por ejemplo, una cadena de hospitales podría agrupar a los pacientes mediante notas en lenguaje natural y datos estructurados, o bien un anunciante podría orientar anuncios en función de la intención de búsqueda. Para ver un cuaderno que ilustra este caso, consulta Create-Campaign-Customer-Segmentation.
- Resolución de entidades y eliminación de duplicados: limpia y consolida los datos. Por ejemplo, una empresa publicitaria podría eliminar duplicados de registros de información personal identificable (IPI), o una inmobiliaria podría identificar direcciones postales coincidentes.
Precios
La función VECTOR_SEARCH
y la instrucción CREATE VECTOR INDEX
usan los precios de computación de BigQuery.
VECTOR_SEARCH
: se te cobra por la búsqueda de similitud, ya sea con los precios bajo demanda o por ediciones.- Bajo demanda: se te cobra por la cantidad de bytes analizados en la tabla base, el índice y la consulta de búsqueda.
Precios de las ediciones: se te cobrará por los espacios necesarios para completar el trabajo en la edición de reserva. Cuanto más grandes y complejas sean las comparaciones de similitud, más se te cobrará.
Declaración
CREATE VECTOR INDEX
: no se cobra por el procesamiento necesario para crear y actualizar los índices vectoriales siempre que el tamaño total de los datos de la tabla indexada no supere el límite por organización. Para admitir la indexación más allá de este límite, debes proporcionar tu propia reserva para gestionar los trabajos de gestión de índices.
El almacenamiento también es un factor importante para las inserciones y los índices. La cantidad de bytes almacenados como inserciones e índices está sujeta a los costes de almacenamiento activo.
- Los índices vectoriales generan costes de almacenamiento cuando están activos.
- Para consultar el tamaño del almacenamiento del índice, usa la vista
INFORMATION_SCHEMA.VECTOR_INDEXES
. Si el índice vectorial aún no tiene una cobertura del 100 %, se te cobrará por lo que se haya indexado. Puedes consultar la cobertura de indexación en la vistaINFORMATION_SCHEMA.VECTOR_INDEXES
.
Cuotas y límites
Para obtener más información, consulta Límites de índices vectoriales.
Limitaciones
Las consultas que contienen la función VECTOR_SEARCH
no se aceleran con BigQuery BI Engine.
Siguientes pasos
- Más información sobre cómo crear un índice vectorial
- Consulta cómo realizar una búsqueda vectorial con la
VECTOR_SEARCH
función. - Prueba el tutorial Buscar incrustaciones con búsqueda de vectores para aprender a crear un índice de vectores y, después, haz una búsqueda de vectores de incrustaciones con y sin el índice.
Prueba el tutorial Realizar una búsqueda semántica y una generación aumentada de recuperación para aprender a hacer lo siguiente:
- Generar incrustaciones de texto.
- Crea un índice vectorial en las incrustaciones.
- Realiza una búsqueda de vectores con las incrustaciones para buscar texto similar.
- Realiza una generación aumentada por recuperación (RAG) usando resultados de búsqueda de vectores para mejorar la entrada de la petición y los resultados.
Prueba el tutorial Analizar PDFs en un flujo de procesamiento de generación aumentada por recuperación para aprender a crear un flujo de procesamiento de RAG basado en contenido de PDFs analizado.