Self-Hosted RAG: A Production Pipeline on Your Own Hardware
개요
데이터 거주지 제약, 비용 상한선, 또는 SaaS에 대한 거부감이 있는 경우, 자체 하드웨어에서 RAG(Retrieval-Augmented Generation) 파이프라인을 구축하는 것이 가능한 대안이며, 하드웨어, 소프트웨어 선택, 장애 모드, 그리고 자체 호스팅이 합리적인 시점에 대한 지침을 제공합니다.
주요 내용
- 자체 호스팅 RAG의 의미: 임베딩, 벡터 스토어, 생성 모델 등 RAG 파이프라인의 모든 단계를 클라우드 제공업체 API 호출이 아닌 자체 제어 인프라에서 실행하는 것을 의미합니다.
- 하드웨어 요구 사항: 모델 크기가 GPU를 결정하고, GPU가 예산을 결정합니다. 임베딩은 CPU에서도 충분히 처리 가능하며, 생성 모델은 모델 크기와 양자화 수준에 따라 필요한 VRAM 용량이 결정됩니다. 7-8B 파라미터 모델은 16GB VRAM, 70B 모델은 48GB 이상의 VRAM을 필요로 할 수 있습니다.
- 권장 소프트웨어 스택: 임베딩 모델로는
bge-m3또는nomic-embed-text, 벡터 스토어로는pgvector또는Qdrant, 생성 서버로는vLLM(프로덕션) 또는Ollama(소규모 팀), LLM으로는Llama 3.1 8B/Qwen 2.5 7B(또는 13B), 오케스트레이션으로는 경량 Python 서비스(FastAPI)를 권장합니다. - 파이프라인 상세:
- 수집(Ingestion): 문서를 청킹하고, 로컬 임베딩 모델로 임베딩하며,
pgvector에 저장합니다. 수집 작업은 반드시 멱등성(idempotent) 및 버전 관리되어야 합니다. - 검색(Retrieval): 쿼리를 임베딩한 후
pgvector에서 유사도 검색을 수행하고, 메타데이터 필터링을 적용합니다. 검색 후 재랭킹(cross-encoder) 단계를 통해 정확도를 높일 수 있습니다. - 생성(Generation): 로컬
vLLM엔드포인트로 검색된 청크와 함께 전달하고, "컨텍스트에서만 답변하고, 컨텍스트가 불충분하면 거부하라"는 지침을 따릅니다. 각 답변에는 사용된 청크의 출처 문서 및 섹션이 포함됩니다. - 운영 비용 및 유지보수: 임베딩 처리량은 CPU에서 초당 약 200개의 청크이며, 전체 수집은 하루 안에 완료될 수 있습니다. 엔드투엔드 지연 시간은 3-4초입니다. 두 개의 3090 GPU는 약 700W의 전력을 소비하며, 냉각 비용을 고려해야 합니다. 모델 및 패키지 업데이트를 위한 월별 유지보수 시간이 필요합니다.
- 운영 관측 가능성: 검색 재현율, p95 답변 지연 시간, GPU 사용량 및 VRAM 헤드룸, 쿼리 볼륨 및 상위 소스, "답변 거부"율과 같은 핵심 지표를 모니터링하여 시스템 상태를 파악해야 합니다.
- 자체 호스팅 실패 사례 및 해결책: 양자화 품질 문제 (문서 유형별 벤치마킹 필요), 모델 업그레이드 후 벡터 드리프트 (전체 재임베딩 필요), GPU 공유로 인한 성능 저하 (작업 시간 분리 또는 GPU 전용 할당), 라이선스 및 지원 문제 (오픈 소스 라이선스 확인 및 팀 내 지원 체계 구축) 등이 있습니다.
- 자체 호스팅이 적합하지 않은 경우: 단순히 "클라우드가 무섭다"는 이유, 거대한 코퍼스 및 GPU 서버 운영 인력 부재, 또는 고성능 모델이 필요한 경우입니다. 이러한 경우, 프라이빗 코퍼스에 대한 로컬 검색과 외부 호스팅 생성 모델을 결합하는 하이브리드 아키텍처가 더 적합할 수 있습니다.
시사점
자체 호스팅 RAG는 데이터 거주지 제약이나 비용 절감을 위한 효과적인 솔루션이지만, 성공적인 운영을 위해서는 하드웨어 및 소프트웨어 선택, 지속적인 유지보수, 그리고 적극적인 모니터링이 필수적입니다.
원문을 불러오는 중...
댓글
GitHub Discussions