본문으로 건너뛰기

pgvector 인덱스를 HNSW로 바꾸고 검색 지연이 줄어든 과정

사내 문서 4만 건에 IVFFlat을 쓰다가 재현율이 떨어지는 문제를 겪었습니다. HNSW로 옮기면서 m과 ef_search를 어떻게 정했는지 실제 지연 시간과 함께 정리했습니다.

문제

문서가 늘면서 lists 값을 다시 맞추지 않으면 재현율@10이 0.81까지 내려갔습니다. 인덱스를 다시 만들 때마다 검색 품질이 흔들렸습니다.

바꾼 설정

  • m = 16, ef_construction = 64
  • ef_search는 질의마다 40으로 시작
create index on docs using hnsw (embedding vector_cosine_ops) with (m = 16, ef_construction = 64);
set hnsw.ef_search = 40;

결과

p95 지연이 180ms에서 62ms로 줄었고 재현율@10은 0.95를 유지했습니다. 같은 설정으로 재현한 기록이 이 글 아래에 이어져 있습니다.

이어진 기록 4개

기록 잇기
  • 적용1
  • 수정1
  • 검증1
  • 질문1

댓글 2개

  1. 김도현

    사내 위키에도 그대로 적용해 봤어요. 기록으로 남겼습니다.

    1. 한지우작성자

      재현해 주셔서 고마워요. 문서 수가 다른데도 비슷하네요.