Una base de datos de vectores, un almacén de vectores o un motor de búsqueda de vectores es una base de datos que puede almacenar vectores (listas de números de longitud fija) junto con otros elementos de datos. Las bases de datos vectoriales generalmente implementan uno o más algoritmos búsqueda aproximativa del vecino más próximo (ANN), [1] [2] para que uno pueda buscar en la base de datos con un vector de consulta (query en inglés) y recuperar los vectores de la base de datos que sean más similares o estén más cercanos del vector de consulta.
Los vectores son representaciones matemáticas de datos en un espacio de dimensiones muy grandes. En este espacio, cada dimensión corresponde a una característica de los datos, y el número de dimensiones oscila entre unos pocos cientos y decenas de miles, según la complejidad de los datos que se representan. La posición de un vector en este espacio representa sus características. Se pueden crear vectores a partir de palabras, frases o documentos completos, así como imágenes, audio y otros tipos de datos. [3]
Estos vectores de características se pueden calcular a partir de datos sin procesar utilizando métodos de aprendizaje automático, como algoritmos de extracción de características, embeddings de palabras[4] o redes de aprendizaje profundo . El objetivo es que los elementos de datos semánticamente similares reciban vectores de características cercanos entre sí.
Las bases de datos vectoriales también se utilizan a menudo para implementar la recuperación aumentada generativa (siglas en inglés RAG), un método para mejorar las respuestas específicas de dominio de modelos de lenguaje grandes. El componente de recuperación de un RAG puede ser cualquier sistema de búsqueda, pero normalmente se implementa como una base de datos vectorial. Se recopilan documentos de texto que describen el dominio de interés y, para cada documento o sección de documento, se calcula un vector de características (conocido como "embedding"), normalmente utilizando una red de aprendizaje profundo, y se almacena en una base de datos de vectores. Dada una instrucción de usuario (prompt en inglés) , se calcula el vector de características de la instrucción y se consulta la base de datos para recuperar los documentos más relevantes. A continuación, estos se agregan automáticamente a la ventana de contexto del LLM, y éste procede a generar una respuesta basada en la instrucción dada y en su contexto. [5]
Técnicas
Las técnicas más importantes para la búsqueda de similitudes en vectores de dimensiones muy grandes incluyen:
En evaluaciones comparativas recientes, las implementaciones basadas en el HNSW se encuentran entre las de mayor rendimiento. [6] [7] Conferencias como International Conference on Similarity Search and Applications, SISAP y la Conference on Neural Information Processing Systems (NeurIPS) organizan competiciones sobre búsqueda de vectores en grandes bases de datos.
↑ ab«Vector database». learn.microsoft.com. 26 de diciembre de 2023. Consultado el 11 de enero de 2024.
↑Evan Chaki (31 de julio de 2023). «What is a vector database?». Microsoft. «A vector database is a type of database that stores data as high-dimensional vectors, which are mathematical representations of features or attributes.»
↑Lewis, Patrick; Perez, Ethan; Piktus, Aleksandra; Petroni, Fabio; Karpukhin, Vladimir; Goyal, Naman; Küttler, Heinrich (2020). «Retrieval-augmented generation for knowledge-intensive NLP tasks». Advances in Neural Information Processing Systems 33: 9459-9474. arXiv:2005.11401.
↑Anderson, Scott (26 de marzo de 2021). «Couchbase Adopts BSL License». The Couchbase Blog(en inglés estadounidense). Consultado el 14 de febrero de 2024.
↑Liao, Ingrid Lunden and Rita (24 de agosto de 2022). «Zilliz raises $60M, relocates to SF». TechCrunch(en inglés estadounidense). Consultado el 29 de octubre de 2023.