Milvus est une base de données vectorielle open source développée par Zilliz. Milvus permet un stockage évolutif des grandes quantités de plongements vectoriels, ainsi qu’une recherche de similarités ultra-performante sur les données vectorielles.
Zilliz a développé Milvus pour la première fois en 2017 et a contribué au projet de la Linux Foundation en 2020. Milvus est désormais disponible à la fois en tant que logiciel open source sous licence Apache 2.0 et en tant que service cloud entièrement géré par Zilliz.
Les bases de données vectorielles stockent et gèrent des jeux de données sous forme de vecteurs. Elles peuvent aider les entreprises à gérer des données non structurées et sont essentielles aux efforts d’intelligence artificielle (IA) et de machine learning (ML) avancés.
Les vecteurs sont des tableaux de nombres qui représentent des concepts et des objets complexes, tels que des mots et des images.
Les données non structurées (telles que le texte, la vidéo et l’audio) représentent aujourd’hui une part importante des données d’entreprise, mais les bases de données traditionnelles sont souvent mal adaptées à l’organisation et à la gestion de ces données.
Les organisations peuvent alimenter ces données dans des modèles de plongements d’apprentissage profond spécialisés, qui produisent des représentations vectorielles appelées « plongements » . Par exemple, le mot « chat » peut être représenté par le vecteur [0,2 ; -0,4 ; 0,7], tandis que le mot « chien » peut être représenté par [0,6 ; 0,1 ; 0,5].
La transformation des données en vecteurs permet de stocker différents types de données non structurées dans un format partagé au sein d’une seule et même base de données vectorielle.
Les vecteurs aident également les organisations à exploiter la valeur de ces données pour l’IA et le ML. Les vecteurs capturent les relations sémantiques entre les éléments, ce qui permet un traitement efficace par les grands modèles de langage (LLM) et les outils d’IA générative. La plupart des applications avancées d’IA et de ML s’appuient aujourd’hui sur des vecteurs pour l’entraînement et la génération de contenu.
Comme d’autres bases de données vectorielles, Milvus permet aux entreprises de gérer et d’organiser les plongements vectoriels. Associant stockage hautement évolutif et recherche vectorielle efficace, la base de données vectorielle Milvus est une solution de choix pour la génération augmentée par récupération (RAG), les systèmes de recommandation, ainsi que d’autres applications d’IA.
Milvus est une base de données vectorielle cloud native dotée d’une architecture multicouche basée sur des microservices. Milvus sépare les ressources de stockage et de calcul, ce qui permet aux organisations de faire évoluer chaque couche indépendamment et horizontalement.
Milvus est compatible avec plusieurs modèles d’intégration différents. Les organisations peuvent connecter leurs modèles à Milvus, qui ingère les intégrations ainsi que les métadonnées et autres informations pertinentes. Milvus prend en charge les téléchargements en continu et par lots.
Ce système comporte quatre couches :
Couche d’accès : cette couche externe accepte les entrées des utilisateurs et des services et renvoie les sorties.
Service de coordination : Zilliz considère cette couche comme le « cerveau » du système, car elle orchestre l’équilibrage de charge, la gestion des données, l’exécution des requêtes et d’autres tâches importantes.
Nœuds de travail : cette couche exécute les requêtes, met à jour les données et construit les index.
Couche de stockage d’objets : cette couche comprend un magasin de métadonnées, un log broker (courtier en journaux) qui enregistre les modifications apportées aux données en temps réel, ainsi qu’un magasin d’objets qui regroupe instantanés de journaux, fichiers d’index et résultats de calcul intermédiaires.
Milvus prend en charge les recherches de similarité vectorielle haute performance, un type de recherche vectorielle qui renvoie des résultats sémantiquement similaires à une requête. L’avantage de la recherche de similarité est qu’elle n’est pas limitée aux correspondances exactes, comme le serait une recherche par mot-clé traditionnelle.
Par exemple, une recherche par mot-clé pour « meilleur restaurant de pizza » ne renverrait que des résultats contenant les mots « meilleur », « restaurant » et « pizza ». Une recherche de similarité pour le même mot-clé trouverait tous les résultats pour les pizzerias hautement recommandées, même si les mots exacts « meilleur restaurant de pizza » ne sont pas utilisés dans le contenu.
Milvus prend en charge plusieurs types de recherche de similarité, y compris la recherche approximative des plus proches voisins (ANN) top-k et l’ANN de portée.
Milvus propose également des recherches hybrides, qui associent des recherches vectorielles sémantiques à d’autres critères, tels que le filtrage des métadonnées ou la recherche par mot-clé.
Les recherches hybrides peuvent améliorer l’efficacité et la pertinence des résultats. Prenons l’exemple d’une recherche alliant mots-clés et vecteurs. Elle peut d’abord utiliser des mots-clés spécifiques pour filtrer les résultats en fonction de correspondances exactes, puis se servir de la recherche de similarité vectorielle pour parcourir ces résultats filtrés en quête du contenu le plus pertinent sur le plan sémantique.
Milvus prend en charge plusieurs types d’indexation, notamment les index HNSW (Hierarchical navigable Small World), les index de fichiers inversés (IVF) et les index basés sur le processeur graphique (GPU).
L’indexation des vecteurs peut contribuer à accélérer les recherches. Par exemple, le HNSW regroupe les vecteurs similaires pendant le processus de construction de l’index, ce qui facilite et accélère la recherche de résultats pertinents.
Les couches de Milvus peuvent évoluer indépendamment les unes des autres, ce qui permet aux entreprises de gérer de manière rentable et efficace des volumes considérables de données vectorielles et des recherches intensives.
Milvus propose de nombreux kits de développement logiciel (SDK) pour prendre en charge le développement dans différents langages, notamment Python (pymilvus), Java et Go.
Milvus peut également s’intégrer à des outils d’analyse tels qu’Apache Spark, à des cadres tels que LangChain et à des modèles d’IA générative tels que IBM Watson, Llama de Meta et GPT d’OpenAI.
Une vaste communauté open source contribue à la correction des bogues, aux mises à jour et à d’autres améliorations des dépôts GitHub de Milvus.
Pinecone et Milvus offrent tous deux une recherche à faible latence et un stockage évolutif, mais Pinecone est une base de données vectorielle propriétaire et n’est disponible que sous forme de service géré.
Comme Milvus, Weaviate est open source et prend en charge les recherches hybrides. Toutefois, Milvus offre plus de types d’indexation que Weaviate.
Autre base de données vectorielle open source, Qdrant est réputée pour ses puissantes capacités de filtrage des métadonnées. Si Qdrant est bien adaptée aux utilisations à échelle modérée, Milvus peut généralement traiter des volumes plus importants de données vectorielles.
Chroma met l’accent sur la facilité d’utilisation et la rapidité des déploiements locaux. Moins évolutif, Chroma ne possède pas d’architecture distribuée. Si Chroma est couramment utilisé pour le prototypage et les tests, Milvus peut prendre en charge un plus large éventail de cas d’utilisation.
Les entreprises font appel à Milvus pour prendre en charge de nombreuses applications d’IA, notamment :
Génération augmentée par récupération (RAG)
Les systèmes de recommandation
Les recherches dans les médias
La détection des anomalies et des fraudes
La RAG est une architecture qui relie les modèles d’IA à des bases de connaissances externes pour les aider à fournir des résultats plus pertinents et plus précis.
Milvus est couramment employé dans les implémentations de RAG en raison de sa prise en charge des recherches hybrides efficaces. En alliant la compréhension contextuelle de la recherche sémantique à la précision de la recherche par mot-clé et du filtrage des métadonnées, Milvus peut aider à faire émerger des documents, des extraits de code et d’autres informations pertinents à partir de sources RAG.
CacheGPT, un cache sémantique open source pour les LLM développé par Zilliz, aide également Milvus à prendre en charge les implémentations RAG. CacheGPT stocke les réponses des applications d’IA générative sous forme de plongements vectoriels.
Les services connectés (tels que les interfaces RAG) n’ont pas besoin d’effectuer un appel API à l’IA générative pour chaque recherche. En effet, ils peuvent d’abord consulter le cache et appeler l’IA générative uniquement si la réponse n’y figure pas.
Milvus est populaire dans les systèmes de recommandation qui font correspondre le contenu, les produits et les publicités aux utilisateurs en fonction de leurs comportements passés.
Les préférences des utilisateurs peuvent être représentées sous forme de vecteurs, et une recherche de similarité peut faire apparaître les représentations vectorielles des produits, publicités et contenus similaires aux préférences de l’utilisateur.
Les capacités de recherche de similarité de Milvus peuvent aider à rationaliser la recherche d’images, de fichiers audio, de vidéos et d’autres médias.
Milvus permet de repérer les défauts des produits en comparant les vecteurs des images de produits à ceux représentant la forme appropriée de ces derniers. Les différences entre les vecteurs sont susceptibles d’indiquer la présence de défauts.
Milvus peut également aider à repérer des anomalies dans d’autres contextes. En matière de cybersécurité, les vecteurs représentant l’activité autorisée sur le réseau peuvent être comparés à ceux représentant une activité malveillante connue. De même, dans le secteur financier, les vecteurs représentant les transactions peuvent être analysés pour identifier les écarts susceptibles d’indiquer une fraude.