개발/Dify

[Dify] RAG (Retrieval Augmented Generation)

말하는 알감자 2025. 12. 9. 14:56

1. RAG 등장 배경

RAG(Retrieval-Augmented Generation)는

검색(Retrieval) + 증강(Augmented) + 생성(Generation)을 결합한 기술로,

기존 LLM이 갖고 있던 여러 한계를 보완하기 위해 등장했습니다.

LLM의 주요 한계

  • 할루시네이션: 근거 없는 내용을 사실처럼 생성
  • 최신 정보 반영 불가
  • 특정 도메인 지식 부족
  • 출처 불명확 문제

LLM 자체를 다시 학습하거나 사내 데이터를 직접 Fine-tuning하기는 어렵고 비용도 큽니다.

그래서 LLM이 외부 지식베이스에서 관련 정보를 가져온 뒤 생성하도록 하는 방식인 RAG이 필요해졌습니다.


2. RAG 시스템의 동작 원리

일반적인 LLM은 “질문 → 답변”이라는 단순 구조로 동작합니다.

반면 RAG은 중간에 검색 과정이 들어가기 때문에 더 정확하고 근거 기반의 답변이 가능합니다.

RAG의 기본 흐름

  1. 사용자의 질문을 분석
  2. 지식베이스에서 관련 문서 검색
  3. 검색된 문서 중 가장 중요한 정보 선별
  4. LLM에게 질문 + 관련 정보(컨텍스트)를 함께 전달
  5. 근거 기반의 응답 생성

핵심 구성 요소 (4가지)

지식베이스(Knowledge Base)

문서, PDF, Word, 웹페이지, 데이터베이스 등 다양한 형태의 정보 저장소

검색 시스템(Retriever)

질문 의미를 분석하여 관련 정보를 찾아내는 엔진

(Vector search, keyword search, hybrid 등)

필터링 및 압축(Re-ranking & Compression)

검색된 문서 중 관련성이 높은 내용만 선택하고 LLM에 전달하기 적합한 형태로 정리

LLM Generator

검색된 정보를 바탕으로 최종 답변 생성


3. RAG 시스템 상세 프로세스

RAG는 크게 사전 단계(지식베이스 구축)실행 단계(질의응답) 로 구성됩니다.

① 사전 단계: 지식베이스 구축

RAG의 성능은 지식베이스 품질에 크게 영향을 받습니다.

1) 데이터 수집

  • PDF, 워드, PPT
  • 사내 가이드, 기술 문서
  • 웹 크롤링 데이터
  • DB 데이터 등

2) 문서 분할(Chunking)

문서를 그대로 저장하면 검색 정확도가 떨어지므로 적절한 크기로 나누는 과정이 필요합니다.

  • Chunk 크기 설정

    • 너무 작으면 문맥이 끊김
    • 너무 크면 검색 정확도 떨어짐
  • Overlap(겹침)

    문맥을 자연스럽게 이어서 이해시키기 위해 일정 부분 겹쳐서 분리

  • Chunking 방식

    • 일정 길이 기반
    • 문단 구조 기반
    • 의미 단위 기반(semantic chunking)

Chunking은 RAG 성능의 핵심 요소입니다.

3) 임베딩(Embedding)

문서 내용을 숫자 벡터로 변환하는 과정

  • 임베딩 모델 선택이 검색 정확도를 결정

  • 질문과 문서는 같은 임베딩 모델을 사용해야 함

  • 언어/도메인에 따라 최적 모델이 달라짐

    (예: text-embedding-004, bge-m3 등)

4) 벡터 저장소(Vector DB)

문서를 임베딩하여 벡터 형태로 저장

(Pinecone, Weaviate, Chroma 등)


② 실행 단계: 질의응답 처리

질문이 들어오면 다음 과정을 거칩니다.

1) 질문 임베딩

사용자의 질문을 임베딩하여 “의미 기반 검색”이 가능하도록 변환

2) 검색 단계(Retrieval)

