Tiger Data, PostgreSQL용 벡터 인덱스 PRISM 공개... HNSW보다 메모리 4배 적게 쓰고 빌드 20배 빨라
- Tiger Data가 PostgreSQL 확장 pg_vectorsearch를 오픈소스로 공개하고, 새 인덱스 PRISM은 HNSW의 그래프 방식 대신 파티셔닝과 압축을 사용함
- 1억 개 벡터 기준으로 PRISM은 질의 지연 6ms를 기록했고, HNSW보다 메모리를 4배 적게 쓰며 인덱스 빌드는 20배 넘게 빠름
- PRISM은 벡터 차원을 최대 1968차원까지만 지원하고, PostgreSQL 18 이상에서만 동작함
- 출시 직후 알파 단계라 Azure 등 관리형 PostgreSQL의 허용 확장 목록에는 아직 없음
- 개발사는 기존 pgvectorscale의 재현율 저하 문제를 이유로 그래프 기반에서 파티션 기반 설계로 방향을 바꿈
Hacker News opinions
나 Tiger Data 쪽 사람인데 이 팀이랑은 무관함. 그냥 릴리스가 신기해서 올렸고, 기여자 Erik한테 스레드 전달해뒀으니 피드백 있으면 볼 듯.
필터링은 되냐? 포스트 필터링만 된다던데 테넌트나 유저 권한 범위를 이 인덱스로 어떻게 효율적으로 거는지 모르겠음. 파티셔닝은 쉬운 편이고 최근성 가중치 주는 게 제일 골치 아픔.
나는 VectorChord 쓰고 있는데 빠른 NVMe 디스크 붙이니까 Postgres 비용이 반으로 줄었음. 저메모리 벡터 인덱스 경쟁자 생긴 건 반가움.
관리형 Postgres에서 확장 열어주지 않으면 쓸 사람 별로 없을 듯.
관리형 쓰고 싶으면 Tiger Cloud 쓰면 됨. 라이선스가 PostgreSQL이라 pg_textsearch처럼 AlloyDB나 HorizonDB에도 들어갈 수 있을 거임.
1968차원 제한은 인덱스용으로 768차원 잘라서 조회하고, WHERE에서 전체 벡터로 한 번 더 비교하면 우회됨. 빠른데 정확도는 조금 떨어짐.
Azure DB에서 pgvector 써봤는데 무난하더라. pgvector에 PR 안 보내고 왜 새로 만들었는지 설계 과정이 제일 궁금함.
pgvectorscale 쓰다가 재현율이 들쭉날쭉해서 그래프 말고 파티션 방식으로 옮긴 거임. 블로그에 자세히 적어놨음.