"질문 벡터와 가장 가까운 문서 벡터 k개를 찾아라" 라고 하는 과정
1. Cosine Similarity (RAG에서 거의 표준)
2. Euclidean Distance (L2 거리)
3. Dot Product
ANN은 정확한 이웃을 찾는 대신
이라는 목표를 가진 알고리즘
대표 ANN 알고리즘이 바로 HNSW, Faiss, ScaNN, IVF+PQ등이 있다 OpenSearch는 HNSW를 핵심으로 사용
kNN은 본래 모든 점을 비교해야 하지만, HNSW는 그래프를 이용해 "빠르게 후보를 좁히는 구조"를 사용한다
핵심 아이디어
이 구조 덕분에
즉, "kNN을 실시간에 사용할 수 있도록 만든 알고리즘이 HNSW" 라고 이해하면 좋음
{
"method": {
"name": "hnsw",
"engine": "faiss",
"space_type": "cosinesimil"
}
}
name: hnsw -> ANN 기반 그래프 사용engine: faiss -> Facebook FAISS 사용 (가장 빠른 엔진 중 하나)space_type: cosinesimil -> 코사인 유사도로 계산즉, OpenSearch는 내부적으로 kNN을 ANN 방식으로 최적화한 그래프 탐색을 한다