Faiss는 효율적인 유사도 검색 및 밀집 벡터 클러스터링을 위한 라이브러리입니다. 다양한 알고리즘을 포함하고 있으며, 임의 크기의 벡터 집합에서 검색을 수행할 수 있으며, 심지어 메모리에 완전히 로드할 수 없는 벡터 집합에서도 검색이 가능합니다.
프로젝트 주소: https://github.com/facebookresearch/faiss
개발팀: Facebook AI Research (Meta AI)
개발 언어: C++, Python 및 C를 위한 완전한 래퍼 제공
Faiss는 C++로 작성되었으며, 완전한 Python 및 C 래퍼를 제공합니다. 가장 유용한 알고리즘 중 일부는 GPU에서 CUDA를 사용하여 구현됩니다.
Faiss는 k-means 클러스터링 및 곱셈 양자화와 같은 복잡한 알고리즘을 사용하여 벡터를 인덱싱하여 최근접 이웃 검색을 빠르게 만듭니다.
Faiss는 다양한 인덱싱 방법을 포함하는 툴킷으로 구성되며, 일반적으로 일련의 구성 요소(전처리, 압축, 비전체 검색)를 포함합니다.
CPU 측면에서 Faiss는 다음을 광범위하게 사용합니다.
Faiss는 모든 유사도를 정확하고 상세하게 계산하고 가장 유사한 요소 목록을 반환할 수 있는 참조 무차별 대입 알고리즘을 제공합니다. 이는 "황금 표준" 참조 결과 목록을 제공합니다.
conda install -c pytorch faiss-gpu
pip install faiss-cpu
pip install faiss-gpu
import faiss
import numpy as np
dimension = 64
database_size = 10000
query_size = 100
database_vectors = np.random.random((database_size, dimension)).astype('float32')
query_vectors = np.random.random((query_size, dimension)).astype('float32')
index = faiss.IndexFlatL2(dimension)
index.add(database_vectors)
k = 5
distances, indices = index.search(query_vectors, k)
print(f"indices: {indices.shape}")
print(f"distances: {distances.shape}")
Facebook AI Research 팀은 2015년부터 연구 결과와 많은 엔지니어링 노력을 바탕으로 Faiss를 개발하기 시작했습니다. 이 프로젝트는 현재 벡터 유사도 검색 분야의 표준 도구 중 하나가 되었습니다.
Faiss는 강력하고 성능이 뛰어난 벡터 유사도 검색 라이브러리이며, 특히 대규모 고차원 벡터 데이터 처리에 적합합니다. 풍부한 알고리즘 선택, 뛰어난 성능 및 광범위한 응용 분야를 통해 머신러닝, 정보 검색 및 추천 시스템과 같은 분야에서 중요한 도구가 되었습니다. 학술 연구든 산업 응용이든 Faiss는 안정적이고 효율적인 솔루션을 제공할 수 있습니다.