피드로 돌아가기
Building a RAG Pipeline From Scratch: What SmartQueue Taught Me About Retrieval
Dev.toDev.to
AI/ML

리소스 제약 해결을 위한 Vector Store 제거 및 BM25 기반 경량 RAG 구현

Building a RAG Pipeline From Scratch: What SmartQueue Taught Me About Retrieval

ambarish pathak2026년 6월 17일7intermediate

Context

IT 지원 티켓 처리를 위한 SmartQueue Bot 구축 중 Free-tier 컨테이너 환경의 심각한 리소스 제약 발생. 기존 ChromaDB 기반 Vector Search 도입 시 다중 프로세스 간 경쟁으로 인한 Startup Race 및 잦은 서비스 Crash 현상이 병목 지점으로 파악됨.

Technical Solution

  • 단일 컨테이너 내 Redis, API, Worker 등 5개 프로세스 운용에 따른 메모리 압박 해결을 위해 ChromaDB 완전 제거
  • 별도 인덱스 구축과 데몬 프로세스가 불필요한 In-memory BM25 알고리즘으로 검색 로직 전환
  • Okapi BM25 수식을 Python으로 직접 구현하여 Embedding 모델의 추론 지연 시간 및 Cold Start 문제 원천 차단
  • 10여 개의 소규모 전문 용어 밀집형 Runbook 특성을 고려하여 의미론적 검색보다 키워드 일치 기반의 효율적 Retrieval 선택
  • Regex Guardrails를 통한 Prompt Injection 방어 및 Groq(LLaMA 3.3 70B)를 활용한 SSE 방식의 응답 스트리밍 설계
  • Redis Session Memory를 통한 최근 10턴의 대화 이력 유지로 컨텍스트 일관성 확보

1. 지식 베이스 규모가 50개 미만인 경우 Vector DB 도입 전 BM25 등 경량 검색 알고리즘 검토

2. 인프라 제약(Free-tier, Single Container) 시 프로세스 수를 최소화하는 아키텍처 설계 우선

3. 정교한 RAGAS 평가 지표 도입 전, 실제 배포 환경의 Startup 신뢰성과 메모리 사용량 우선 검증

4. 도메인 특화 용어가 많은 경우 Embedding 모델의 성능보다 키워드 매칭의 정확도가 높을 수 있음을 고려

원문 읽기