O FAISS é uma biblioteca para pesquisa eficiente de similaridade e agrupamento de vetores densos. Ele contém algoritmos que pesquisam em conjuntos de vetores de qualquer tamanho, até aqueles que possivelmente não se encaixam na RAM. Ele também contém código de suporte para avaliação e ajuste de parâmetros. O FAISS está escrito em C ++ com embalagens completas para Python/Numpy. Alguns dos algoritmos mais úteis são implementados na GPU. É desenvolvido principalmente no grupo de pesquisa de IA fundamental da Meta.
Consulte Changelog.md para obter informações detalhadas sobre os recursos mais recentes.
O FAISS contém vários métodos para pesquisa de similaridade. Ele assume que as instâncias são representadas como vetores e são identificadas por um número inteiro e que os vetores podem ser comparados com as distâncias L2 (euclidianas) ou produtos de ponto. Os vetores semelhantes a um vetor de consulta são aqueles que têm a menor distância L2 ou o produto de ponto mais alto com o vetor de consulta. Ele também suporta similaridade de cosseno, pois este é um produto de ponto em vetores normalizados.
Alguns dos métodos, como os baseados em vetores binários e códigos de quantização compactos, usam apenas uma representação compactada dos vetores e não precisam manter os vetores originais. Isso geralmente tem o custo de uma pesquisa menos precisa, mas esses métodos podem escalar para bilhões de vetores na memória principal em um único servidor. Outros métodos, como o HNSW e o NSG, adicionam uma estrutura de indexação no topo dos vetores brutos para tornar a pesquisa mais eficiente.
A implementação da GPU pode aceitar a entrada da memória CPU ou GPU. Em um servidor com GPUs, os índices de GPU podem ser usados uma substituição de drop-in para os índices da CPU (por exemplo, substituir IndexFlatL2
pelo GpuIndexFlatL2
) e as cópias para/da memória da GPU são tratadas automaticamente. Os resultados serão mais rápidos, no entanto, se a entrada e a saída permanecerem residentes na GPU. O uso único e multi-GPU é suportado.
O FAISS vem com bibliotecas pré-compiladas para Anaconda em Python, consulte Faiss-CPU e FAISS-GPU. A biblioteca é implementada principalmente no C ++, a única dependência é uma implementação de blas. O suporte opcional à GPU é fornecido via CUDA ou AMD ROCM, e a interface Python também é opcional. Compila com cmake. Consulte o install.md para obter detalhes.
O FAISS é construído em torno de um tipo de índice que armazena um conjunto de vetores e fornece uma função para pesquisar neles com a comparação de vetores de produto L2 e/ou ponto. Alguns tipos de índice são linhas de base simples, como pesquisa exata. A maioria das estruturas de indexação disponível corresponde a várias compensações em relação a
A implementação opcional da GPU fornece o que é provável (a partir de março de 2017) o exato mais rápido e aproximado (domínio compactado) da implementação de pesquisa de vizinhos mais próxima de vetores de alta dimensão, mais rápidos algoritmos de seleção K e mais rápidos conhecidos. A implementação é detalhada aqui.
A seguir, estão os pontos de entrada para documentação:
Os principais autores de Faiss são:
Referências a citar quando você usa o FAISS em um artigo de pesquisa:
@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 a versão GPU do 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 discussão pública sobre o FAISS ou para perguntas, há um grupo do Facebook em https://www.facebook.com/groups/faissusers/
Monitoramos a página de problemas do repositório. Você pode relatar bugs, fazer perguntas, etc.
O FAISS é licenciado por MIT, consulte o arquivo de licença no diretório de nível superior.
Copyright © Meta Platforms, Inc.