AI 활용
RAG 아키텍처 패턴
RAG(Retrieval-Augmented Generation)는 LLM의 고정된 학습 데이터 한계를 외부 지식 검색으로 보완하는 아키텍처 패턴이다. 환각(hallucination) 감소, 최신 정보 반영, 도메인 특화 지식 적용에 효과적이다.
개요
기본 RAG 파이프라인은 세 단계로 구성된다: 색인(Index) → 검색(Retrieve) → 생성(Generate). 사용자 쿼리를 받으면 벡터 DB에서 관련 청크를 검색하고, 이를 프롬프트에 삽입해 LLM이 답변을 생성한다.
아키텍처 패턴 비교
| 패턴 | 특징 | 적합 시나리오 | 복잡도 |
|---|---|---|---|
| Naive RAG | 단순 벡터 검색 | 소규모 FAQ | 낮음 |
| Advanced RAG | 재순위, 쿼리 변환 | 기업 지식베이스 | 중 |
| Modular RAG | 검색기 교체 가능 | 멀티소스 | 높음 |
| GraphRAG | 관계 그래프 탐색 | 복잡 지식 구조 | 매우 높음 |
| Self-RAG | 검색 필요 여부 자체 판단 | 혼합 쿼리 | 높음 |
색인 설계
청킹 전략
청크 크기는 검색 정밀도와 컨텍스트 충분성 사이의 트레이드오프다.
- 고정 크기 청킹: 구현 단순, 문장 중간에 잘릴 위험
- 의미 단위 청킹: 문단·섹션 기준, 품질 높음
- 계층적 청킹: 상위(문서 요약)·하위(세부 내용) 이중 색인
실무 권장: 5121024 토큰 청크 + 1015% 오버랩[^1].
임베딩 모델 선택
한국어 도메인은 text-embedding-3-large 또는 bge-m3(오픈소스)를 권장한다. 영어 전용 모델을 한국어에 쓰면 검색 정확도가 30~40% 하락한다.
검색 품질 향상
하이브리드 검색
벡터 검색(의미 유사도)과 키워드 검색(BM25)을 결합하면 단일 방식 대비 정확도가 15~25% 향상된다. 결합 방식: RRF(Reciprocal Rank Fusion)가 가장 안정적이다.
쿼리 변환
사용자 쿼리를 그대로 쓰지 않고 변환해 검색 품질을 높인다.
- 다중 쿼리: 동일 질문을 다른 표현으로 3~5개 생성해 앙상블
- HyDE: 가상의 답변을 먼저 생성하고 그 답변과 유사한 문서 검색
- Step-back: 구체 질문을 추상화해 더 넓은 컨텍스트 검색
재순위(Reranking)
벡터 검색이 빠르지만 정밀하지 않다면, Cross-Encoder 모델로 상위 K개를 재순위한다. Cohere Rerank, BGE Reranker가 대표적이다. 재순위 후 상위 3~5개만 LLM에 전달하면 컨텍스트 품질이 급격히 향상된다.
평가 지표
RAG 시스템의 품질은 세 가지 축으로 평가한다.
- Context Recall: 정답에 필요한 정보가 검색됐는가
- Faithfulness: 생성 답변이 검색 문서에 근거하는가(환각 방지)
- Answer Relevancy: 생성 답변이 질문과 관련 있는가
RAGAS 프레임워크가 이 세 지표를 자동화 측정한다.
프롬프트 엔지니어링과의 결합
RAG는 컨텍스트를 제공하고 프롬프트 엔지니어링은 활용 방식을 정의한다. 시스템 프롬프트에 "제공된 컨텍스트만을 근거로 답하라. 컨텍스트에 없으면 모른다고 하라"를 명시하는 것이 환각 방지의 핵심이다. 자세한 프롬프트 기법은 프롬프트 엔지니어링 완전정복 문서를 참고하라.
[^1]: LlamaIndex 공식 문서 권장 청크 크기. 도메인에 따라 조정 필요.