FAISS es una biblioteca para una búsqueda de similitud eficiente y agrupación de vectores densos. Contiene algoritmos que buscan en conjuntos de vectores de cualquier tamaño, hasta los que posiblemente no encajen en la RAM. También contiene código de soporte para evaluación y ajuste de parámetros. FAISS está escrito en C ++ con envoltorios completos para Python/Numpy. Algunos de los algoritmos más útiles se implementan en la GPU. Se desarrolla principalmente en el grupo de investigación de IA fundamental de Meta.
Consulte ChangeLog.md para obtener información detallada sobre las últimas funciones.
FAISS contiene varios métodos para la búsqueda de similitud. Se supone que las instancias se representan como vectores y son identificados por un entero, y que los vectores se pueden comparar con distancias o productos de puntos L2 (euclidiano). Los vectores que son similares a un vector de consulta son aquellos que tienen la distancia L2 más baja o el producto de punto más alto con el vector de consulta. También es compatible con la similitud de coseno, ya que este es un producto DOT en vectores normalizados.
Algunos de los métodos, como los basados en vectores binarios y códigos de cuantificación compactos, utilizan únicamente una representación comprimida de los vectores y no requieren mantener los vectores originales. Esto generalmente tiene el costo de una búsqueda menos precisa, pero estos métodos pueden escalar a miles de millones de vectores en la memoria principal en un solo servidor. Otros métodos, como HNSW y NSG, agregan una estructura de indexación sobre los vectores sin procesar para que la búsqueda sea más eficiente.
La implementación de la GPU puede aceptar la entrada de la memoria CPU o GPU. En un servidor con GPU, los índices de GPU se pueden utilizar un reemplazo de entrega de los índices de CPU (por ejemplo, reemplace IndexFlatL2
con GpuIndexFlatL2
) y las copias de/desde la memoria de la GPU se manejan automáticamente. Sin embargo, los resultados serán más rápidos si tanto la entrada como la salida permanecen residentes en la GPU. Se admite el uso de una sola y múltiple GPU.
Faiss viene con bibliotecas precompiladas para Anaconda en Python, ver Faiss-CPU y FAISS-GPU. La biblioteca se implementa principalmente en C ++, la única dependencia es una implementación BLAS. El soporte de GPU opcional se proporciona a través de CUDA o AMD ROCM, y la interfaz Python también es opcional. Se compila con Cmake. Consulte Install.md para más detalles.
FAISS se basa en un tipo de índice que almacena un conjunto de vectores y proporciona una función para buscar en ellos con la comparación de vectores de productos L2 y/o DOT. Algunos tipos de índices son líneas de base simples, como la búsqueda exacta. La mayoría de las estructuras de indexación disponibles corresponden a varias compensaciones con respecto a
La implementación opcional de la GPU proporciona lo que probablemente (a marzo de 2017) es la implementación de búsqueda de vecinos más rápida y aproximada (dominio comprimido) de vecinos más cercanos para vectores de alta dimensión, los medios K de Lloyd más rápido y el algoritmo de selección K pequeño más rápido conocido. La implementación se detalla aquí.
Los siguientes son puntos de entrada para la documentación:
Los principales autores de FAISS son:
Referencias a citar cuando usa FAISS en un trabajo de investigación:
@article{douze2024faiss,
title={The Faiss library},
author={Matthijs Douze and Alexandr Guzhva and Chengqi Deng and Jeff Johnson and Gergely Szilvasy and Pierre-Emmanuel Mazaré and Maria Lomeli and Lucas Hosseini and Hervé Jégou},
year={2024},
eprint={2401.08281},
archivePrefix={arXiv},
primaryClass={cs.LG}
}
Para la versión GPU de Faiss, cite:
@article{johnson2019billion,
title={Billion-scale similarity search with {GPUs}},
author={Johnson, Jeff and Douze, Matthijs and J{'e}gou, Herv{'e}},
journal={IEEE Transactions on Big Data},
volume={7},
number={3},
pages={535--547},
year={2019},
publisher={IEEE}
}
Para la discusión pública de FAISS o para las preguntas, hay un grupo de Facebook en https://www.facebook.com/groups/faissusers/
Monitoreamos la página de problemas del repositorio. Puede informar errores, hacer preguntas, etc.
FAISS tiene licencia de MIT, consulte el archivo de licencia en el directorio de nivel superior.
Copyright © Meta Platforms, Inc.