🚀 Essayez Zilliz Cloud, la version entièrement gérée de Milvus, gratuitement—découvrez des performances 10x plus rapides ! Essayez maintenant>>

milvus-logo
LFAI

Que contient Milvus 1.0 ?

  • Engineering
April 29, 2021
milvus

Milvus.jpeg Milvus.jpeg

Milvus est une base de données vectorielles open-source conçue pour gérer des ensembles massifs de données vectorielles de l'ordre du million, du milliard, voire du trillion. Milvus a de vastes applications couvrant la découverte de nouveaux médicaments, la vision par ordinateur, la conduite autonome, les moteurs de recommandation, les chatbots, et bien plus encore.

En mars 2021, Zilliz, la société à l'origine de Milvus, a publié la première version de support à long terme de la plateforme, Milvus v1.0. Après des mois de tests approfondis, une version stable et prête à la production de la base de données vectorielles la plus populaire au monde est prête pour le prime time. Cet article de blog couvre quelques principes fondamentaux de Milvus ainsi que les principales caractéristiques de la version 1.0.


Distributions de Milvus

Milvus est disponible en distributions CPU-only et GPU-enabled. La première s'appuie exclusivement sur le CPU pour la construction d'index et la recherche ; la seconde permet une recherche et une construction d'index hybrides CPU et GPU qui accélèrent encore plus Milvus. Par exemple, avec la distribution hybride, le CPU peut être utilisé pour la recherche et le GPU pour la construction de l'index, ce qui améliore encore l'efficacité des requêtes.

Les deux distributions Milvus sont disponibles dans Docker. Vous pouvez soit compiler Milvus à partir de Docker (si votre système d'exploitation le prend en charge), soit compiler Milvus à partir du code source sous Linux (les autres systèmes d'exploitation ne sont pas pris en charge).


Intégration de vecteurs

Les vecteurs sont stockés dans Milvus en tant qu'entités. Chaque entité possède un champ d'identification de vecteur et un champ de vecteur. Milvus v1.0 ne prend en charge que les ID de vecteurs entiers. Lors de la création d'une collection dans Milvus, les ID de vecteur peuvent être générés automatiquement ou définis manuellement. Milvus garantit que les ID de vecteur générés automatiquement sont uniques, mais les ID définis manuellement peuvent être dupliqués dans Milvus. En cas de définition manuelle des identifiants, les utilisateurs sont tenus de s'assurer que tous les identifiants sont uniques.


Partitions

Milvus permet de créer des partitions dans une collection. Dans les situations où les données sont insérées régulièrement et où les données historiques ne sont pas significatives (par exemple, les données en continu), les partitions peuvent être utilisées pour accélérer la recherche de similarités vectorielles. Une collection peut comporter jusqu'à 4 096 partitions. La spécification d'une recherche vectorielle dans une partition spécifique restreint la recherche et peut réduire de manière significative le temps d'interrogation, en particulier pour les collections qui contiennent plus d'un trillion de vecteurs.


Optimisation des algorithmes d'indexation

Milvus est construit au-dessus de plusieurs bibliothèques d'index largement adoptées, notamment Faiss, NMSLIB et Annoy. Milvus est bien plus qu'une simple enveloppe pour ces bibliothèques d'index. Voici quelques-unes des principales améliorations apportées aux bibliothèques sous-jacentes :

  • Optimisation des performances de l'index IVF à l'aide de l'algorithme Elkan k-means.
  • Optimisations de la recherche FLAT.
  • Prise en charge de l'index hybride IVF_SQ8H, qui peut réduire la taille des fichiers d'index jusqu'à 75 % sans sacrifier la précision des données. IVF_SQ8H est basé sur IVF_SQ8, avec un rappel identique mais une vitesse d'interrogation beaucoup plus rapide. Il a été conçu spécifiquement pour Milvus afin d'exploiter la capacité de traitement parallèle des GPU et le potentiel de synergie entre le co-traitement CPU/GPU.
  • Compatibilité dynamique du jeu d'instructions.


Recherche, construction d'index et autres optimisations de Milvus

Les optimisations suivantes ont été apportées à Milvus pour améliorer les performances de recherche et de construction d'index.

  • Les performances de recherche sont optimisées lorsque le nombre de requêtes (nq) est inférieur au nombre de threads de l'unité centrale.
  • Milvus combine les demandes de recherche d'un client qui utilisent le même topK et les mêmes paramètres de recherche.
  • La construction de l'index est suspendue lorsque les demandes de recherche arrivent.
  • Milvus précharge automatiquement les collections en mémoire au démarrage.
  • Plusieurs dispositifs GPU peuvent être affectés à l'accélération de la recherche de similarités vectorielles.


Mesures de distance

Milvus est une base de données vectorielle conçue pour permettre la recherche de similarités vectorielles. La plateforme a été conçue pour les MLOps et les applications d'IA de niveau de production. Milvus prend en charge un large éventail de mesures de distance pour calculer la similarité, telles que la distance euclidienne (L2), le produit intérieur (IP), la distance de Jaccard, la distance de Tanimoto, la distance de Hamming, la superstructure et la sous-structure. Les deux dernières mesures sont couramment utilisées dans la recherche moléculaire et la découverte de nouveaux médicaments assistée par l'IA.


Logging

Milvus prend en charge la rotation des journaux. Dans le fichier de configuration du système, milvus.yaml, vous pouvez définir la taille d'un seul fichier journal, le nombre de fichiers journaux et la sortie du journal vers stdout.


Solution distribuée

Avec un nœud d'écriture et un nombre illimité de nœuds de lecture, Mishards libère le potentiel de calcul de la grappe de serveurs. Ses fonctionnalités incluent le transfert de requêtes, le fractionnement lecture/écriture, la mise à l'échelle dynamique/horizontale, et bien d'autres encore.


Surveillance

Milvus est compatible avec Prometheus, une boîte à outils open-source de surveillance des systèmes et d'alertes. Milvus ajoute la prise en charge de Pushgateway dans Prometheus, ce qui permet à Prometheus d'acquérir des mesures par lots de courte durée. Le système de surveillance et d'alerte fonctionne comme suit :

  • Le serveur Milvus envoie des données métriques personnalisées à Pushgateway.
  • Pushgateway veille à ce que les données de mesure éphémères soient envoyées en toute sécurité à Prometheus.
  • Prometheus continue d'extraire des données de Pushgateway.
  • Alertmanager permet de définir le seuil d'alerte pour différents indicateurs et d'envoyer des alertes par courrier électronique ou par message.


Gestion des métadonnées

Milvus utilise par défaut SQLite pour la gestion des métadonnées. SQLite est implémenté dans Milvus et ne nécessite pas de configuration. Dans un environnement de production, il est recommandé d'utiliser MySQL pour la gestion des métadonnées.


Participez à notre communauté open-source :

  • Trouvez ou contribuez à Milvus sur GitHub.
  • Interagissez avec la communauté via Slack.
  • Connectez-vous avec nous sur Twitter.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Continuer à Lire