Faiss는 밀도가 높은 벡터의 효율적인 유사성 검색 및 클러스터링을위한 라이브러리입니다. 여기에는 모든 크기의 벡터 세트에서 RAM에 맞지 않는 벡터 세트에서 검색하는 알고리즘이 포함되어 있습니다. 또한 평가 및 매개 변수 튜닝을위한 지원 코드도 포함되어 있습니다. Faiss는 Python/Numpy를위한 완전한 포장지와 함께 C ++로 작성되었습니다. 가장 유용한 알고리즘 중 일부는 GPU에서 구현됩니다. 주로 Meta의 기본 AI 연구 그룹에서 개발되었습니다.
최신 기능에 대한 자세한 정보는 Changelog.md를 참조하십시오.
FAISS에는 유사성 검색을위한 몇 가지 방법이 포함되어 있습니다. 인스턴스는 벡터로 표시되고 정수로 식별되고 벡터는 L2 (유클리드) 거리 또는 도트 제품과 비교 될 수 있다고 가정합니다. 쿼리 벡터와 유사한 벡터는 L2 거리가 가장 낮거나 쿼리 벡터가있는 가장 높은 점 제품입니다. 또한 코사인 유사성을 지원합니다. 이는 정규화 된 벡터의 도트 제품이기 때문입니다.
이진 벡터 및 소형 양자화 코드를 기반으로하는 방법과 같은 일부 방법은 벡터의 압축 된 표현 만 사용하며 원래 벡터를 유지할 필요는 없습니다. 이는 일반적으로 덜 정확한 검색 비용으로 이루어 지지만 이러한 방법은 단일 서버의 기본 메모리에서 수십억 개의 벡터로 확장 할 수 있습니다. HNSW 및 NSG와 같은 다른 방법은 원시 벡터 위에 인덱싱 구조를 추가하여 검색을보다 효율적으로 만듭니다.
GPU 구현은 CPU 또는 GPU 메모리의 입력을 수락 할 수 있습니다. GPU가있는 서버에서 GPU 인덱스는 CPU 인덱스 (예 : IndexFlatL2
GpuIndexFlatL2
로 바꾸기)에 대한 드롭 인 교체를 사용하고 GPU 메모리로의 사본을 자동으로 처리 할 수 있습니다. 그러나 입력과 출력이 모두 GPU에 상주하는 경우 결과가 더 빠릅니다. 단일 및 멀티 GPU 사용이 모두 지원됩니다.
Faiss는 Python의 Anaconda 용 사전 컴파일 라이브러리와 함께 제공됩니다 (Faiss-CPU 및 Faiss-GPU를 참조하십시오. 라이브러리는 주로 C ++로 구현되며 유일한 종속성은 BLAS 구현입니다. 선택적 GPU 지원은 CUDA 또는 AMD ROCM을 통해 제공되며 Python 인터페이스도 선택 사항입니다. 그것은 cmake로 컴파일합니다. 자세한 내용은 install.md를 참조하십시오.
FAISS는 벡터 세트를 저장하는 인덱스 유형 주위에 제작되었으며 L2 및/또는 DOT 제품 벡터 비교로 검색하는 기능을 제공합니다. 일부 인덱스 유형은 정확한 검색과 같은 간단한 기준입니다. 사용 가능한 인덱싱 구조의 대부분은
선택적 GPU 구현은 (2017 년 3 월 현재) 고차원 벡터, 가장 빠른 Lloyd의 K- 평균 및 가장 빠른 작은 K- 선택 알고리즘에 대한 가장 빠른 정확하고 근사한 (압축 도메인) 가장 가까운 이웃 검색 구현 가능성을 제공합니다. 구현은 여기에 자세히 설명되어 있습니다.
다음은 문서의 진입 점입니다.
Faiss의 주요 저자는 다음과 같습니다.
연구 논문에서 Faiss를 사용할 때 인용하는 참조 :
@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}
}
Faiss의 GPU 버전의 경우 다음을 인용하십시오.
@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}
}
Faiss 또는 질문에 대한 공개 토론을 위해서는 https://www.facebook.com/groups/faissusers/에 Facebook 그룹이 있습니다.
저장소의 문제 페이지를 모니터링합니다. 버그를보고하고 질문을 할 수 있습니다.
FAISS는 MIT 라이센스가 있으며 최상위 디렉토리의 라이센스 파일을 참조하십시오.
Copyright © Meta Platforms, Inc.