ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring AI 시리즈 8화 – RAG 구축하기 (3): VectorStore 비교와 확장 전략
    기술과 산업/언어 및 프레임워크 2025. 6. 16. 18:57
    728x90

    RAG 시스템에서 핵심적인 컴포넌트인 VectorStore의 선택과 확장은 응답 품질과 성능에 직결됩니다. Chroma, Milvus, Weaviate, pgvector 등 주요 Vector DB들의 차이를 비교하고, Spring AI에서의 적용 방식을 전략적으로 분석합니다.

     

     

    VectorStore 선택, RAG의 품질을 결정한다

     

    RAG 시스템을 구축할 때 가장 많은 시간과 고민이 들어가는 영역 중 하나가 바로 VectorStore 선택입니다.

    단순히 “벡터를 저장하는 곳”이라기보다는, 질문과 가장 밀접한 문서를 어떻게 빠르고 정확하게 찾아낼 수 있는가를 결정짓는 핵심 컴포넌트이기 때문입니다.

     

    LLM이 아무리 뛰어나더라도, 검색된 문서가 엉뚱하면 결과는 부정확하고 불안정할 수밖에 없습니다.

    따라서 이 글에서는 Spring AI가 공식 지원하는 주요 VectorStore들을 비교하고, 상황별 선택 전략을 제시합니다.

     


     

    주요 VectorStore 비교

    항목ChromaMilvusWeaviatepgvector

    설치 및 실행 매우 쉬움 (로컬 파일 기반) Docker 기반 클러스터 구성 REST/GraphQL API 기반, Docker 지원 PostgreSQL 확장 모듈 설치
    성능 소규모에 적합 대규모 벡터 검색에 최적화 실시간 분산 검색, 메타 필터링 가능 일반 RDB 수준, 속도는 느림
    확장성 낮음 수억 건 이상 처리 가능 클라우드 호스팅 포함 고확장 RDB의 확장 한계에 종속
    쿼리 방식 API 또는 SDK REST/gRPC REST/GraphQL SQL (벡터 연산 함수 포함)
    메타데이터 검색 미지원 제한적 (필터 정도) GraphQL로 매우 유연 SQL 기반으로 자유롭게
    Spring AI 연동 공식 지원 공식 지원 공식 지원 공식 지원

     


     

    각 VectorStore의 특징 요약

     

     

    1. 

    Chroma

     

    • 장점: 빠른 설치, Zero-Config, 경량 운영
    • 단점: 로컬 파일 기반, 메타데이터 필터링 없음
    • 적합한 상황: 프로토타입, 개인화 기능, 단일 서버 챗봇

     

     

    2. 

    Milvus

     

    • 장점: 고성능, 수억 건 규모, 다양한 인덱싱 알고리즘 (Faiss, HNSW 등)
    • 단점: Docker 기반 배포 복잡도, 메타 쿼리 제한
    • 적합한 상황: 검색 SaaS, 대규모 고객 지원, B2B LLM 서비스 인프라

     

     

    3. 

    Weaviate

     

    • 장점: REST/GraphQL API 제공, 메타데이터+벡터 필터링, 클라우드 호스팅 가능
    • 단점: 설정 복잡도, GraphQL 이해 필요
    • 적합한 상황: 지식베이스 구축, 기업용 문서 관리 검색, 멀티필드 검색 시스템

     

     

    4. 

    pgvector

     

    • 장점: PostgreSQL 기반, SQL 쿼리로 벡터/속성 검색 통합 가능, 운영팀 친화
    • 단점: 고성능 실시간 검색에는 한계, 대규모 데이터 처리 시 속도 저하
    • 적합한 상황: 기존 RDB 연계 시스템, 내부 백오피스 기반 RAG 구성

     


     

    Spring AI 연동 방식

     

    Spring AI는 VectorStore 구현체를 다음처럼 Bean으로 선언하거나, AutoConfiguration 기반으로 자동 등록합니다.

    @Bean
    public VectorStore vectorStore(ChromaConfig config, EmbeddingClient embeddingClient) {
        return new ChromaVectorStore(config, embeddingClient);
    }

    다음의 VectorStore 구현체를 공식적으로 지원합니다:

     

    • ChromaVectorStore
    • MilvusVectorStore
    • WeaviateVectorStore
    • PgVectorStore

     

    추후 Qdrant, Pinecone 등 다른 저장소도 확장 가능합니다 (비공식 연동 시 Custom 구현 필요).

     


     

    운영 전략: Hybrid VectorStore 구성이 가능하다

     

    RAG 시스템을 한 가지 저장소로만 구성할 필요는 없습니다.

    Spring AI는 VectorStore를 추상화했기 때문에, 다음과 같은 구조도 가능합니다:

    if (query.length() > 100) {
      return weaviateVectorStore.similaritySearch(query);
    } else {
      return pgvectorStore.similaritySearch(query);
    }

    또는,

     

    • 기술 문서는 Milvus
    • 고객 데이터는 PostgreSQL
    • 개인화된 메모는 Chroma

     

    이처럼 목적과 데이터 특성에 따라 분산 구성하는 전략은

    장기적으로 성능 최적화 + 시스템 유연성 확보라는 두 마리 토끼를 잡는 방법입니다.

     


     

    실전 고려사항 정리

    항목고려 포인트

    배포 구조 Milvus/Weaviate는 컨테이너 기반, 클러스터 구성 필수
    보안 구성 API Key, 네트워크 접근 제어, SSL 필요 여부 확인
    데이터 특성 단순 질의 or 복합 메타 필터링 여부
    인프라 호환성 PostgreSQL 사용 중인 경우 pgvector 유리
    팀 역량 GraphQL, 클러스터 운용 경험 여부 고려

     


     

    전략적 선택 가이드

    목적추천 VectorStore

    학습/실험 Chroma
    대규모 검색 시스템 Milvus
    메타 쿼리 중심 RAG Weaviate
    기존 RDB 기반 시스템과 통합 pgvector

     

    728x90
Designed by Tistory.