facebookresearch/faiss
A library for efficient similarity search and clustering of dense vectors.
해결하는 문제
Faiss는 밀집 벡터의 효율적인 검색과 클러스터링을 가능하게 하여, RAM에 맞지 않는 대규모 데이터셋에서도 유사한 항목을 찾을 수 있도록 합니다. 이는 수십억 개의 벡터로 확장될 때 계산 비용이 매우 높은 고차원 벡터 유사성 검색 문제를 해결합니다.
작동 방식
Faiss는 벡터를 L2(유클리드) 거리 또는 내적(코사인 유사도 포함)을 사용하여 저장하고 비교하는 인덱스 기반 시스템을 사용합니다. 검색 속도, 정확도, 메모리 사용량의 균형을 맞추기 위해 다양한 인덱스 구조를 제공합니다:
- 정확 검색: 높은 정밀도를 위한 단순한 기준선.
- 압축 표현: 이진 벡터와 컴팩트한 양자화 코드를 사용하여 벡터를 압축된 형식으로 저장하여 단일 서버의 메인 메모리에 수십억 개의 벡터를 수용할 수 있게 합니다.
- 그래프 기반 인덱스: HNSW와 NSG를 구현하여 원시 벡터 위에 인덱스 구조를 추가하여 더 빠른 검색을 가능하게 합니다.
- 하드웨어 가속: C++로 작성되었으며 Python 래퍼를 제공하며, 정확한 및 근사 최근접 이웃 검색, k-means 클러스터링, k-선택 알고리즘에 대해 고성능 GPU 구현을 제공합니다.
대상 사용자
AI 및 머신러닝에서 고차원 임베딩, 대규모 유사성 검색 및 클러스터링 작업을 수행하는 개발자 및 연구자.
주요 특징
- 수십억 규모 확장성: 압축 표현을 사용하여 RAM에 맞지 않는 데이터셋을 처리할 수 있습니다.
- GPU 가속: 단일 및 멀티 GPU 환경을 지원하여 검색 및 클러스터링 속도를 크게 향상시킵니다.
- C++ 및 Python 지원: 핵심 로직은 C++로 구현되어 있으며 Python/numpy 인터페이스를 통해 고성능 효율성을 제공합니다.
- 유연한 인덱싱: 검색 시간, 품질, 메모리 사용량 사이의 다양한 트레이드오프를 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch