LLM의 환각 현상을 해결하기 위해 RAG(검색 증강 생성) 기술을 많이 활용하고 있는데요, RAG도 완벽하지 않는 약점이 있습니다. 엉뚱한 정보를 검색해서 가져오면 답변도 엉망이 된다는 점이죠.

오늘은 RAG의 이러한 문제를 해결하기 위해 제안된 CRAG (Corrective RAG)를 소개하는 논문을 리뷰해보겠습니다 😄. (저희 나두에이아이에서는 CRAG를 구현하여 빌더에 임베드시켜놨는데요, 언제든지 데모를 요청하셔 보세요)


1. 기존 RAG만으로는 부족할까?

기존의 RAG 방식은 검색된 문서가 질문과 얼마나 관련이 있는지와 상관없이 생성 모델(Generator)에게 정보를 전달하는데요, 만약 검색기가 잘못된 정보를 가져온다면, LLM은 그 정보를 바탕으로 그럴싸한 말을 하게 됩니다. 검색의 질이 답변의 질을 결정짓는 구조인데, 검색된 정보가 부정확하거나 최신이 아니라면 생성되는 답변은 만족스럽지 못하죠.


2. CRAG의 핵심 아이디어: "검색 결과를 의심하고 수정하라"

CRAG의 핵심은 검색과 생성 사이에 '검색 평가기(Retrieval Evaluator)' 라는 단계를 추가하는 것입니다. 검색된 문서의 품질을 평가하고, 그 결과에 따라 세 가지 전략을 실행합니다.

① Correct (정확)

검색된 문서가 질문에 대한 답을 포함하고 있으면, 문서 내의 노이즈를 제거하는 지식 정제(Knowledge Refinement) 과정을 거칩니다. 문서를 작은 단위로 쪼개고 질문에 유의미한 정보만 다시 합쳐 모델에게 전달합니다.

② Incorrect (부정확)

문서 어디에도 질문을 답하는 정보가 없으면, 웹 검색을 통해 새로운 정보를 찾아옵니다. 이를 통해 내부 데이터베이스의 한계를 극복하죠.

③ Ambiguous (모호)

정보가 있긴 하지만 충분하지 않거나 확실하지 않을 때는 내부 지식과 웹 검색 결과를 혼합하여 최적의 정보를 제공합니다.

위 3가지 플로우를 실행시키기 위해 다음 요소 기술들이 CRAG에 적용되었어요.

  • 경량 평가기(Lightweight Evaluator): 거대한 LLM 대신 약 0.77B 규모의 T5 모델을 활용하여 빠르고 효율적으로 검색 품질을 평가합니다.
  • Decompose-then-Recompose: 문서를 단순히 읽는 게 아니라, 의미 있는 단위로 분해(Decompose)하고 핵심만 재구성(Recompose)하여 모델의 혼란을 줄입니다.
  • 웹 검색: ChatGPT를 활용해 검색 키워드를 최적화하여 쿼리를 재작성하고, 신뢰할 수 있는 웹 페이지(예: 위키피디아)를 우선적으로 참고합니다.

3. 성능 테스트 결과

연구진은 다양한 데이터셋(PopQA, Biography 등)에서 실험을 진행한 결과, CRAG가 기존 RAG는 물론이고 최신 기술인 Self-RAG보다도 뛰어난 성능을 보였다고 밝혔습니다. 특히 검색 성능이 낮아지는 상황에서도 CRAG는 웹 검색과 자가 수정을 통해 일정한 답변 품질을 유지하는 강력한 내구성(Robustness)이 있다고 주장했어요.


결론


CRAG는 기존 RAG 시스템에 '플러그 앤 플레이(Plug-and-play)' 방식으로 쉽게 결합할 수 있다는 큰 장점이 있어요! 그래서 이 논문에서 제안한 기술을 나두에이아이에도 구현하여 탑재를 했는데요, 정확도가 중요한 분야에 CRAG 검색 플로우를 셋팅하여 사용하면 정말 품질 좋은 답변이 생성되는 것을 저희도 테스트해보았습니다! 🤩

"내가 모르는 것을 모른다고 인정하고 외부에서 찾아오는 능력"을 갖춘 이 모델은, 향후 기업용 AI나 전문 지식 서비스에서 할루시네이션을 줄이는 데 많이 활용될 것으로 보입니다.

CRAG 기술을 빠르게 검토하고 싶으신가요? 저희 나두에이아이 데모를 신청하세요!