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