FAISS (Facebook AI Similarity Search) est une bibliothèque open source développée par Meta pour la recherche de similarité efficace et le regroupement de vecteurs denses. Elle est conçue pour gérer des ensembles de données trop volumineux pour tenir dans la mémoire vive, offrant une gamme d'algorithmes optimisés pour la vitesse et l'utilisation de la mémoire. La bibliothèque est largement utilisée dans les applications d'apprentissage automatique et d'intelligence artificielle, notamment pour les tâches impliquant des embeddings générés par des réseaux de neurones, telles que les systèmes de recommandation, la recherche d'informations et les pipelines de modèles de langage de grande taille.
FAISS fournit une interface unifiée pour diverses structures d'indexation, y compris la recherche exacte (force brute) et des méthodes approximatives comme la quantification produit, HNSW et les index de fichiers inversés. Elle prend en charge l'accélération sur CPU et GPU, avec des implémentations GPU qui accélèrent considérablement les opérations de recherche et de regroupement. La bibliothèque est écrite en C++ avec des liaisons Python, ce qui la rend accessible à une large communauté de développeurs et de chercheurs.
Historique et développement
FAISS a été publiée pour la première fois en mars 2017 par l'équipe Fundamental AI Research (FAIR) de Meta (alors Facebook). La version initiale visait à fournir une solution rapide et évolutive pour la recherche de similarité, répondant au besoin croissant de gérer des milliards de vecteurs dans des systèmes de production. La bibliothèque a été diffusée en open source sous la licence MIT, permettant une adoption généralisée dans le milieu universitaire et l'industrie.
Au fil des années, FAISS a évolué grâce aux contributions de chercheurs et d'ingénieurs de Meta et de la communauté au sens large. Les étapes clés incluent l'introduction du support GPU en 2017, l'ajout de l'index HNSW en 2018 et des améliorations continues des techniques de quantification et de l'efficacité mémoire. En 2024, FAISS reste l'une des bibliothèques les plus populaires pour la recherche vectorielle, avec une présence solide dans l'écosystème apprentissage automatique.
Fonctionnalités principales
FAISS offre une variété de structures d'indexation qui font un compromis entre la précision de la recherche et la vitesse. L'index de recherche exacte (IndexFlatL2) calcule des distances en force brute, offrant un rappel parfait mais une évolutivité médiocre avec la taille de l'ensemble de données. Pour des ensembles plus volumineux, les méthodes approximatives sont privilégiées. L'index de fichier inversé (IVF) partitionne l'espace vectoriel en clusters, réduisant ainsi l'espace de recherche. La quantification produit (PQ) compresse les vecteurs en codes compacts, permettant un stockage économe en mémoire et des calculs de distance plus rapides. L'index HNSW construit un graphe multicouche, ce qui permet des recherches de voisins approchés rapides avec une précision de rappel élevée.
La bibliothèque comprend également des algorithmes de clustering, tels que le k-means, qui sont utilisés pour construit des index inversés et pour d'autres tâches d'analyse de données. FAISS prend en charge le traitement par lots, permettant de gérer plusieurs requêtes simultanément. Elle offre des outils pour évaluer les performances des index, y compris des benchmarks de rappel et de vitesse.
Accélération GPU
FAISS inclut une implémentation GPU dédiée qui exploite CUDA pour accélérer à la fois la construction des index et les recherches. La version GPU supporte tous les types d'index principaux, y compris plate, IVF et PQ, et peut atteindre des accélérations de 10 à 100 fois par rapport à une exécution sur CPU uniquement, en fonction du matériel et de l'ensemble de données. Cela la rend adaptée aux applications en temps réel, telles que la recherche sémantique dans les systèmes modèles de langage de grande taille, où la faible latence est cruciale.
Le code GPU est conçu pour être économe en mémoire, utilisant des techniques comme the memory pooling et des opérations asynchrones pour maximiser le débit. FAISS prend également en charge les configurations multi-GPU, ce qui permet des recherches distribuées sur plusieurs périphériques. Cette capacité est particulièrement utile pour Lauvention de FAISS dans des environnements cloud, tels que Amazon Web Services ou Google Cloud, où des instances GPU sont facilement disponibles.
Applications et cas d'utilisation
FAISS est largement utilisée dans des systèmes de production pour la recherche de similarité et les recommandations. Les paramètres inclurent des fonctionnalités de recherche sémantique dans les plateformes de commerce électronique, où les embeddings produits sont comparés aux embeddings de requêtes des utilisateurs pour récupérer des éléments pertinents. Elle est également utilisée dans les plateformes de médias sociaux pour trouver des images ou des vidéos similaires, et en bioinformatique pour comparer les profils d'expression génomique.
Dans le contexte de Generative AI et intelligence artificielle, FAISS est souvent utilisée pour stocker et retrouver des embeddings générés par des réseaux de neurones, y compris la génération augmentée par récupération (RAG) dans les applications modes de langage de grande taille. La FAISS permet aux modèles d'accéder au contexte pertinent de grands corpus, améliorant ainsi l'exactitude et la pertinence des réponses générées, une intégration courante dass les frameworks après les entreprises OpenAI lanthropie ou dans des projets open source.
Écosystème et intégration
FAISS intègre de manière transparente les bibliothèques Python populaires comme NumPy et PyTorch, et elle constitue un composant central de nombreux systèmes de base de données vectorielle. Plusieurs projets commerciaux et open source, dont Milvus, Weaviate et Qdrant, utilisent FAISS comme moteur de recherche sous-jacent. La bibliothèque dispose également de liaisons pour d'autres langages, comme Java et Go, grâce à des wrappers maintenus par la communauté.
La communauté FAISS entretient une documentation extensive, des tutoriels et un dépôt GitHub avec suivi des issues et des demandes de fonctionnalités. La bibliothèque est activement développée, avec des versions régulières incluant des améliorations de performance et des nouvelles fonctionnalités. En 2025, FAISS demeure un outil de référence pour toute personne travaillant avec des données vectorielles de haute dimension.