본문 바로가기
Q&A해결2026년 8월 21일2분 읽기

pgvector에서 <=> 로 유사도 top-k 뽑는데 HNSW 인덱스를 안 타고 seq scan만 합니다

v
vector_dain
조회 415댓글 4

RAG 파이프라인 만들면서 문서 임베딩을 pgvector에 넣고 있습니다. 테이블에 embedding vector(1536) 컬럼이 있고 HNSW 인덱스도 만들어놨는데, 정작 검색 쿼리를 날리면 인덱스를 안 타고 seq scan으로 전체를 훑습니다. 행이 30만 개쯤 되니까 쿼리 한 번에 700ms씩 걸려요 😭

인덱스는 이렇게 만들었습니다.

CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops);

실제 쿼리는 이렇습니다. 특정 카테고리 안에서만 가장 가까운 10개를 뽑으려는 거예요.

EXPLAIN ANALYZE
SELECT id FROM docs
WHERE category = 'manual'
ORDER BY embedding <=> $1
LIMIT 10;

EXPLAIN 결과를 보면 Seq Scan on docs 로 나오고 인덱스 이름은 어디에도 안 보입니다. LIMIT도 걸었고 연산자도 코사인(vector_cosine_ops)으로 맞춘 것 같은데 왜 인덱스를 무시하는지 모르겠습니다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록