Definición de base de datos de vectores

Una base de datos de vectores es una base de datos que almacena información en forma de vectores, que son representaciones numéricas de objetos de datos, también conocidos como incrustaciones de vectores. Aprovecha el poder de estas incrustaciones de vectores para indexar y buscar en un set de datos masivo de datos no estructurados y datos semiestructurados, como imágenes, texto o datos de sensores. Las bases de datos de vectores están hechas para gestionar las incrustaciones de vectores y, por lo tanto, ofrecen una solución completa para la gestión de datos no estructurados y semiestructurados.

Una base de datos de vectores es distinta de una biblioteca de búsqueda de vectores o un índice de vectores: es una solución de gestión de datos que permite el almacenamiento y filtrado de metadatos, es escalable, permite cambios de datos dinámicos, realiza backups y ofrece características de seguridad.

Una base de datos de vectores organiza los datos a través de vectores de alta dimensionalidad. Los vectores de alta dimensionalidad contienen cientos de dimensiones, y cada dimensión corresponde a una característica o propiedad específica del objeto de datos al que representa.

¿Qué son las incrustaciones de vectores?

Las incrustaciones de vectores son una representación numérica de un tema, una palabra, una imagen o cualquier otro dato. Las incrustaciones de vectores (también conocidas como incrustaciones) se generan en modelos de lenguaje grandes y otros modelos de AI.

La distancia entre cada incrustación de vectores es lo que posibilita que una base de datos de vectores, o un motor de búsqueda de vectores, determine la similitud entre los vectores. Las distancias pueden representar varias dimensiones de objetos de datos, lo que permite la comprensión por parte del machine learning y la AI de los patrones, las relaciones y las estructuras subyacentes.

Conoce cómo desplegar tus incrustaciones de texto

¿Cómo funciona una base de datos de vectores?

Una base de datos de vectores funciona usando algoritmos para indexar incrustaciones de vectores y buscar en ellas. Los algoritmos habilitan la búsqueda de vecino más cercano aproximado (ANN) a través del uso de hash, la cuantificación o la búsqueda basada en grafos.

Para recuperar información, una búsqueda de ANN encuentra el vecino vector más cercano de una búsqueda. Además de requerir menos recursos informáticos que una búsqueda kNN (vecino más cercano conocido o un algoritmo de vecino más cercano conocido verdadero), una búsqueda de vecino más cercano aproximado también es menos precisa. Sin embargo, funciona de forma eficiente y a escala en sets de datos grandes de vectores de alta dimensionalidad.

Un pipeline de base de datos de vectores se ve así:

