Pinecone·Qdrant·Milvus 중 뭐 쓸까 — RAG 구축 실전 선택 기준
Pinecone으로 프로토타입을 만들었다가 청구서를 보고 Qdrant로 갈아탔습니다. 같은 문서 검색 RAG였는데 월 비용이 5분의 1로 줄었어요. 하지만 그 대신 제가 직접 감당해야 할 것들이 생겼죠. 이 글은 설정 시간·비용 투명성·운영 부담을 기준으로 각각이 최선인 상황을 정리한 겁니다.
어떤 기준으로 비교했나요?
제가 실제로 구축한 건 사내 문서 검색 시스템이었습니다. 마크다운 문서 약 2만 건을 청크로 쪼개 임베딩하고, 자연어 질문에 관련 문서를 찾아주는 구조였어요. 평가 기준은 세 가지였습니다 — 초기 설정에 걸리는 시간, 월 단위 운영 비용과 그 예측 가능성, 스케일업할 때 생기는 숨은 복잡도. 벤치마크 숫자보다 제가 직접 느낀 운영 부담이 더 중요했어요.
같은 RAG 파이프라인을 세 방식으로 돌려봤습니다
처음엔 Pinecone으로 시작했어요. 회원가입하고 인덱스 하나 만드는 데 10분도 안 걸렸습니다. API 키 받아서 파이썬 클라이언트로 upsert 날리면 끝이었죠. 문제는 한 달 뒤였어요. 프리티어 제한을 넘어서자 유료 플랜으로 자동 전환됐는데, Pod 기반 요금제라는 게 생각보다 비쌌습니다. 트래픽이 적어도 Pod 자체에 비용이 붙는 구조였거든요. 제가 확인한 시점 기준으로 스타터 Pod 하나만으로도 월 단위 고정 비용이 발생했어요.
Qdrant 클라우드는 온디맨드 요금제로 벡터 개수와 쿼리만큼만 내서 월 비용이 확연히 줄었습니다. 대신 제가 직접 챙겨야 할 게 생겼어요. 컬렉션 스키마 설계를 처음부터 해야 했고, 필터링 쿼리 최적화도 제 몫이었습니다. Pinecone은 메타데이터 필터가 알아서 잘 돌아갔는데 Qdrant는 인덱스를 직접 걸어야 속도가 나왔어요. 공식 문서를 보면서 페이로드 인덱스를 추가하는 데 반나절이 걸렸습니다.
Milvus는 오픈소스라 셀프호스팅으로 시작했어요. 도커 컴포즈로 띄우는 건 쉬웠는데, etcd·MinIO·Pulsar가 함께 뜬다는 걸 나중에 알았습니다. 컴포넌트가 많아서 메모리 사용량이 예상보다 높았어요. 대신 복잡한 필터 조건을 쿼리에 넣을 수 있었고, 배치 임베딩 속도는 체감상 가장 빨랐습니다. 수만 개 벡터를 한 번에 넣는 작업엔 확실히 유리했죠. 하지만 장애가 나면 제가 직접 로그를 뒤져야 했어요. Pinecone처럼 대시보드에서 상태를 한눈에 보는 건 불가능했습니다.
비용 구조에서 놓치기 쉬운 함정은 뭔가요?
Pinecone은 초기엔 편하지만 Pod 단위 고정 비용이 스케일업 전에 먼저 옵니다. 트래픽이 적어도 인프라는 계속 돌아가니까요. Qdrant 클라우드는 온디맨드 요금이 매력적이지만, 자체 호스팅으로 넘어가는 순간 운영 부담이 몇 배로 늘어납니다. 저는 Qdrant를 Docker로 띄웠다가 백업·모니터링·로그 수집을 직접 구성해야 한다는 걸 깨달았어요. Milvus는 오픈소스라 라이선스 비용은 없지만, 의존성이 많아서 인프라 복잡도가 높습니다. etcd 클러스터 관리 경험이 없다면 러닝 커브가 가파를 거예요.
제가 실제로 막혔던 지점은 메타데이터 필터링 성능이었어요. Pinecone은 필터를 그냥 던져도 빨랐지만, Qdrant는 페이로드 키에 인덱스를 명시적으로 만들지 않으면 풀스캔이 돌았습니다. Milvus는 스칼라 필드 인덱스를 추가할 수 있었지만, 문서를 읽으면서 어떤 인덱스 타입을 써야 하는지 고민하는 시간이 필요했어요.
결국 어떤 기준으로 선택했나요?
개발자 1~2명이 프로토타입을 빠르게 검증해야 한다면 Pinecone이 정답이에요. 설정 시간이 가장 짧고, 장애 대응을 서비스 제공자가 해주니까요. 대신 트래픽 증가 시 비용 급증 가능성을 감안해야 합니다.
팀에 인프라 담당자가 있고 월 예산을 예측 가능하게 유지하고 싶다면 Qdrant 클라우드를 권합니다. 온디맨드 요금제로 시작해서 트래픽 패턴을 파악한 뒤, 필요하면 셀프호스팅으로 넘어가는 경로가 열려 있어요. 저는 Qdrant를 Docker로 띄운 뒤 Prometheus로 메트릭을 수집했는데, 공식 문서에 나온 대로 따라 하면 어렵지 않았습니다.
배치 임베딩 작업이 많고 필터 조건이 복잡하다면 Milvus가 맞습니다. 오픈소스라 커스터마이징 여지가 크고, 대규모 데이터를 한 번에 처리하는 속도가 빨랐어요. 하지만 etcd·MinIO 같은 의존성을 직접 관리할 자신이 없다면 Milvus 매니지드 서비스인 Zilliz Cloud를 고려해야 합니다.
마무리
Pinecone에서 Qdrant로 옮기는 데 이틀 걸렸어요. 벡터는 밤새 재색인했고 메타데이터 필터 문법이 달라 쿼리를 고쳤습니다. 페이로드 인덱스를 놓쳐서 프로파일링 후에야 풀스캔을 알았어요. 지금 다시 고른다면 트래픽을 먼저 측정할 겁니다. 월 청구서가 두 배 넘거나 장애에 하루 걸리면 되돌릴 신호예요.
자주 묻는 질문
Q. Pinecone Pod 요금은 쿼리가 없어도 계속 나가나요? A. 네, Pod 기반 플랜은 실제 쿼리 횟수와 무관하게 Pod 자체에 시간당 비용이 붙습니다. 제가 확인한 시점 기준으론 스타터 Pod 하나만으로도 월 고정 비용이 발생했어요. 트래픽이 적은 초기엔 서버리스 플랜이 더 경제적일 수 있습니다.
Q. Qdrant 셀프호스팅 시 백업은 어떻게 하나요? A. Qdrant는 스냅샷 API를 제공합니다. 컬렉션별로 스냅샷을 생성해서 S3나 로컬 스토리지에 저장할 수 있어요. 저는 cron으로 매일 밤 스냅샷을 떠서 별도 버킷에 보관했습니다.
Q. 세 가지 중 한국어 임베딩 성능 차이가 있나요? A. 벡터DB 자체는 임베딩 모델과 무관합니다. OpenAI·Cohere·한국어 특화 모델 어떤 걸 쓰든 벡터만 넣으면 되니까요. 성능 차이는 임베딩 모델 선택에 달려 있어요.
Q. Milvus etcd 장애가 나면 복구 절차가 어떻게 되나요? A. etcd 클러스터가 죽으면 Milvus 전체가 멈춥니다. 공식 문서에선 etcd 백업을 권장하는데, 실제로 복구해본 적은 없어요. 단일 노드로 테스트 중이라면 etcd 데이터 디렉토리를 주기적으로 백업해두는 게 안전합니다.
Q. 벡터 개수가 몇 개 넘으면 셀프호스팅이 유리한가요? A. 제 경험상 벡터 10만 개 이상, 월 쿼리 수십만 건부터 Qdrant 셀프호스팅의 비용 이점이 명확해졌어요. 그 이하라면 클라우드 온디맨드가 더 편하고 안전합니다.