FAISS(Facebook AI Similarity Search)는 메타가 개발한 오픈소스 라이브러리로, 고밀도 벡터의 효율적인 유사도 검색과 클러스터링을 위해 설계되었다. 이 라이브러리는 RAM에 맞지 않을 만큼 큰 데이터셋을 처리하도록 설계되었으며, 속도와 메모리 사용에 최적화된 다양한 알고리즘을 제공한다. FAISS는 머신러닝과 인공지능 애플리케이션, 특히 신경망이 생성한 임베딩을 다루는 작업(추천 시스템, 정보 검색, 대규모 언어 모델 파이프라인 등)에서 널리 사용된다.
FAISS는 정확 검색(브루트포스)과 곱 양자화, HNSW(계층적 내비게이블 소규모 세계), 역파일 색인과 같은 근사 방법을 포함한 다양한 색인 구조에 대한 통합 인터페이스를 제공한다. CPU와 GPU 가속을 모두 지원하며, GPU 구현은 검색과 클러스터링 작업을 크게 가속화한다. 이 라이브러리는 C++로 작성되었고 Python 바인딩을 제공하여 개발자와 연구자 커뮤니티에 폭넓게 접근 가능하다.
역사와 개발
FAISS는 2017년 3월 메타(당시 페이스북)의 기초 AI 연구(FAIR) 팀에 의해 처음 출시되었다. 초기 버전은 생산 시스템에서 수십억 개의 벡터를 처리해야 하는 증가하는 요구를 해결하기 위해 빠르고 확장 가능한 유사도 검색 솔루션을 제공하는 데 초점을 맞췄다. 이 라이브러리는 MIT 라이선스로 오픈소스화되어 학계와 산업계에서 광범위하게 채택되었다.
수년에 걸쳐 FAISS는 메타의 연구자와 엔지니어, 그리고 더 넓은 커뮤니티의 기여로 발전해 왔다. 주요 이정표로는 2017년 GPU 지원 도입, 2018년 HNSW 색인 추가, 양자화 기술과 메모리 효율성의 지속적인 개선이 있다. 2024년 기준으로 FAISS는 Machine learning 생태계에서 강력한 입지를 가진 가장 인기 있는 벡터 검색 라이브러리 중 하나로 남아 있다.
핵심 기능
FAISS는 검색 정확도와 속도 간의 균형을 조정하는 다양한 색인 구조를 제공한다. 정확 검색 색인(IndexFlatL2)은 브루트포스 거리를 계산하여 완벽한 재현율을 제공하지만 데이터셋 크기에 따라 확장성이 떨어진다. 더 큰 데이터셋의 경우 근사 방법이 선호된다. 역파일 색인(IVF)은 벡터 공간을 클러스터로 분할하여 검색 공간을 줄인다. 곱 양자화(PQ)는 벡터를 압축된 코드로 변환하여 메모리 효율적인 저장과 더 빠른 거리 계산을 가능하게 한다. HNSW 색인은 다층 그래프를 구축하여 높은 재현율로 빠른 근사 최근접 이웃 검색을 허용한다.
이 라이브러리에는 역파일 색인 구축과 기타 데이터 분석 작업에 사용되는 k-평균과 같은 클러스터링 알고리즘도 포함되어 있다. FAISS는 여러 쿼리를 동시에 처리할 수 있는 배치 처리를 지원한다. 또한 재현율과 속도 벤치마크를 포함한 색인 성능 평가 도구를 제공한다.
GPU 가속
FAISS는 CUDA를 활용하여 색인 구축과 검색을 모두 가속화하는 전용 GPU 구현을 포함한다. GPU 버전은 플랫, IVF, PQ를 포함한 모든 주요 색인 유형을 지원하며, 하드웨어와 데이터셋에 따라 CPU 전용 실행에 비해 10배에서 100배의 속도 향상을 달성할 수 있다. 이는 Large language model 시스템의 의미 검색과 같이 낮은 지연 시간이 중요한 실시간 애플리케이션에 적합하게 만든다.
GPU 코드는 메모리 풀링과 비동기 작업과 같은 기술을 사용하여 처리량을 최대화하도록 메모리 효율적으로 설계되었다. FAISS는 또한 다중 GPU 구성을 지원하여 여러 장치에서 분산 검색을 가능하게 한다. 이 기능은 GPU 인스턴스를 쉽게 사용할 수 있는 Amazon Web Services 또는 Google Cloud와 같은 클라우드 환경에 FAISS를 배포하는 데 특히 유용하다.
애플리케이션 및 사용 사례
FAISS는 유사도 검색과 추천을 위한 생산 시스템에서 널리 사용된다. 예를 들어, 전자상거래 플랫폼의 의미 검색 기능을 지원하여 제품 임베딩을 사용자 쿼리 임베딩과 비교해 관련 항목을 검색한다. 또한 소셜 미디어 플랫폼에서 유사한 이미지나 비디오를 찾는 데 사용되며, 생물정보학에서 유전자 발현 프로필을 비교하는 데 사용된다.
Generative AI와 Artificial intelligence의 맥락에서 FAISS는 Neural network 모델의 임베딩을 저장하고 검색하는 데 자주 사용되어 Large language model 애플리케이션에서 검색 증강 생성(RAG)을 가능하게 한다. 문서 임베딩을 색인화함으로써 FAISS는 모델이 대규모 말뭉치에서 관련 맥락에 접근할 수 있게 하여 생성된 응답의 정확성과 관련성을 개선한다. 이러한 통합은 OpenAI와 Anthropic 같은 회사가 구축한 프레임워크와 오픈소스 프로젝트에서 일반적이다.
통합 및 생태계
FAISS는 NumPy와 PyTorch와 같은 인기 있는 Python 라이브러리와 원활하게 통합되며, 많은 벡터 데이터베이스 시스템의 핵심 구성 요소이다. Milvus, Weaviate, Qdrant를 포함한 여러 상용 및 오픈소스 프로젝트가 FAISS를 기본 검색 엔진으로 사용한다. 이 라이브러리는 커뮤니티 유지 관리 래퍼를 통해 Java와 Go와 같은 다른 언어에 대한 바인딩도 제공한다.
FAISS 커뮤니티는 광범위한 문서, 튜토리얼, 이슈 추적 및 기능 요청이 있는 GitHub 저장소를 유지 관리한다. 이 라이브러리는 정기적으로 성능 개선과 새로운 기능을 포함한 릴리스로 활발히 개발되고 있다. 2025년 기준으로 FAISS는 고차원 벡터 데이터를 다루는 모든 사람에게 기본적인 도구로 계속 자리 잡고 있다.