Accélérez la recherche vectorielle avec Faiss et NVIDIA cuVS : des performances jusqu’à 12x plus rapides sur GPU
Face à l’explosion des données non structurées et à l’essor des modèles de langage à grande échelle (LLM), les systèmes de recherche d’information doivent devenir plus rapides et plus évolutifs. Des applications comme la génération augmentée par récupération (RAG) peuvent nécessiter des heures, voire des jours, pour traiter des volumes de données colossaux, parfois de l’ordre du téraoctet ou du pétaoctet. De même, les systèmes de recherche en temps réel, tels que les recommandations publicitaires, peinent à répondre instantanément sur des processeurs classiques, exigeant des milliers de CPU et entraînant des coûts d’infrastructure prohibitifs. Pour surmonter ces limites, NVIDIA a intégré son accélération GPU via la bibliothèque cuVS (CUDA Vector Search) dans Faiss, le framework open source de recherche de voisinage proche (ANN) développé par Meta. Cette intégration permet d’accélérer de manière drastique la construction des index et le processus de recherche, tout en préservant une interopérabilité transparente entre CPU et GPU. L’intégration de cuVS à Faiss apporte plusieurs avantages clés. Elle permet d’exploiter pleinement les GPU pour des opérations de recherche de similarité sur des vecteurs denses, qu’il s’agisse de millions de requêtes par seconde, de représentations multimodales volumineuses ou de grands index. Depuis la version 1.10.0 de Faiss, les algorithmes IVF-PQ, IVF-Flat, Flat (recherche par force brute) et CAGRA (Cuda Anns GRAph-based) bénéficient désormais de versions optimisées via cuVS. Ces améliorations reposent sur des techniques avancées comme un clustering GPU plus efficace (k-means équilibré), une extension du nombre de sous-quantificateurs dans IVF-PQ, ainsi que des optimisations au niveau du code. Une caractéristique majeure est la compatibilité transparente CPU-GPU. Les utilisateurs peuvent désormais construire des index sur GPU grâce à cuVS, puis déployer ces index sur CPU pour la recherche, sans modification de code. Par exemple, les index HNSW, souvent lents à construire sur CPU, peuvent être créés jusqu’à 12 fois plus vite en utilisant CAGRA sur GPU, puis convertis en format HNSW pour une recherche performante sur CPU. Des benchmarks sur deux jeux de données — Deep100M (100M vecteurs de 96 dimensions) et OpenAI Text Embeddings (5M vecteurs de 1536 dimensions) — ont été réalisés sur une GPU H100 et un CPU Xeon Platinum. Les résultats montrent des gains significatifs : des temps de construction d’index réduits, une latence de recherche plus faible (jusqu’à 4,7x plus rapide pour CAGRA vs HNSW sur CPU), et une capacité de traitement par lot (throughput) accrue, atteignant plusieurs millions de requêtes par seconde. Pour démarrer, il suffit d’installer Faiss avec prise en charge cuVS via Conda ou les builds nightly. Une gestion mémoire optimisée via RMM est recommandée. La création d’un index IVFPQ ou CAGRA avec cuVS nécessite peu de modifications du code existant. Par exemple, un index IVFPQ peut être construit directement sur GPU avec des paramètres étendus, tandis qu’un index CAGRA peut être converti automatiquement en HNSW pour une recherche sur CPU. En résumé, l’intégration de cuVS dans Faiss représente une avancée majeure pour les systèmes de recherche vectorielle. Elle combine performance extrême, flexibilité hybride et facilité d’adoption. Que ce soit pour scaler des infrastructures à des millions de requêtes/seconde ou pour expérimenter rapidement de nouveaux modèles d’embedding, cette solution permet d’aller plus vite, d’innover plus intelligemment et de déployer avec confiance. Pour les développeurs, l’installation du paquet faiss-gpu-cuvs et l’exploration du notebook d’exemples ouvrent la porte à une nouvelle ère de recherche vectorielle accélérée par GPU.
