Milvus a été conçu pour la recherche de similitudes vectorielles à grande échelle (pensez à des trillions)
Chaque jour, un nombre incalculable d'informations critiques pour l'entreprise sont gâchées parce que les sociétés ne parviennent pas à donner un sens à leurs propres données. Les données non structurées, telles que le texte, l'image, la vidéo et l'audio, représenteraient 80 % de l'ensemble des données, mais seulement 1 % d'entre elles sont analysées. Heureusement, l'intelligence artificielle (IA), les logiciels libres et la loi de Moore rendent l'analyse à l'échelle de la machine plus accessible que jamais. Grâce à la recherche par similarité vectorielle, il est possible d'extraire de la valeur de vastes ensembles de données non structurées. Cette technique consiste à convertir des données non structurées en vecteurs de caractéristiques, un format de données numériques convivial qui peut être traité et analysé en temps réel.
La recherche de similarités vectorielles a des applications dans les domaines du commerce électronique, de la sécurité, du développement de nouveaux médicaments, etc. Ces solutions s'appuient sur des ensembles de données dynamiques contenant des millions, des milliards, voire des trillions de vecteurs, et leur utilité dépend souvent de l'obtention de résultats quasi instantanés. Milvus est une solution de gestion de données vectorielles open-source conçue dès le départ pour gérer et rechercher efficacement de grands ensembles de données vectorielles. Cet article présente l'approche de Milvus en matière de gestion des données vectorielles, ainsi que la manière dont la plateforme a été optimisée pour la recherche de similarités vectorielles.
Aller à :
- Milvus a été conçu pour la recherche de similarités vectorielles à grande échelle (pensez à un billion)
- Les arbres LSM assurent l'efficacité de la gestion dynamique des données à grande échelle- Un segment de vecteurs à 10 dimensions dans Milvus.
- La gestion des données est optimisée pour un accès rapide et une fragmentation limitée- Illustration de l'insertion de vecteurs dans Milvus- Fichiers de données interrogés avant la fusion- Fichiers de données interrogés après la fusion.
- La recherche de similarité est accélérée par l'indexation des données vectorielles.
- En savoir plus sur Milvus
Les arbres LSM assurent l'efficacité de la gestion dynamique des données à grande échelle
Pour assurer une gestion dynamique efficace des données, Milvus utilise une structure de données de type log-structured merge-tree (arbre LSM). Les arbres LSM sont bien adaptés à l'accès aux données qui comportent un grand nombre d'insertions et de suppressions. Pour des informations détaillées sur les attributs spécifiques des arbres LSM qui contribuent à garantir une gestion dynamique des données de haute performance, voir la recherche originale publiée par ses inventeurs. Les arbres LSM sont la structure de données sous-jacente utilisée par de nombreuses bases de données populaires, notamment BigTable, Cassandra et RocksDB.
Les vecteurs existent en tant qu'entités dans Milvus et sont stockés dans des segments. Chaque segment contient entre un et 8 millions d'entités. Chaque entité possède des champs pour un identifiant unique et des entrées vectorielles, ces dernières représentant de 1 à 32768 dimensions.
Blog_Milvus a été conçu pour la recherche de similitudes vectorielles à grande échelle (pensez à des trillions)_2.png
La gestion des données est optimisée pour un accès rapide et une fragmentation limitée.
Lorsqu'il reçoit une demande d'insertion, Milvus écrit de nouvelles données dans le journal en avance sur l'écriture (WAL). Une fois la demande enregistrée avec succès dans le fichier journal, les données sont écrites dans un tampon mutable. Enfin, l'un des trois déclencheurs permet à la mémoire tampon de devenir immuable et d'être vidée sur le disque :
- Intervalles temporels : Les données sont régulièrement transférées sur le disque à des intervalles définis (1 seconde par défaut).
- Taille de la mémoire tampon : Les données accumulées atteignent la limite supérieure de la mémoire tampon mutable (128 Mo).
- Déclenchement manuel : Les données sont vidées manuellement sur le disque lorsque le client appelle la fonction de vidange.
Blog_Milvus a été conçu pour la recherche de similitudes vectorielles à grande échelle (pensez à des trillions)_3.png
Les utilisateurs peuvent ajouter des dizaines ou des millions de vecteurs à la fois, générant des fichiers de données de tailles différentes au fur et à mesure de l'insertion de nouveaux vecteurs. Il en résulte une fragmentation qui peut compliquer la gestion des données et ralentir la recherche de similitudes vectorielles. Pour éviter une fragmentation excessive des données, Milvus fusionne constamment des segments de données jusqu'à ce que la taille du fichier combiné atteigne une limite configurable par l'utilisateur (par exemple, 1 Go). Par exemple, avec une limite supérieure de 1 Go, l'insertion de 100 millions de vecteurs à 512 dimensions ne produira que 200 fichiers de données.
Dans les scénarios de calcul incrémental où les vecteurs sont insérés et recherchés simultanément, Milvus rend les données vectorielles nouvellement insérées immédiatement disponibles pour la recherche avant de les fusionner avec d'autres données. Après la fusion des données, les fichiers de données d'origine sont supprimés et le fichier fusionné nouvellement créé est utilisé pour la recherche.
Blog_Milvus a été conçu pour la recherche de similitudes vectorielles à grande échelle (Think Trillion)_4.png
Blog_Milvus a été conçu pour la recherche de similitudes vectorielles à grande échelle (Think Trillion)_5.png
La recherche de similarité est accélérée par l'indexation des données vectorielles.
Par défaut, Milvus s'appuie sur une recherche par force brute lorsqu'il interroge des données vectorielles. Également connue sous le nom de recherche exhaustive, cette approche vérifie toutes les données vectorielles à chaque fois qu'une requête est exécutée. Avec des ensembles de données contenant des millions ou des milliards de vecteurs multidimensionnels, ce processus est trop lent pour être utile dans la plupart des scénarios de recherche de similarités. Pour accélérer le temps d'interrogation, des algorithmes sont utilisés pour construire un index vectoriel. Les données indexées sont regroupées de manière à ce que les vecteurs similaires soient plus proches les uns des autres, ce qui permet au moteur de recherche de similitudes de n'interroger qu'une partie de l'ensemble des données, réduisant ainsi considérablement les temps d'interrogation tout en sacrifiant la précision.
La plupart des types d'index vectoriels pris en charge par Milvus utilisent des algorithmes de recherche par approximation du plus proche voisin (ANN). Il existe de nombreux index ANN et chacun d'entre eux s'accompagne de compromis entre les performances, la précision et les exigences en matière de stockage. Milvus prend en charge les index basés sur la quantification, les graphes et les arbres, qui répondent tous à différents scénarios d'application. Voir la documentation technique de Milvus pour plus d'informations sur la création d'index et les types spécifiques d'index vectoriels pris en charge.
La construction d'index génère beaucoup de métadonnées. Par exemple, l'indexation de 100 millions de vecteurs à 512 dimensions enregistrés dans 200 fichiers de données donnera lieu à 200 fichiers d'index supplémentaires. Un système efficace de gestion des métadonnées est nécessaire pour vérifier efficacement l'état des fichiers et pour supprimer ou insérer de nouveaux fichiers. Milvus utilise le traitement transactionnel en ligne (OLTP), une technique de traitement des données bien adaptée à la mise à jour et/ou à la suppression de petites quantités de données dans une base de données. Milvus utilise SQLite ou MySQL pour gérer les métadonnées.
En savoir plus sur Milvus
Milvus est une plateforme de gestion de données vectorielles open-source actuellement en incubation au LF AI & Data, une organisation parapluie de la Fondation Linux. Milvus a été rendu open source en 2019 par Zilliz, l'entreprise de logiciels de science des données qui a initié le projet. De plus amples informations sur Milvus sont disponibles sur son site web. Si vous êtes intéressé par la recherche de similarités vectorielles, ou par l'utilisation de l'IA pour libérer le potentiel des données non structurées, rejoignez notre communauté open-source sur GitHub.
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word