Milvus est une base de données vectorielle open source conçue pour la recherche de similarité à grande échelle et les charges de travail d'IA. Elle stocke, indexe et gère les embeddings vectoriels de haute dimension générés par des modèles d'apprentissage automatique, permettant une recherche approximative du plus proche voisin (ANN) rapide sur des milliards de vecteurs. Milvus est largement utilisé dans des applications telles que les systèmes de recommandation, la recherche d'images et de vidéos, le traitement du langage naturel et les pipelines de génération augmentée par récupération (RAG) pour les grands modèles de langage.
Le projet a été initié par Zilliz, une entreprise fondée en 2017 par Charles Xie, et la première version stable, Milvus 1.0, a été publiée en septembre 2019. Milvus 2.0, lancé en 2021, a introduit une architecture cloud-native avec une séparation du stockage et du calcul, prenant en charge le déploiement distribué et l'évolutivité horizontale. En 2024, Milvus est devenu l'une des bases de données vectorielles open source les plus populaires, avec une communauté solide et une adoption par plus d'un millier d'organisations dans le monde.
Architecture et Conception
Milvus suit une architecture de stockage partagé qui découple le plan de données et le plan de contrôle. Le système comprend plusieurs composants principaux : les services de coordination (root coord, data coord, query coord, index coord), les nœuds de travail (nœuds de données, nœuds de requête, nœuds d'index) et un courtier de messages (Pulsar ou Kafka) pour la journalisation par écriture anticipée. Cette conception permet une mise à l'échelle élastique des ressources de calcul indépendamment du stockage, qui est soutenu par un stockage d'objets comme AWS S3 ou MinIO.
La base de données prend en charge plusieurs types d'index pour la recherche ANN, notamment IVF (fichier inversé), HNSW (petit monde navigable hiérarchique) et DiskANN, qui permet une recherche efficace même sur des données résidant sur disque. Milvus prend également en charge le filtrage scalaire combiné à la recherche vectorielle, permettant des requêtes hybrides avec des prédicats de métadonnées. Le système fournit des SDK en Python, Java, Go et Node.js, ainsi qu'une API RESTful.
Fonctionnalités et Capacités
Milvus offre un ensemble riche de fonctionnalités adaptées aux applications d'IA en production. Il prend en charge les opérations d'insertion, de mise à jour et de suppression en temps réel, avec une visibilité des données en quelques millisecondes. Le système offre une haute disponibilité grâce à des mécanismes de réplication et prend en charge la multi-tenant avec isolation par espace de noms. Milvus inclut également une surveillance et des métriques intégrées via Prometheus et Grafana, et s'intègre avec des plateformes d'orchestration majeures comme Kubernetes.
Une caractéristique notable est la prise en charge d'un schéma dynamique, permettant aux utilisateurs d'ajouter des champs sans temps d'arrêt. Milvus fournit également une fonctionnalité de partitionnement pour améliorer les performances des requêtes en réduisant l'espace de recherche. Pour les déploiements à grande échelle, le système prend en charge le partitionnement (sharding) et peut gérer jusqu'à des milliards de vecteurs avec une latence inférieure à la milliseconde pour les requêtes top-k. Le projet a également introduit Milvus Lite, une version légère pour le développement et les tests locaux.
Écosystème et Intégrations
Milvus s'intègre avec une large gamme d'outils d'IA et de données. Il est un composant central de l'écosystème Large language model, souvent utilisé dans les pipelines génération augmentée par récupération aux côtés de frameworks comme LangChain et LlamaIndex. Milvus prend en charge les modèles d'embedding de fournisseurs tels que OpenAI et Anthropic, et peut être déployé sur les principales plateformes cloud, y compris Amazon Web Services, Microsoft Azure et Google Cloud.
Le projet propose également un service cloud géré appelé Zilliz Cloud, qui offre une expérience Milvus entièrement gérée avec des fonctionnalités supplémentaires comme la sauvegarde des données et la réplication inter-régions. Milvus a été adopté par des entreprises de divers secteurs, notamment le commerce électronique, la finance, la santé et la conduite autonome. Il est également utilisé dans des contextes de recherche et académiques, souvent en conjonction avec des frameworks Machine learning et Deep learning comme PyTorch et TensorFlow.
Performance et Évolutivité
Milvus est conçu pour une performance et une évolutivité élevées. Dans les tests de référence, il a démontré la capacité de rechercher plus d'un milliard de vecteurs avec une latence moyenne inférieure à 10 millisecondes sur un cluster de matériel standard. Le système exploite les optimisations SIMD (instruction unique, données multiples) et l'accélération GPU pour la construction d'index et le traitement des requêtes. Milvus prend en charge l'indexation basée sur CPU et GPU, avec le support GPU pour NVIDIA CUDA.
L'évolutivité de Milvus est obtenue grâce à son architecture distribuée, qui permet une mise à l'échelle horizontale des nœuds de requête et de données. Le système peut gérer un débit d'écriture élevé, avec la capacité d'ingérer des millions de vecteurs par seconde dans des configurations optimisées. Milvus fournit également une fonctionnalité de fichiers mappés en mémoire pour réduire l'utilisation de la mémoire, permettant de traiter des ensembles de données plus volumineux avec une RAM limitée.
Communauté et Gouvernance
Milvus est un projet open source sous licence Apache 2.0, hébergé sur GitHub. Le projet est gouverné par une communauté de contributeurs, avec Zilliz jouant un rôle clé dans son développement. Milvus est devenu un projet diplômé de la Linux Foundation AI & Data en 2023, signifiant sa maturité et sa gouvernance. La communauté organise des rencontres régulières, des webinaires et une conférence annuelle des utilisateurs appelée Unstructured Data Summit.
En 2024, le référentiel GitHub de Milvus compte plus de 25 000 étoiles et plus de 500 contributeurs. Le projet maintient un site de documentation complet, un blog et une communauté Slack pour les utilisateurs et les développeurs. Milvus propose également un programme de certification pour les développeurs et les administrateurs, et il est inclus dans le paysage cloud natif de la CNCF.
Cas d'Utilisation et Applications
Milvus est utilisé dans une variété d'applications réelles. Dans le commerce électronique, il alimente les moteurs de recommandation de produits et de recherche visuelle. Dans le secteur financier, il est utilisé pour la détection de fraude et l'analyse de risques en faisant correspondre les modèles de transactions. Dans le domaine de la santé, Milvus prend en charge l'analyse d'images médicales et la recherche de similarité entre patients. Pour les applications Generative AI, Milvus est un choix populaire pour construire des bases de connaissances et des systèmes de recherche sémantique qui améliorent les capacités des modèles basés sur Transformer (architecture).
Un autre cas d'utilisation significatif est la conduite autonome, où Milvus est utilisé pour stocker et récupérer des embeddings de données de capteurs pour la compréhension de scènes. Dans l'industrie des médias, il permet la récupération de vidéos et d'audio basée sur le contenu. Milvus est également utilisé en cybersécurité pour la détection de menaces et en bioinformatique pour la recherche de similarité de séquences génétiques. La polyvalence de Milvus en fait un outil fondamental pour de nombreuses initiatives Artificial intelligence.
Orientations Futures
Le développement de Milvus continue d'évoluer avec les besoins de la communauté de l'IA. Les plans futurs incluent une meilleure prise en charge de la recherche hybride avec des capacités de texte intégral et vectoriel, des performances améliorées sur les architectures ARM et une meilleure intégration avec les frameworks Neural network. Le projet explore également l'utilisation d'index appris et de techniques de quantification pour réduire davantage l'empreinte mémoire et améliorer la vitesse de recherche.
Alors que la demande pour les applications Machine learning et Deep learning croît, Milvus vise à rester à la pointe de la technologie des bases de données vectorielles, fournissant une base robuste et évolutive pour la construction d'applications intelligentes. La communauté travaille activement à améliorer l'expérience des développeurs, avec des API plus intuitives et de meilleurs outils pour la gestion des données et l'observabilité.