Synthèse de deux articles sur les structures d'index et la réduction de dimensionnalité pour l'ANNS moderne.
Trouver les éléments les plus similaires à une requête dans un grand ensemble — avec de légères approximations pour gagner en vitesse.
Des milliards de vecteurs, des milliers de dimensions, des millisecondes pour répondre.
Dans HNSW (l'index de référence), le calcul des distances représente
du temps total de traitement d'une requête
C'est pourquoi ces deux articles attaquent le problème sous deux angles complémentaires.
Optimiser les structures d'index (graphes, arbres) pour réduire le nombre de distances calculées.
Réduire D pour accélérer chaque calcul individuel — approche orthogonale à n'importe quel index.
Chaque vecteur = un sommet. Les arêtes connectent des vecteurs proches. La recherche gloutonne navigue le graphe en se rapprochant de la requête.
Supprime les arêtes redondantes → libère des slots pour des connexions longue distance. Résultat : seulement ~30% des arêtes de K-Graph conservées, corrélation hub/connexion divisée par 3.
HVS / LSH-APG : index auxiliaire pour de meilleurs points d'entrée → jusqu'à 3× plus rapide que HNSW.
Partitionnement hiérarchique de l'espace. Traversée racine → feuilles. 3 familles :
ELPIS : arbre pour partitionner + graphe dans chaque feuille → 3–8× moins de temps d'indexation, −40% de mémoire.
| Critère | Graphes (HNSW…) | Arbres (iSAX, ELPIS…) |
|---|---|---|
| Élagage garanti | Non | Oui (bornes inférieures) |
| Localité des données | Non | Oui (données groupées) |
| Index sur disque | Difficile | Naturel |
| Scalabilité / Distribué | Limitée, peu exploré | Excellente (Odyssey, TARDIS) |
| Performance en mémoire | ★★★★★ Meilleure | ★★★☆☆ Correcte |
Graphes pour la précision en mémoire, arbres pour la scalabilité et le disque. Les combinaisons (ELPIS, SPANN) donnent le meilleur des deux. Défi ouvert : performances variant jusqu'à 90× selon les datasets.
| Technique | Framework | Garantie | Coût mémoire | Point fort |
|---|---|---|---|---|
| PCA | In-Place | Exacte | O(D²) | Le plus précis |
| DWT | In-Place | Exacte | 0 ! | Le plus léger (O(D), sans matrice) |
| ADSampling | In-Place | Probabiliste | O(D²) | Simple (Johnson-Lindenstrauss) |
| PM-LSH | Out-of-Place | Probabiliste | Nd+Dd | Ultra-basse dimension (ex: 16D) |
| OPQ | Out-of-Place | Aucune | Nm+DKs+D² | Estimation la plus rapide — très robuste |
| SEANet* | Out-of-Place | Aucune | O(X) | Deep learning — potentiel sur H&M |
Les gains deviennent spectaculaires (>2×) au-delà de ~700 dimensions. En dessous, les gains sont marginaux — encore plus avec les instructions SIMD (AVX) déjà présentes dans FAISS/hnswlib.
Aucune technique ne domine universellement. Le choix optimal dépend du dataset (dimension, densité, difficulté).
Combiner la vitesse de PQ avec les garanties de LSH ou de la transformation in-place.
SEANet* montre un potentiel fort. Architecture, fonction de perte, entraînement — vaste espace de conception.
Choisir automatiquement la meilleure technique selon les caractéristiques du dataset.
Réduction de dimension + quantification scalaire pour comprimer le stockage dans les bases vectorielles.
Comment structurer les données ?
Graphes (HNSW) pour la précision en mémoire, arbres pour la scalabilité, combinaisons (ELPIS) pour le meilleur des deux.
Comment accélérer chaque calcul ?
Approche orthogonale à n'importe quel index. Gains spectaculaires au-delà de 700D — jusqu'à 6× sans SIMD.