RAG Is Simpler Than You Think
개요
Retrieval Augmented Generation (RAG) 시스템 구축 시, 과도한 복잡성 없이 문제에 맞는 적절한 접근 방식을 선택하는 것이 중요하다. 데이터 신선도, 코퍼스 특성, 쿼리 패턴, 규모 및 성능, 팀 역량 등의 요소를 고려하여 BM25, 쿼리 재작성, 하이브리드 검색, 온디맨드 임베딩, 핫/콜드 티어, 전체 사전 임베딩 등의 다양한 RAG 전략을 단계적으로 적용해야 한다.
주요 내용
* RAG 접근 방식 선택 기준:
* 데이터 신선도: 실시간 업데이트(뉴스, 소셜 미디어)는 쉬운 재색인 방식, 일일/주간 업데이트는 하이브리드 방식, 안정적인 코퍼스(월/분기 업데이트)는 사전 임베딩에 적합하다.
* 코퍼스 특성: 일일 10% 이상 변경되는 높은 변동성은 전체 사전 임베딩을 피해야 하며, 안정적인 문서는 사전 임베딩에 적합하다. 90%가 거의 접근되지 않는 롱테일 분포는 온디맨드 방식에 유리하다.
* 쿼리 패턴: 키워드 중심 쿼리는 전문 검색(full-text search)으로 시작하고, 의미론적 또는 대화형 쿼리는 임베딩에, 혼합 패턴은 하이브리드 방식에 적합하다.
* 규모 및 성능: 일일 1000개 미만 쿼리는 단순 접근, 1K-10K는 선택적 최적화, 10K 이상은 전체 최적화가 필요하다.
* 팀 역량: ML 전문 지식이 없으면 전문 검색과 쿼리 재작성, 일부 경험은 하이브리드 검색, ML 팀 보유 시 고급 접근 방식이 가능하다.
* BM25 (Full-text search):
* 장점: API 비용 제로, 빠른 속도(10ms 미만), 쉬운 디버깅, 제로 ML 복잡성, 청킹 전략 불필요, 평가 복잡성 없음, 모델 노후화 위험 없음.
* 단점: 동의어 처리 불가, 의미론적 쿼리 실패, 키워드 외 의도 파악 불가.
* 적합한 경우: 초기 단계, 키워드 스타일 쿼리, 정확한 일치 중요, ML 복잡성 회피, 독점 용어 포함 코퍼스.
* LLM 기반 쿼리 재작성 (Query Rewriting):
* 장점: $0.001/쿼리 비용(GPT-4o-mini 기준), 불용어 제거, 동의어 추가, 도메인 용어 번역, 복잡한 쿼리 분해, 시스템 프롬프트를 통한 학습 가능, 결과 불만족 시 시스템 프롬프트 조정으로 즉시 개선 가능.
* 단점: LLM API 비용 발생.
* 적합한 경우: 대화형 질문, 어휘 불일치, 내부 전문 용어, 빠른 반복이 필요한 경우.
* 하이브리드 검색 (BM25 + Embeddings Reranking):
* 개념: BM25로 후보 검색(상위 50-100개) 후, 임베딩으로 재순위화(상위 10개).
* 장점: BM25의 빠른 키워드 매칭과 임베딩의 의미론적 이해를 결합하여 서로의 약점 보완.
* 적합한 경우: 의미론적 질문("X의 대안 찾기"), BM25+쿼리 재작성만으로는 부족할 때, 100-500ms 지연 시간 허용, 비교적 안정적인 코퍼스.
* 온디맨드 임베딩 (On-the-fly Embedding):
* 개념: 쿼리 시점에 실시간으로 문서를 임베딩.
* 장점: 완벽한 데이터 신선도, 쉬운 모델 변경(코드 한 줄 변경), 저렴한 스토리지 비용($0).
* 단점: 200-500ms의 쿼리 지연 시간, 청킹 전략 필요.
* 적합한 경우: 높은 문서 변동성(일일 10% 이상), 실시간 콘텐츠, 임베딩 모델 실험 중, 데이터 신선도가 매우 중요할 때.
* 핫/콜드 티어 (Hot/Cold Tiers):
* 개념: 자주 접근되는 문서(핫 티어)는 사전 임베딩, 드물게 접근되는 문서(콜드 티어)는 온디맨드 임베딩.
* 장점: 사전 임베딩된 문서로 80% 쿼리에 빠른 응답, 희귀 문서에 대한 신선도 유지, 모델 변경 시 핫 티어만 재임베딩, 변화하는 접근 패턴에 적응.
* 단점: 중간 정도의 설정 복잡성, 50-100ms의 쿼리 지연 시간.
* 적합한 경우: 명확한 접근 패턴(20% 문서가 80% 트래픽), 중간-대규모 코퍼스, 안정성과 변경 내용 혼합, 일반 쿼리에 대한 낮은 지연 시간 필요.
* 전체 사전 임베딩 (Full Pre-embedding):
* 개념: 전체 코퍼스를 미리 임베딩하여 벡터 데이터베이스에 저장, ANN(Approximate Nearest Neighbors)으로 검색.
* 장점: 50ms 미만의 매우 빠른 검색 속도, 대규모 시스템에 적합.
* 단점: 인덱싱 시점 이후 데이터는 오래됨(재색인 필요), 높은 초기 임베딩 비용, 모델 변경 시 재임베딩 부담(다운타임, 비용, 테스트).
* 적합한 경우: 매우 높은 쿼리 볼륨(10K+/일), 50ms 미만 지연 시간 필요, 매우 안정적인 코퍼스(월 5% 미만 변동), ML 팀 보유.
* 에이전트 기반 RAG (Agentic RAG):
* 개념: 복잡한 쿼리를 여러 개의 작은 의도로 분해하여 각 하위 쿼리를 최적으로 처리하고 결과를 통합.
* 장점: 각 하위 쿼리가 집중되고 정확하여 검색 품질 향상, 병렬 실행으로 낮은 지연 시간, 지능적인 라우팅으로 비용 절감, 구조화된 출력.
* 적합한 경우: 여러 의도를 포함하는 복잡한 사용자 쿼리.
시사점
대부분의 RAG 시스템은 BM25와 쿼리 재작성만으로도 충분하며, 필요에 따라 하이브리드 검색, 온디맨드 임베딩, 핫/콜드 티어 등의 방식을 점진적으로 적용하는 것이 과도한 엔지니어링을 방지하고 효율성을 높이는 길이다. 문제의 복잡성을 정확히 파악하고, 측정 가능한 지표를 기반으로 가장 적합한 솔루션을 선택해야 하며, 복잡한 솔루션은 소수의 고급 사용 사례에만 적합하다.
댓글
GitHub Discussions