Introducción a las inserciones y la búsqueda vectorial
En este documento se ofrece una descripción general de las inserciones y la búsqueda vectorial en BigQuery. La búsqueda de vectores es una técnica para comparar objetos similares mediante embeddings. Se usa en 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 inserciones. 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.
Casos prácticos
La combinación de la generación de incrustaciones 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 BigQuery DataFrames.
- Recomendar productos sustitutivos o similares: mejora las aplicaciones de comercio electrónico sugiriendo alternativas de productos en función del comportamiento de los clientes y de la similitud de los productos.
- Analíticas de registros: ayuda a los equipos a clasificar 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, consulta Detección e investigación de anomalías en registros con incrustaciones de texto y búsqueda de vectores 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.
Generar inserciones
En las siguientes secciones se describen las funciones que ofrece BigQuery para ayudarte a generar o trabajar con embeddings.
Generar embeddings individuales
Puedes usar la función AI.EMBED con los modelos de inserción de Vertex AI para generar una única inserción de tu entrada.
La función AI.EMBED admite los siguientes tipos de entrada:
- Datos de texto.
- Datos de imagen representados por valores
ObjectRef. Vista previa - Datos de imagen representados por valores
ObjectRefRuntime.
Generar una tabla de embeddings
Puede usar
AI.GENERATE_EMBEDDING
para crear una tabla que tenga las inserciones de todos los datos de una columna de su tabla de entrada. En todos los tipos de modelos admitidos, AI.GENERATE_EMBEDDING
funciona con datos estructurados en
tablas estándar. En el caso de los modelos de inserciones multimodales, AI.GENERATE_EMBEDDING también funciona con contenido visual de columnas de tabla estándar que contengan valores ObjectRef o de tablas de objetos.
En el caso de los modelos remotos, toda la inferencia se produce en Vertex AI. En el caso de otros tipos de modelos, todas las inferencias se producen en BigQuery. Los resultados se almacenan en BigQuery.
Consulta los siguientes temas para probar la generación de inserciones en BigQuery ML:
- Genera texto,
imágenes o
vídeos con la función
AI.GENERATE_EMBEDDING. - Generar y buscar elementos insertados multimodales
- Realizar búsquedas semánticas y generación aumentada por recuperación
Generación autónoma de inserciones
Puedes usar la generación autónoma de incrustaciones para simplificar el proceso de creación, mantenimiento y consulta de incrustaciones. BigQuery mantiene una columna de inserciones en tu tabla basada en una columna de origen. Cuando añades o modificas datos en la columna de origen, BigQuery genera o actualiza automáticamente la columna de inserción de esos datos mediante un modelo de inserción de Vertex AI. Esto es útil si quieres que BigQuery mantenga tus inserciones cuando tus datos de origen se actualicen periódicamente.
Buscar
Están disponibles las siguientes funciones de búsqueda:
VECTOR_SEARCH: Realiza una búsqueda vectorial mediante SQL.AI.SEARCH(Vista previa): busca resultados que se parezcan a una cadena que proporciones. Puedes usar esta función si tu tabla tiene habilitada la generación de inserciones autónoma.AI.SIMILARITY(Vista previa): compara dos entradas calculando la similitud de coseno entre sus representaciones. Esta función es útil si quieres hacer un número reducido de comparaciones y no has precalculado ninguna inserción. Deberías usarVECTOR_SEARCHcuando el rendimiento sea fundamental y trabajes con un gran número de inserciones. Compara sus funciones para elegir la que mejor se adapte a tu caso práctico.
También puedes crear un índice vectorial con la instrucción CREATE VECTOR INDEX.
Cuando se usa un índice de vectores, las funciones VECTOR_SEARCH y AI.SEARCH utilizan la técnica de búsqueda Vecino más cercano aproximado para mejorar el rendimiento de la búsqueda vectorial, lo que conlleva una reducción de la recuperación y, por lo tanto, se devuelven resultados más aproximados. Sin un índice vectorial, estas funciones usan la búsqueda de 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.
Precios
Las funciones VECTOR_SEARCH y AI.SEARCH, así como la instrucción CREATE VECTOR INDEX, usan los precios de computación de BigQuery.
Funciones
VECTOR_SEARCHyAI.SEARCH: se te cobra por la búsqueda de similitud, con 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á.
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 e í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 los límites de los índices vectoriales y los límites de las funciones de IA generativa.
Limitaciones
Las consultas que contienen la función VECTOR_SEARCH o AI.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 de vectores con la
VECTOR_SEARCHfunción. - Consulta cómo realizar búsquedas semánticas con la función
AI.SEARCH. - Más información sobre la generación autónoma de inserciones
- 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 inserciones para buscar texto similar.
- Realiza una generación aumentada por recuperación (RAG) usando resultados de búsqueda vectorial 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.
También puede realizar búsquedas de vectores mediante BigQuery DataFrames en Python. Para ver un cuaderno que ilustra este enfoque, consulta Crear una aplicación de búsqueda vectorial con BigQuery DataFrames.