Diagram of how a vector search engine works using vector embeddings

  1. Indexación: con el uso de hash, la cuantificación o técnicas basadas en grafos, una base de datos de vectores indexa los vectores mapeándolos a una estructura de datos dada. Esto permite una búsqueda más rápida.

    • Uso de hash: un algoritmo hash, como el algoritmo hash sensible a la localidad (LSH), es más adecuado para una búsqueda de vecino más cercano aproximado dado que permite resultados rápidos y genera resultados aproximados. LSH usa tablas de hash (piensa en una tabla de Sudoku) para asignar vecinos más cercanos. Una búsqueda se ingresará mediante hash a una tabla y luego se comparará con un conjunto de vectores en la misma tabla a fin de determinar la similitud.
    • Cuantificación: una técnica de cuantificación, como la cuantificación de productos (PQ), desglosará los vectores en piezas más pequeñas y representará dichas piezas con código, y luego volverá a juntar las piezas. El resultado es una representación de código de un vector y sus componentes. La combinación de estos códigos se conoce como libro de códigos. Cuando se consulta, una base de datos de vectores que usa cuantificación desglosará la búsqueda a código y luego buscará coincidencias en el libro de códigos para encontrar el código más similar y generar los resultados.
    • Basada en grafos: un algoritmo de grafo, como el algoritmo de mundo pequeño jerárquico navegable (HNSW), usa nodos para representar vectores. Reúne los nodos en clusters y dibuja líneas o bordes entre nodos similares, lo que crea grafos jerárquicos. Cuando se lanza una búsqueda, el algoritmo navegará en la jerarquía de grafos para encontrar nodos que contengan los vectores más similares al vector de la búsqueda.

    Una base de datos de vectores también indexará los metadatos de un objeto de datos. Por este motivo, una base de datos contendrá dos índices: un índice de vectores y un índice de metadatos.

     

  2. Búsqueda: cuando una base de datos de vectores recibe una búsqueda, compara los vectores indexados con el vector de búsqueda a fin de determinar los vecinos vectores más cercanos. Para establecer los vecinos más cercanos, una base de datos de vectores depende de métodos matemáticos conocidos como medidas de similitud. Existen distintos tipos de medidas de similitud:

    • La similitud de coseno establece la similitud en un rango de -1 a 1. Al medir el coseno del ángulo entre dos vectores en un espacio de vectores, se determinan los vectores diametralmente opuestos (representados por -1), ortogonales (representados por 0) o idénticos (representados por 1).
    • La distancia euclidiana determina la similitud en un rango de 0 a infinito midiendo la distancia en línea recta entre los vectores. Los vectores idénticos están representados por 0, mientras que los valores más grandes representan una mayor diferencia entre los vectores.
    • Las medidas de similitud de producto punto determinan la similitud de vectores en un rango de menos infinito a infinito. A través de la medición del producto de la magnitud de dos vectores y el coseno del ángulo entre ellos, el producto punto asigna valores negativos a los vectores que apuntan de forma tal que se alejan entre sí, 0 a los vectores ortogonales y valores positivos a los vectores que apuntan en la misma dirección.
  3. Posprocesamiento: el último paso en un pipeline de base de datos de vectores es, a veces, el posprocesado (o posfiltrado), durante el cual la base de datos de vectores usará una medición de similitud diferente para reclasificar los vecinos más cercanos. En esta etapa, la base de datos filtrará los vecinos más cercanos de la consulta identificados en la búsqueda según sus metadatos.

    Algunas bases de datos de vectores pueden aplicar filtros antes de ejecutar una búsqueda de vectores. En este caso, se denomina preprocesamiento o prefiltrado.

¿Por qué son importantes las bases de datos de vectores?

Las bases de datos de vectores son importantes porque tienen las incrustaciones de vectores y posibilitan un conjunto de capacidades, entre las que se encuentran la indexación, las métricas de distancia y la búsqueda por similitud. En otras palabras, las bases de datos de vectores se especializan en la gestión de datos no estructurados y datos semiestructurados. Como resultado, las bases de datos de vectores son una herramienta vital en el panorama digital de AI y machine learning.

Componentes básicos de las bases de datos de vectores

Una base de datos de vectores puede tener los siguientes componentes básicos:

  • Rendimiento y tolerancia a fallas: los procesos de sharding y replicación garantizan que una base de datos de vectores tenga buen rendimiento y tolere fallas. El sharding involucra particionar datos en varios nodos, mientras que la replicación consta en hacer varias copias de datos en diferentes nodos. En caso de que un nodo falle, esto permite la tolerancia a errores y el rendimiento ininterrumpido.
  • Capacidades de monitoreo: a fin de garantizar el rendimiento y la tolerancia a fallas, una base de datos de vectores requiere el monitoreo del uso de recursos, el rendimiento de búsqueda y el estado del sistema en general.
  • Capacidades de control de acceso: las bases de datos de vectores también requieren gestión de seguridad de datos. Las normas de control de acceso aseguran el cumplimiento, la responsabilidad y la capacidad de auditar el uso de bases de datos. Esto también significa que los datos están protegidos: pueden acceder a ellos quienes tienen permisos, y se mantiene un registro de actividad de los usuarios.
  • Escalabilidad y capacidad de ajuste: las buenas capacidades de control de acceso impactan en la escalabilidad y la capacidad de ajuste de una base de datos de vectores. A medida que aumenta la cantidad de datos almacenados, la capacidad de escalar horizontalmente se torna obligatoria. Las distintas tasas de búsqueda e inserción, así como las diferencias en el hardware subyacente, afectan las necesidades de las aplicaciones.
  • Usuarios múltiples y aislamiento de datos: de la mano de la escalabilidad y las capacidades de control de acceso, una base de datos de vectores debe admitir usuarios múltiples o multitenancy. En sintonía con esto, las bases de datos de vectores deben habilitar el aislamiento de datos, de modo que cualquier actividad de los usuarios (como inserciones, eliminaciones o búsquedas) se mantengan privadas frente a otros usuarios, a menos que se requiera lo contrario.
  • Backups: las bases de datos de vectores crean backups de datos con regularidad. Este es un componente clave de una base de datos de vectores en caso de una falla en el sistema; en el caso de pérdida o corrupción de datos, los backups pueden ayudar a restaurar la base de datos a un estado anterior. Esto minimiza el tiempo de inactividad.
  • API y SDK: una base de datos de vectores usa API para ofrecer una interfaz fácil de usar. Una API es una interfaz de programación de aplicaciones, o un tipo de software, que permite a las aplicaciones "hablarse" entre sí a través de solicitudes y respuestas. Las capas de API simplifican la experiencia de búsqueda de vectores. Los SDK, o kits de desarrollo de software, suelen envolver las API. Son los lenguajes de programación que usan las bases de datos para comunicarse y administrar. Los SDK contribuyen a un uso fácil para los desarrolladores de las bases de datos de vectores, dado que no deben preocuparse por la estructura subyacente cuando desarrollan casos de uso específicos (búsqueda semántica, sistemas de recomendación, etc.).

