DiskANN est un algorithme de recherche de plus proches voisins approximatifs (ANN) basé sur disque, conçu pour les jeux de données à très grande échelle qui dépassent la capacité de la mémoire disponible. Il stocke l'index du graphe Vamana sur disque et utilise la quantification par produit (PQ) pour compresser les vecteurs en mémoire, permettant ainsi une recherche vectorielle efficace même sous contrainte mémoire.
DiskANN fonctionne en deux phases :
Phase de construction de l'index : construit le graphe Vamana sur disque. Les paramètres de construction déterminent la qualité de l'index, le taux de compression PQ et le coût de la construction.
Phase de recherche : parcourt le graphe à l'aide de vecteurs compressés pour identifier les plus proches voisins approximatifs. Les paramètres de recherche contrôlent le rappel et la latence des requêtes à l'exécution.
Paramètres de construction de l'index
| Paramètre | Type | Description |
|---|---|---|
proxima.diskann.builder.pq_dimension_scale |
Int | L'échelle de compression PQ. La dimension PQ se calcule comme suit : dimension du vecteur / pq_dimension_scale. Valeur par défaut : 8, ce qui compresse les vecteurs au 1/8 de leur dimension d'origine. Une valeur plus élevée accroît l'agressivité de la compression, réduisant l'utilisation de la mémoire au détriment de la précision de l'index. Une valeur plus faible préserve la précision, mais augmente l'utilisation de la mémoire. |
proxima.diskann.builder.max_degree |
Int | Le nombre maximal d'arêtes de voisinage par nœud dans le graphe Vamana. Une valeur plus élevée produit un graphe plus précis, mais augmente le temps de construction et l'espace disque utilisé. |
proxima.diskann.builder.list_size |
Int | La taille de l'ensemble de candidats pour la sélection des arêtes lors de la construction du graphe. Une valeur plus élevée améliore la précision du graphe, mais allonge le temps de construction. |
proxima.diskann.builder.thread_count |
Int | Le nombre de threads utilisés pour la construction de l'index. |
Paramètres de recherche d'index
| Paramètre | Type | Description |
|---|---|---|
proxima.diskann.searcher.list_size |
Int | La taille de l'ensemble de candidats pour les résultats. Une valeur plus élevée augmente le rappel, mais prolonge également le temps de réponse des requêtes. |
proxima.diskann.searcher.io_limit |
Int | La limite d'E/S disque par requête. La recherche effectue au maximum io_limit opérations de lecture sur disque, ce qui influence principalement la profondeur du parcours du graphe Vamana par l'algorithme. Une valeur plus élevée améliore le rappel, mais engendre davantage d'opérations d'E/S et un temps de requête plus long. |
proxima.diskann.searcher.beam_search_width |
Int | Le nombre d'opérations d'E/S disque parallèles par requête. Une valeur plus élevée accroît le débit de lecture sur disque, réduisant ainsi l'impact sur la latence pour une valeur donnée de io_limit. |