Visualisation de bases de données vectorielles : Feder, un outil puissant pour la recherche de similarité
À l’aide de modèles de machine learning (ML), nous pouvons facilement encoder des données non structurées comme des photos et des vidéos en embeddings pour la recherche de similarité vectorielle. Pour accélérer la recherche, divers indexes comme IVF_FLAT et HNSW sont adoptés. Pour sélectionner l’index le mieux adapté à l’application, les utilisateurs doivent faire un compromis entre vitesse de recherche et précision.
Pour éviter ces difficultés aux utilisateurs, nous sommes fiers d’annoncer Feder, un outil de visualisation des algorithmes ANNS. Avec Feder, les utilisateurs peuvent comprendre différents types d’index et leurs paramètres d’une manière d’une simplicité sans précédent. Feder aide également à visualiser les données issues de bases de données vectorielles avancées, telles que Pinecone, ce qui facilite la gestion de grands volumes de données.
Feder permet aux utilisateurs d’observer comment différents index sont structurés, comment les données sont organisées avec chaque type d’index, et comment différentes configurations de paramètres influencent la structure d’indexation. De plus, Feder aide également à visualiser l’ensemble du processus de recherche de similarité vectorielle et fournit un enregistrement détaillé des accès aux données pendant la recherche. Il est particulièrement utile pour analyser et visualiser des données complexes, aidant les utilisateurs à identifier des tendances et des motifs afin de prendre des décisions éclairées.
Actuellement, Feder ne prend en charge que le HNSW de hnswlib. D’autres index seront bientôt pris en charge.
Introduction aux bases de données vectorielles
Les bases de données vectorielles sont un type spécialisé de base de données conçu pour stocker, gérer et interroger efficacement de grands volumes de données vectorielles. Les données vectorielles représentent des informations complexes — telles que des images, du texte ou de l’audio — sous forme de vecteurs numériques dans un espace vectoriel de grande dimension. Ces bases de données sont optimisées pour la recherche de similarité, permettant aux utilisateurs de trouver les vecteurs les plus similaires à un vecteur de requête donné. Cette capacité est particulièrement précieuse dans des applications telles que la reconnaissance d’images, le traitement du langage naturel et les systèmes de recommandation, où la compréhension des nuances des données est cruciale.
Comprendre Feder dans les bases de données vectorielles
Feder est conçu avec JavaScript. Pour utiliser Feder à des fins de visualisation, vous devez d’abord construire un index et enregistrer le fichier d’index depuis Faiss ou Hnswlib. Feder peut aider au prétraitement et au nettoyage des données avant la visualisation. Ensuite, Feder analyse le fichier téléversé afin d’obtenir des informations sur l’index et se prépare pour la visualisation. Feder gère et visualise également la qualité des données stockées dans les bases de données vectorielles. Lors d’une recherche de similarité vectorielle, vous devez fournir un vecteur cible et la configuration des paramètres de recherche. Feder visualise ensuite l’ensemble du processus de recherche pour vous, y compris la transformation des données en vecteurs numériques à l’aide d’un modèle d’embedding.
federjs se compose de deux parties :
- Feder-Core
- Analyse les fichiers d’index afin d’obtenir des informations détaillées sur les index.
- Prend en charge l’interrogation des index et conserve un enregistrement détaillé des vecteurs consultés lors d’une requête d’index.
- Feder-View
- Permet la visualisation de la structure globale de différents index.
- Permet la visualisation de l’ensemble du processus de recherche de similarité avec différents index.
En plus de federjs, Feder fournit également federpy, un outil Python. Avec federpy, vous pouvez visualiser directement la structure de l’index et le processus de recherche dans IPython Notebook. Vous pouvez également exporter la visualisation vers un fichier HTML, puis utiliser un navigateur pour démarrer le service web.
Pour en savoir plus sur l’utilisation de Feder, consultez le Feder user guide.
Dans ce cas d’utilisation, nous utilisons VOC 2012, le jeu de données d’images ML classique qui contient plus de 17 000 images.
Tout d’abord, nous utilisons Towhee, un pipeline ML open source, pour encoder les images du jeu de données VOC 2012 en vecteurs. Ensuite, nous construisons un index avec Hnswlib et enregistrons le fichier d’index. Enfin, nous utilisons Feder pour la visualisation. Feder optimise le processus de recherche sans avoir besoin de parcourir l’ensemble du jeu de données.
Le lien ici offre une expérience utilisateur interactive pour vous permettre de voir la visualisation de HNSW.
UN index HNSW est multicouche et chaque couche est un réseau interconnecté. La couche inférieure capture tous les objets de données de la base de données, et les points de données/nœuds deviennent plus clairsemés à mesure qu’ils montent vers la couche supérieure. Faisons une analogie avec notre système de transport moderne. Si vous vous rendez de San Francisco à une boutique nichée dans l’Upper East Side de la ville de New York, vous prenez probablement d’abord un vol pour JFK ou LaGuardia, où vous trouvez le métro le plus pratique pour vous rendre à Manhattan, puis vous changez probablement pour un bus ou même un Citi bike afin d’atteindre ce quartier. De même, si nous voulons trouver rapidement le nœud le plus proche de votre cible, nous commencerons d’abord par rechercher dans la couche supérieure, car la recherche y est plus rapide. Cependant, un inconvénient est que, le plus souvent, les couches et réseaux supérieurs ne peuvent pas nous conduire à la destination souhaitée ni nous aider à trouver les résultats attendus. Par conséquent, nous nous tournons vers la couche suivante en dessous pour une meilleure précision.
Lors de la construction d’un index HNSW, un nœud de la couche supérieure sera sélectionné par l’algorithme comme point d’entrée pour commencer la recherche. Feder utilise le traitement parallèle pour améliorer les performances des requêtes.
Ci-dessous, la visualisation des couches 4, 3 et 2 dans un index HNSW à cinq couches construit sur le jeu de données VOC 2012.
Feder offre une expérience utilisateur interactive. Vous pouvez donc choisir n’importe quel nœud pour l’observer de plus près. Le chemin surligné en jaune représente le chemin le plus court, avec le moins de nœuds de transit, depuis l’entrée jusqu’au nœud que vous choisissez. Les chemins en blanc montrent tous les autres nœuds que le nœud choisi peut atteindre. En zoomant, vous pouvez voir davantage de détails et vous vous rendrez compte que plus il y a de couches, plus les objets connectés sont similaires. Feder transforme également les données brutes en formats visuels.
Vous pouvez consulter les statistiques pertinentes dans le panneau de vue d’ensemble situé en haut à gauche. Le paramètre M détermine combien d’autres nœuds le nœud choisi peut atteindre dans chaque couche. Comme nous pouvons le voir sur la capture d’écran, m= 8. Cela signifie qu’à partir de n’importe quel nœud aléatoire, le nombre maximal de nœuds que ce nœud aléatoire peut atteindre est de 8.
Nous pouvons modifier la valeur des paramètres pour observer comment la structure de l’index est affectée.
À mesure que la valeur de M augmente, la structure HNSW devient plus plate. Le résultat de la modification de la valeur de ef est moins évident dans la visualisation. En fait, le paramètre ef influence les liens générés lors de la construction de l’index.
Après avoir téléversé une image cible pour la recherche, Feder affichera tout le processus de recherche avec une animation.
L’animation qui visualise tout le processus de recherche de similarité vectorielle.
La visualisation affiche un enregistrement des données consultées lors d’une recherche de similarité vectorielle. Autrement dit, vous pouvez voir tous les vecteurs qui ont été comparés en fonction de leur distance au vecteur cible, tandis que ceux qui ne sont pas impliqués dans ce processus ne sont pas affichés dans l’animation.
Comme nous pouvons le voir dans la visualisation, pour les index HNSW, la recherche commence à partir de la couche la plus élevée, trouve le nœud le plus proche de la cible dans cette couche, puis descend à la couche suivante si tous les nœuds accessibles dans cette couche ne sont pas assez proches de la cible.
Il convient de noter que la recherche dans la couche inférieure progresse selon plusieurs chemins. Le paramètre ef détermine le choix du chemin de recherche. Pour une introduction détaillée à HNSW, lisez l’article "Efficient and robust approximate nearest neighbor search using hierarchical navigable small world graphs".
Grâce à la visualisation interactive, nous pouvons voir que les nœuds au début du chemin de recherche sont moins pertinents. Mais à mesure que la recherche du plus proche voisin progresse, la précision de la recherche augmente rapidement. Le panneau de statistiques à gauche montre qu’environ seulement 1 % des images (environ 170 images) sur un total de 17 000 images dans le jeu de données VOC 2012 sont effectivement consultées pendant la recherche. L’accélération considérable de la recherche est rendue possible grâce à l’index HNSW.
Vous pouvez également définir différentes valeurs pour les paramètres de l’index et générer de nouveaux fichiers d’index afin de comparer la structure et l’efficacité de la recherche. Feder visualise l’utilisation des embeddings vectoriels dans les recherches par similarité.
- Essayez Attu pour gérer votre base de données vectorielle avec une simplicité en un clic
Fonctionnalités clés de Feder
Feder est un outil puissant qui offre plusieurs fonctionnalités clés, ce qui en fait un choix idéal pour gérer et interroger de grandes quantités de données vectorielles :
Recherche vectorielle avancée : Feder prend en charge des algorithmes sophistiqués de recherche vectorielle, notamment la similarité cosinus et la distance euclidienne, permettant aux utilisateurs de trouver avec une grande précision les vecteurs les plus similaires à un vecteur de requête donné.
Évolutivité : Conçu pour évoluer horizontalement, Feder peut gérer sans effort de vastes quantités de données et des volumes élevés de requêtes, garantissant des performances robustes même lorsque votre jeu de données s’accroît.
Gestion des données : Feder fournit un système complet de gestion des données, permettant aux utilisateurs de gérer, mettre à jour et maintenir facilement leurs données vectorielles, tout en garantissant l’intégrité et l’accessibilité des données.
Recherche sémantique : Grâce à la prise en charge de la recherche sémantique, Feder permet aux utilisateurs de rechercher des vecteurs en fonction de leur signification et de leur contexte, améliorant ainsi la pertinence et la précision des résultats de recherche.
Cas d’utilisation de Feder
La polyvalence de Feder le rend adapté à un large éventail d’applications, notamment :
Reconnaissance d’images : Feder peut être utilisé pour développer des systèmes de reconnaissance d’images capables d’identifier des objets, des personnes et des scènes dans des images, ce qui le rend inestimable pour des applications dans la sécurité, le commerce de détail, et plus encore.
Traitement du langage naturel : Feder peut alimenter des systèmes de traitement du langage naturel qui comprennent et génèrent le langage humain, facilitant des applications comme les chatbots, les services de traduction et l’analyse des sentiments.
Systèmes de recommandation : Feder peut être employé pour créer des systèmes de recommandation qui suggèrent des produits, des services ou du contenu aux utilisateurs en fonction de leurs préférences et de leur comportement, améliorant ainsi l’expérience et l’engagement des utilisateurs.
Intégration de Feder avec des bases de données vectorielles
Feder peut être intégré de manière transparente à d’autres bases de données vectorielles afin de créer un système de gestion des données vectorielles plus complet et plus robuste. Les méthodes d’intégration comprennent :
Importation/Exportation de données : Feder peut importer et exporter des données depuis d’autres bases de données vectorielles, permettant aux utilisateurs de transférer facilement des données entre les systèmes et de maintenir la cohérence entre les plateformes.
Intégration API : Feder offre une API robuste, permettant aux développeurs de l’intégrer à d’autres bases de données vectorielles et applications, facilitant une interopérabilité fluide et des fonctionnalités étendues.
Fédération de requêtes : Feder peut fédérer des requêtes sur plusieurs bases de données vectorielles, permettant aux utilisateurs de rechercher des vecteurs dans différents systèmes, élargissant ainsi la portée et la profondeur de leur analyse de données.
En exploitant ces capacités d’intégration, les utilisateurs peuvent améliorer leur gestion des données et les performances de leurs requêtes, et prendre des décisions plus éclairées et fondées sur les données.
Continuer à lire

Zilliz Cloud Introduces Advanced BYOC-I Solution for Ultimate Enterprise Data Sovereignty
Explore Zilliz Cloud BYOC-I, the solution that balances AI innovation with data control, enabling secure deployments in finance, healthcare, and education sectors.

Bringing AI to Legal Tech: The Role of Vector Databases in Enhancing LLM Guardrails
Discover how vector databases enhance AI reliability in legal tech, ensuring accurate, compliant, and trustworthy AI-powered legal solutions.

Introducing DeepSearcher: A Local Open Source Deep Research
In contrast to OpenAI’s Deep Research, this example ran locally, using only open-source models and tools like Milvus and LangChain.



