(1) Scann
구글에서 만든 ANN 라이브러리. 2022 년 기준 벤치마크 상으로 가장 좋은 성능을 내고 있다.
(2) 튜닝하기
- 데이터가 100k 개 이상일 경우, AH 로 점수를 계산하고 rescore 절차를 거쳐야 한다.
- AH 로 점수를 계산할 때,
dimensions_per_block은2로 설정하자. - 파티셔닝 시에
num_leaves는 데이터포인트 개수의 제곱근 수 (square root) 와 비슷하게 설정하면 좋다.
구글에서 만든 ANN 라이브러리. 2022 년 기준 벤치마크 상으로 가장 좋은 성능을 내고 있다.
dimensions_per_block 은 2 로 설정하자.num_leaves 는 데이터포인트 개수의 제곱근 수 (square root) 와 비슷하게 설정하면 좋다....st Neighbor)은 정확한 nearest neighbor를 전수 계산하지 않고, 충분히 가까운 후보를 빠르게 찾는 검색 방식이다. Retrieval에서는 HNSW, IVF, faiss, scann, Vamana 같은 index가 dense embedding search의 latency와 recall을 결정한다.
.... Product Quantization(PQ)은 하나의 고차원 벡터를 여러 하위 벡터로 나누고 각각 독립적으로 양자화합니다. 이런 방식으로 메모리를 절약하면서 빠른 근사 검색이 가능합니다. ScaNN 같은 라이브러리는 파티셔닝 및 이방성 양자화(Anisotropic Quantization)를 결합하여 대규모 환경에서도 효율적인 성능을 보장합니다. 이외에도 트리 기반 또는 그래프 기반 알고...
...Embedding - Generalizable Embeddings from Gemini 같은 embedding model로 확장된다. 실제 serving에서는 HNSW, IVF, faiss, scann, Vamana 같은 indexing 전략이 품질과 latency를 좌우한다. Multi-vector retrieval은 single-vector embedding의 정보 손실을 줄이려는 흐름...
ANN(Approximate Nearest Neighbor)은 정확한 nearest neighbor를 전수 계산하지 않고, 충분히 가까운 후보를 빠르게 찾는 검색 방식이다. Retrieval에서는 HNSW, IVF, faiss, scann, Vamana 같은 index가 dense embedding search의...
We can split ANN algorithms into three distinct categories; trees, hashes, and graphs. HNSW slots into the graph category.
HNSW 알고리즘만 구현해 놓은 C++ 헤더 전용 라이브러리다. Python 바인딩을 제공하며, HNSW 논문 저자인 Yury Malkov 가 직접 만들었다.
Milvus는 대규모 vector search를 위한 vector database다. 내부적으로 HNSW, IVF, quantization 계열 index를 선택해 사용할 수 있고, retrieval system에서는 faiss 같은 라이브러리보다 운영 기능이 더 필요한 경우 비교 대상이 된다.
페북 (현 메타) 에서 만든 ANN 라이브러리.
Vamana : Microsoft Research에서 개발한 Graph-based ANN 알고리즘 . DiskANN의 핵심 인덱싱 알고리즘으로, HNSW와 달리 Flat Graph 구조를 사용하여 디스크 기반 검색에 최적화됨. Billion-scale 벡터 검색에서 단일 노드로 5000+ QPS, 95%+...
최대 내적 검색(Maximum Inner Product Search, MIPS)은 주어진 쿼리 벡터와 데이터베이스 내의 수많은 데이터 벡터들 사이에서, 내적(inner product) 값이 가장 큰 벡터를 찾는 문제를 의미합니다. 이 기술은 단순한 유사도 측정을 넘어 추천 시스템, 자연어 처리(NLP), 컴퓨터...
IVF(Inverted File Index)는 vector space를 여러 centroid 또는 cluster로 나눈 뒤, query와 가까운 cluster 안에서만 후보를 찾는 ANN indexing 방식이다. faiss에서 자주 쓰이며, exhaustive search보다 빠르지만 nlist , nprobe...
비슷한 벡터일수록 같은 해시 버킷에 들어갈 확률이 높아지도록 설계한 해싱 기법이다. ANN 검색의 한 방법으로 쓴다.
데이터를 정의할 class object 를 정의해야한다.