검색 방식은 크게 아래 3가지:

  1. Vector Retrieval – 의미 기반 검색
  2. Keyword Retrieval – 정확한 문자열 기반 검색(BM25 등)
  3. Hybrid Retrieval – 두 가지를 결합해 정확도 향상 (기업에서 가장 많이 사용)

추가적으로 최신 RAG에서는 아래 기술이 자주 사용됩니다.

  • Multi-query Retrieval: 질문을 여러 형태로 재작성해 검색 품질 향상
  • Re-ranking: 검색된 문서를 LLM 또는 전용 모델이 다시 점수 매겨 정렬
  • Filtering: 날짜, 태그, 출처 등으로 추가 필터링

3) 문서 선택 및 압축

검색된 문서를 그대로 LLM에 넣기엔 길기 때문에

  • 중요도 높은 문서만 선택
  • 필요할 경우 요약(compression)
  • LLM에 전달하기 위한 구조화 작업 수행

4) 프롬프트 구성

RAG에서는 프롬프트가 매우 중요합니다.

LLM에게 아래를 명시해야 합니다:

  • 제공된 컨텍스트를 기반으로만 답하기
  • 근거가 없을 경우 “근거 없음”이라고 답하기
  • 문서 내용 우선적으로 반영
  • 출처를 함께 제공할지 여부

예시 Prompt 구조:

[사용자 질문]
{{query}}

[관련 문서]
{{context}}

위 문서의 정보를 기반으로만 답하세요.
문서에 없는 내용은 추측하지 마세요.

5) LLM이 최종 답변 생성

이제 LLM은 검색된 컨텍스트를 바탕으로 더 정확하고 근거 있는 답변을 만들어냅니다.


4. RAG 활용 사례

RAG은 다양한 산업에서 활용됩니다.

① 기업 내부 지식 관리

  • 사내 정책·규정 Q&A 챗봇
  • 기술 문서 기반 개발자 지원봇
  • 보고서 자동 요약·검색 시스템

② 고객 지원(CS)

  • 제품 매뉴얼 기반 고객 챗봇
  • FAQ 자동 응답 시스템
  • 환불/교환 프로세스 안내 시스템

③ 전문 분야

  • 법률 문서 기반 법무 지원
  • 의료 지침 기반 의료진 보조
  • 연구 논문 기반 연구 성과 분석

④ 교육

  • 교재 기반 Q&A 시스템
  • e-learning 맞춤 리뷰 시스템

5. RAG의 한계

RAG은 강력하지만 완벽하지 않습니다.

① Chunk가 잘못되면 답변도 틀림

너무 작은 chunk → 문맥 부족

너무 큰 chunk → 검색 부정확

② 임베딩 품질이 성능을 크게 좌우

임베딩 모델이 질문/문서와 맞지 않으면 검색 실패

③ 오래된 문서가 검색될 수 있음

정확히 필터링하지 않으면 최신 정보 반영 어려움

④ 검색 결과에 의존

retriever가 잘못된 문서를 반환하면 LLM도 잘못된 답 생성

⑤ 지속적인 업데이트 필요

문서가 바뀌면 재인덱싱 필요

(대규모 문서일 경우 비용 존재)


6. 최신 RAG 확장 기술

기업·연구 기관에서 최근 많이 사용하는 고급 RAG 방식입니다.

① Multi-hop RAG

여러 문서를 연결해 추론

(예: A→B→C 순으로 참조가 필요한 경우)

② Self-RAG

LLM이 스스로 답변의 근거를 검증하고 보완

③ Graph RAG

지식 그래프(KG)를 활용하여 문서 간 관계 기반 검색

④ Agentic RAG

검색 후 LLM이 도구를 사용해 재검색·요약·검증까지 자동 수행


📌 최종 요약

  • RAG은 검색 기반 + 생성 기반을 결합한 기술
  • LLM의 할루시네이션·도메인 지식 부족 문제 해결
  • Chunking, 임베딩, 검색, 재랭킹이 성능의 핵심
  • 프롬프트 구성도 RAG 품질에 매우 중요
  • 다양한 산업에서 실용적 활용 가능
  • 최신 RAG는 Multi-hop / Graph RAG 등으로 발전 중