벡터 인덱싱과 탐색

만약 벡터 DB에 수천만개의 벡터가 있다면 각각의 벡터간 유사도 비교를 빠르게 하기 위해선 벡터를 적절한 자료구조화하는 벡터 인덱싱이 필요합니다.

KNN(K-Nearest Neighbors)

쿼리 벡터 q 에 대해 전체 벡터 중 가장 유사한(가까운) k 개를 찾는 알고리즘

인덱싱 없이 KNN만 진행하면 사실상 Brute-force KNN이 됩니다. 따라서 아래의 인덱스를 이용한 KNN, ANN을 주로 이용합니다.

ANN(Approximate KNN)

정확도를 조금 희생하더라도 속도를 높이기 위한 방법입니다. 수백만, 수십억개의 데이터를 다룰때는 완벽히 일치하는 결과 대신 충분히 가까운 근사치를 찾는 것이 더 효율적입니다.

HNSW(Hierarchical Navigable Small World)

image.png

IVF(Inverted File Index) + PQ(Product Quantization)