Qu'est-ce que la base de données vectorielle Milvus?

Milvus a été créé en 2019 dans le but principal de stocker, indexer et gérer des vecteurs d'incorporation à grande échelle générés par des réseaux neuronaux profonds et d'autres modèles d'apprentissage automatique (ML).

En tant que base de données spécifiquement conçue pour gérer les requêtes de vecteurs d'entrée, Milvus peut indexer des vecteurs à l'échelle de dizaines de milliards. Contrairement aux bases de données relationnelles existantes qui traitent principalement des modèles prédéfinis et des données structurées, Milvus est conçu dès le départ pour gérer les vecteurs d'incorporation issus de données non structurées.

Avec l'expansion continue de l'internet, les données non structurées sont devenues de plus en plus courantes, notamment les e-mails, les documents, les données de capteurs IoT, les photos Facebook, les structures protéiques, et plus encore. Pour permettre aux ordinateurs de comprendre et de traiter les données non structurées, ces données doivent être transformées en vecteurs à l'aide de techniques d'incorporation. Milvus stocke et indexe ces vecteurs. Milvus peut analyser la distance de similarité entre deux vecteurs en calculant leur distance de similarité, en inférant leur corrélation. Si deux vecteurs d'incorporation sont très similaires, cela indique que les sources de données d'origine sont également similaires.

Workflow Milvus:

Workflow

Concepts clés

Si vous n'êtes pas familier avec le monde des bases de données vectorielles et de la recherche de similarité, vous trouverez les concepts clés suivants utiles.

En savoir plus sur les termes Milvus.

Données non structurées

Les données non structurées, comprenant des images, des vidéos, de l'audio et du langage naturel, font référence à des informations qui ne suivent pas un modèle prédéfini ou une structure organisationnelle. Ce type de données représente environ 80% des données mondiales et peut être transformé en vecteurs à l'aide de divers modèles d'intelligence artificielle (IA) et d'apprentissage automatique (ML).

Vecteurs d'incorporation

Les vecteurs d'incorporation sont les abstractions de caractéristiques des données non structurées (telles que les e-mails, les données de capteurs IoT, les photos Instagram, les structures protéiques, etc.). D'un point de vue mathématique, les vecteurs d'incorporation sont constitués de nombres à virgule flottante ou d'arrays binaires. Les techniques modernes d'incorporation sont utilisées pour transformer les données non structurées en vecteurs d'incorporation.

Recherche de similarité vectorielle

La recherche de similarité vectorielle consiste à comparer un vecteur avec une base de données pour trouver le vecteur le plus similaire au vecteur de requête. L'utilisation d'algorithmes de recherche de voisins les plus proches approximatifs peut accélérer le processus de recherche. Si deux vecteurs d'incorporation sont très similaires, cela indique que la source de données d'origine est également similaire.

Pourquoi choisir Milvus?

  • Hautes performances pour la recherche de vecteurs sur des ensembles de données à grande échelle.
  • Support de la communauté centré sur les développeurs avec un support multi-langage et de chaîne d'outils.
  • Garantit l'évolutivité et une haute fiabilité dans le cloud, maintenant même la stabilité en cas de défaillances.
  • Permet une recherche mixte en combinant un filtrage scalaire avec une recherche de similarité vectorielle.

Quels index et normes de distance sont pris en charge?

Les index sont les unités organisationnelles de données. Avant de rechercher ou interroger les entités insérées, vous devez déclarer le type d'index et la norme de distance de similarité. Si vous ne spécifiez pas le type d'index, Milvus utilisera par défaut une recherche par force brute.

Types d'index

Milvus prend en charge la plupart des types d'index vectoriels pour la recherche de voisins les plus proches approximatifs (ANNS), notamment :

  • FLAT : Adapté aux scénarios recherchant des résultats de recherche complètement précis et précis sur des ensembles de données de petite échelle (millions).
  • IVF_FLAT : Basé sur l'index de quantification, adapté aux scénarios recherchant un équilibre idéal entre précision et vitesse de requête. Il existe également une version GPU appelée GPU_IVF_FLAT.
  • IVF_SQ8 : Basé sur l'index de quantification, adapté aux scénarios recherchant une réduction significative de la consommation de mémoire disque, CPU et GPU en raison de ressources très limitées.
  • IVF_PQ : Basé sur l'index de quantification, adapté aux scénarios recherchant une vitesse de requête élevée même au détriment de la précision. Il existe également une version GPU appelée GPU_IVF_PQ.
  • HNSW : Basé sur un index graphique, adapté aux scénarios avec des exigences très élevées en matière d'efficacité de recherche.

Pour plus d'informations détaillées, veuillez vous référer à l'Index vectoriel.

Normes de distance

Dans Milvus, les normes de distance sont utilisées pour mesurer la similarité entre les vecteurs. Le choix d'une bonne métrique de distance peut améliorer considérablement les performances de classification et de regroupement. En fonction de la forme des données d'entrée, des normes de similarité spécifiques sont choisies pour obtenir les meilleures performances.

