WHERE 절과 함께 HNSW를 실제로 작동시키기
DuckDB의 벡터 검색 확장 기능의 한계인 WHERE 절 후처리 문제를 해결한 hnsw_acorn 확장 기능을 소개합니다. 기존 DuckDB 벡터 검색은 HNSW 인덱스가 결과를 반환한 후 WHERE 절로 필터링하여, 필터 조건에 맞는 결과가 적거나 없을 수 있었으나, hnsw_acorn은 ACORN-1 알고리즘을 통해 필터 조건을 그래프 탐색 중에 적용하여 정확한 필터링을 보장합니다.
또한, RaBitQ 양자화 기법을 도입해 1비트 차원당 벡터를 압축하여 메모리 사용량을 21~30배 줄이면서도, 후보군을 양자화된 인덱스에서 탐색 후 원본 벡터로 재평가하여 정확도를 유지합니다.
이 확장은 메타데이터 조인, 그룹별 Top-K 검색 등 복잡한 쿼리도 표준 SQL 문법으로 투명하게 최적화하며, 네 가지 옵티마이저 규칙으로 WHERE, JOIN, GROUP BY 구문을 인식해 자동으로 최적의 인덱스 탐색 전략을 적용합니다.
벤치마크 결과, 필터링된 벡터 검색에서 1% 이하 선택도에서도 100% 결과 재현율을 달성하며, 메모리 절감과 정확성, 사용 편의성을 동시에 제공합니다. 설치 및 사용은 간단하며, GitHub에서 소스 코드를 확인할 수 있습니다.