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.

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.

¿Cómo funciona Vector de búsqueda de Mosaic AI?

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.

La búsqueda híbrida está en Versión preliminar pública. 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:

recíproco de 1 más la distancia al cuadrado

donde dist es la distancia euclidiana entre la consulta q y la entrada del índice x:

Distancia euclidiana, raíz cuadrada de la suma de las diferencias al cuadrado

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:

Ecuación de RRF

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:

normalización de mayúsculas y minúsculas.

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 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:

    1. Calcule las inserciones de consultas. La consulta puede incluir filtros de metadatos.
    2. Realice una búsqueda de similitud para identificar los documentos más relevantes.
    3. Devuelva los documentos más relevantes y anéxelos a la consulta.

    base de datos vectorial, Databricks calcula inserciones

  • Opción 2 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:

    1. La consulta consta de inserciones y puede incluir filtros de metadatos.
    2. 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.

    base de datos vectorial, inserciones calculadas previamente

  • Opción 3 (acceso directo) Proporcione una tabla Delta de origen que contenga inserciones calculadas previamente. No hay sincronización automática cuando se actualiza la tabla Delta. Debe actualizar manualmente el índice mediante la API de REST cuando cambie la tabla de inserción.

    En el siguiente diagrama se muestra el proceso, que es el mismo que el de la opción 2, excepto que el índice vectorial no se actualiza automáticamente cuando cambia la tabla Delta:

    base de datos vectorial, inserciones calculadas previamente sin sincronización automática

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.
  • La tabla de origen debe tener habilitada la fuente de distribución de datos modificados.
  • Privilegios CREATE TABLE en esquemas de catálogo para crear índices.
  • Tokens de acceso personal habilitados.

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:

SELECT *
FROM system.billing.usage
WHERE billing_origin_product = 'VECTOR_SEARCH'
  AND usage_metadata.endpoint_name IS NOT NULL

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

Obtener el cuaderno

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 100 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

  • PrivateLink se limita actualmente al conjunto seleccionado de clientes. Si está interesado en usar la característica con PrivateLink, póngase en contacto con su representante de la cuenta de Databricks.
  • 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.

Recursos adicionales