Amazon Aurora PostgreSQL에서 pgvector 0.8.0으로 벡터 검색 성능과 관련성 향상
핵심 내용
Aurora PostgreSQL의 pgvector 0.8.0은 필터링된 벡터 검색의 속도와 재현율을 크게 높였다.
자세히 보기
Amazon Aurora PostgreSQL-Compatible Edition이 pgvector 0.8.0을 지원하면서 벡터 검색의 성능과 관련성이 크게 개선됐다. 핵심은 iterative_scan으로, 필터가 붙은 ANN 검색에서 결과가 너무 적게 나오거나 누락되던 overfiltering 문제를 완화한다.
pgvector 0.8.0은 세 가지 모드를 제공한다.
- off: 기존 동작
- strict_order: 정확한 거리 순서 유지
- relaxed_order: 근사 순서로 더 빠르게 반환
또한 개선된 비용 추정 덕분에 복잡한 필터링 쿼리에서 B-tree 같은 전통적인 인덱스를 더 잘 선택한다. HNSW 기준으로는 기본 검색 설정인 hnsw.ef_search = 40에서 데이터의 10%만 필터에 맞으면 대략 4개 정도의 결과만 얻을 수 있었지만, iterative_scan은 필요한 결과 수를 채울 때까지 인덱스 스캔을 이어가 재현율을 높인다.
튜닝 포인트도 분명하다. HNSW 인덱스에서는 hnsw.max_scan_tuples가 기본 20,000이며, hnsw.scan_mem_multiplier로 work_mem 배수의 메모리 상한을 조정할 수 있다. 다만 relaxed_order를 쓰면 최종적으로 결과를 다시 정렬해야 할 수 있어, 예시처럼 별도 정렬을 강제하는 방식이 필요할 수 있다.
벤치마크는 1,000만 개 제품으로 만든 합성 전자상거래 데이터셋에서 진행됐다. db.r8g.4xlarge의 Aurora PostgreSQL 클러스터 2개를 비교했고, 쿼리 A~E에 대해 p99 지연 시간을 측정했다. 대표적으로 쿼리 A는 123.3ms → 13.1ms로 약 9.4배 빨라졌고, 쿼리 E는 913.4ms → 160.3ms로 5.7배 개선됐다. 카테고리 필터가 있는 검색에서도 0.8.0의 최적 구성은 0.7.4보다 더 빠르면서 완전한 결과 세트를 반환했다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.