À propos du projet

Faiss est une bibliothèque pour la recherche efficace de similarité et le clustering de vecteurs denses, développée principalement au sein du groupe Fundamental AI Research de Meta. Elle suppose que les instances sont représentées par des vecteurs identifiés par des entiers, comparés à l'aide de la distance L2 (euclidienne) ou de produits scalaires ; la similarité cosinus est prise en charge via des produits scalaires sur des vecteurs normalisés. La bibliothèque contient des algorithmes qui recherchent dans des ensembles de vecteurs de toute taille, y compris des ensembles qui ne tiennent pas en RAM. Elle inclut également du code d'accompagnement pour l'évaluation et le réglage des paramètres. Faiss est écrit en C++ avec des wrappers complets pour Python/numpy, et certains des algorithmes les plus utiles sont implémentés sur GPU. Les types d'index vont de simples références de recherche exacte à des structures qui font des compromis entre le temps de recherche, la qualité de recherche, la mémoire par vecteur d'index, le temps d'entraînement, le temps d'ajout et le besoin de données externes pour l'entraînement non supervisé. Les méthodes basées sur des vecteurs binaires et des codes de quantification compacts utilisent uniquement une représentation compressée et n'ont pas besoin de conserver les vecteurs d'origine, généralement au prix d'une recherche moins précise mais avec la capacité de passer à l'échelle jusqu'à des milliards de vecteurs en mémoire principale sur un seul serveur. D'autres méthodes telles que HNSW et NSG ajoutent une structure d'indexation par-dessus les vecteurs bruts pour rendre la recherche plus efficace. L'implémentation GPU accepte les entrées provenant de la mémoire CPU ou GPU. Sur un serveur avec des GPU, les index GPU peuvent être utilisés comme remplacement direct des index CPU (par exemple, remplacer IndexFlatL2 par GpuIndexFlatL2), avec des copies vers et depuis la mémoire GPU gérées automatiquement. Les résultats sont plus rapides lorsque l'entrée et la sortie restent toutes deux sur le GPU. L'utilisation mono-GPU et multi-GPU est prise en charge. Installation : des bibliothèques précompilées sont disponibles pour Anaconda en Python (faiss-cpu, faiss-gpu, faiss-gpu-cuvs). La bibliothèque est principalement implémentée en C++ ; la seule dépendance est une implémentation BLAS. Le support GPU optionnel est fourni via CUDA ou AMD ROCm, et l'interface Python est optionnelle. Les implémentations GPU backend de NVIDIA cuVS peuvent également être activées optionnellement. Elle se compile avec cmake ; voir INSTALL.md pour plus de détails. Les points d'entrée de la documentation incluent le wiki du projet (avec un tutoriel de démarrage, une FAQ et une section de dépannage), la documentation doxygen sur faiss.ai pour les informations par classe extraites des commentaires de code, et les README de benchmark pour reproduire les résultats d'articles de recherche tels que Polysemous codes, Billion-scale similarity search with GPUs, et Link and code. Faiss est sous licence MIT. Les discussions publiques ont lieu dans GitHub Discussions, et la page des issues est surveillée pour les rapports de bugs et les questions.