Les métriques couramment utilisées pour les embeddings à virgule flottante sont :

  • Distance euclidienne (L2) : Cette métrique est couramment utilisée dans le domaine de la vision par ordinateur.
  • Produit intérieur (IP) : Cette métrique est couramment utilisée dans le domaine du traitement du langage naturel.

Les métriques couramment utilisées pour les embeddings binaires sont :

  • Distance de Hamming : Cette métrique est couramment utilisée dans le domaine du traitement du langage naturel.
  • Similarité de Jaccard : Cette métrique est couramment utilisée pour la recherche de similarité moléculaire.

Exemples d'applications

Milvus facilite l'ajout de la recherche de similarité à vos applications. Les exemples d'applications de Milvus comprennent :

  • Recherche de similarité d'images : Rend les images consultables et renvoie quasi-instantanément les images les plus similaires à partir d'une grande base de données.
  • Recherche de similarité de vidéos : En convertissant les images clés en vecteurs et en les entrant dans Milvus, il peut rechercher et recommander des milliards de vidéos en quasi temps réel.
  • Recherche de similarité audio : Interroge rapidement de grandes quantités de données audio, telles que la parole, la musique, les effets sonores et des sons similaires.
  • Systèmes de recommandation : Recommande des informations ou des produits en fonction du comportement et des besoins de l'utilisateur.
  • Systèmes de questions-réponses : Chatbots interactifs de questions-réponses numériques pouvant répondre automatiquement aux questions des utilisateurs.
  • Classification de séquences d'ADN : Classifie avec précision les gènes en millisecondes en comparant des séquences d'ADN similaires.
  • Moteurs de recherche de texte : Aide les utilisateurs à trouver les informations qu'ils recherchent en comparant des mots-clés avec une base de données textuelle.

Concept de conception de Milvus

En tant que base de données vectorielle basée sur le cloud, Milvus sépare le stockage du calcul dans sa conception. Pour améliorer l'élasticité et la flexibilité, tous les composants de Milvus sont sans état.

Le système est divisé en quatre couches :

  • Couche d'accès : Comprenant un groupe de mandataires sans état qui servent de couche frontend du système et les points de terminaison pour les utilisateurs.
  • Service de coordination : Ce service attribue des tâches aux nœuds ouvriers et sert de centre névralgique du système.
  • Nœuds ouvriers : Ces nœuds agissent comme les bras et les jambes du système, suivant les instructions du service de coordination et exécutant des commandes DML/DDL déclenchées par les utilisateurs de manière automatique.
  • Stockage : C'est la colonne vertébrale du système responsable de la persistance des données. Il comprend le stockage des métadonnées, les agents de journalisation et le stockage d'objets.

Architecture de Milvus.

Outils de développement

Milvus propose un ensemble complet d'API et d'outils pour le développement et l'exploitation.

Accès à l'API

Milvus fournit des bibliothèques clientes encapsulant l'API de Milvus, qui peuvent être utilisées pour insérer, supprimer et interroger de manière programmatique des données à partir du code d'application :

  • PyMilvus
  • SDK Node.js
  • SDK Go
  • SDK Java

Outils de l'écosystème Milvus

L'écosystème Milvus offre plusieurs outils utiles, notamment :

  • Milvus CLI
  • Attu : Un système de gestion graphique pour Milvus.
  • MilvusDM (Migration de données Milvus) : Un outil open source spécifiquement conçu pour l'importation et l'exportation de données avec Milvus.
  • Outil de planification de capacité Milvus : Aide à estimer la taille de fichier brute requise, la taille de mémoire et la taille de disque stable à travers différents types d'index.

Limitations de Milvus

Milvus s'engage à fournir la meilleure base de données vectorielle pour alimenter les applications d'IA et les recherches de similarité vectorielle. Cependant, l'équipe travaille continuellement à introduire plus de fonctionnalités et d'outils optimaux pour améliorer l'expérience utilisateur. Cette page répertorie certaines limitations connues que les utilisateurs peuvent rencontrer lors de l'utilisation de Milvus.

Longueur des noms de ressources

Ressource Limite
Collection 255 caractères
Champ 255 caractères
Index 255 caractères
Partition 255 caractères

Règles de dénomination

Les noms de ressources peuvent être composés de chiffres, de lettres et de traits de soulignement (_). Les noms doivent commencer par une lettre ou un trait de soulignement.

Nombre de ressources

Ressource Limite
Collection 65 536
Connexions/Agents 65 536

Nombre de ressources dans les collections

Ressource Limite
Partition 4 096
Shard 64
Champ 64
Index 1
Entité Illimité

Longueur de chaîne

Type de données Limite
VARCHAR 65 535

Dimension vectorielle

Attribut Limite
Dimension 32 768

Entrée et sortie pour chaque RPC

Opération Limite
Opération d'insertion 512 Mo
Opération de recherche 512 Mo
Opération de requête 512 Mo

Limitation de charge

Dans la version actuelle, les données à charger doivent se situer à moins de 90 % des ressources mémoire totales de tous les nœuds de requête afin de réserver des ressources mémoire pour le moteur d'exécution.

Limitation de recherche

Vecteur Limite
topk (nombre de résultats les plus similaires à retourner) 16 384
nq (nombre de requêtes de recherche) 16 384