PGVector를 넘어서: 벡터 데이터베이스에 포뮬러 1 업그레이드가 필요할 때
Postgres는 관계형 데이터베이스 세계의 테너로서 28년 넘게 개발자들에게 충실히 봉사해 왔습니다. pgvector 확장이 도입되면서 Postgres는 벡터 임베딩을 지원하기 위한 조치를 취했으며, 기본적인 벡터 유사도 검색을 위한 편리한 진입점을 제공합니다.
하지만 pgvector는 실용적인 출발점을 제공하지만, 특히 대규모 애플리케이션과 복잡한 검색 요구 사항을 처리할 때 Milvus와 같은 목적 특화 벡터 데이터베이스에 비하면 여전히 부족합니다. 까다로운 벡터 검색 워크로드에 Postgres와 pgvector만 의존하는 것은 튜닝한 가족용 세단으로 Formula 1 레이스에 참가하려는 것과 같습니다. 한 단계 나아진 것은 맞지만, 그 수준의 경쟁을 위해 만들어진 것은 아닙니다.
AI 애플리케이션의 인기가 폭발적으로 증가하면서 개발자들은 성장통을 겪고 있습니다. pgvector로 시작한 편리한 솔루션은 데이터가 증가하고 검색 요구 사항이 더 정교해짐에 따라 빠르게 답답한 병목 지점이 됩니다. 검색 품질은 저하되고, 인덱스 업데이트는 지연되며, 애플리케이션의 요구 사항을 충족하기 위해 애쓰는 동안 불만은 커집니다.
이 블로그에서는 벡터 검색 애드온인 pgvector를 갖춘 Postgres가 더 작은 프로젝트와 더 단순한 사용 사례에는 잘 작동하지만, 대규모 벡터 검색에서는 한계에 도달하는 이유를 살펴봅니다. 또한 Milvus와 같은 목적 특화 벡터 데이터베이스가 이 빠르게 발전하는 분야의 고유한 과제를 해결하는 데 왜 필수적인지도 논의하겠습니다.
Postgres와 Pgvector 병목 현상
Postgres를 세단으로 볼 수 있습니다. 수년 동안 존재해 왔고 잘 작동하지만, 매우 빠르게 달리도록 해주지는 않습니다. pgvector는 Postgres에 벡터 저장 및 기본 유사도 검색 기능을 추가하지만, 근본적인 한계를 그대로 물려받습니다:
- 규모에 따른 성능: pgvector는 HNSW와 IVF_FLAT이라는 두 가지 인덱싱 방법만 지원합니다. HNSW는 인기 있는 알고리즘이지만, 긴 인덱싱 시간과 더 높은 메모리 요구 사항을 포함한 상당한 트레이드오프가 있습니다. 반면 IVF_FLAT은 더 빠른 인덱스 구축을 제공하지만 데이터셋이 확장됨에 따라 쿼리 성능을 유지하는 데 어려움을 겪습니다. DiskANN과 같은 온디스크 인덱스나 GPU 기반 인덱스 유형에 대한 지원이 부족하다는 점은 대규모 데이터셋을 다룰 때 성능과 유연성을 더욱 제한합니다.
- 고차원 임베딩: Pgvector는 아키텍처 제약으로 인해 고차원 벡터 임베딩을 처리할 수 없습니다. 데이터 저장에 고정된 8KB 페이지를 사용하므로, 벡터가 수용할 수 있는 차원 수가 근본적으로 제한됩니다. 각 차원은 float 저장에 4바이트가 필요하고 메타데이터도 공간을 차지하기 때문에, 고차원 벡터를 효과적으로 인덱싱하는 것은 불가능해집니다. 반면 Milvus와 같은 목적 특화 데이터베이스는 고차원 임베딩을 쉽게 처리하도록 설계되었습니다. pgvector에는 양자화와 같은 우회 방법이 존재하지만, 이는 종종 정밀도에 대한 타협을 요구합니다.
- 고급 기능 부족: pgvector는 목적 특화 벡터 데이터베이스가 제공하는 포괄적인 기능 세트가 부족합니다. 예를 들어 Milvus는 고급 메타데이터 필터링 검색, L2 및 내적을 넘어서는 더 넓은 범위의 거리 메트릭, 하이브리드 희소 및 밀집 검색, 심지어 전체 텍스트 검색(Milvus 2.5에서 제공)을 지원합니다.
- 확장성 과제: 대규모 데이터셋과 높은 쿼리 부하를 처리하도록 pgvector를 확장하는 것은 간단하지 않습니다. 여러 노드에 걸쳐 샤딩을 구현하고 인덱스를 관리하기 위해 상당한 노력이 필요한 경우가 많으며, 이는 추가적인 복잡성과 운영 오버헤드를 초래합니다. 목적 특화 벡터 데이터베이스는 확장성을 염두에 두고 설계되어, 데이터셋과 쿼리 요구가 증가하더라도 원활한 성능을 제공합니다.
Milvus: 포뮬러 1
Milvus는 대규모 벡터 유사도 검색의 특정 요구 사항을 해결하기 위해 처음부터 설계된 오픈소스 벡터 데이터베이스입니다. 벡터 데이터라는 치열한 세계에서 속도와 성능을 위해 정교하게 설계된 포뮬러 1 자동차라고 생각해 보세요.
Milvus가 pgvector를 사용하는 Postgres보다 뛰어난 점은 다음과 같습니다:
- 눈부시게 빠른 검색: Milvus는 FLAT, HNSW, DiskANN, CAGRA, GPU 가속을 포함한 11개의 최첨단 인덱싱 알고리즘을 지원하여, 수백억 개의 벡터에서도 비교할 수 없는 검색 성능을 제공합니다.
- 손쉬운 확장성: Milvus는 분산형 Kubernetes 네이티브 아키텍처를 갖추고 있습니다. 수동 샤딩의 복잡성 없이도 대규모 데이터셋과 높은 쿼리 처리량을 처리할 수 있도록 원활한 수평 확장을 지원합니다.
- 포괄적인 기능 세트: Milvus는 메타데이터 필터링, 다양한 거리 메트릭 지원, 전체 텍스트 검색, 하이브리드 검색, 그리고 특정 요구 사항에 맞춰 검색 전략을 조정할 수 있는 유연한 인덱싱 옵션을 포함한 포괄적인 기능 모음을 제공합니다.
- 데이터의 미래에 최적화: Milvus는 벡터로 표현되는 비정형 데이터의 계속 증가하는 규모와 복잡성을 처리하도록 설계되어, 차세대 AI 애플리케이션을 위한 이상적인 솔루션입니다.
- 지속적인 혁신: 포뮬러 1 팀이 끊임없이 성능의 한계를 밀어붙이는 것처럼, Milvus는 최첨단 인덱싱 알고리즘, 하드웨어 가속 지원, 머신 러닝 기반 최적화를 통해 지속적으로 진화하고 있습니다.
올바른 선택하기: 언제 무엇을 사용할 것인가
pgvector를 사용하는 Postgres가 포뮬러 1 자동차는 아닐지라도, 여전히 차고에서 제 역할을 합니다. 각 솔루션을 언제 사용해야 하는지 살펴보겠습니다:
pgvector를 선택해야 할 때:
- 소규모에서 중간 규모 데이터셋으로 개념 증명 또는 MVP를 구축하는 경우.
- 벡터 검색 요구 사항이 단순하고 복잡한 필터링이 필요하지 않은 경우.
- 임베딩 모델이 Postgres 페이지 크기 제한 이하의 차원을 가진 벡터를 생성하는 경우.
- ACID 준수와 강력한 트랜잭션 보장이 필요한 경우.
Milvus를 선택해야 할 때:
- 대규모 데이터셋(수백만~수십억 개의 벡터)을 다루는 경우.
- pgvector의 한계를 넘어서는 고차원 임베딩이 필요한 경우.
- 쿼리 성능이 애플리케이션에 중요한 경우.
- 다양한 인덱싱 옵션이나 GPU 가속과 같은 고급 기능이 필요한 경우.
- 빠른 성장을 예상하며 수평 확장이 가능한 솔루션이 필요한 경우.
마이그레이션 서비스로 벡터를 Milvus로 이동하기
PGVector를 사용 중이며 문제가 발생하고 있다면, 벡터와 비정형 데이터를 Milvus 또는 Zilliz Cloud의 관리형 서비스로 이동하는 데 도움이 되는 VTS(Vector Transport Service의 약자)라는 오픈소스 마이그레이션 도구를 제공합니다.
Apache Seatunnel 위에 구축된 VTS는 다음을 제공합니다:
- 풍부하고 확장 가능한 커넥터
- 실시간 동기화 및 오프라인 배치 가져오기를 위한 통합 스트림 및 배치 처리
- 데이터 일관성을 위한 분산 스냅샷 지원
- 고성능, 낮은 지연 시간, 확장성
- 실시간 모니터링 및 시각적 관리
pgvector 외에도, VTS는 Elasticsearch, Pinecone, Qdrant, Tencent Cloud VDB 등 다양한 소스에서 Milvus와 같은 목적 특화 벡터 데이터베이스로 벡터 데이터를 마이그레이션하는 것을 지원합니다. 또한 오픈 소스 Milvus와 Zilliz Cloud 간의 원활한 양방향 벡터 마이그레이션도 가능합니다.
마이그레이션 프로세스를 단순화하기 위해 VTS는 스키마 변환을 자동으로 처리하여 복잡한 설정과 개발 작업의 필요성을 없애줍니다. 2025년에 VTS는 MongoDB 및 Weaviate와 같은 추가 소스의 데이터 마이그레이션을 지원하도록 기능을 확장할 예정입니다. 향후 버전에서는 벡터 임베딩을 즉석에서 생성하는 기능도 도입하여, 비정형 데이터를 쉽게 변환하고 벡터 데이터베이스로 포팅해 가속화된 근사 최근접 이웃(ANN) 검색에 활용할 수 있게 할 것입니다. 이러한 흥미로운 업데이트를 기대해 주세요!
VTS 작동 방식
앞으로의 길
벡터 데이터베이스 환경은 AI 기술의 빠른 발전과 함께 계속 진화하고 있습니다. pgvector는 편리한 진입점을 제공하지만, 프로덕션 규모의 AI 애플리케이션 요구사항은 종종 목적 특화 솔루션을 필요로 합니다.
pgvector와 Milvus 사이의 선택은 단순한 기술적 결정보다 더 큰 의미를 가집니다. 이는 애플리케이션의 미래 확장성에 대한 전략적 투자입니다. Formula 1 팀이 성능 요구사항에 따라 장비를 선택하듯, 조직은 성장 궤적에 비추어 벡터 검색 요구사항을 평가해야 합니다.
VTS와 같은 도구가 마이그레이션 프로세스를 간소화함에 따라, 기업은 요구사항이 pgvector의 역량을 넘어설 때 벡터 검색 기능을 자신 있게 전환할 수 있습니다. 새로운 애플리케이션을 설계하든 기존 애플리케이션을 확장하든, 벡터 검색 요구사항을 조기에 고려하면 기술 부채를 방지하고 지속 가능한 성장을 보장할 수 있습니다.
여러분의 의견을 듣고 싶습니다!
이 블로그 게시물이 마음에 드셨다면 다음을 고려해 주세요:
- ⭐ GitHub에서 스타 주기
- 💬 pgvector에서 이전하는 데 도움이 필요하거나 경험을 공유하려면 Milvus Discord community에 참여하기
- 🔍 Milvus를 사용하는 애플리케이션 예제를 보려면 Bootcamp repository 탐색하기
계속 읽기

Smarter Autoscaling in Zilliz Cloud: Always Optimized for Every Workload
With the latest upgrade, Zilliz Cloud introduces smarter autoscaling—a fully automated, more streamlined, elastic resource management system.

Data Deduplication at Trillion Scale: How to Solve the Biggest Bottleneck of LLM Training
Explore how MinHash LSH and Milvus handle data deduplication at the trillion-scale level, solving key bottlenecks in LLM training for improved AI model performance.

OpenAI o1: What Developers Need to Know
In this article, we will talk about the o1 series from a developer's perspective, exploring how these models can be implemented for sophisticated use cases.



