¿Qué es una base de datos vectorial?
¿Qué es una base de datos vectorial?
Una base de datos vectorial es una base de datos especializada diseñada para almacenar, gestionar y buscar incrustaciones vectoriales de alta dimensión. Su función principal es servir como una base de conocimiento externa que un modelo de lenguaje grande (LLM) puede consultar, “fundamentando” así las respuestas del modelo con los datos almacenados en la base de conocimiento y mitigando el riesgo de alucinación. La capacidad principal de una base de datos vectorial es realizar búsquedas de similitud semántica, que identifican puntos de datos conceptualmente similares, en lugar de solo buscar coincidencias de palabras clave. Indexa y almacena incrustaciones de vectores densos y dispersos de modelos de machine learning para permitir una búsqueda y recuperación rápidas de similitudes. Estas incrustaciones capturan las relaciones semánticas dentro de datos no estructurados, como texto, imágenes o audio. En el espacio vectorial creado por la base de datos, los elementos relacionados se posicionan más cerca unos de otros, lo que permite al sistema clasificar los resultados por relevancia.
Incrustaciones de vectores
¿Qué son las incrustaciones de vectores y cómo se crean?
Las incrustaciones de vectores son matrices numéricas de valores de punto flotante que representan datos como palabras, frases o documentos completos. Se generan por modelos de machine learning, como modelos de lenguaje grande, que transforman los medios digitales en puntos dentro de un espacio de alta dimensión. Este proceso captura el significado semántico subyacente y las relaciones de los datos originales. Por ejemplo, una imagen de un “golden retriever jugando en un parque” podría convertirse en una incrustación numéricamente próxima a la incrustación del texto “perro feliz afuera”. Es importante tener en cuenta que las incrustaciones creadas por el modelo de un proveedor no pueden entenderse por otro; por ejemplo, una incrustación de un modelo OpenAI no es compatible con una de otro proveedor.
¿Qué son los vectores densos (embeddings)?
Los vectores densos son incrustaciones numéricas de alta dimensión en los que casi todos los elementos son valores distintos de cero. Una característica crítica de los vectores densos es que todos los vectores generados por un modelo particular deben tener el mismo número fijo de dimensiones, lo que es un requisito previo para medir la similitud. Por ejemplo, las incrustaciones de modelos de Azure OpenAI tienen 1536 dimensiones. Por lo general, se generan por modelos de transformadores, capturan un significado semántico rico y matizado, lo que las hace ideales para la búsqueda de similitud semántica. Un vector denso para la palabra “gato”, por ejemplo, podría ser: [0,135, -0,629, 0,327, 0,366, ...].
¿Qué son los vectores dispersos (incrustaciones)?
¿Qué es la búsqueda de vectores?
La búsqueda vectorial es una técnica que encuentra datos similares representándolos como vectores numéricos de alta dimensión, que a menudo se llaman incrustaciones. Este método es muy versátil porque los modelos de machine learning pueden generar incrustaciones para cualquier tipo de medio digital, incluidos texto, imágenes y audio. El concepto fundamental consiste en transformar los datos en un espacio vectorial donde la distancia geométrica entre vectores indica su similitud semántica. Una búsqueda vectorial es una operación de búsqueda que encuentra los vectores más similares a un vector de búsqueda determinado en función de una métrica de similitud específica. Por ejemplo, una búsqueda de “canino” podría coincidir semánticamente con un documento que contenga la palabra “perro”, a diferencia de la búsqueda tradicional por palabras clave, que coincide con el término literal en lugar de su significado subyacente.
Medición de similitud
¿Cómo se miden la similitud y la distancia de los vectores?
En la búsqueda vectorial, la similitud se cuantifica al calcular la distancia o el ángulo entre dos vectores en un espacio de alta dimensión; los vectores que están más cerca se consideran semánticamente más similares. Las métricas comunes empleadas para medir esta proximidad incluyen la similitud del coseno, la distancia euclidiana, el producto punto, la distancia de Hamming y la distancia de Manhattan.
- La distancia L2 (distancia euclidiana) es la métrica más común y representa la distancia en línea recta “a vuelo de pájaro” entre dos puntos vectoriales.
- La distancia L1 (distancia de Manhattan) mide la distancia sumando las diferencias absolutas de los componentes vectoriales, como si se navegara en una cuadrícula urbana.
- La distancia de Linf (distancia de Chebyshev) es la diferencia máxima a lo largo de cualquier dimensión.
- La similitud del coseno mide el coseno del ángulo entre dos vectores para determinar si apuntan en una dirección similar, independientemente de su magnitud. Una puntuación de 1 significa vectores idénticos, y –1 significa que son opuestos. Esta es una opción común para espacios de incrustación normalizados, como los de los modelos de OpenAI.
- La similitud del producto punto considera tanto el ángulo como la magnitud de los vectores. Es equivalente a la similitud del coseno para vectores normalizados, pero a menudo es más eficiente desde el punto de vista computacional.
- La distancia de Hamming calcula el número de dimensiones en las que dos vectores difieren.
- El producto interno máximo (MaxSim) es una métrica de similitud que se usa cuando un solo dato (como un documento) está representado por múltiples vectores (por ejemplo, un vector para cada palabra). Calcula la similitud al comparar cada vector en un documento con el vector más similar en el otro documento y luego agrega los resultados.
Algoritmos de búsqueda eficientes
¿Cómo los algoritmos como HNSW y ANN permiten una búsqueda de vectores eficiente?
La búsqueda de vectores similares en un conjunto de datos masivo y de alta dimensionalidad presenta un desafío significativo. Un enfoque de fuerza bruta, que compara un vector de consulta con todos los demás vectores, es computacionalmente inviable a medida que crecen los conjuntos de datos. Esto se resuelve al emplear algoritmos de vecino más cercano aproximado (ANN). Estas técnicas encuentran rápidamente los vectores más cercanos a una consulta sin realizar una comparación exhaustiva. Un algoritmo ANN común es el mundo pequeño jerárquico navegable (HNSW), que organiza los vectores en una estructura de grafos en capas donde los vectores se conectan en función de la similitud, lo que permite un recorrido rápido. Esto es más eficiente y preciso que una búsqueda FLAT (de fuerza bruta), que requiere un uso intensivo de recursos computacionales, pero es más precisa. Al reducir radicalmente el ámbito de búsqueda, estas estructuras logran enormes ganancias de velocidad a cambio de una pequeña, y típicamente aceptable, reducción de la precisión absoluta.
¿Qué es una búsqueda por etapas en los sistemas de búsqueda vectorial?
Un sistema de recuperación multietapa o marco de trabajo del recuperador (para simplificar, también podemos llamarlo pipeline de búsqueda) es un flujo de trabajo orquestado que define la secuencia de pasos para procesar una búsqueda. Esto, por lo general, incluye pasos como el análisis de búsquedas, la recuperación inicial de uno o más índices (por ejemplo, combinar la búsqueda léxica y vectorial para un enfoque híbrido), el filtrado de resultados y una etapa final de reclasificación antes de devolver los resultados al usuario.
¿Cuáles son los beneficios de usar el marco de trabajo del recuperador para crear pipelines de búsqueda?
El principal beneficio es la modularidad y la flexibilidad. Permite a los desarrolladores combinar fácilmente diferentes estrategias de búsqueda y clasificación (como la búsqueda híbrida) y construir pipelines de recuperación complejos y de varias etapas adaptados a necesidades específicas sin tener que construir todo el sistema desde cero.
¿Qué es el reranking semántico?
La reclasificación semántica es un proceso de segunda etapa que mejora la relevancia de los resultados de búsqueda. Después de que una etapa inicial de recuperación rápida obtiene un amplio conjunto de documentos candidatos, se utiliza un modelo más intensivo desde el punto de vista computacional, pero más preciso para reordenar este conjunto más pequeño y producir una clasificación final más precisa.
¿Cómo funciona un proceso multietapa de “recuperación y reclasificación”?
Un pipeline de “recuperación y reclasificación” opera en dos etapas distintas:
- Recuperación: se usa un método de recuperación eficiente y escalable (como la búsqueda vectorial ANN o la búsqueda léxica BM25) para obtener un conjunto inicial de documentos candidatos de la indexación completa.
- Reclasificación: este conjunto más pequeño de candidatos se pasa a un modelo más potente (como un codificador cruzado) que realiza un análisis más profundo de la relación semántica entre la consulta y cada documento, y los reordena para mejorar la relevancia final.
¿Cuál es la diferencia entre las arquitecturas de un bi-encoder y un cross-encoder para la reclasificación?
- Un bi-encoder genera incrustaciones separadas para la búsqueda y los documentos de forma independiente. Debido a que las incrustaciones de documentos se pueden precalcular e indexar, esta arquitectura es muy rápida y se utiliza para la etapa inicial de recuperación.
- Un cross-encoder procesa la búsqueda y un documento juntos como una sola entrada. Esto le permite captar interacciones contextuales mucho más profundas, lo que lo hace muy preciso, pero también mucho más lento. Debido a su costo computacional, solo es adecuado para la etapa de reclasificación en un conjunto pequeño de resultados candidatos.
Almacenamiento y optimización
¿Cómo se almacenan normalmente los vectores en una base de datos vectorial y qué desafíos de almacenamiento surgen?
Los vectores suelen almacenar como matrices de números de punto flotante de 32 bits (float32). El principal desafío es la inmensa huella de almacenamiento; un solo vector de 384 dimensiones consume aproximadamente 1,5 KB. Por lo tanto, un índice de 100 millones de documentos puede aumentar su tamaño siete veces con solo agregar un campo de vector. Debido a que los algoritmos de búsqueda de vectores como HNSW requieren que la indexación se cargue en la RAM para el rendimiento, esto crea desafíos significativos relacionados con el costo de la memoria y la escalabilidad.
¿Qué es la cuantización vectorial?
La cuantización vectorial es una técnica de compresión con pérdida que reduce los requisitos de memoria y cálculo de un modelo al representar sus parámetros con menos bits. Esto es especialmente útil para los LLM, que pueden tener miles de millones de parámetros. Al convertir números float32 de alta precisión en enteros de menor precisión como int8 o int4, la cuantización puede reducir significativamente el tamaño del modelo y acelerar la inferencia con un impacto mínimo en la precisión.
¿Qué es la cuantificación escalar (SQ)?
La cuantificación escalar comprime vectores mapeando el rango continuo de valores float32 a un conjunto discreto de valores enteros de menor precisión (por ejemplo, int8). Esto puede lograr una reducción de hasta 4 veces en el tamaño del almacenamiento mientras se conserva una cantidad significativa de la información de magnitud del vector, lo que es importante para la relevancia.
¿Qué es la cuantificación binaria (BQ)?
La cuantización binaria es una técnica de compresión más agresiva que convierte cada componente de un vector float32 en una representación binaria (por ejemplo, 1 bit). Esto puede lograr una compresión de hasta 32 veces, lo que ofrece el máximo ahorro de memoria y permite cálculos más rápidos al emplear operaciones basadas en enteros, a menudo a costa de cierta pérdida de precisión.
¿Cuáles son los beneficios de una plataforma integrada de almacenamiento vectorial (base de datos) y búsqueda?
Una plataforma integrada que combina el almacenamiento y la búsqueda vectorial con las funcionalidades tradicionales de las bases de datos (como la búsqueda léxica y el filtrado) ofrece importantes beneficios. Simplifica la arquitectura al eliminar la necesidad de sincronizar datos entre sistemas separados. Lo más importante es que permite una poderosa búsqueda híbrida, donde la búsqueda léxica, la búsqueda vectorial y el filtrado de metadatos se pueden realizar en una única búsqueda unificada, lo que conduce a resultados más relevantes y a una experiencia de desarrollador más sencilla.
¿En qué se diferencia la búsqueda vectorial de la búsqueda léxica?
- La búsqueda léxica (p. ej., BM25) se basa en la coincidencia de palabras clave. Encuentra documentos que contienen los términos exactos presentes en la búsqueda. Es precisa, pero no entiende el contexto ni los sinónimos.
- La búsqueda vectorial se basa en el significado semántico. Encuentra documentos que son conceptualmente similares a la búsqueda, incluso si no comparten ninguna palabra clave. Es excelente para comprender la intención del usuario, pero puede ser menos precisa que la búsqueda léxica.
¿Cuáles son los casos de uso comunes para las bases de datos vectoriales? ¿Qué pueden diseñar los desarrolladores con la búsqueda vectorial?
Los desarrolladores usan bases de datos vectoriales para construir aplicaciones sofisticadas que dependen de la comprensión del significado semántico de los datos. Los casos de uso comunes incluyen:
- Búsqueda semántica: crear experiencias de búsqueda que comprendan la intención del usuario más allá de las palabras clave, como en el comercio electrónico o los sistemas de descubrimiento de documentos.
- Retrieval-Augmented Generation (RAG): proporcionar a los LLM y chatbots acceso a conocimiento externo y actualizado para generar respuestas más precisas y objetivas.
- Motores de recomendación: recomendar productos, artículos o medios basados en la similitud conceptual con los intereses o el comportamiento pasado de un usuario.
- Búsqueda de imágenes y multimodal: encontrar imágenes visualmente similares o buscar en distintos tipos de datos (p. ej., usar texto para encontrar una imagen).