사전 지식
FAISS란?
•
Facebook에서 만든 벡터 클러스터링 및 similarity search 라이브러리
Similarity search
•
어떤 쿼리 벡터가 들어왔을 때 기존에 가지고 있는 벡터 셋과 거리를 계산해 유사한 벡터들을 검색하는 것
→ 두 벡터가 유사하다는 것은 두 벡터간 거리가 가깝다는 의미
임베딩(Embedding)
•
입력된 미디어 항목을 벡터 공간에 매핑하여 해당 항목의 의미적 유사성을 근거리로 표현하는 방식
•
벡터 표현(Vector Representations)
초록(Abstract)
•
벡터 데이터베이스에 집중
◦
현대 기술에서 임베딩의 효율적인 저장 및 인덱싱에 대한 요구가 증가하고 있다.
◦
그래서 Faiss는 빠르게 확장되고 있는 다양한 AI 애플리케이션에 중요한 대규모 임베딩 벡터 컬렉션을 관리하도록 특별히 설계된 라이브러리이다.
•
핵심 기능
◦
FAISS는 벡터 데이터베이스의 기본 작업인 벡터 유사성 검색에 전념하고 있다.
◦
이 기능을 통해 사용자는 유사한 벡터를 효율적으로 찾을 수 있으며, 이는 추천 시스템, 이미지 검색 및 자연어 처리와 같은 작업에 필수적입니다.
•
인덱싱 메서드를 위한 툴킷
◦
FAISS는 다양한 인덱싱 방법과 관련 원시 처리 단위(Primitives)를 포함하는 툴킷 역할
→ 검색뿐만 아니라 벡터의 클러스터링, 압축 및 변환에도 사용
◦
이런 다양성 덕분에 Faiss는 다양한 시나리오에 적용할 수 있다.
•
Trade-off Space
◦
속도, 정확도, 리소스 사용과 같은 다양한 성능 지표 간의 균형을 의미하는 벡터 검색과 관련된 장단점 공간에 대해 설명
•
설계 원칙
◦
구조, 최적화 접근 방식 및 다른 도구와의 인터페이스 방식에 초점을 맞춰 FAISS의 설계 원칙에 대해 자세히 설명한다.
→ 해당 백서는 라이브러리의 기본 아키텍처와 운영 전략에 대한 통찰력을 제공하는 것을 목표로 한다
•
벤치마킹 및 응용 프로그램
◦
FAISS의 주요 기능을 벤치마킹하고 선택된 응용 프로그램에 대해 논의하면서 다양한 분야에 걸쳐 광범위하게 적용할 수 있음을 보여준다.딥러닝의 발전
개요
딥러닝의 발전
•
딥러닝의 발전으로 인해 복잡한 데이터를 저장하고 검색하는 방식에 큰 변화를 가져왔다.
•
특히 임베딩(embeddings)의 발전을 통해 데이터의 벡터 표현을 이용한 유사도 검색이 가능해졌다.
임베딩 사용 항목 간 유사도 직접 비교
•
임베딩 추출기 : 임베딩 간의 거리로 유사성을 반영하도록 설계되어 있으며, 이를 기반으로 벡터 공간 내에서의 이웃 검색이 미디어 항목 간 유사도 검색을 구현하는 것
•
유사도 검색은 특히 학습이 비용효율적이지 않은 작업에서 인기를 끌며, 이를 위해 벡터 저장 및 검색 기능을 제공하는 산업용 데이터베이스 관리 시스템(DBMS)의 사용이 증가하고 있다.
•
최근까지 ANNS(근사 최근접 이웃 검색) 알고리즘은 특정 연구와 응용에 국한되어 있었으나, 점차 널리 활용되고 있다.
임베딩 추출과 벡터 검색 알고리즘을 분리하여 관리하는 것이 유리
•
임베딩 추출기는 주로 신경망을 통해 작업에 맞춘 임베딩 간 거리를 생성하고, 벡터 인덱스는 주어진 거리 메트릭을 바탕으로 정확하게 이웃 검색을 수행
•
FAISS는 단순한 스크립트와 DBMS 구성 요소로 활용되며, 다양한 인덱싱 방식(전처리, 압축, 비철저 검색 등)을 제공하는 툴박스이다.
FAISS의 특징 및 기본 구조
•
FAISS는 특징을 추출하지 않으며, 서비스 또는 데이터베이스가 아니며, 동시 쓰기 접근, 부하 분산, 샤딩, 트랜잭션 관리 또는 쿼리 최적화와 같은 기능을 제공하지 않는다.
•
FAISS의 기본 구조는 인덱스로, 여러 구현을 포함할 수 있으며, 검색 시 쿼리 벡터와 가장 가까운 데이터베이스 벡터를 반환하는 방식이다.