¿Qué ##### es una base de datos vectorial?
El auge de Big Data y la IA ha cambiado todos los aspectos de la industria, desde automatizaciones hasta cambios estructurales en la forma en la cual nos educamos. Y a pesar de lo que muchas personas creen las bases de datos también están sufriendo un cambio gracias a esta revolución, las bases de datos vectoriales han surgido como una solución innovadora para abordar limitaciones que existen en las bases de datos clásicas, sobretodo para el manejo de datos semiestructurados y no estructurados como lo pueden ser imágenes, videos, audios, entre muchos otros.
Si, sí, sí, mucho auge pero ¿quejeso?
Una base de datos vectorial es un sistema diseñado para gestionar y almacenar datos que están representados como vectores, como arrays de números que capturan características de esos datos. Es decir que estas bases de datos en vez de capturar los datos crudos generará un array que represente a partir de números esos datos, es precisamente esto lo que brinda una ventaja significativa respecto a las bases de datos clásicas como Oracle, MySQL, e incluso MongoDB al momento de gestionar información no estructurada. Así mismo, estas bases de datos convierten los datos a embeddings, lo que permite establecer relaciones entre los datos. A su vez, utilizan índices para permitir búsquedas a partir de índices de proximidad o técnicas de hashing, también esto permite que se pueda buscar en base a un significado o en base a una consulta del lenguaje natural en vez de coincidencias exactas.
Características
Modelo de una base de datos vectorial
Una base de datos vectorial utiliza un modelo de vectores, que es la representación de una base de datos que transforma la información en vectores de manera similar a lo que se realizaría en un procesamiento del lenguaje natural, por lo que primero se utilizan técnicas como word 2 vec, glo ve o sentence transformers para generar los vectores.Queries
Sí, las queries son diferentes dado que utilizan técnicas de deep learning para realizar, por ejemplo, el uso de conceptos como espacio vectorial para verificar la similitud entre datos de manera que aquellos vectores que estén cercanos, tendrán un significado similar. Pero las consultas son lo más parecido a utilizar un modelo de comprensión del lenguaje natural como lo puede ser chatgpt, bard, geminis.
Almacenamiento
El almacenamiento de vectores es a partir de estructuras de datos optimizadas para las búsquedas rápidas como árboles de búsqueda, tablas hash o índices. También, se utilizan metadatos relacionados para incluir atributos como etiquetas y demás. Así mismo, los tipos de datos que pueden almacenar son textos, imágenes, audio, pero también datos típicos como datos estructurados, json, etc. Además, utiliza técnicas de almacenamiento típicas de MongoDB o HBase como el Sharding y la Distribución de manera que se distribuyen en múltiples nodos lo que permite el escalamiento horizontal y mejora la eficiencia de consultas. Así mismo, también utiliza la comprensión de vectores que consiste en reducir el espacio sin sacrificar la precisión de búsquedas.
Aplicaciones
Las bases de datos vectoriales tienen varias aplicaciones sobretodo en el procesamiento y búsqueda de datos no estructurados como la búsqueda por el significado de las cosas, cuando se necesitan recomendaciones personalizadas, procesamiento de lenguaje natural, visión por computadora, análisis de datos no estructurados, biometría, genética, bioinformática, gaming, finanzas, robótica, etcétera.
Comparativa entre bases de datos
Tipos de datos
- Las estructuradas, solo aceptan datos estructurados.
- Las nosql, aceptan datos semiestructurados como pueden ser jsons y demás.
- Las vectoriales prácticamente aceptan cualquier tipo de dato posible, desde estructurado, imágen, multimedia, y cualquiera.
Estructura de los datos
- Las estructuradas normalmente tienen tablas, filas y columnas.
- Las no estructuradas, dependiendo de cuál sean pueden ser de documentos, datasets, nodos y relaciones.
- Las vectoriales utilizan vectores de altas dimensiones.
Escalabilidad
- Las estructuradas normalmente tienen una escalabilidad vertical aunque Oracle tiene un escalamiento tanto vertical como horizontal.
- Las semiestructuradas se caracterizan por tener escalabilidad horizontal.
- Las vectoriales tienen una escalabilidad horizontal.
Consulta de los datos
- Las estructuradas utilizan SQL comúnmente aunque pueden utilizar PLSQL en caso de Oracle.
- Las no estructuradas pueden utilizar diferentes tipos de consultas, la MongoDB Query Language, las consultas complejas de neo4j, SQL en caso de HBase.
- Las vectoriales utilizan consultas semánticas, las consultas que uan persona le haría a otra directamente.
Aplicaciones
- Las estructuradas normalmente se utilizan en aplicaciones empresariales, sistemas, bases clásicas para almacenar datos típicos, aunque también se pueden utilizar para realizar herramientas para inteligencia de negocios.
- Las no estructuradas, dependiendo de cuál sea usada se pueden utilizar para aplicaciones, almacenamiento de datos semiestructurados, análisis de volúmenes de datos para machine learning con los clústers, también para la inteligencia de negocios, sistemas de recomendación y de relaciones.
- Las vectoriales para recomendaciones personalizadas, procesamiento de lenguaje natural, visión por computadora, análisis de datos no estructurados, biometría, genética, bioinformática, gaming, finanzas, robótica, etcétera.
Integración con Inteligencia Artificial o Machine Learning
- Las estructuradas utilizan herramientas externas aunque Oracle ha estado sacando ciertos paquetes para su debida integración nativa.
- Las no estructuradas, dependiendo del tipo puede que tengan frameworks de machine learning o que tengan su propia integración nativa para realizar machine learning.
- Las vectoriales prácticamente están construidas sobre modelos de machine learning para los embeddings.
¿Qué opciones hay de bases de datos vectoriales?
Weaviate, es una base de datos que se utiliza en aplicaciones que requieren integrarse directamente con machinel learning e interfaces de consultas semánticas amigables.
Pinecone, es una base de datos que presenta una solución en servicio en la nube y se enfoca en la búsqueda por similitud, facilitando escalabilidad y rendimiento. Así mismo, es gestionada por la empresa y no tanto por el cliente.
Milvus, permite el manejo de grandes volúmenes de datos y es adecuado para la búsqueda semántica como la gestión de metadatos.
Vearch, es una solución de open source para búsqueda semántica con capacidad de gestión de vectores y metadatos, así mismo, es ideal para proyectos que requieren de integración sencilla con sistemas ya existentes.
Conclusión
Las bases de datos vectoriales no son una alternativa a una base de datos estructurada o una no estructurada, es una herramienta que se puede utilizar para la misma dado que permite un análisis más enfocado en datos no estructurados como imágenes, videos, entre otros. Sin embargo, también presentan limitaciones dado que son difíciles de implementar en sistemas y aún están en desarrollo y es un mercado por descubrir.
Referencias
- Weaviate. (n.d.). Weaviate documentation. Weaviate. https://weaviate.io/developers/weaviate
- Pinecone. (n.d.). Pinecone documentation. Pinecone. https://docs.pinecone.io/
- Facebook Research. (n.d.). FAISS (Facebook AI Similarity Search). GitHub. https://github.com/facebookresearch/faiss
- Milvus. (n.d.). Milvus documentation. Milvus. https://milvus.io/docs
- Vearch. (n.d.). Vearch documentation. https://vearch.readthedocs.io/en/latest/
- Towards Data Science. (2021). Introduction to vector databases. Medium. https://towardsdatascience.com/introduction-to-vector-databases-1d5e4185f69e
- Google AI. (2018). Using the universal sentence encoder for text classification. Google AI Blog. https://ai.googleblog.com/2018/05/using-universal-sentence-encoder-for.html
- Pinecone. (n.d.). Use cases for vector databases. Pinecone. https://docs.pinecone.io/docs/use-cases
No hay comentarios: