RAG 시스템 운영 중인데 pgvector 0.9 → 0.10 업그레이드 후 같은 쿼리 임베딩으로 검색해도 결과 순서가 바뀌고 일부 문서가 누락됩니다.
인덱스는 HNSW이고 m=16, ef_construction=64 그대로입니다. 인덱스 reindex도 했는데 차이가 그대로네요. 검색 정확도가 떨어진 느낌입니다.
0.10에서 뭐가 바뀐 건지, 어떻게 해야 0.9 수준 정확도로 돌아갈 수 있나요?
RAG 시스템 운영 중인데 pgvector 0.9 → 0.10 업그레이드 후 같은 쿼리 임베딩으로 검색해도 결과 순서가 바뀌고 일부 문서가 누락됩니다.
인덱스는 HNSW이고 m=16, ef_construction=64 그대로입니다. 인덱스 reindex도 했는데 차이가 그대로네요. 검색 정확도가 떨어진 느낌입니다.
0.10에서 뭐가 바뀐 건지, 어떻게 해야 0.9 수준 정확도로 돌아갈 수 있나요?
댓글 1
0.10에서 HNSW 검색 동작이 두 가지 의미 있게 바뀌었습니다.
1) ef_search 기본값 변경
0.9까지는 세션별
SET hnsw.ef_search의 기본이 40이었는데, 0.10부터는 인덱스 생성 시점의 ef_construction을 따라 동적으로 조정합니다. ef_search가 작아지면 더 빠르지만 recall이 떨어집니다.2) Distance 계산 정밀도 변경
0.10부터 SIMD 가속(AVX-512)이 도입되면서 일부 distance 계산이 미세하게 다릅니다. 거의 같은 거리의 문서들 사이에서 순서가 바뀔 수 있습니다.
실무 점검 순서:
권장 설정 (RAG 운영 기준):
ef_search: 80~120 (recall 95% 이상 목표)m: 16~32 (벡터 차원 1024 이하면 16, 1536 이상이면 24~32)ef_construction: 64~200 — 빌드 시간만 느려지고 검색은 영향 없음SET maintenance_work_mem = '4GB'후 빌드iterative scan (0.10 신기능)
0.10에서
hnsw.iterative_scan = strict_order옵션이 추가됐습니다. recall이 부족할 때 자동으로 추가 노드를 탐색해 결과를 보완합니다.지연시간이 약간 늘지만 recall이 0.95+ 수준으로 안정됩니다.
0.9 → 0.10 마이그레이션 체크리스트:
SET enable_simd = off(성능은 떨어짐)RAG 정확도 회귀는 모니터링이 핵심입니다. recall 자동 측정 파이프라인부터 갖추세요.