https://arxiv.org/pdf/2401.15884
대형 언어 모델(LLM)은 강력한 자연어 처리 능력을 갖추고 있지만, 환각(Hallucination) 문제로 인해 생성된 텍스트의 정확성을 완전히 보장할 수 없다. 이를 해결하기 위해 Retrieval-Augmented Generation (RAG) 방식이 도입되었지만, RAG는 검색된 문서의 정확성에 크게 의존하며, 검색 과정이 잘못되면 모델이 부정확한 정보를 제공할 가능성이 크다.
기존 RAG 모델들은 검색된 문서를 무조건적으로 활용하는 문제가 있으며, 검색된 문서의 일부만이 실제로 유용한 정보를 포함하고 있음에도 불구하고 전체 문서를 참조한다. 이러한 문제를 해결하기 위해 Corrective Retrieval-Augmented Generation (CRAG)이 제안되었다.
CRAG는 검색된 문서의 품질을 평가하고, 필요에 따라 수정하며, 추가적인 웹 검색을 수행하는 전략을 통해 RAG의 신뢰성을 높이는 접근법이다. 이를 위해 다음과 같은 세 가지 핵심 모듈을 포함한다.
CRAG의 전체적인 동작 과정은 다음과 같다.
CRAG는 검색된 문서의 품질을 평가하기 위해 Retrieval Evaluator를 사용한다. 이 평가기는 검색된 문서와 질의 간의 관련성을 분석하여 신뢰도 점수를 계산한다.
각 검색 문서는 다음 세 가지로 분류된다.
CRAG는 검색된 문서 내에서 중요한 정보만을 유지하고, 불필요한 내용을 제거하는 "Decompose-then-Recompose" 알고리즘을 적용한다.
검색된 문서가 부정확하거나 불충분할 경우, 웹 검색을 수행하여 추가 정보를 확보한다.
CRAG는 PopQA, Biography, PubHealth, Arc-Challenge 등 4가지 데이터셋에서 평가되었으며, 기존 RAG 모델과 비교하여 성능이 향상되었음을 입증했다.
| 모델 | PopQA (Accuracy) | Biography (FactScore) | PubHealth (Accuracy) | Arc-Challenge (Accuracy) |
|---|---|---|---|---|
| RAG (기본) | 50.5 | 44.9 | 48.9 | 43.4 |
| CRAG | 54.9 | 47.7 | 59.5 | 53.7 |
| Self-RAG | 29.0 | 32.2 | 0.7 | 23.9 |
| Self-CRAG | 49.0 | 69.1 | 0.6 | 27.9 |
CRAG는 검색 오류를 보완하고 생성 모델의 신뢰성을 높이기 위해, 검색된 문서의 품질을 평가하고, 필요할 경우 웹 검색을 수행하여 추가적인 정보를 확보하는 새로운 RAG 방식이다.
실험 결과, CRAG는 기존 RAG 대비 성능을 최대 15.4%까지 향상시켰으며, 검색 오류에 대해 더욱 강인한 생성 모델을 만들 수 있음을 입증했다. 🚀
CRAG의 동작 방식은 크게 검색 평가(Retrieval Evaluation), 지식 정제(Knowledge Refinement), 웹 검색 보완(Web Search Augmentation), 최종 생성(Generation) 네 가지 주요 단계로 나뉜다.
각 단계를 상세히 분석하면 다음과 같다.
CRAG의 핵심 특징은 검색된 문서의 품질을 평가하여 올바른 조치를 취하는 것이다.
이를 위해 경량화된 검색 평가기(Retrieval Evaluator)가 동작하며, 다음 과정을 수행한다.
(질문 X, 문서 dᵢ)관련성 점수(scoreᵢ)검색 평가기의 결과를 바탕으로 각 문서를 세 가지 카테고리로 분류한다.
📌 예제
질문: "Death of a Batman 영화의 시나리오 작가는 누구인가?"
- 검색된 문서 1: "Batman (1989 film): ... Hamm's script was rewritten..."
- 검색된 문서 2: "Batman 시리즈는 1989년부터 개봉되었으며..."
문서 평가 결과:
- 문서 1 → Incorrect (부정확함, 웹 검색 필요)
- 문서 2 → Ambiguous (모호함, 추가 정보 필요)
조치: 웹 검색을 수행하여 보완
검색 평가기를 통과한 문서들은 Knowledge Refinement (지식 정제) 과정을 거친다.
이 과정에서 검색된 문서에서 중요 정보를 추출하고 불필요한 정보를 필터링하여 보다 정제된 지식을 생성한다.
CRAG는 검색된 문서에서 가장 중요한 정보를 유지하고 불필요한 내용을 제거하기 위해 Decompose-then-Recompose 알고리즘을 사용한다.
📌 예제
검색된 문서 (원본):
"Batman (1989 film): ... Hamm's script was rewritten ... The film was directed by Tim Burton ... The music was composed by Danny Elfman."
정제된 문서:
"Hamm was the original screenwriter of Batman (1989 film)."
Incorrect (부정확함)으로 판단된 경우, 검색된 정보를 신뢰할 수 없기 때문에 웹 검색을 통해 새로운 정보를 보완한다.
📌 예제
질문: "Death of a Batman 영화의 시나리오 작가는 누구인가?"
검색 쿼리 변환: "Death of a Batman, screenwriter, Wikipedia"
📌 웹 검색 결과 예시
웹 검색 결과: "The screenplay for Death of a Batman was written by Dennis Spooner."
→ 이 정보를 기반으로 최종 생성 모델에 전달.
정제된 검색 결과 및 웹 검색 결과를 결합하여 생성 모델(G)이 최종 답변을 생성한다.
📌 예제
입력: "Death of a Batman 영화의 시나리오 작가는 누구인가?"
검색된 문서 (정제됨): "The screenplay for Death of a Batman was written by Dennis Spooner."
출력: "The screenwriter for Death of a Batman is Dennis Spooner."
CRAG는 기존 RAG의 한계를 극복하기 위해 검색된 문서의 품질을 평가하고, 불필요한 정보를 제거하며, 필요할 경우 웹 검색을 수행하여 보완하는 접근법이다.
🔹 검색 평가기(Retrieval Evaluator) → 문서 신뢰도를 평가 (Correct, Incorrect, Ambiguous)
🔹 지식 정제(Knowledge Refinement) → 중요 정보만 추출 (Decompose-then-Recompose)
🔹 웹 검색(Web Search Augmentation) → 검색 결과가 부족할 경우 추가 검색 수행
🔹 최종 생성(Generation) → 정제된 정보를 바탕으로 LLM이 답변 생성
CRAG는 기존 RAG보다 더 정확하고 신뢰할 수 있는 정보 생성이 가능하며, 검색 오류를 효과적으로 보완하는 강력한 개선책이다. 🚀