DiskANN Conserve une copie minuscule de chaque vecteur , compressée au format «PQ », sur RAM, ainsi que les vecteurs complets et le graphe sur SSD. La recherche parcourt le graphe à l’aide de comparaisons peu coûteuses RAM, puis reclasse les meilleurs candidats à l’aide d’une poignée de lectures de disque coûteuses.
Un simple « SSD » de base tient facilement sur le disque. La partie « RAM » tient dans n’importe quel ordinateur portable. Sans l’astuce de l’« PQ », il faudrait un serveur doté de centaines de Go d’ RAM s pour simplement charger l’ensemble de données.
PQ ≈ 1 µs, SSD ≈ 100 µs. Les nombres réels dépendent du matériel.R) optimisé pour un agencement séquentiel sur disque. Pas de hiérarchie — juste un grand graphe.L. Sélectionnez le meilleur, étendez ses voisins, et estimez les distances en utilisant uniquement les codes «in-RAM » PQ. Aucune E/S disque n’est autorisée pendant la recherche.Le modèle mental : « PQ » (est-ce que ce voisinage est prometteur ?) est le test peu coûteux. Les lectures sur disque constituent la vérification coûteuse « laissez-moi vérifier concrètement ». « DiskANN » (est-ce que ce vecteur est un candidat ?) effectue l’essentiel de son travail grâce à ce test peu coûteux.
DiskANN est un index approximatif du plus proche voisin basé sur un graphe, conçu pour les ensembles de données qui ne tiennent pas dans RAM. Il construit un graphe de type «Vamana » à une seule couche, organisé pour un accès efficace au disque, conserve en mémoire un code minuscule quantifié par produit (PQ) pour chaque vecteur, et stocke les vecteurs en précision pleine ainsi que les arêtes du graphe sur SSD. Les recherches parcourent le graphe à l’aide de comparaisons peu coûteuses de type « in-RAM » ( PQ ) et n’accèdent au disque que pour reclasser une poignée de finalistes.
Dans « Milvus », « DiskANN » optimise l’option d’indexation sur disque : les collections de l’ordre du milliard deviennent consultables sur des machines disposant de dizaines — et non de centaines — de gigaoctets d’ RAM, tandis que l’étape de reclassement sur disque maintient le rappel à un niveau proche de celui des index de graphes en mémoire.
R (degré du graphe, temps de construction) : nombre maximal d’arêtes par nœud dans le graphe « Vamana ». Un R plus élevé offre une meilleure connectivité et un meilleur rappel, au prix d’un graphe plus volumineux sur le disque et de constructions plus lentes.L / search_list (temps de requête) : l’ensemble de candidats conservé pendant la recherche par faisceau — le principal paramètre de rappel/latence, équivalent à HNSW's ef. Il doit être au moins égal à votre top-K.Optez pour « DiskANN » lorsque le jeu de données (ou la consommation de mémoire) dépasse les capacités de « RAM » : cette option traite les requêtes à haut rappel avec une fraction de la mémoire, en échange d’une latence de l’ordre de la milliseconde, dominée par les lectures « SSD ». Si tout tient facilement en mémoire, « HNSW » répond plus rapidement. Si vous avez besoin d’une construction rapide d’index ou d’économies de mémoire modérées sans recourir au disque, les variantes « IVF » constituent un compromis.
Lorsque vos vecteurs ne tiennent plus dans la mémoire RAM — ou que l’ RAM nécessaire pour les contenir coûte plus cher que ce que vous êtes prêt à payer. Un milliard de vecteurs flottants à 768 dimensions nécessite environ 3 To de mémoire pour HNSW, mais seulement quelques dizaines de Go de RAM ainsi qu’un SSD avec DiskANN. Si l’ensemble de données tient facilement en mémoire, HNSW reste le choix offrant la plus faible latence.
Une « fast NVMe » ( SSD ) est une exigence essentielle, car la latence de la requête est principalement due à une poignée de lectures aléatoires sur disque (chacune d’environ 100 µs). Les besoins en « RAM » sont modestes : environ les codes « PQ » (par exemple, 32 à 64 octets par vecteur) plus les tampons de travail.
Par requête, oui — généralement quelques millisecondes, contre moins d’une milliseconde pour l’ HNSW en mémoire, car chaque reclassement sur disque est environ 100 fois plus lent qu’un accès RAM. Le compromis réside dans le coût : DiskANN traite le même ensemble de données avec un temps de traitement ( RAM ) inférieur d’un ordre de grandeur, tout en conservant un rappel supérieur à 90–95 %.
PQ Les codes ne servent qu’à orienter la traversée du graphe, et non à produire des scores finaux. Avant de renvoyer les résultats, DiskANN lit les vecteurs en précision totale des meilleurs candidats à partir de SSD et les reclasse avec exactitude, en corrigeant l’erreur de quantification que les index basés uniquement sur l’ PQ, tels que IVF_PQ, ne peuvent pas corriger.
Pour aller plus loin : consultez la documentation «DiskANN » pour connaître la configuration requise, ou consultez «Index Explained» pour obtenir le guide de décision complet.
Suivez étape par étape la recherche sur un graphe multicouche — des sauts d’autoroute aux parcours locaux.
Comparaison côte à côte entre la recherche par force brute et la recherche par grappes. Ajustez l’ nprobe s en temps réel.
Faites glisser un point de requête et basculez entre « L2 », « Cosine » et « IP » pour observer comment la notion de « plus proche » évolue.