[Qdrant] Vector 인덱스 및 쿼리 최적화 (hnsw)

Qdrant는 hnsw 기반의 인덱싱을 제공한다.
이를 통해 성능을 최적화하는 방법을 간단히 정리해보겠다.




HNSW 옵션

hnsw에는 대략 다음과 같은 옵션들이 존재한다.

이게 컬렉션을 생성했을 당시의 기본값이다.



m

이건 인덱스 그래프에서, 노드마다 연결이 되는 선(edge)의 개수다. 기본값은 16이다.
이게 커질수록 노드 탐색 범위가 넓어져서 정확도가 상승하지만, 메모리 사용량도 증가한다.



ef_construct

이건 인덱스 구성시에 참조할 이웃의 수다. 기본값은 100이다.
이게 커질수록 정확도가 상승하지만, 인덱스 구축 시간이 증가한다.




Query 옵션

쿼리를 날릴때 있어서도 최적화의 여지가 좀 있다.

hnsw_ef라는 옵션이 그것이다. 이건 검색할때 이웃을 몇개까지 조회할지를 정의한다.

보통 64 정도를 많이 주는 것 같은데, 이게 커질수록 정확도가 증가하지만 순회하는 지점이 늘어서 처리 시간이 증가한다.



참조
https://qdrant.tech/documentation/concepts/indexing/

https://api.qdrant.tech/v-1-13-x/api-reference/collections/create-collection
https://api.qdrant.tech/v-1-13-x/api-reference/search/query-points