Vector de búsqueda de Mosaic AI
En este artículo se proporciona información general sobre la solución de base de datos vectorial de Databricks y Vector de búsqueda de Mosaic AI, incluyendo qué es y cómo funciona.
¿Qué es Vector de búsqueda de Mosaic AI?
Vector de búsqueda de Mosaic AI es una base de datos vectorial integrada en Databricks Data Intelligence Platform e integrada con sus herramientas de gobernanza y productividad. Una base de datos vectorial es una base de datos optimizada para almacenar y recuperar incrustaciones. Las incrustaciones son representaciones matemáticas del contenido semántico de los datos, normalmente datos de texto o imagen. Las incrustaciones se generan mediante un modelo de lenguaje grande y son un componente clave de muchas aplicaciones GenAI que dependen de buscar documentos o imágenes similares entre sí. Algunos ejemplos son los sistemas RAG, los sistemas recomendados y el reconocimiento de imágenes y vídeos.
Con el vector de búsqueda de Mosaic AI, se crea un índice de vector de búsqueda a partir de una tabla Delta. El índice incluye datos incrustados con metadatos. A continuación, puede consultar el índice mediante una API de REST para identificar los vectores más similares y devolver los documentos asociados. Puede estructurar el índice para que se sincronice automáticamente cuando se actualice la tabla Delta subyacente.
Mosaic AI Vector Search admite lo siguiente:
- Búsqueda de similitud de palabras clave híbrida.
- Filtrado.
- Listas de control de acceso (ACL) para administrar puntos de conexión de búsqueda vectorial.
- Sincronice solo las columnas seleccionadas.
- Guarde y sincronice las incrustaciones generadas.
¿Cómo funciona Mosaic AI Vector Search?
Vector de búsqueda de Mosaic AI usa el algoritmo Mundos pequeños navegables jerárquicos (HNSW) para las búsquedas de vecino más próximo y la métrica de distancia L2 para medir la similitud de vectores de inserción. Si quiere usar la similitud de coseno, debe normalizar las inserciones de puntos de datos antes de agregarlas al vector de búsqueda. Cuando se normalizan los puntos de datos, la clasificación producida por la distancia L2 es la misma que la clasificación produce la similitud de coseno.
Vector de búsqueda de Mosaic AI también admite la búsqueda de similitud de palabras clave híbrida, que combina la búsqueda de inserción basada en vectores con técnicas tradicionales de búsqueda basadas en palabras clave. Este enfoque hace coincidir palabras exactas de consulta mientras que usa una búsqueda de similitud basada en vectores para capturar las relaciones semánticas y el contexto de la consulta.
Al integrar estas dos técnicas, la búsqueda de similitud de palabras clave híbrida recuperará documentos que contengan no solo las palabras clave exactas, sino también las que sean conceptualmente similares, proporcionando resultados de búsqueda más completos y relevantes. Este método resulta especialmente útil en aplicaciones RAG en las que los datos de origen tengan palabras clave únicas, como SKU o identificadores que no sean adecuados para la búsqueda de similitud pura.
Para más información sobre la API, vea la referencia del SDK de Python y Consulta de un punto de conexión de vector de búsqueda.
Cálculo de búsqueda de similitud
El cálculo de la búsqueda de similitud usa la siguiente fórmula:
donde dist
es la distancia euclidiana entre la consulta q
y la entrada del índice x
:
Algoritmo de búsqueda de palabras clave
Las puntuaciones de relevancia se calculan mediante Okapi BM25. Se buscan todas las columnas de texto o cadena, incluyendo la inserción de texto de origen y las columnas de metadatos en formato de texto o cadena. La función de tokenización divide en límites de palabras, quita la puntuación y convierte todo el texto en minúsculas.
Cómo se combinan la búsqueda de similitud y la búsqueda de palabras clave
Los resultados de búsqueda de similitud y búsqueda de palabras clave se combinan mediante la función Fusión de clasificación recíproca (RRF).
RRF vuelve a puntuar cada documento de cada método mediante la puntuación:
En la ecuación anterior, la clasificación comienza en 0, suma las puntuaciones de cada documento y devuelve los documentos de puntuación más altos.
rrf_param
controla la importancia relativa de los documentos de clasificación superior e inferior. Según la literatura, rrf_param
se establece en 60.
Las puntuaciones se normalizan para que la puntuación más alta sea 1 y la puntuación más baja sea 0 mediante la siguiente ecuación:
Opciones para proporcionar incrustaciones de vectores
Para crear una base de datos vectorial en Databricks, primero debe decidir cómo proporcionar incrustaciones de vectores. Databricks admite tres opciones:
Opción 1: índice de sincronización Delta con incrustaciones calculadas por Databricks Proporcione una tabla Delta de origen que contenga datos en formato de texto. Databricks calcula las inserciones, con un modelo que usted especifique y, opcionalmente, guarda las inserciones en una tabla de Unity Catalog. A medida que se actualiza la tabla Delta, el índice permanece sincronizado con la tabla Delta.
En el siguiente diagrama se ilustra este proceso:
- Calcule las inserciones de consultas. La consulta puede incluir filtros de metadatos.
- Realice una búsqueda de similitud para identificar los documentos más relevantes.
- Devuelva los documentos más relevantes y anéxelos a la consulta.
Opción 2: índice de sincronización delta con inserciones administradas automáticamente Proporcione una tabla Delta de origen que contenga inserciones calculadas previamente. A medida que se actualiza la tabla Delta, el índice permanece sincronizado con la tabla Delta.
En el siguiente diagrama se ilustra este proceso:
- La consulta consta de inserciones y puede incluir filtros de metadatos.
- Realice una búsqueda de similitud para identificar los documentos más relevantes. Devuelva los documentos más relevantes y anéxelos a la consulta.
Opción 3: índice de acceso directo a vectores Debe actualizar manualmente el índice mediante la API de REST cuando cambie la tabla de inserción.
En el siguiente diagrama se ilustra este proceso:
Procedimiento para configurar Vector de búsqueda de Mosaic AI
Para usar Vector de búsqueda de Mosaic AI, es necesario crear lo siguiente:
- Un punto de conexión de vector de búsqueda. Este punto de conexión sirve el índice de vector de búsqueda. Puede consultar y actualizar el punto de conexión mediante la API de REST o el SDK. Los puntos de conexión se escalan automáticamente para admitir el tamaño del índice o el número de solicitudes simultáneas. Vea Creación de un punto de conexión de vector de búsqueda para obtener instrucciones.
- Índice de vector de búsqueda. El índice de vector de búsqueda se crea a partir de una tabla Delta y está optimizado para proporcionar búsquedas cercanas aproximadas en tiempo real. El objetivo de la búsqueda es identificar documentos similares a la consulta. Los índices de vector de búsqueda aparecen en y se rigen por el catálogo de Unity. Vea Creación de un índice de vector búsqueda para obtener instrucciones.
Además, si decide hacer que Databricks calcule las inserciones, puede usar un punto de conexión de Foundation Model API preconfigurado, o bien crear un punto de conexión de servicio del modelo para atender el modelo de inserción que prefiera. Consulte API de Foundation Model de pago por token o Creación de puntos de conexión de servicio del modelo de IA generativa para obtener instrucciones.
Para consultar el punto de conexión de servicio del modelo, use la API de REST o el SDK de Python. La consulta puede definir filtros en función de cualquier columna de la tabla Delta. Para obtener más información, vea Uso de filtros en consultas, la referencia de API o la referencia del SDK de Python.
Requisitos
- Área de trabajo habilitada para Unity Catalog.
- Proceso sin servidor habilitado. Para obtener instrucciones, consulte Conectarse a equipos sin servidor.
- La tabla de origen debe tener habilitada la fuente de distribución de datos modificados. Para obtener instrucciones, consulte Uso de la fuente de distribución de datos de cambios de Delta Lake en Azure Databricks.
- Privilegios CREATE TABLE en esquemas de catálogo para crear índices.
- Tokens de acceso personal habilitados.
El permiso para crear y administrar puntos de conexión de búsqueda vectorial se configura mediante listas de control de acceso. Consulte ACL del punto de conexión de búsqueda vectorial.
Protección y autenticación de datos
Databricks implementa los siguientes controles de seguridad para proteger los datos:
- Cada solicitud de cliente a Vector de búsqueda de Mosaic AI se aísla, autentica y autoriza de manera lógica.
- Vector de búsqueda de Mosaic AI cifra todos los datos en reposo (AES-256) y en tránsito (TLS 1.2+).
Vector de búsqueda de Mosaic AI admite dos modos de autenticación:
- Token de acceso personal: puede usar un token de acceso personal para autenticarse con Vector de búsqueda de Mosaic AI. Consulte token de autenticación de acceso personal. Si usa el SDK en un entorno de cuaderno, genera automáticamente un token PAT para la autenticación.
- Token de entidad de servicio: un administrador puede generar un token de entidad de servicio y pasarlo al SDK o a la API. Consulte usar entidades de servicio. Para casos de uso de producción, Databricks recomienda usar un token de entidad de servicio.
Las claves administradas por el cliente (CMK) se admiten en los puntos de conexión creados el 8 de mayo de 2024 o después.
Supervisión de uso y costos
La tabla del sistema de uso de facturación le permite supervisar el uso y los costos asociados a los índices y puntos de conexión del vector de búsqueda. Aquí se muestra una consulta de ejemplo:
WITH all_vector_search_usage (
SELECT *,
CASE WHEN usage_metadata.endpoint_name IS NULL
THEN 'ingest'
ELSE 'serving'
END as workload_type
FROM system.billing.usage
WHERE billing_origin_product = 'VECTOR_SEARCH'
),
daily_dbus AS (
SELECT workspace_id,
cloud,
usage_date,
workload_type,
usage_metadata.endpoint_name as vector_search_endpoint,
SUM(usage_quantity) as dbus
FROM all_vector_search_usage
GROUP BY all
ORDER BY 1,2,3,4,5 DESC
)
SELECT * FROM daily_dbus
Para obtener más información sobre el contenido de la tabla de uso de facturación, consulte Referencia de la tabla del sistema de uso de facturación. Las consultas adicionales se encuentran en el siguiente cuaderno de ejemplo.
Cuaderno de consultas de tablas del sistema del vector de búsqueda
Límites de tamaño de recursos y datos
En la tabla siguiente se resumen los límites de tamaño de recursos y datos para los puntos de conexión y los índices del vector de búsqueda:
Resource | Granularidad | Límite |
---|---|---|
Puntos de conexión de vector búsqueda | Por área de trabajo | 100 |
Inserciones | Por punto de conexión | 320,000,000 |
Inserción de dimensión | Por índice | 4096 |
Índices | Por punto de conexión | 50 |
Columnas | Por índice | 50 |
Columnas | Tipos admitidos: Bytes, short, integer, long, float, double, boolean, string, timestamp, date | |
Campos de metadatos | Por índice | 20 |
Nombre del índice | Por índice | 128 caracteres |
Los límites siguientes se aplican a la creación y actualización de índices del vector de búsqueda:
Resource | Granularidad | Límite |
---|---|---|
Tamaño de fila para el índice de sincronización delta | Por índice | 100 KB |
Inserción del tamaño de columna de origen para el índice delta Sync | Por índice | 32764 bytes |
Límite de tamaño de solicitud upsert masivo para el índice de vector directo | Por índice | 10 MB |
Límite de tamaño de solicitud de eliminación masiva para el índice de vectores directos | Por índice | 10 MB |
Los límites siguientes se aplican a la API de consulta.
Resource | Granularidad | Límite |
---|---|---|
Longitud del texto de consulta | Por consulta | 32764 |
Número máximo de resultados devueltos | Por consulta | 10,000 |
Limitaciones
- No se admiten los permisos de nivel de fila y columna. Sin embargo, puede implementar sus propias ACL de nivel de aplicación mediante la API de filtro.