Vector de búsqueda de Databricks

Importante

Esta característica se encuentra en versión preliminar pública en las siguientes regiones: canadacentral, centralus, eastus, eastus2, northeurope, southeastasia, westeurope, westus y westus2.

En este artículo se proporciona información general sobre la solución de base de datos vectorial de Databricks, el vector de búsqueda de Databricks, incluido qué es y cómo funciona.

Databricks Vector Search es una base de datos vectorial integrada en Databricks 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, se crea un índice de búsqueda vectorial 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.

El vector de búsqueda de Databricks usa el algoritmo jerárquico de pequeño mundo navegable (HNSW) para sus búsquedas de vecinos más cercanas y la métrica de distancia L2 para medir la similitud de vectores de inserción. Si desea usar la similitud de coseno, debe normalizar las incrustaciones de puntos de datos antes de alimentarlas en el 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.

¿Cómo funciona el vector de búsqueda?

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 mediante un modelo que especifique. 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 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 Databricks Vector Search, debe 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, también debe crear un punto de conexión de servicio de modelo para el modelo de inserción. Consulte Creación de un modelo de base que atiende los puntos de conexión 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 El Vector de búsqueda está aislada, autenticada y autorizada lógicamente.
  • El vector de búsqueda de Databricks cifra todos los datos en reposo (AES-256) y en tránsito (TLS 1.2+).

El vector de búsqueda de Databricks admite dos modos de autenticación:

  • Token de acceso personal: puede usar un token de acceso personal para autenticarse con el vector de búsqueda. 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.

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 10
Inserciones Por punto de conexión 100 000 000
Inserción de dimensión Por índice 4096
Índices Por punto de conexión 20
Columnas Por índice 20
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 para el vector de búsqueda.

Resource Granularidad Límite
Longitud del texto de consulta Por consulta 32764
Resultados numéricos Por consulta 50

Limitaciones

  • PrivateLink o listas de acceso IP soporte técnico se limita actualmente al conjunto seleccionado de clientes. Si está interesado en usar la característica con listas de acceso a PrivateLink o IP, póngase en contacto con el soporte técnico de Databricks.
  • Las claves administradas por el cliente (CMK) no se admiten para la versión preliminar pública.
  • No se admiten áreas de trabajo reguladas, por lo que esta funcionalidad no es compatible con HIPAA.
  • 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