Self-RAG (자기 평가 RAG)

5. Self-RAG (자기 평가 RAG)

5.1 Self-RAG란 무엇인가요?

Self-RAG는 LLM이 스스로 판단하고 평가하는 RAG입니다. 핵심은 모델이 외부의 지시 없이 스스로 다음 질문들에 답한다는 것입니다:

  1. 검색할 필요 있나? – 이 질문에 답하려면 외부 정보가 필요한가?
  2. 이 문서가 관련 있나? – 검색된 문서가 질문과 관련이 있는가?
  3. 답을 지지하나? – 생성한 답변이 문서 내용에 의해 뒷받침되는가?
  4. 도움이 되나? – 최종 답변이 사용자에게 유용한가?

일반 RAG는 어떤 질문이든 무조건 검색부터 합니다. 하지만 생각해보면, “1 더하기 1은?”이나 “Python에서 for 문 어떻게 써?”같은 질문에는 검색이 필요 없습니다. LLM이 이미 알고 있는 기본 지식이니까요. 반면 “우리 회사 작년 4분기 매출은?”에는 검색이 꼭 필요합니다.

Self-RAG는 이런 판단을 AI가 스스로 하게 합니다. 불필요한 검색을 줄이고, 검색 결과의 품질을 평가하고, 생성한 답변이 문서에 기반하는지 검증합니다.

5.2 Self-RAG의 4단계 자기 평가

Self-RAG의 동작 과정을 단계별로 자세히 설명하겠습니다.

단계 1: 검색 필요성 판단 (Retrieval Decision)

사용자가 질문을 하면, LLM은 먼저 “이 질문에 답하려면 검색이 필요한가?”를 판단합니다.

  • 질문: “Python에서 리스트를 정렬하는 방법은?”
  • LLM 판단: “이건 프로그래밍 기초 지식이야. 내가 알고 있으니까 검색 필요 없어.”
  • 결과: [검색필요: 아니오] → 바로 답변 생성
  • 질문: “2024년 노벨 물리학상 수상자는 누구야?”
  • LLM 판단: “이건 최근 사실이라 내 학습 데이터에 없을 수 있어. 검색이 필요해.”
  • 결과: [검색필요: 예] → 검색 수행

이렇게 하면 LLM이 이미 알고 있는 것에 대한 불필요한 검색을 줄일 수 있습니다. 검색 API 호출 비용, 처리 시간 등을 절약할 수 있습니다.

단계 2: 문서 관련성 평가 (Relevance Assessment)

검색을 수행했다면, 찾아온 각 문서가 질문과 관련이 있는지 LLM이 평가합니다.

검색 결과:

  • 문서 1: “2024년 노벨 물리학상은 인공 신경망 연구자에게 수여되었다.”
  • 문서 2: “노벨상의 역사와 알프레드 노벨에 대해…”
  • 문서 3: “2024년 주요 과학 뉴스 정리”

LLM 평가:

  • 문서 1: [관련성: 높음] – 직접적으로 답을 담고 있음
  • 문서 2: [관련성: 낮음] – 노벨상 일반 정보지만 2024년 수상자 정보 없음
  • 문서 3: [관련성: 중간] – 관련 있을 수 있지만 직접적이지 않음

관련성이 낮은 문서 2는 컨텍스트에서 제외됩니다. 이렇게 하면 관련 없는 문서가 LLM을 혼란스럽게 하는 것을 방지합니다.

단계 3: 답변 지지 여부 확인 (Support Verification)

관련성 있는 문서들을 바탕으로 답변을 생성한 후, LLM은 “이 답변이 제공된 문서 내용에 의해 뒷받침되는가?”를 평가합니다.

생성된 답변: “2024년 노벨 물리학상은 존 홉필드와 제프리 힌튼에게 수여되었습니다.”

LLM 평가: “문서 1에 ‘인공 신경망 연구자에게 수여’라고 나와있고, 홉필드와 힌튼이 신경망 연구자인 건 내가 아는 사실이니까… [답변지지됨: 부분적으로]”

만약 LLM이 문서에 없는 내용을 지어냈다면:

  • 생성된 답변: “2024년 노벨 물리학상은 양자 컴퓨팅 연구로 수여되었습니다.”
  • LLM 평가: “문서에는 인공 신경망이라고 나와있는데 내가 양자 컴퓨팅이라고 했네. [답변지지됨: 아니오]”
  • 결과: 답변을 수정하거나, “문서에서 확인되지 않은 정보”라고 표시

이 단계가 할루시네이션(환각)을 줄이는 핵심입니다. LLM이 자신의 답변이 실제 문서에 근거하는지 스스로 검증합니다.

단계 4: 유용성 평가 (Utility Assessment)

마지막으로 생성된 답변이 질문에 대해 유용한 답변인지 평가합니다.

질문: “2024년 노벨 물리학상 수상자는 누구야?” 답변: “인공 신경망 연구자에게 수여되었습니다.”

LLM 평가: “사용자는 ‘누구’인지 물었는데, 나는 ‘어떤 분야’만 답했네. [유용성: 2/5] – 부분적으로만 답변함”

여러 후보 답변이 있다면 가장 높은 유용성 점수의 답변을 선택합니다.

5.3 Self-RAG의 장점

불필요한 검색 감소: 모든 질문에 검색하지 않고, 필요할 때만 검색합니다. 이는 비용 절감과 응답 속도 향상으로 이어집니다.

환각(할루시네이션) 줄이기: 답변이 문서에 의해 뒷받침되는지 검증하므로, LLM이 없는 정보를 지어내는 것을 줄일 수 있습니다. 이는 신뢰성이 중요한 서비스에서 매우 중요합니다.

자체 품질 관리: 외부의 추가 검증 시스템 없이도 어느 정도의 품질 관리가 가능합니다.

5.4 Self-RAG의 단점

특별히 훈련된 모델 필요: 반성 토큰([검색필요], [관련성] 등)을 생성할 수 있도록 LLM을 추가로 훈련시켜야 합니다. 일반 LLM으로는 Self-RAG를 완전히 구현하기 어렵습니다.

판단 오류 가능성: LLM의 판단이 항상 정확하지는 않습니다. 검색이 필요한데 필요 없다고 판단하거나, 관련 있는 문서를 관련 없다고 평가할 수 있습니다.

구현 복잡성: 각 단계의 평가 로직을 구현하고, 결과에 따른 분기 처리를 해야 합니다.

5.5 Self-RAG는 언제 사용하면 좋을까요?

Self-RAG는 다음과 같은 경우에 적합합니다:

  • 비용 효율성이 중요한 경우: 검색 API 호출 비용이 부담되는 상황에서 불필요한 검색을 줄여 비용 절감
  • 답변의 신뢰성이 중요한 경우: 의료, 법률, 금융 같은 분야에서 잘못된 정보가 큰 문제를 일으킬 수 있을 때

다양한 유형의 질문이 섞여 있는 경우: 어떤 질문은 검색이 필요하고 어떤 질문은 필요 없는 상황에서 자동 구분

댓글 남기기