Base de datos vectorial
Una base de datos vectorial es una base de datos creada para almacenar y buscar incrustaciones: los vectores numéricos de alta dimensión que representan el significado de texto, imágenes u otros datos. En lugar de coincidir con registros por valores exactos como una base de datos tradicional, una base de datos vectorial encuentra los registros cuyos vectores son más similares a una consulta, que es lo que hace posible la búsqueda basada en el significado (semántica) a gran escala.
En resumen: una base de datos vectorial almacena incrustaciones y encuentra las más similares a una consulta: el motor de búsqueda y almacenamiento detrás de la búsqueda semántica y RAG.
Cómo funciona una base de datos vectorial
El trabajo consiste en almacenar vectores y encontrar rápidamente los más cercanos a una consulta:
- Almacenar vectores: Cada elemento se convierte en una incrustación y se almacena, generalmente con metadatos adjuntos como la fuente, el título y las etiquetas.
- Indexar para mayor velocidad: Los vectores se organizan con un índice aproximado del vecino más cercano como HNSW (hierarchical navigable small world), una estructura basada en grafos que navega rápidamente hacia coincidencias cercanas en lugar de escanear cada vector almacenado.
- Buscar por similitud: Una consulta se incrusta en un vector, y la base de datos devuelve los vectores más cercanos usando una métrica de similitud como la similitud del coseno, cada uno con una puntuación de recuperación.
- Filtrar y devolver: Los resultados se pueden restringir por metadatos (como fecha o categoría) y luego devolverse ya clasificados por similitud.
Debido a que comparar una consulta con cada vector por fuerza bruta es demasiado lento a gran escala, las bases de datos vectoriales usan la búsqueda aproximada del vecino más cercano (ANN), sacrificando un poco de precisión a cambio de una gran ganancia en velocidad, de modo que la búsqueda por similitud se mantenga rápida incluso a través de millones o miles de millones de vectores.
Base de datos vectorial frente a bases de datos relacionales y bibliotecas de búsqueda
- Las bases de datos relacionales recuperan filas por coincidencias exactas y filtros; una base de datos vectorial recupera por similitud en el significado. La pregunta cambia de “igual a” a “más parecido a”.
- Las bibliotecas de búsqueda vectorial como FAISS (una biblioteca de código abierto de Meta) proporcionan principalmente indexación ANN y primitivas de búsqueda por similitud; una base de datos vectorial envuelve la persistencia, el filtrado de metadatos, las actualizaciones, el servicio y el escalado en torno a esas capacidades.
- Las bases de datos vectoriales almacenan representaciones basadas en la similitud; un grafo de conocimiento almacena hechos y relaciones explícitos y etiquetados. Uno es estadístico, el otro simbólico, y ambos a menudo se combinan.
Dónde se usan las bases de datos vectoriales
- Búsqueda semántica: Almacenar un corpus como incrustaciones para que las consultas coincidan por significado, impulsando la búsqueda semántica sobre un conjunto de documentos.
- RAG: Contener el conocimiento fragmentado e incrustado del que un sistema de RAG recupera en el momento de la consulta.
- Recomendaciones y similitud: Encontrar productos, imágenes o canciones similares por proximidad vectorial.
- Patrón de arquitectura común: Los equipos a menudo combinan una base de datos vectorial con una API de búsqueda: la base de datos vectorial maneja el corpus que ingieren (a menudo propietario, pero potencialmente datos con licencia o públicos), mientras que la API de búsqueda suministra resultados frescos de la web abierta.
Una base de datos vectorial importa cuando necesitas buscar por significado sobre un corpus incrustado a gran escala, y a menudo es la mitad de una pila de recuperación (con una API de búsqueda que maneja la recuperación web complementaria).
Términos relacionados
Incrustaciones, búsqueda semántica, generación aumentada por recuperación (RAG), fragmentación, puntuación de recuperación, similitud del coseno, vecino más cercano aproximado (ANN), grafo de conocimiento, API de búsqueda.