1. RAG(검색 증강 생성)이란?

RAG(Retrieval-Augmented Generation)는 대형 언어 모델(LLM)이 자체 파라미터에만 의존하지 않고, 외부의 신뢰할 수 있는 지식 기반을 실시간으로 검색해 답변을 생성하는 아키텍처입니다.

  • 최신 정보와 도메인 특화 지식을 활용해 정확성을 높임

  • LLM 재학습 없이 외부 자료만 보강해 비용을 절감

  • 답변에 출처를 명시해 투명성을 확보 • 한계

  • 검색된 문서의 품질 의존

  • 잘못된 문맥 해석 시 오답 생성 가능

2. RAG의 핵심 모듈

RAG는 여러 역할을 담당하는 모듈을 조합해 설계합니다. 주요 모듈과 동작을 상세히 살펴보겠습니다.

2.1 Routing (라우팅)

사용자의 원질의(원문 질의)를 분석해 어떤 모듈로 넘길지 결정합니다.

  • 의미 이해: 문장 구조·키워드·엔티티 추출

  • 모듈 매핑: FAQ, 위키 검색, DB 조회 등 목적별 라우팅

  • 예시: “사내 인사 정책”이라는 질의는 사내 위키DB 모듈로直送

2.2 Search (검색)

라우팅 단계에서 결정된 타겟 리포지토리(웹, 벡터DB, 관계형DB 등)에서 잠재적 문서를 찾습니다.

  • 키워드 검색: 전통적 BM25, TF-IDF 기반

  • 시멘틱 검색: 임베딩 벡터를 활용한 의미 기반

  • 인덱싱: 문서 청킹 후 임베딩 → 벡터DB 저장

2.3 Retrieve (검색 결과 추출)

검색된 후보군 중 질의와 가장 밀접한 문서를 선별해 반환합니다.

  • 유사도 계산: 코사인 유사도, L2 거리 등

  • Top-k 추출: k개 문서 또는 스팬(span)을 선택

  • 하이라이팅: 핵심 문장·키워드 컷팅

2.4 Rewrite (질문/문서 재작성)

원질의를 최적화하거나, 검색된 결과를 모델이 더 잘 이해할 형태로 가공합니다.

  • 질의 확장: 동의어 추가, 문맥 보강

  • 문서 요약: 긴 텍스트를 핵심 문장 중심으로 압축

  • 템플릿 변환: FAQ 양식, Q&A 스타일 등

2.5 Rerank (재정렬)

여러 후보 문서를 관련도 순으로 재정렬해 모델 입력 우선순위를 조정합니다.

  • 랭킹 모델: 학습된 Rank-Net, LambdaRank

  • 점수 퓨전: Reciprocal Rank Fusion(RRF) 같은 기법 적용

  • 사용 예: RAG-Fusion 프로젝트에선 다중 쿼리 결과를 RRF로 융합해 정확도 개선.

2.6 Memory (메모리)

대화형 RAG에서 이전 질의·응답 기록을 저장·활용해 맥락을 유지합니다.

  • Short-term: 직전 턴(history) only

  • Long-term: 사용자 프로필, 프로젝트 정보 등 지속 저장

  • 활용 예: 고객 지원 봇이 과거 주문 내역까지 참조해 답변

2.7 Predict (예측)

LLM이 최종 답변을 생성하는 단계로, 불필요한 노이즈를 제거하고 자연스러운 문장으로 마무리합니다.

  • 프롬프트 디자인: 검색 결과 + 재작성된 질의 결합

  • 생성 제어: 온도(temperature), 최대 토큰 수 조정

  • 검증 루틴: 사실 검증(fact-checking) 후 신뢰도 스코어링

2.8 Demonstrate (시연/예시)

복잡한 작업이나 설명을 예시 코드, 명령어, 워크플로우 다이어그램으로 보여줍니다.

  • 사용 예: “SQL 테이블 생성 방법” → 코드 블록, 쿼리 예시 삽입

  • 장점: 이해도 및 실행 가능성 제고

2.9 Fusion (융합)

여러 소스에서 가져온 정보를 통합해 일관된 답변으로 만들어 냅니다.

  • 텍스트 퓨전: 생성된 단락 간 연결어 삽입

  • 데이터 퓨전: 표, 그래프 등 구조화된 데이터 결합

  • 사례: RAG-Fusion 연구에서 문헌 검색·생성 결과를 결합해 최고 성능 달성.

3. RAG의 주요 패턴

모듈을 어떻게 조합하느냐에 따라 RAG 시스템의 패턴이 달라집니다.

3.1 Naive RAG

  • 단계: Retrieve → Generate

  • 특징: 단순·빠름, 초보적 도메인에 적합

  • 제약: 재작성·재정렬 미비로 정확도 낮음

3.2 Advanced RAG

  • 단계: Rewrite → Retrieve → Rerank → Generate

  • 특징: 쿼리 확장, 결과 필터링, 재정렬 등 정교화

  • 효과: 잘못된 스팬 제거, 문맥 일관성 확보

3.3 DSP (Demonstrate-Search-Predict)

  • 순서: 예시 제공(Demonstrate) → 검색(Search) → 생성(Predict)

  • 장점: 복잡 작업 가이드나 코드 생성에 최적화

3.4 ITER-RETGEN (반복 RAG)

  • 순환: Retrieve ↔ Generate 반복

  • 목표: 점진적 개선, 부분 답변 피드백 반영

  • 사례: 섹션별 요약 후 재검색해 모자란 정보 보강

댓글남기기