Paper Review

[SourceCode]self-RAG 구현 code

뚜둔뚜둔 2025. 3. 19. 16:50

논문 소개

Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection (link)

2025.03.19 - [Paper Review] - [PaperReview]SELF-RAG: Leaning to Retrieve, Generate, and Crutique through self-reflection

 

LangChain 구현 코드

https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_self_rag.ipynb

 

 

LangChain 구현 코드와 논문 차이

  • 기존 논문에는 다시 문서 검색을 수행할때 "기존 쿼리 + 가장 순위가 높은 이전응답"을 활용해 검색 진행
    • LangChain example에서는 "쿼리 재작성"을 통한 새로운 쿼리를 검색어에 사용
  • 기존 논문에서는 각각의문서(d)에 대해 질문-문서 관련성, 질문-답변 관련성, 질문-문서-응답 환각여부를 판단하고 가장 좋은 응답을 선택
    • LangChain example에서는 관련된 문서가 하나라도 있다면 전체 문서들에 대해 응답 생성
  • 기존 논문과는 다르게 구현 코드에서는 초반에 검색여부를 결정하는 부분이 없음
  • 기존 논문은 Llama-2-7B모델을 활용해 특정 토큰을 생성할 수 있도록 학습을 진행, 토큰에 기반한 Ranking 등의 방법을 사용
    • LangChain example에서는 API로 호출하는 Blackbox LLM 사용(Structured Output)

 

Self-RAG

Self-RAG(Self-Reflective Retrieval-Augmented Generation)은 RAG(retrieval-augmented Generation)모델이 스스로 검색한 문서와 생성된 응답을 평가(Self-Reflection, Self-Grading)하는 전략이다.

self-RAG에서는 모델이 검색된 문서가 질문과 관련이 있는지, 생성된 답변이 문서에 기반하고 있는지(환각 여부 판단), 생성된 답변이 질문에 유용한지 등을 스스로 평가한다.

 

self-RAG 모델은 다음과 같은 4가지 중요한 결정을 수행함

 

1. 검색을 수행할지 여부 결정

  • Input: x(question) OR x (question), y (generation)
  • Decides when to retrieve D chunks whith R
  • output: Yes(검색수행), No(검색 불필요), Continue(기존 결과 유지)
    • → RAG 시스템은 질문을 받았을 때, 검색기를 사용하여 문서를 가져와야 하는지 판단을 해야 함
    • → 일부의 경우에는 추가적인 검색 없이도 답변을 할 수 있기 때문에, 검색 여부를 모델이 결정
  •  


2. 검색된 문서 (Chunks, D)가 질문 (x)과 관련이 있는지 평가

  • Input: (x (question), d (chunk)) for d in D
  • d provides useful information to solve x
  • output: relevant(질문과 관련 있음), irrelevant(질문과 무관함)
    •  검색된 문서 조각들이 질문과 관련 있는지 평가하는 과정
    • → 검색된 문서 중 질문과 무관한 데이터는 제거할 수 있음


3. 생성된 답변(y)이 검색된 문서 (d)에 기반하고 있는지 평가 (환각 검출)

  • Input: x (question), d (chunk), y (generation) for d in D
  • All of the verification-worthy statements in y (generation) are supported by d
  • output: fully supported(완전히 문서에 기반함), partially supported(부분적으로 문서에 기반함), no support (문서에서 근거를 찾을 수 없음 → 환각 가능성이 높음)
    • 모델이 생성한 답변이 검색된 문서의 정보를 정확히 반영하는지 평가
    • → 문서에서 근거를 찾을 수 없는 내용을 포함하는 경우 "환각 Hallucination"이 발생할 수 있음
    •  이러한 과정을 통해 모델의 신뢰도를 높일 수 있음


4. 생성된 답변(y)이 질문(x)에 유용한지 평가

  • Input: x (question), y (generation) for d in D
  • y(generation) is a useful response to x (question)
  • output: {5,4,3,2,1}{5:매우 유용함 ---> 1: 전혀 유용하지 않음)
    • 모델이 생성한 답변이 질문에 실제로 도움이 되는지 평가
    • → 단순히 문서에서 가저온 정보가 아니라, 질문의 의도를 잘 반영하고 있는지 확인하는 과정 

 

 

 

 

 

 

참고 : https://velog.io/@mmodestaa/Self-RAG-%EB%85%BC%EB%AC%B8-%EC%A0%95%EB%A6%AC-%EB%B0%8F-Langchain-%EA%B5%AC%ED%98%84-%EC%BD%94%EB%93%9C

 

 

반응형