¿Cuál es la diferencia entre una base de datos de vectores y una base de datos tradicional?

Una base de datos tradicional almacena información de manera tabular e indexa los datos asignando valores a los puntos de datos. Al ser consultada, una base de datos tradicional devolverá resultados que coincidan exactamente con la búsqueda.

Una base de datos de vectores almacena vectores en forma de incrustaciones y permite la búsqueda de vectores, lo que devuelve resultados de búsqueda basados en métricas de similitud (en lugar de coincidencias exactas). Una base de datos de vectores "da un paso al frente" en situaciones en las que una base de datos tradicional no puede hacerlo: está intencionalmente diseñada para funcionar con la incrustación de vectores.

Una base de datos de vectores también es más adecuada que una tradicional en ciertas aplicaciones, como aplicaciones de búsqueda por similitud, inteligencia artificial y machine learning gracias a que permite la búsqueda de alta dimensionalidad e indexación personalizada, y porque es escalable, flexible y eficiente.

Aplicaciones de las bases de datos de vectores

Las bases de datos de vectores se usan en aplicaciones de AI, machine learning (ML), procesamiento de lenguaje natural (NLP) y reconocimiento de imágenes.

  • Aplicaciones de AI/ML: una base de datos de vectores puede mejorar las capacidades de AI con memoria a largo plazo y recuperación de información semántica.
  • Aplicaciones de NLP: la búsqueda por similitud de vectores, un componente clave de las bases de datos de vectores, es útil para las aplicaciones de procesamiento de lenguaje natural. Una base de datos de vectores puede procesar incrustaciones de texto, lo que permite a una computadora "entender" el lenguaje humano (o natural).
  • Aplicaciones de reconocimiento y recuperación de imágenes: las bases de datos de vectores transforman las imágenes en incrustaciones de imágenes. Con la búsqueda por similitud, pueden recuperar imágenes similares o identificar imágenes que coincidan.

Las bases de datos de vectores también pueden usarse en aplicaciones de detección de anomalías y detección de rostros.

Base de datos de vectores para Elasticsearch

Elasticsearch incluye una base de datos de vectores para la búsqueda de vectores. Elastic permite a los desarrolladores crear sus propios motores de búsqueda de vectores con Elasticsearch Relevance Engine (ESRE).

Con las herramientas de Elasticsearch, puedes crear un motor de búsqueda de vectores que pueda buscar datos estructurados y no estructurados, aplicar filtros y faceting, aplicar búsqueda híbrida en datos de vectores y texto, y usar la seguridad a nivel de campo y documento, todo esto mientras se ejecuta en las instalaciones, en el cloud o en entornos híbridos.

Explora la base de datos de vectores de Elasticsearch

Notas al pie

1 Gu, Huaping. "Unleashing the Power of Vectors: Embeddings and Vector Databases - Linkedin." (Liberar el poder de los vectores: Incrustaciones y bases de datos de vectores - Linkedin). LinkedIn, 2 de abril de 2023, www.linkedin.com/pulse/unleashing-power-vectors-embeddings-vector-databases-huaping-gu