Visualización de bases de datos vectoriales: Feder, una potente herramienta para la búsqueda por similitud
Con la ayuda de modelos de machine learning (ML), podemos codificar fácilmente datos no estructurados como fotos y videos en embeddings para la búsqueda por similitud vectorial. Para acelerar la búsqueda, se adoptan varios índices como IVF_FLAT y HNSW. Para seleccionar el índice más adecuado para la aplicación, los usuarios deben equilibrar la velocidad de búsqueda y la precisión.
Para ahorrarles molestias a los usuarios, nos enorgullece anunciar Feder, una herramienta para visualizar algoritmos ANNS. Con Feder, los usuarios pueden comprender diferentes tipos de índices y sus parámetros de una manera extraordinariamente directa. Feder también ayuda a visualizar datos de bases de datos vectoriales avanzadas, como Pinecone, lo que facilita la gestión de grandes volúmenes de datos.
Feder permite a los usuarios observar cómo se estructuran los diferentes índices, cómo se organizan los datos usando cada tipo de índice y cómo las distintas configuraciones de parámetros influyen en la estructura de indexación. Además, Feder también ayuda a visualizar todo el proceso de búsqueda por similitud vectorial y proporciona un registro detallado del acceso a los datos durante la búsqueda. Es particularmente útil para analizar y visualizar datos complejos, ayudando a los usuarios a identificar tendencias y patrones para tomar decisiones informadas.
Actualmente, Feder solo admite el HNSW de hnswlib. Pronto se admitirán más índices.
Introducción a las bases de datos vectoriales
Las bases de datos vectoriales son un tipo especializado de base de datos diseñado para almacenar, gestionar y consultar eficientemente grandes volúmenes de datos vectoriales. Los datos vectoriales representan información compleja —como imágenes, texto o audio— como vectores numéricos en un espacio vectorial de alta dimensión. Estas bases de datos están optimizadas para la búsqueda por similitud, lo que permite a los usuarios encontrar los vectores más similares a un vector de consulta dado. Esta capacidad es particularmente valiosa en aplicaciones como el reconocimiento de imágenes, el procesamiento del lenguaje natural y los sistemas de recomendación, donde comprender los matices de los datos es crucial.
Comprender Feder en bases de datos vectoriales
Feder está construido con JavaScript. Para usar Feder para visualización, primero debes crear un índice y guardar el archivo de índice desde Faiss o Hnswlib. Feder puede ayudar en el preprocesamiento y la limpieza de datos antes de la visualización. Luego Feder analiza el archivo cargado para obtener información del índice y se prepara para la visualización. Feder también gestiona y visualiza la calidad de los datos almacenados en bases de datos vectoriales. Durante una búsqueda por similitud vectorial, debes proporcionar un vector objetivo y la configuración de los parámetros de búsqueda. Luego Feder visualiza todo el proceso de búsqueda por ti, incluida la transformación de los datos en vectores numéricos usando un modelo de embedding.
federjs consta de dos partes:
- Feder-Core
- Analiza archivos de índice para obtener información detallada sobre los índices.
- Admite la consulta de índices y mantiene un registro detallado de los vectores accedidos durante una consulta de índice.
- Feder-View
- Permite la visualización de la estructura general de diferentes índices.
- Permite la visualización de todo el proceso de búsqueda por similitud con diferentes índices.
Además de federjs, Feder también proporciona federpy, una herramienta de Python. Con federpy, puedes visualizar directamente la estructura del índice y el proceso de búsqueda en IPython Notebook. O, como alternativa, puedes exportar la visualización a un archivo HTML y luego usar un navegador para iniciar el servicio web.
Obtén más información sobre cómo usar Feder leyendo la guía de usuario de Feder.
En este caso de uso, usamos VOC 2012, el conjunto de datos clásico de imágenes de ML que contiene más de 17,000 imágenes.
Primero, usamos Towhee, un pipeline de ML de código abierto, para codificar las imágenes del conjunto de datos VOC 2012 en vectores. Luego construimos un índice con Hnswlib y guardamos el archivo de índice. Finalmente, usamos Feder para la visualización. Feder optimiza el proceso de búsqueda sin necesidad de buscar en todo el conjunto de datos.
El enlace aquí proporciona una experiencia de usuario interactiva para que puedas ver la visualización de HNSW.
UN índice HNSW es multicapa y cada capa es una red interconectada. La capa inferior captura todos los objetos de datos de la base de datos, y los puntos de datos/nodos se vuelven más dispersos a medida que avanza hacia la capa superior. Hagamos una analogía con nuestro sistema de transporte moderno. Si viajas desde San Francisco a una tienda boutique escondida en el Upper East Side de la ciudad de Nueva York, probablemente primero tomes un vuelo a JFK o LaGuardia, donde encuentres el metro más conveniente para llevarte a Manhattan, y luego probablemente cambies a un autobús o incluso a una Citi bike para llegar a ese vecindario. De manera similar, si queremos encontrar rápidamente el nodo más cercano a tu objetivo, primero empezaremos buscando en la capa superior porque la búsqueda aquí es más rápida. Sin embargo, una desventaja es que, la mayoría de las veces, las capas y redes superiores no pueden llevarnos al destino deseado ni ayudarnos a encontrar los resultados esperados. Por lo tanto, pasamos a la siguiente capa inferior para obtener mayor precisión.
Al construir un índice HNSW, un nodo en la capa superior será seleccionado por el algoritmo como punto de entrada para iniciar la búsqueda. Feder utiliza procesamiento paralelo para mejorar el rendimiento de las consultas.
A continuación se muestra la visualización de las capas 4, 3 y 2 en un índice HNSW de cinco capas construido sobre el conjunto de datos VOC 2012.
Feder proporciona una experiencia de usuario interactiva. Por lo tanto, puedes elegir cualquier nodo para observarlo más de cerca. La ruta resaltada en amarillo representa el camino más corto con la menor cantidad de nodos de tránsito desde la entrada hasta llegar al nodo que elijas. Las rutas en blanco muestran todos los demás nodos a los que puede llegar el nodo elegido. Al hacer zoom, puedes ver más detalles y te darás cuenta de que cuantas más capas, más similares son los objetos conectados. Feder también transforma los datos sin procesar en formatos visuales.
Puedes ver estadísticas relevantes en el panel de resumen en la parte superior izquierda. El parámetro M decide a cuántos otros nodos puede llegar el nodo elegido en cada capa. Como podemos ver en la captura de pantalla, m= 8. Esto significa que, comenzando desde cualquier nodo aleatorio, el número máximo de nodos al que puede llegar este nodo aleatorio es 8.
Podemos modificar el valor de los parámetros para observar cómo se ve afectada la estructura del índice.
A medida que aumenta el valor de M, la estructura HNSW se vuelve más plana. El resultado de modificar el valor de ef es menos obvio en la visualización. De hecho, el parámetro ef influye en los enlaces generados durante la construcción del índice.
Después de cargar una imagen objetivo para la búsqueda, Feder mostrará todo el proceso de búsqueda con animación.
La animación que visualiza todo el proceso de búsqueda por similitud vectorial.
La visualización muestra un registro de los datos a los que se accedió en una búsqueda por similitud vectorial. Es decir, puedes ver todos los vectores que se han comparado en términos de su distancia al vector objetivo, mientras que aquellos que no participan en este proceso no se muestran en la animación.
Como podemos ver en la visualización, para los índices HNSW, la búsqueda comienza desde la capa superior, encuentra el nodo más cercano al objetivo en esta capa y luego desciende a la siguiente capa si todos los nodos accesibles en esta capa no están lo suficientemente cerca del objetivo.
Cabe señalar que la búsqueda en la capa inferior avanza por múltiples rutas. El parámetro ef decide la elección de la ruta de búsqueda. Para una introducción detallada a HNSW, lee el artículo "Efficient and robust approximate nearest neighbor search using hierarchical navigable small world graphs".
A través de la visualización interactiva, podemos ver que los nodos al comienzo de la ruta de búsqueda son menos relevantes. Pero a medida que avanza la búsqueda del vecino más cercano, la precisión de la búsqueda aumenta rápidamente. El panel de estadísticas de la izquierda demuestra que solo alrededor del 1% de las imágenes (unas 170 imágenes) de un total de 17.000 imágenes en el conjunto de datos VOC 2012 se acceden realmente durante la búsqueda. La tremenda aceleración en la búsqueda es posible gracias al índice HNSW.
También puedes establecer diferentes valores para los parámetros del índice y generar nuevos archivos de índice para comparar la estructura y la eficiencia de búsqueda. Feder visualiza el uso de embeddings vectoriales en búsquedas de similitud.
- Prueba Attu para gestionar tu base de datos vectorial con simplicidad de un solo clic
Características principales de Feder
Feder es una herramienta potente que ofrece varias características clave, lo que la convierte en una opción ideal para gestionar y consultar grandes cantidades de datos vectoriales:
Búsqueda vectorial avanzada: Feder admite algoritmos sofisticados de búsqueda vectorial, incluida la similitud del coseno y la distancia euclidiana, lo que permite a los usuarios encontrar los vectores más similares a un vector de consulta dado con alta precisión.
Escalabilidad: Diseñado para escalar horizontalmente, Feder puede manejar grandes cantidades de datos y altos volúmenes de consultas sin esfuerzo, garantizando un rendimiento robusto incluso a medida que crece tu conjunto de datos.
Gestión de datos: Feder proporciona un sistema integral de gestión de datos, que permite a los usuarios gestionar, actualizar y mantener fácilmente sus datos vectoriales, garantizando la integridad y accesibilidad de los datos.
Búsqueda semántica: Con soporte para búsqueda semántica, Feder permite a los usuarios buscar vectores en función de su significado y contexto, mejorando la relevancia y precisión de los resultados de búsqueda.
Casos de uso de Feder
La versatilidad de Feder lo hace adecuado para una amplia gama de aplicaciones, entre ellas:
Reconocimiento de imágenes: Feder puede utilizarse para desarrollar sistemas de reconocimiento de imágenes capaces de identificar objetos, personas y escenas en imágenes, lo que lo hace invaluable para aplicaciones en seguridad, retail y más.
Procesamiento del lenguaje natural: Feder puede impulsar sistemas de procesamiento del lenguaje natural que entienden y generan lenguaje humano, facilitando aplicaciones como chatbots, servicios de traducción y análisis de sentimiento.
Sistemas de recomendación: Feder puede emplearse para crear sistemas de recomendación que sugieren productos, servicios o contenido a los usuarios en función de sus preferencias y comportamiento, mejorando la experiencia y el compromiso del usuario.
Integración de Feder con bases de datos vectoriales
Feder puede integrarse sin problemas con otras bases de datos vectoriales para crear un sistema de gestión de datos vectoriales más completo y robusto. Los métodos de integración incluyen:
Importación/exportación de datos: Feder puede importar y exportar datos desde otras bases de datos vectoriales, lo que permite a los usuarios transferir datos fácilmente entre sistemas y mantener la coherencia entre plataformas.
Integración de API: Feder ofrece una API robusta, que permite a los desarrolladores integrarlo con otras bases de datos vectoriales y aplicaciones, facilitando una interoperabilidad fluida y una funcionalidad extendida.
Federación de consultas: Feder puede federar consultas entre múltiples bases de datos vectoriales, lo que permite a los usuarios buscar vectores en diferentes sistemas, mejorando así el alcance y la profundidad de su análisis de datos.
Al aprovechar estas capacidades de integración, los usuarios pueden mejorar su gestión de datos y el rendimiento de sus consultas, tomando decisiones más informadas y basadas en datos.
Sigue leyendo

Notion's Vector Search Is Excellent. Their Next Problem Is Harder.
Notion solved vector search scaling in two years. The next bottleneck — offline context engineering, unified data, and the real-time/offline gap — is harder.

Vector Databases vs. Time Series Databases
Use a vector database for similarity search and semantic relationships; use a time series database for tracking value changes over time.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.



