# VectorChord - 40만개 벡터를 PostgreSQL에 $1로 저장하기

> Clean Markdown view of GeekNews topic #18178. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18178](https://news.hada.io/topic?id=18178)
- GeekNews Markdown: [https://news.hada.io/topic/18178.md](https://news.hada.io/topic/18178.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-12-10T09:31:01+09:00
- Updated: 2024-12-10T09:31:01+09:00
- Original source: [blog.pgvecto.rs](https://blog.pgvecto.rs/vectorchord-store-400k-vectors-for-1-in-postgresql)
- Points: 22
- Comments: 1

## Summary

VectorChord는 PostgreSQL에서 대규모 벡터를 효율적으로 관리하기 위한 확장 기능으로, 768차원의 1억 개 벡터에 대해 높은 정확도와 빠른 쿼리 성능을 제공하며, 비용 효율적으로 400,000개 벡터를 $1에 저장할 수 있습니다. 이 시스템은 IVF와 RaBitQ 양자화를 사용하여 벡터를 압축하고 계산 비용을 줄이며, HNSW 기반 시스템보다 빠르고 효율적인 검색을 가능하게 합니다. 또한, VectorChord는 외부 인덱스 생성 및 PostgreSQL의 물리적 복제와 호환되어, 저비용으로 고성능을 제공하며 대규모 데이터셋에 적합합니다.

## Topic Body

- 대규모 벡터를 비용 효율적으로 관리하기 위한 PostgreSQL용 새로운 벡터 검색 확장  
- 768차원의 1억 개 벡터에 대해 상위 10개 쿼리에서 QPS 131, 정확도 0.95 달성 가능  
  - 월 $250으로 단일 머신에서 실행 가능  
- 400,000개 벡터를 $1에 저장 가능:  
  - Pinecone(저장소 최적화 인스턴스) 대비 6배 저렴  
  - pgvector 대비 26배 저렴  
  
### HNSW(Hierarchical Navigable Small Worlds) 기반 벡터 데이터베이스의 문제점  
  
- **긴 인덱스 생성 시간**: 500만 레코드에 대해 2시간 이상 소요  
- **높은 메모리 요구량**: 1천만 벡터 저장 시 최대 40GB 필요  
  
### VectorChord의 혁신적 솔루션: 디스크 친화적인 IVF+RaBitQ  
  
- **IVF(역 파일 색인)**와 **RaBitQ** 양자화를 사용  
  - 32비트 벡터를 **압축된 비트 표현**으로 변환해 계산 비용 감소  
  - 대부분의 비교는 압축 벡터를 사용하고, 정확도 보장을 위해 소수 벡터에 대해 전체 정밀 계산 수행  
- HNSW보다 빠르고 효율적인 검색:  
  - RaBitQ는 벡터를 1비트로 압축, 계산 속도 **100배 증가**  
  - 높은 정확도를 유지하면서 속도 최적화 가능  
  
### 주요 벤치마크 결과  
  
#### GIST 데이터셋 (1M, 960차원)  
  
- VectorChord는 pgvector 대비 QPS가 **2배 더 높음**  
- KMeans 클러스터링을 외부 GPU에서 수행 후 PostgreSQL로 가져오는 방식을 활용  
- AWS `i4i.large` 인스턴스(2 vCPUs, 16GB RAM)에서 70만 벡터 인덱싱 소요 시간: **186초**  
  - pgvector 대비 **16배 빠름**  
  - 삽입 속도도 **14배 더 빠름**  
  
#### LAION 5M 데이터셋  
  
- r6a.xlarge 머신에서 실험(4 vCPUs, 32GB RAM, 200GB EBS):  
  - **높은 정확도**에서도 빠른 응답 유지  
  - **$165.56/월 비용**으로 유사 성능을 제공하며, 경쟁 플랫폼 대비 비용 효율적  
  
#### LAION 100M 데이터셋  
  
- AWS `i4i.xlarge` 인스턴스(4 vCPUs, 32GB RAM, 937GB SSD):  
  - **QPS 16.2 @ recall 0.95** (상위 10개 결과 기준)  
  - 멀티 스레드 환경에서 요청 증가에 따라 **선형적인 QPS 증가** 관찰  
  
### VectorChord의 주요 장점  
  
- PostgreSQL의 물리적 복제 및 기타 기능과 호환  
- **외부 인덱스 생성** 지원:  
  - 더 강력한 머신에서 인덱스를 생성한 뒤, 이를 소규모 머신으로 가져와 질의 실행  
  - 단일 머신에서 **수십억 개 벡터** 지원 가능  
- **저비용, 고성능**: 경쟁 플랫폼 대비 월 비용 크게 절감  
  
### 요약 및 추가 정보  
  
- VectorChord는 PostgreSQL 환경에서 효율적인 벡터 검색을 제공  
- IVF 및 RaBitQ 양자화를 통해 속도와 메모리 사용을 최적화하여 대규모 데이터셋에 적합  
- 클라우드 관리 서비스: [PGVecto.rs Cloud](https://cloud.pgvecto.rs/)  
  - 손쉬운 배포 및 확장 가능

## Comments



### Comment 32189

- Author: xguru
- Created: 2024-12-10T09:32:02+09:00
- Points: 1

[Vector는 PostgreSQL의 새 JSON 입니다](https://news.hada.io/topic?id=9520)  
위 글에서 인용한 pgvector 와 이 VectorChord의 전신인 pgvecto.rs 는 다른 확장입니다.  
[pgvector vs. pgvecto.rs in 2024: A Comprehensive Comparison for Vector Search in PostgreSQL](https://blog.pgvecto.rs/pgvector-vs-pgvectors-in-2024-a-comprehensive-comparison-for-vector-search-in-postgresql)  
  
pgvecto.rs 를 만든 팀이 VectorChord를 만들어서 같이 관리중이고, 아직 기능이 VectorChord로 다 넘어오지 않았고요. [내년쯤에는 pgvecto.rs를 지원중단하고 VectorChord로 넘어간다고 합니다.](https://news.ycombinator.com/item?id=42326326)  
  
Postgres에서 벡터 저장 하시는 분들은 참고하세요.
