Aurora PostgreSQL, pgvector 0.8.0으로 벡터 검색 성능 대폭 향상!

by DD
1개월 전
조회수 20

pgvector 0.8.0은 Amazon Aurora PostgreSQL에서 벡터 검색 성능을 최대 9배 향상시키고, 100배 더 정확한 검색 결과를 제공함

반복적 인덱스 스캔(Iterative Scan) 기능을 도입하여 필터링된 쿼리에서 오버필터링(Over-filtering) 문제를 해결하고 재현율을 개선함

0.7.4 버전 대비 쿼리 처리 속도(Query Processing Speed)가 최대 5.7배 향상되었으며, 특히 대규모 데이터셋에서 효과적임

향상된 쿼리 계획(Query Plan)은 복잡한 필터링 검색에 대해 더 효율적인 실행 경로를 선택하도록 돕고, 성능 튜닝 유연성을 제공함

전자상거래, 추천 시스템, RAG(Retrieval-Augmented Generation) 등 다양한 AI 애플리케이션에서 벡터 검색(Vector Search) 성능 향상을 실현함

pgvector 0.8.0의 핵심: 반복적 인덱스 스캔(Iterative Scan)

pgvector 0.8.0은 반복적 인덱스 스캔(Iterative Scan) 기능을 통해 기존 벡터 검색의 한계를 극복했다. 이전 버전에서는 벡터 인덱스 스캔 후 SQL 필터링을 적용하여 오버필터링(Over-filtering) 문제가 발생했다. 이로 인해 쿼리가 예상보다 적은 결과를 반환하거나, 심지어 아무 결과도 반환하지 못하는 경우가 있었다. 0.8.0은 인덱스 스캔, 필터 적용, 결과 확인 단계를 반복하며, 충분한 결과를 찾을 때까지 스캔을 지속하여 재현율(Recall)을 향상시킨다. 특히, relaxed_order 모드는 성능과 정확성 사이의 균형을 제공하며, strict_order는 정확한 거리 순서를 보장한다.

성능 개선: 쿼리 처리 속도 및 쿼리 계획 최적화

pgvector 0.8.0은 0.7.4 버전에 비해 쿼리 처리 속도를 최대 5.7배 향상시켰다. 이러한 성능 개선은 특히 대규모 데이터셋에서 두드러지게 나타난다. 향상된 쿼리 계획(Query Plan)은 쿼리 플래너가 더 효율적인 실행 경로를 선택하도록 돕는다. 예를 들어, 0.8.0은 0.7.4에 비해 더 정확한 비용 추정을 통해 벡터 연산의 실제 계산 복잡성을 더 잘 반영한다. 그 결과, 더 나은 실행 계획 선택과 더 완전한 결과 세트를 얻을 수 있다. 벤치마크 결과는 쿼리 A(기본 검색)에서 9.4배, 쿼리 E(대용량 결과 세트)에서 5.7배의 성능 향상을 보여준다.

HNSW 인덱싱 알고리즘과 성능 튜닝

pgvector는 HNSW(Hierarchical Navigable Small World) 인덱싱 알고리즘을 사용하여 벡터 유사성 검색을 가속화한다. HNSW는 벡터 간의 연결을 기반으로 다층 그래프 구조를 생성하여 효율적인 탐색을 가능하게 한다. 0.8.0에서는 relaxed_order와 strict_order 모드를 제공하여 성능과 정확도 간의 균형을 조절할 수 있다. hnsw.ef_search 매개변수를 조정하여 검색 정확도를 제어하고, hnsw.max_scan_tuples 매개변수를 통해 반복적 스캔의 튜플 수를 제한하여 성능을 튜닝할 수 있다. 또한, hnsw.scan_mem_multiplier를 통해 work_mem의 배수로 사용할 최대 메모리 양을 지정하여 메모리 사용량을 조절할 수 있다.

벤치마크 결과 분석: 재현율 및 결과 완전성 향상

pgvector 0.8.0은 재현율과 결과 완전성 측면에서 괄목할 만한 개선을 이루었다. 특히, 필터링된 쿼리에서 0.7.4 버전은 요청된 결과의 일부만 반환하는 경우가 많았지만, 0.8.0의 반복적 스캔을 통해 최대 100배의 개선을 확인했다. 벤치마크 결과에 따르면, 카테고리 필터링 검색복합 필터링 검색에서 0.8.0은 100%의 재현율을 달성했다. 이러한 개선은 사용자 경험을 크게 향상시키며, 특히 시맨틱 검색, 추천 시스템, RAG 애플리케이션에서 중요한 의미를 갖는다. 0.8.0은 높은 선택성(High Selectivity)을 가진 쿼리에서도 향상된 성능을 제공한다.

Aurora PostgreSQL-Compatible 환경에서의 RAG 애플리케이션 확장

pgvector 0.8.0은 RAG(Retrieval-Augmented Generation) 애플리케이션의 성능을 향상시키는 데 기여한다. RAG는 응답 생성 전에 관련 컨텍스트를 검색하는 AI 시스템으로, pgvector 0.8.0은 낮은 지연 시간, 필터링된 쿼리의 성능 향상, 완전한 결과 세트를 제공하여 RAG 시스템의 효율성을 높인다. 특히, relaxed_order 모드는 정확한 순서가 중요하지 않은 top-k 검색에 적합하며, AI 시스템의 종단 간 응답 시간을 개선한다. Aurora PostgreSQL-Compatible 환경에서 pgvector 0.8.0을 사용하면, 기업은 대규모 데이터셋에서도 높은 성능과 정확성을 유지하는 RAG 애플리케이션을 구축할 수 있다.

프로덕션 환경 배포를 위한 모범 사례

pgvector 0.8.0을 프로덕션 환경에 배포할 때, 성능, 재현율, 필터링 정확도 간의 균형을 고려해야 한다. 작은 데이터셋에서는 벡터 인덱스보다 순차 스캔이 더 나은 성능을 보일 수 있으며, 대용량 데이터셋에 대해서만 벡터 인덱스를 사용하는 것이 권장된다. HNSW 인덱스 생성 시 권장 매개변수(ef_construction = 128, m = 16)를 사용하고, 필터링에 사용되는 메타데이터 컬럼에 추가 인덱스를 생성하여 성능을 향상시킨다. 쿼리 시간 튜닝을 위해, 사용 사례에 따라 hnsw.iterative_scan, hnsw.ef_search, hnsw.max_scan_tuples 매개변수를 조정한다. 또한, Graviton4 기반 인스턴스(R8g 시리즈)를 활용하고, 모니터링 및 튜닝을 위해 Amazon CloudWatch Database Insights를 사용하는 것이 좋다.

Amazon Aurora PostgreSQL에서 pgvector 0.8.0을 통한 벡터 검색 성능 및 관련성 향상