• À propos de Milvus
  • Commencer
  • Concepts
  • Guide de l'utilisateur
  • Importation de données
  • Outils d'IA
  • Guide d'administration
  • Outils
  • Intégrations
  • Tutoriels
  • FAQ
  • API Reference

Index sur disque

Cet article présente DiskANN, un algorithme d'indexation sur disque pour les recherches vectorielles optimisées sur disque. Basé sur les graphes de Vamana, DiskANN permet d'effectuer des recherches vectorielles sur disque efficaces dans les grands ensembles de données.

Pour améliorer les performances des requêtes, vous pouvez spécifier un type d'index pour chaque champ vectoriel.

Actuellement, un champ vectoriel ne prend en charge qu'un seul type d'index. Milvus supprime automatiquement l'ancien index lors du changement de type d'index.

Conditions préalables

Pour utiliser DiskANN dans Milvus, il faut que

  • L'instance Milvus fonctionne sous Ubuntu 18.04.6 ou une version ultérieure.
  • Le chemin de données Milvus doit être monté sur un disque SSD NVMe pour des performances optimales :
    • Pour une instance Milvus autonome, le chemin de données doit être /var/lib/milvus/data dans le conteneur où l'instance s'exécute.
    • Pour une instance Milvus Cluster, le chemin de données doit être /var/lib/milvus/data dans les conteneurs où s'exécutent les QueryNodes et les IndexNodes.

Limites

Pour utiliser DiskANN, veillez à

  • N'utilisez que des vecteurs flottants ayant au moins une dimension dans vos données.
  • d'utiliser uniquement la distance euclidienne (L2), le produit intérieur (IP) ou COSINE pour mesurer la distance entre les vecteurs.

Paramètres d'index et de recherche

  • Paramètres de construction d'index

    Lors de la création d'un index DiskANN, utilisez DISKANN comme type d'index. Aucun paramètre d'index n'est nécessaire.

  • Paramètres de recherche

    ParamètreDescription de la recherchePlage de valeursValeur par défaut
    search_listTaille de la liste des candidats. Une taille plus importante permet d'obtenir un taux de rappel plus élevé, mais avec des performances dégradées.[topk, int32_max]16

DiskANN est paramétrable. Vous pouvez modifier les paramètres liés à DiskANN dans ${MILVUS_ROOT_PATH}/configs/milvus.yaml afin d'améliorer ses performances.

...
DiskIndex:
  MaxDegree: 56
  SearchListSize: 100
  PQCodeBudgetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
ParamètreDescription du paramètrePlage de valeursValeur par défaut
MaxDegreeDegré maximal du graphe de Vamana.
Une valeur plus élevée permet d'obtenir un taux de rappel plus important, mais augmente la taille de l'index et le temps nécessaire à sa construction.
[1, 512]56
SearchListSizeTaille de la liste des candidats.
Une valeur plus élevée augmente le temps consacré à la construction de l'index mais offre un taux de rappel plus élevé.
Fixez-la à une valeur inférieure à MaxDegree, sauf si vous avez besoin de réduire le temps de construction de l'index.
[1, int32_max]100
PQCodeBudgetGBRatioLimite de taille du code PQ.
Une valeur plus élevée offre un taux de rappel plus important mais augmente l'utilisation de la mémoire.
(0.0, 0.25]0.125
SearchCacheBudgetGBRatioRapport entre les numéros de nœuds mis en cache et les données brutes.
Une valeur plus élevée améliore la performance de la construction de l'index mais augmente l'utilisation de la mémoire.
[0.0, 0.3)0.10
BeamWidthRatioRapport entre le nombre maximum de requêtes IO par itération de recherche et le nombre de CPU.[1, max(128 / nombre de CPU, 16)]4.0

Résolution des problèmes

  • Comment traiter l'erreur io_setup() failed; returned -11, errno=11:Resource temporarily unavailable?

    Le noyau Linux propose la fonction E/S asynchrone non bloquante (AIO) qui permet à un processus de lancer simultanément plusieurs opérations d'E/S sans avoir à attendre la fin de l'une d'entre elles. Cela permet d'améliorer les performances des applications qui peuvent chevaucher le traitement et les E/S.

    Les performances peuvent être ajustées à l'aide du fichier virtuel /proc/sys/fs/aio-max-nr dans le système de fichiers proc. Le paramètre aio-max-nr détermine le nombre maximum de requêtes simultanées autorisées.

    La valeur par défaut de aio-max-nr est 65535, mais vous pouvez la régler sur 10485760.

Try Managed Milvus for Free

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

Get Started
Feedback

Cette page a-t - elle été utile ?