Base de datos vectorial

From Systems analysis Wiki
Jump to navigation Jump to search

Las bases de datos vectoriales son sistemas de almacenamiento y búsqueda especializados, optimizados para trabajar con representaciones numéricas de alta dimensionalidad (vectores) de datos no estructurados[1]. En el contexto de los modelos de lenguaje grandes (LLM), proporcionan una búsqueda semántica eficiente y son un componente clave de los sistemas modernos de inteligencia artificial, particularmente en la arquitectura RAG.

A diferencia de las bases de datos relacionales tradicionales, que se centran en coincidencias exactas, las bases de datos vectoriales se especializan en la búsqueda aproximada de vecinos más cercanos (Approximate Nearest Neighbor, ANN), encontrando objetos semánticamente similares en un espacio de alta dimensionalidad[2].

Fundamentos de las bases de datos vectoriales

Representaciones vectoriales (Embeddings)

Las representaciones vectoriales (embeddings) son representaciones numéricas de texto, imágenes, audio y otros tipos de datos en forma de vectores. El principio clave es que los objetos semánticamente similares (por ejemplo, palabras con un significado parecido) se ubican cerca unos de otros en este espacio vectorial[3].

Los embeddings de texto modernos se crean utilizando modelos basados en la arquitectura transformer, que aplican mecanismos de atención (self-attention) para comprender el contexto. La dimensionalidad de estas representaciones varía de 256 a 1024 dimensiones o más para la mayoría de los modelos modernos[4].

Métricas de similitud

Para medir la «distancia» o similitud entre vectores se utilizan diversas métricas:

  • Similitud del coseno (cosine similarity): Mide el coseno del ángulo entre dos vectores. Es especialmente eficaz para embeddings de texto, ya que considera la dirección de los vectores en lugar de su magnitud[5].
  • Distancia euclidiana (L2): La distancia rectilínea estándar entre dos puntos en el espacio.
  • Producto escalar (dot product): Similar a la similitud del coseno, pero no está normalizado[6].

Algoritmos de indexación

Para realizar búsquedas rápidas en espacios de alta dimensionalidad, se utilizan algoritmos ANN especializados.

HNSW (Hierarchical Navigable Small World)

El algoritmo HNSW utiliza el concepto de «mundo pequeño» y una estructura de grafos jerárquica multicapa. Las capas superiores contienen enlaces largos para un desplazamiento rápido a través del espacio (búsqueda gruesa), mientras que las inferiores tienen enlaces cortos para una localización precisa de los vecinos. HNSW demuestra una complejidad temporal logarítmica de O(log N) y es la opción preferida para la mayoría de las bases de datos vectoriales modernas[7].

IVF (Inverted File)

El algoritmo IVF divide el espacio en clústeres mediante la clusterización k-means. La búsqueda se realiza en un número limitado de los clústeres más cercanos, lo que acelera significativamente el proceso. El número de clústeres generalmente se elige como √N, donde N es el número total de vectores en el conjunto de datos[8].

LSH (Locality-Sensitive Hashing)

El algoritmo LSH utiliza una familia de funciones hash que, con alta probabilidad, generan los mismos hashes para vectores cercanos. Esto permite agrupar rápidamente objetos similares[9].

Bases de datos vectoriales populares

  • Pinecone: Una base de datos vectorial en la nube totalmente gestionada con arquitectura serverless.
  • Qdrant: Una base de datos de alto rendimiento escrita en Rust, con soporte para filtrado avanzado y transacciones compatibles con ACID.
  • Milvus: Una base de datos de código abierto escalable con arquitectura nativa de la nube. Admite múltiples tipos de índices, incluidas variantes aceleradas por GPU.
  • Weaviate: Una base de datos vectorial de código abierto con una API GraphQL y soporte para grafos de conocimiento.
  • Chroma: Una base de datos ligera de código abierto, optimizada para la creación rápida de prototipos y la experimentación.
  • FAISS: Una biblioteca de Meta que no es una base de datos completa, pero proporciona algoritmos de indexación de alto rendimiento para datos estáticos.

Aplicación con LLMs: arquitectura RAG

