카테고리 없음

RAG ( 검색 증강 생성 )

코줍 2025. 4. 22. 22:00

RAG란?

LLM이 외부 지식(DB, 문서 등)을 검색해서 참고한 뒤, 그걸 바탕으로 응답을 생성하는 방식임.

 

1. RAG를 사용하는 이유

1. 허위 응답을 제어하여 신뢰성 있는 답변을 얻을 수 있음.

  • LLM은 학습된 범위 내에서만 답변 가능하기 때문에, 답이 없을 경우 그럴듯한 허위 정보(Hallucination)를 만들어내기도 함.
  • 하지만 RAG는 외부 문서 기반의 응답이므로 보다 정확하고 신뢰성 있는 답변을 이끌어낼 수 있음.

2. 최신 정보를 사용자에게 제공할 수 있음.

  • LLM은 학습 이후 고정된 정보를 기반으로 응답하지만, RAG는 외부 문서만 갱신하면 최신 정보도 반영 가능

3. 비용적으로 효율적임.

  • FM ( ≈ Base Model )을 조직이나 도메인별 정보를 위해 재교육하기 위해선 비용이 많이듬.

4. 개발자의 제어력 강화 ⭐️⭐️

LLM은 확률 분포 기반으로 가장 그럴듯한 응답"을 생성하기 때문에 아래와 같은 한계가 존재함.

  • 출처 불명: 어떤 데이터에 기반한 응답인지 확인 불가
  • 고정된 지식: 프롬프트만으로는 새로운 요구사항 반영 어려움
  • 보안 제약: 학습되지 않은 민감정보 접근 불가 / 학습된 정보는 제어 어려움
  • 수정 어려움: 잘못된 응답의 원인 추적 또는 수정이 어려움
  • 테스트 비효율: 모델 자체를 수정해야 하므로 반복 테스트 번거로움

이러한 한계는 Retrieval-Augmented Generation (RAG) 방식으로 보완할 수 있음.

 

RAG의 해결 방식 요약

출처 불명 LLM이 참고할 문서의 출처를 명시적으로 지정 가능
지식 고정 문서만 바꿔도 응답 변화, 다양한 요구사항에 적응 가능
보안 문제 인증 기반 문서 접근 제한 가능
수정 어려움 문서 기반이므로 즉각적인 소스 수정 가능
테스트 어려움 "문서 수정 → 응답 확인" 루틴으로 개선 속도 향상

2. 작동 원리

https://aws.amazon.com/ko/what-is/retrieval-augmented-generation/

 

1. 외부 데이터 생성

  • API, 데이터베이스, 문서 리포지터리 등에서 외부 데이터 수집
  • 수집된 데이터를 임베딩(Embedding) 하여 벡터 형식으로 변환하고 벡터 DB에 저장

2. 쿼리 임베딩 및 관련 정보 검색

  • 사용자 쿼리를 벡터 표현으로 임베딩
  • 벡터 DB에서 유사도가 높은 문서를 검색하여 관련 정보 추출

3. 문서 청킹 및 컨텍스트 삽입 (Chunking + Enhanced Context Injection)

  • 검색된 문서를 문맥에 맞게 청킹(Chunking)
    → 긴 문서를 작은 단위로 나누어 검색 정확도 향상
  • 적절히 나눠진 정보를 LLM 프롬프트에 삽입
    Context Injection을 통해 더 정확한 응답 유도

4) 응답 생성

  • 확장된 프롬프트를 바탕으로 Generator(GPT 등)가 응답 생성=

5) 데이터 최신화 관리

  • 문서의 변경 사항 반영을 위해 비동기 또는 배치 방식으로 임베딩 갱신
  • 실시간 처리 또는 주기적 작업을 통해 항상 최신 정보를 반영

 

참고자료

https://aws.amazon.com/ko/what-is/retrieval-augmented-generation/