Retrieval-Augmented Generation (RAG) es una arquitectura en la que un LLM se complementa con una base de conocimientos externa a través de la búsqueda vectorial. Los sistemas RAG constan de dos componentes principales[10]:

  1. Recuperador (Retriever): El componente de búsqueda que utiliza una base de datos vectorial para encontrar información relevante basada en la consulta del usuario.
  2. Generador (Generator): El LLM que utiliza la consulta original y la información encontrada por el recuperador para generar una respuesta.

Para un funcionamiento eficaz, RAG utiliza la búsqueda híbrida, una combinación de búsqueda semántica (vectorial) y léxica (basada en palabras clave, como BM25), lo que garantiza resultados más precisos y relevantes.

Tendencias y desarrollo futuro

El mercado de las bases de datos vectoriales está experimentando un crecimiento explosivo, proyectado de $1.98 mil millones en 2023 a $7.13 mil millones para 2029 (CAGR del 23.7%)[11]. Las principales áreas de desarrollo incluyen:

  • Sistemas multimodales: Soporte para la búsqueda simultánea de texto, imágenes, audio y video en un único espacio vectorial.
  • Optimización automática: Uso de ML para seleccionar automáticamente los índices y parámetros óptimos.
  • Computación en el borde (Edge computing): Desarrollo de soluciones compactas para dispositivos móviles e IoT.
  • Computación cuántica: Aceleración exponencial potencial de la búsqueda de similitud.
  • Chips neuromórficos: Imitación del funcionamiento del cerebro para un consumo de energía ultrabajo durante la búsqueda.

Enlaces externos

Bibliografía

  • Malkov, Y.A.; Yashunin, D.A. (2016). Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs. arXiv:1603.09320.
  • Johnson, J.; Douze, M.; Jégou, H. (2017). Billion-Scale Similarity Search with GPUs. arXiv:1702.08734.
  • Datar, M. et al. (2004). Locality-Sensitive Hashing Scheme Based on p-Stable Distributions. SoCG 2004 paper.
  • Guo, N. et al. (2020). ScaNN: Efficient Vector Similarity Search at Scale. In: Proc. ACM SIGKDD 2020, pp. 1571-1580. DOI:10.1145/3394486.3403339.
  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wang, X. et al. (2021). Milvus: A Purpose-Built Vector Data Management System. In: SIGMOD 2021. DOI:10.1145/3448016.3457550.
  • Lee, J. et al. (2022). OOD-DiskANN: Efficient and Scalable Graph ANNS for Out-of-Distribution Queries. arXiv:2211.12850.
  • Fan, D. et al. (2023). Survey of Vector Database Management Systems. arXiv:2310.14021.
  • Ren, R. et al. (2024). Survey of Filtered Approximate Nearest Neighbor Search over Vector-Scalar Hybrid Data. arXiv:2505.06501.
  • Zhao, H. et al. (2024). Starling: An I/O-Efficient Disk-Resident Graph Index Framework for High-Dimensional Vector Similarity Search. arXiv:2401.02116.
  • Liu, Y. et al. (2025). Memory-Efficient Similarity Search at Billion-Scale: A Taxonomy and Analysis of Vector Compression Techniques. ResearchGate preprint.

Referencias

  1. «What Is a Vector Database?». CloudRaft. [1]
  2. «What is a Vector Database?». Qdrant Blog. [2]
  3. «What Are Vector Embeddings?». LakeFS. [3]
  4. «What are embeddings?». Zilliz. [4]
  5. Sahoo, A., Maiti, J. «A Comparative Study of Similarity Metrics for Textual Embeddings». arXiv:2501.01234. [5]
  6. «Vector search and dense vector fields». Elastic. [6]
  7. Malkov, Y. A., Yashunin, D. A. «Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs». arXiv:1603.09320. [7]
  8. «The index IVF». FAISS Wiki. [8]
  9. Datar, M., et al. «Locality-Sensitive Hashing Scheme Based on p-Stable Distributions». Symposium on Computational Geometry. [9]
  10. Lewis, P., et al. «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks». arXiv:2005.11401. [10]
  11. «Vector Database Global Market Report 2024». The Business Research Company. [11]