안녕하세요 오늘 소개해드릴 논문은 Corrective RAG 라는 주제의 논문 입니다.
사실 설에 링크드인과 트위터 알람에서 자꾸 이 실험에 관련된 게시글이 많이 보였습니다. 아 이거 중요하겠구나 싶어서 오늘 읽고 리뷰를 하게 되었습니다.
언제나 제 논문은 한글 번역 후 요약 정리 중요하게 생각되는 점을 기록하면서 리딩을 하고 있습니다. 참고해주시길 바랍니다.
논문 원본
Langchain 의 트위터 CRAG
https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_crag.ipynb 예시
https://github.com/langchain-ai/langgraph/blob/main/examples/rag/langgraph_crag_mistral.ipynb 예시2
Abstract
대규모 언어 모델(LLM)은 그들이 내포하는 매개 변수 지식만으로 생성된 텍스트의 정확성을 보장할 수 없기 때문에 필연적으로 환영 현상을 보입니다. 검색-증강 생성(RAG)은 LLM에 대한 실용적인 보완책이지만, 검색된 문서의 관련성에 크게 의존하기 때문에 검색이 잘못될 경우 모델의 행동에 대한 우려가 있습니다. 이에, 우리는 생성의 견고성을 향상시키기 위한 수정 검색 증강 생성(CRAG)을 제안합니다. 특히, 경량 검색 평가자가 설계되어 쿼리에 대한 검색된 문서의 전체 품질을 평가하며, 이를 바탕으로 다양한 지식 검색 작업을 트리거할 수 있는 신뢰도를 반환합니다. 정적이고 제한된 코퍼스에서의 검색은 최적의 문서를 반환할 수만 없기 때문에, 대규모 웹 검색이 검색 결과를 확장하기 위한 수단으로 활용됩니다. 또한, 검색된 문서에서 핵심 정보에 선택적으로 집중하고 그들에 있는 관련 없는 정보를 필터링하기 위해 분해한 후 재조합하는 알고리즘이 설계되었습니다. CRAG는 플러그 앤 플레이이며 다양한 RAG 기반 접근법과 원활하게 결합될 수 있습니다. 단문 및 장문 생성 작업을 다루는 네 개의 데이터셋에 대한 실험은 CRAG가 RAG 기반 접근법의 성능을 크게 향상시킬 수 있음을 보여줍니다.
-> Plug & Plug 로 기존 RAG 시스템을 개선하고자 웹 검색 기능을 결합해서 관련 없는 정보를 필터링하고 분해 후 재조합하는 방법론
1. Introduction
대규모 언어 모델(LLM)은 점점 더 많은 관심을 끌고 있으며, 지시 사항을 이해하고 유창한 언어 텍스트를 생성하는 인상적인 능력을 보여주었습니다.그러나 LLM은 그들이 내포하는 매개 변수 지식만으로 생성된 텍스트의 정확성을 확보하는데 어려움을 겪고 능력이 부족하기 때문에 필연적으로 환영 현상을 나타내곤합니다.
저품질 검색기가 상당량의 관련 없는 정보를 도입하는 경향이 있으며, 이는 모델이 정확한 지식을 획득하는 것을 방해하고 잠재적으로 그들을 오도할 수 있으며, 환영과 같은 문제를 초래할 수 있음을 보여줍니다. 그러나 대부분의 전통적인 RAG 접근 방식은 검색된 문서가 관련이 있는지 여부에 관계없이 무차별적으로 그 문서를 통합합니다 더욱이, 현재 방법들은 대부분 검색 및 활용 동안 완전한 문서를 참조 지식으로 취급합니다. 그러나 이러한 검색된 문서 내의 상당 부분의 텍스트는 종종 생성에 필수적이지 않으며, RAG에서 동등하게 참조되고 관련되어서는 안 됩니다. 위와 같은 문제들을 고려하여, 이 논문은 검색기가 부정확한 결과를 반환하는 시나리오를 특별히 연구합니다. 검색기의 결과를 자체 수정하고 문서의 활용을 개선하여 생성을 증강하는 방법으로 Corrective Retrieval-Augmented Generation(CRAG)이 제안됩니다. 경량 검색 평가자가 설계되어 쿼리에 대한 검색된 문서의 전체 품질을 평가합니다. 이는 RAG에서 중요한 구성 요소로서, 검색된 문서의 관련성과 신뢰성을 검토하고 평가함으로써 정보 생성에 기여합니다. {정확, 부정확, 모호}의 다양한 지식 검색 작업을 트리거할 수 있는 신뢰도가 정량화됩니다. 후자의 두 작업에 대해, 정적이고 제한된 코퍼스에서의 검색은 범위와 다양성 측면에서 최적의 문서를 반환할 수만 없기 때문에 대규모 웹 검색)이 전략적 확장으로 통합됩니다. 이 증강은 검색된 정보의 스펙트럼을 넓히고, 웹의 광범위하고 동적인 특성을 활용하여 초기에 획득한 문서를 보완하고 풍부하게 하는 데 구현됩니다. 또한, RAG에 도움이 되지 않는 검색된 문서에 포함된 중복된 컨텍스트를 제거하기 위해, 검색 및 활용 과정 전반에 걸쳐 세심하게 제작된 분해-재조합 알고리즘이 있습니다. 이 알고리즘은 검색된 정보의 정제를 보장하며, 핵심 통찰력의 추출을 최적화하고 비필수 요소의 포함을 최소화함으로써, 검색된 데이터의 활용을 향상시킵니다.
CRAG는 플러그 앤 플레이이며, RAG및 Self-RAG 에 실험적으로 구현되어 RAG 기반 접근 방식에 대한 적응성을 입증합니다. PopQA, Biography, Pub Health, 및 Arc-Challenge 의 네 데이터셋에 대한 결과는 CRAG가 표준 RAG 및 Self-RAG의 성능을 크게 향상시킬 수 있음을 보여주며, 단문 및 장문 생성 작업에 걸쳐 일반화 가능성을 입증합니다.
2. Related Work
LLM의 환영 현상 대규모 언어 모델(LLM)은 지시 사항을 이해하고 유창한 언어 텍스트를 생성하는 인상적인 능력을 보여주었지만(Bang et al., 2023; Qin et al., 2023; Zhong et al., 2023), LLM이 여전히 심각하게 씨름하고 있는 가장 큰 문제 중 하나는 환영 현상입니다. 많은 연구들(Zhang et al., 2023b; Shuster et al., 2021)에서 발견했듯이, 활성화된 구식 정보나 잘못된 지식은 심각하게 환영 현상을 초래할 수 있습니다. 대규모 비규제 훈련 데이터 수집, 고품질 샘플링 데이터의 낮은 비율, 입력 공간에서의 데이터 할당의 불완전함, 그리고 많은 다른 현실적 요인들이 LLM에 영향을 미치고 문제를 악화시킬 수 있습니다. 따라서, 정확하고 구체적인 지식의 부족은 오도되거나 심지어 부정확한 생성을 초래할 수 있으며, 이는 대부분의 실용적인 응용 프로그램에서 사용자의 경험을 심각하게 해칠 것입니다.
검색-증강 생성 RAG(Lewis et al., 2020; Guu et al., 2020)는 위에서 언급한 문제들을 해결하는 데 유용한 방법으로 간주되며, 검색된 문서로 생성적 LLM의 입력 질문을 향상시킵니다. 일반적으로 특정 코퍼스, 즉 위키피디아에서 추가 지식 소스를 제공하여 다양한 작업, 특히 지식 집약적인 작업에서 LLM의 성능을 크게 향상시킵니다. 제안된 방법들은 일반적으로 생성적 LLM에 관련 지식이 포함된 문서를 공급하기 위해 정보 검색을 활용합니다. 초기 연구들은 반응 생성에 특화된 사전 훈련된 언어 모델 앞에 희소하거나 밀집된 검색기를 채택합니다. 그럼에도 불구하고, 위의 방법들은 검색이 잘못될 경우에 대한 질문을 대체로 무시합니다. 검색을 도입하는 목적은 생성적 LLM이 관련성 있고 정확한 지식을 얻을 수 있도록 하는 것입니다. 검색된 문서가 관련이 없는 경우, 검색 시스템은 LLM이 만드는 사실적 오류를 심지어 악화시킬 수 있습니다.
고급 RAG 최근 몇 년 동안 원래 RAG에서 발전된 많은 고급 접근 방식이 개발되었습니다. 검색이 일부 쿼리에 대해 불필요한 경우가 있으며, 반대로 많은 상황에서 검색 없이 응답이 더 정확할 수 있습니다. Asai et al. (2023)은 지식을 선택적으로 검색하고 검색 여부를 결정할 비평 모델을 도입하도록 제안되었습니다. Yoran et al. (2023)은 관련 없는 컨텍스트를 식별하고 견고성을 향상시키기 위해 NLI 모델을 설계했습니다. Luo et al. (2023)은 검색된 문서를 지시 사항 앞에 삽입하도록 지시에 튜닝되었습니다. Schick et al. (2023)은 위키피디아와 같은 API를 호출하기 위한 모델을 사전 훈련합니다. 또한, 일부 장문 생성 작업에서는 외부 지식이 한 번 이상 필요하며, 언제 검색해야 하는지에 대한 고려가 필요합니다. Jiang et al. (2023)은 장문 생성에서 언제 그리고 무엇을 검색할지 적극적으로 결정합니다.
최근 연구(Schick et al., 2023; Luo et al., 2023; Asai et al., 2023)와 비교할 때, 우리 작업과 가장 관련이 있는 점은 주요 차이점을 강조해야 합니다. 이 접근 방식들은 검색을 생성을 증강하기 위한 유용한 도구로 활용하거나 검색이 필요한지를 목표로 합니다. 반면에, 이 연구는 특히 검색기가 부정확한 결과를 반환하는 시나리오를 연구합니다. 우리가 알기로, 이 논문은 RAG의 생성 견고성을 향상시키기 위해 수정 전략을 탐구하고 설계하는 첫 번째 시도입니다.
3 Task Formulation
이전 작업(Lewis et al., 2020; Asai et al., 2023)을 따라, 입력 X와 대량의 지식 문서 C = {d1, ..., dN}를 포함하는 접근 가능한 코퍼스가 주어졌을 때, 시스템은 출력 Y를 생성할 것으로 예상됩니다. 관련 문서를 검색하고 입력 텍스트에 답하기 위해, 전체 프레임워크는 일반적으로 검색기 R과 생성기 G의 두 모듈로 나뉩니다. 검색기 R은 코퍼스 C에서 입력 텍스트 X에 관련된 상위-K 문서 D = {dr1, ..., drk}를 검색하는 것을 목표로 합니다. 입력 텍스트 X와 검색 결과 D를 바탕으로, 생성기 G는 출력 텍스트 Y를 생성하는 책임이 있습니다. 이 프레임워크는 다음과 같이 수식화될 수 있습니다:
검색기와 생성기는 매끄럽게 결합되어 있습니다. 이 시스템은 리스크에 대한 낮은 관용도를 보여줍니다. 왜냐하면 성공적이지 못한 검색은 생성기의 인상적인 능력에 관계없이 불만족스러운 응답을 초래할 수 있기 때문입니다. 이는 바로 이 논문의 초점이 생성기의 견고성을 향상시키기 위한 것입니다.
4 CRAG
4.1 Overview of Model Inference
- CRAG 모델 추론의 개요는 보정 전략을 설계하여 생성기의 견고성을 향상시키는 방법을 제시합니다. 입력 쿼리와 어떤 검색기에서 검색된 문서가 주어지면, 경량 검색 평가자가 구축되어 입력 쿼리에 대한 검색된 문서의 관련성 점수를 추정합니다(섹션 4.2). 계산된 관련성 점수는 총 세 가지 신뢰도로 정량화되며, 해당하는 작업을 트리거합니다: {정확, 부정확, 모호}(섹션 4.3).
- 작업 '정확(Correct)'이 트리거되면, 검색된 문서는 더 정밀한 지식 조각으로 정제됩니다. 이 정제 작업에는 지식 분해, 필터링, 재구성이 포함됩니다(섹션 4.4). 작업 '부정확(Incorrect)'이 트리거되면, 검색된 문서는 버려집니다. 대신, 웹 검색이 보완적인 지식 소스로 간주되어 수정을 위해 사용됩니다(섹션 4.5). 마지막으로, 시스템이 정확하거나 부정확한 판단을 확신할 수 없을 때, 두 가지를 모두 결합하는 '모호(Ambiguous)'라는 소프트 작업이 트리거됩니다. 검색 결과를 최적화한 후, 임의의 생성 모델을 채택하여 최종 결과를 생성할 수 있습니다.
- 이 접근 방식은 생성 과정에서 검색된 문서의 품질과 관련성을 향상시키기 위한 독창적인 메커니즘을 제공합니다. 이를 통해, 모델은 보다 정확하고 신뢰할 수 있는 정보를 바탕으로 최종 응답을 생성할 수 있으며, 이는 전반적인 생성 품질을 크게 향상시킬 수 있습니다.
4.1 Retrieval Evaluator
검색된 문서를 활용하기 전에, 해당 문서들이 정확한지 여부를 식별하는 것은 자연스러운 절차입니다. 관련 없거나 오도하는 메시지를 이 방법으로 제거할 수 있기 때문에 이는 필수적입니다. 검색 평가자의 정확성은 후속 과정의 결과에 영향을 미치므로 전체 시스템 성능을 형성하는 데 결정적인 역할을 합니다. 우리의 목표는 검색된 문서가 관련이 없을 경우 이를 수정하는 것입니다. 구체적으로, T5-large(Raffel et al., 2020)를 채택하고 미세 조정하였습니다. 일반적으로 각 질문에 대해 10개의 문서가 검색됩니다. 질문은 각각의 단일 문서와 함께 입력으로 연결되고, 평가자는 각 질문-문서 쌍에 대해 개별적으로 관련성 점수를 예측합니다. 미세 조정 중에는 긍정적인 샘플의 라벨이 1이고, 부정적인 것들의 라벨이 -1입니다. 추론 시, 평가자는 각 문서에 대해 -1부터 1까지의 관련성 점수를 매깁니다. ChatGPT에게 검색 관련성을 식별하도록 요청하는 것도 시도해 보았지만, 섹션 5.5에서 자세히 설명한 바와 같이 성능이 떨어집니다. Self-RAG(Asai et al., 2023)의 비평 모델과 비교할 때, CRAG에서 설계된 평가자는 두 가지 큰 장점을 보여줍니다. 첫째, 평가자는 T5-large 기반(0.77B)으로, 지시사항 튜닝된 LLaMA-2(7B) 비평 모델에 비해 상당히 가볍습니다. 둘째, 평가자는 추가적인 인간 또는 LLM 주석 없이 사용할 수 있는 반면, 비평 모델은 지시사항 튜닝을 위해 GPT-4 주석 데이터가 필요합니다.
추론 과정 :
1. Retrieval : 사용자의 질문 Xd에 대해 검색된 기존 리트리버 도큐멘트의검색된 문서들을 d1 , d2 d와 같이 뽑습니다.
2. Retrieval Evaluator : 평가자는 검색된 문서들이 입력 질문 X와 얼마나 관련이 있는지를 평가합니다. 이 평가를 통해 정확한지, 부정확한지, 모호한지를 결정한다.
3. Knowledge Correction
- 정확(Correct): 검색된 문서가 관련성이 높다고 평가될 경우, 이 문서들은 지식 정제 과정을 거치게 됩니다. 이 과정에는 지식을 분해, 필터링, 재구성하는 단계가 포함됩니다. 결과적으로 더 정밀한 지식 조각 Kn 이 생성이 됩니다.
- 부정확(Incorrect): 문서가 관련성이 낮다고 평가될 경우, 이 문서들은 버려지고 대신 웹 검색을 통해 새로운 문서 k1, k2, k3 가 검색됩니다. 이 문서들 중에 선택과정을 거쳐 최종적으로 사용할 문서 Kn 이 결정이 됩니다
- 모호(Ambiguous): 문서가 정확하거나 부정확하다고 확신할 수 없을 때는 두 가지 접근법을 혼합한 소프트 액션이 트리거됩니다.
4. Generation: 최적화된 검색 결과를 바탕으로, 생성기는 최종 출력을 생성합니다. '정확'한 경우에는 정제된 지식 Kn만을,
'모호'한 경우에는 정제된 지식과 웹 검색을 통해 얻은 지식을 혼합하여, '부정확'한 경우에는 웹 검색을 통해 얻은 지식만을 활용하여 최종 답변을 생성합니다.
4.3 Action Trigger
정확함(Correct)
하나 이상의 검색된 문서의 신뢰 점수가 상위 임곗값보다 높을 경우, 해당 문서는 정확한 것으로 간주됩니다. 이는 검색 결과에 관련 문서가 존재함을 의미합니다. 관련 문서가 발견되더라도 해당 문서에는 불필요한 지식 조각이 불가피하게 포함될 수 있습니다. 이 문서 내에서 가장 중요한 지식 조각을 추출하기 위해 지식 정제 방법이 추가로 설계되었으며, 이는 4.4 섹션에서 자세히 설명됩니다.
부정확함(Incorrect)
모든 검색된 문서의 신뢰 점수가 하위 임곗값 이하일 경우, 해당 검색은 부정확한 것으로 간주됩니다. 이는 모든 검색된 문서가 관련성이 없으며 생성에 도움이 되지 않는다고 간주됩니다. 따라서, 수정을 위해 새로운 지식 출처를 찾아야 합니다. 이 경우, 인터넷에서 검색하는 웹 검색이 도입되며, 이는 4.5 섹션에서 자세히 설명됩니다. 이러한 수정 조치는 신뢰할 수 있는 지식을 참조할 수 없는 난관을 극복하는 데 도움이 됩니다.
모호함(Ambiguous)
위의 두 상황을 제외한 나머지 경우에는 중간 조치인 모호함(Ambiguous)이 실행됩니다. 검색 평가자가 판단에 확신이 없기 때문에, 정확함과 부정확함에서 처리된 두 종류의 지식이 서로 보완됩니다. 이러한 중재적이고 온화한 전략을 구현하는 것은 시스템의 견고함과 회복력을 강화하고, 최적의 성능을 위한 더 적응력 있는 프레임워크를 촉진하는 데 기여할 수 있습니다.
CRAG 알고리즘의 핵심은 입력된 질문과 관련된 문서들을 기반으로 가장 적합한 답변을 생성하는 것입니다. 이를 위해 다음과 같은 단계를 거칩니다:
- 평가 단계: 평가자(E)는 입력 질문(x)과 각 검색된 문서(di)의 쌍의 정확성을 평가하여 점수(scorei)를 매깁니다.
- 신뢰도 판단: 모든 점수를 기반으로 최종 신뢰도(Confidence)를 계산합니다. 신뢰도는 [CORRECT], [INCORRECT], [AMBIGUOUS] 중 하나입니다.
- 답변 생성: 생성기(G)는 최종적으로 정제된 지식을 바탕으로 답변(y)을 예측합니다.
구현 상세
- 평가자(Evaluator): 질문과 문서 쌍의 관련성을 평가하여, 검색된 문서가 질문에 얼마나 적합한지 점수를 매깁니다.
- 쿼리 재작성기(Query Rewriter): 검색된 문서가 부적합하거나 모호할 때, 질문을 재작성하여 보다 관련성 높은 문서를 찾습니다.
- 생성기(Generator): 최종적으로 선택된 지식을 기반으로 사용자의 질문에 대한 답변을 생성합니다.
class Evaluator:
def evaluate(self, question, document):
# 문서의 정확성 평가 로직 구현
pass
class QueryRewriter:
def rewrite(self, query):
# 쿼리 재작성 로직 구현
pass
class Generator:
def predict(self, question, knowledge):
# 응답 생성 로직 구현
pass
def Knowledge_Refine(question, documents):
# 지식 정제 로직 구현
pass
def Web_Search(query):
# 웹 검색 로직 구현
pass
def CRAG_Inference(question, documents):
evaluator = Evaluator()
rewriter = QueryRewriter()
generator = Generator()
scores = [evaluator.evaluate(question, d) for d in documents]
confidence = calculate_confidence(scores) # 이 함수는 신뢰도를 계산하는 로직을 구현해야 함
if confidence == "CORRECT":
knowledge = Knowledge_Refine(question, documents)
elif confidence == "INCORRECT":
rewritten_query = rewriter.rewrite(question)
knowledge = Web_Search(rewritten_query)
elif confidence == "AMBIGUOUS":
internal_knowledge = Knowledge_Refine(question, documents)
rewritten_query = rewriter.rewrite(question)
external_knowledge = Web_Search(rewritten_query)
knowledge = internal_knowledge + external_knowledge
else:
raise ValueError("Unknown confidence level")
response = generator.predict(question, knowledge)
return response
# 신뢰도 계산 함수 예시
def calculate_confidence(scores):
# 점수를 기반으로 신뢰도 계산 로직 구현
# 예시로, 모든 점수가 특정 임곗값 이상이면 "CORRECT", 모두 임곗값 이하면 "INCORRECT", 그 외는 "AMBIGUOUS" 반환
threshold = 0.5 # 임곗값은 상황에 따라 조정 필요
if all(score >= threshold for score in scores):
return "CORRECT"
elif all(score < threshold for score in scores):
return "INCORRECT"
else:
return "AMBIGUOUS"
# 이 코드는 실제로 실행되지 않습니다. 각 클래스와 함수는 실제 구현이 필요합니다.
GPT 에게 알고리즘을 토대로 코드를 구성해달라고 하였다 쭉 한번 봐보겠습니다. 먼저 함수들부터 구성한 알고리즘에 의해 구성이 되었고, Evaluator, QueryRewriter, Generator, knoledg_Refine, Web_serch 로 구성이 되어있습니다.
- Evaluator 클래스: 이 클래스는 입력된 질문과 관련 문서 간의 정확성을 평가하는 역할을 합니다. evaluate 메서드는 질문(question)과 개별 문서(document)를 인자로 받아, 그들 사이의 적합성을 점수화합니다.
- QueryRewriter 클래스: 질문이 명확하지 않거나 추가 정보가 필요할 때, 원래의 질문을 더 검색하기 좋게 재작성하는 역할을 합니다. rewrite 메서드는 원본 질문(query)을 받아 수정된 질문을 반환합니다.
- Generator 클래스: 최종적으로 선택된 지식을 바탕으로 사용자의 질문에 대한 답변을 생성합니다. predict 메서드는 질문(question)과 관련 지식(knowledge)을 인자로 받아, 적절한 답변을 생성합니다.
- Knowledge_Refine 함수: 입력 질문과 관련된 문서들로부터 유용한 정보를 추출하고 정제하는 역할을 합니다.
- Web_Search 함수: 필요한 경우, 질문을 재작성하여 인터넷을 통해 추가 정보를 검색합니다.
CRAG의 전체적인 흐름은 평가 -> 신뢰도 판단 -> 지식처리(정확, 부정확, 모호) -> 생성으로 플로우맵이 흘러갑니다.
- 평가 단계: Evaluator 객체를 사용하여 입력 질문과 각 문서의 적합성을 평가하고, 각각에 대한 점수를 계산합니다.
- 신뢰도 판단: 계산된 점수를 바탕으로 전체 신뢰도를 결정합니다. 이는 calculate_confidence 함수를 통해 이루어지며, 신뢰도는 "CORRECT", "INCORRECT", 또는 "AMBIGUOUS" 중 하나가 될 수 있습니다.
- 지식 처리:
- 응답 생성: 최종적으로 결정된 지식을 바탕으로 Generator 객체를 사용하여 답변을 생성합니다.
신뢰도 계산은 문서들이 가지고 있는 점수를 기반으로 신뢰도를 계산합니다. 특정 쓰레쉬홀드 임계값이 이상이면 "정확" , 미만이면 "부정확", 그 외의 경우 역시 "모호"로 출력을 해주는 역할을 합니다.
4.4 Knowledge Refinement
지식 정제에서는 문서분해 -> 지식 조각 평가 -> 불필요한 지식 조각 필터링 -> 관련 지식 조각 재구성의 형태로 순서가 이루어집니다. 이 지식 정제 방법은 검색된 문서에서 정보를 효율적으로 추출하고, 질문 응답 시스템에서 응답 생성을 위한 고도로 관련성 높은 지식 기반을 구축하는 데 기여합니다.
문서 분해
먼저, 각 검색된 문서는 휴리스틱 규칙을 통해 세밀한 지식 조각으로 세분화됩니다. 이 휴리스틱 규칙에 대한 더 자세한 내용은 부록 B에서 확인할 수 있습니다. 이 초기 단계에서 문서는 여러 개의 독립적인 지식 조각으로 나뉘며, 각 조각은 문서 내의 구체적인 정보 또는 지식을 나타냅니다.
지식 조각 평가
이어서, 4.2 섹션에서 미세 조정된 검색 평가자를 사용하여 각 지식 조각의 관련성 점수를 계산합니다. 이 평가 과정에서 각 지식 조각이 질문에 얼마나 관련이 있는지를 점수화하여, 문서 내에서 정보의 중요성을 판별합니다.
불필요한 지식 조각 필터링
계산된 점수를 기반으로, 관련성이 없는 지식 조각은 필터링되어 제거됩니다. 이는 전체 문서에서 중요하지 않거나 관련이 없는 정보를 걸러내는 역할을 합니다. 이 과정을 통해, 문서에서 가장 유용하고 중요한 지식만을 추출할 수 있습니다.
관련 지식 조각 재구성
마지막으로, 필터링된 관련 지식 조각들은 순서대로 연결(Concatenation)되어 재구성됩니다. 이렇게 재구성된 지식은 "내부 지식(Internal Knowledge)"이라고 명명되며, 질문에 대한 응답을 생성하는 데 사용됩니다. 재구성 과정은 분해된 지식 조각들을 다시 하나의 연속된 정보 흐름으로 통합하여, 문서의 핵심 내용을 명확하고 일관된 형태로 제공합니다.
4.5 Web Search
웹 검색은 검색된 결과가 모두 관련이 없다고 가정될때, 보완적으로 외부 지식을 탐색하는 것입니다. CRAG에서는 상업용 웹 검색 API를 사용하여 각 쿼리에 대한 일련의 URL 링크를 생성합니다. 또한, 이 URL 링크를 활용하여 웹 페이지를 탐색하고, 그 내용을 전사하여, 4.4 섹션에서 설명한 동일한 지식 정제 방법을 적용해 관련 웹 지식, 즉 외부 지식을 도출합니다.
이 연구에서는 Google 검색 API 를 사용했다고 합니다.
5 Experiments
5.1 Tasks, Datasets and Metrics
1. PopQA (Mallen et al., 2023)
- 유형: 짧은 형태의 생성 작업
- 내용: 1,399개의 질문을 포함하며, 각 질문에 대해 일반적으로 하나의 사실적 지식 엔티티에 대한 답변이 예상됩니다.
- 평가 지표: 정확도(Accuracy)
2. Biography (Min et al., 2023)
- 유형: 긴 형태의 생성 작업
- 내용: 특정 엔티티에 대한 상세한 전기를 생성하는 작업입니다.
- 평가 지표: 이전 연구를 따라, 생성된 전기의 평가에 FactScore (Min et al., 2023)가 사용되었습니다.
3. PubHealth (Zhang et al., 2023a)
- 유형: 보건 분야의 진위 판별 작업
- 내용: 사실적 정보를 바탕으로 한 건강 관련 주장이 포함된 참/거짓 질문으로 구성됩니다. 모델은 주장의 진위를 검증하고 판단을 내려야 합니다.
- 평가 지표: 정확도(Accuracy)
4. Arc-Challenge (Bhakthavatsalam et al., 2021)
- 유형: 일상적인 상식 과학 현상에 대한 다중 선택 질문 작업
- 내용: 일상 생활에서 발생하는 과학적 사건에 대해 주어지며, 모델은 3개 또는 4개의 선택지 중 올바른 설명을 선택해야 합니다.
- 평가 지표: 정확도(Accuracy) 역시 평가 지표로 사용되었습니다.
5.2 Baseline
Baselines without retrieval.
- 공개 LLM 평가: LLaMA2-7B, 13B (Touvron et al., 2023b), 지시문 기반 튜닝 모델인 Alpaca-7B, 13B (Dubois et al., 2023), 그리고 LLM 생성의 사실성을 향상시키기 위한 반복 엔지니어링을 도입한 CoVE65B (Dhuliawala et al., 2023)을 평가했습니다.
Standard RAG.
- 표준 RAG 평가: 같은 검색기를 사용하여 상위 검색된 문서와 함께 쿼리를 준비한 후 LM이 출력을 생성하는 표준 RAG(Lewis et al., 2020)을 평가했습니다. 여기에는 LLaMA2-7B, 13B (Touvron et al., 2023b), Alpaca-7B,13B (Dubois et al., 2023), 그리고 Self-RAG (Asai et al., 2023)에서 지시문 기반으로 튜닝된 LLaMA2-7B을 포함한 여러 공개 지시문 기반 LLM이 사용되었습니다.
Advanced RAG.
- SAIL (Luo et al., 2023): Alpaca 지시문 튜닝 데이터에 대해 지시문 앞에 상위 검색된 문서를 삽입하여 LM을 지시문 기반으로 튜닝한 접근 방식입니다.
- Self-RAG (Asai et al., 2023): 지시문 튜닝 데이터에 GPT-4 (OpenAI, 2023)에 의해 레이블링된 여러 세트의 반영 토큰을 포함하여 LLaMA2를 튜닝한 방식입니다.
- 기타 검색 보강 기준선: Asai et al. (2023)을 따라, 개인 데이터로 훈련된 검색 보강 기준선인 Ret-ChatGPT와 Ret-LLaMA-chat을 인용했습니다. 이들은 위에서 언급한 동일한 보강 기술을 배치했으며, InstructGPT 기반의 제작 검색 시스템인 perplexity.ai도 포함됩니다.
5.3 Results
결과에서는 네가지 데이터셋에 관한 CRAG 성능을 제시합니다. 표준 RAG와 결합된 제안된 방법을 사용하는 모델을 CRAG라고 하며, Self-RAG와 결합된 모델을 Self-CRAG라고 합니다
Key Findings
- 성능 향상: 제안된 방법은 RAG와 Self-RAG 모두의 성능을 크게 향상시킵니다. 특히, CRAG는 PopQA에서 2.1%의 정확도, Biography에서 2.8%의 FactScore로 LLaMA2-hf-7b를 기반으로 한 RAG를 상회했습니다. SelfRAG-LLaMA2-7b를 기반으로 할 때는 PopQA에서 19.0%, Biography에서 14.9%의 FactScore, PubHealth에서 36.6%, Arc-Challenge에서 8.1%의 정확도로 성능이 향상되었습니다.
- 일반화 가능성: 제안된 방법은 다양한 생성 작업에 대한 큰 일반화 가능성을 보여줍니다. 특히, 표 1에 보고된 벤치마크는 짧은 형태의 엔티티 생성(PopQA), 긴 형태 생성(Biography), 닫힌 세트 작업(PubHealth, Arc-Challenge)을 포함하여 다양한 실용적 시나리오를 대표합니다. 결과는 CRAG의 일관된 효과를 검증합니다.
- LLM 모델의 유연성 : CRAG는 기본 LLM이 SelfRAG-LLaMA2-7b에서 LLaMA2-hf-7b로 변경되어도 여전히 경쟁력 있는 성능을 보였습니다. 반면, Self-RAG의 성능은 크게 떨어졌으며, 표준 RAG보다도 낮은 성능을 보였습니다. 이러한 결과는 Self-RAG가 특별한 비평 토큰을 필요에 따라 출력하도록 인간이나 LLM으로부터 주석된 데이터를 사용하여 지시문 튜닝을 해야 하지만, 일반 LLM에서는 이러한 능력이 학습되지 않았기 때문입니다. CRAG는 이러한 능력에 대한 요구 사항이 없습니다. -> 충분히 다른 OLLM 으로도 경쟁력 이쎅 사용가능
Erasure research
Removing indivdaul actions(개별 조치제거):
Correct나 Incorrect 조치가 제거될 경우, 원래 Correct나 Incorrect를 유발했던 비율이 Ambiguous를 유발하게 됩니다. Ambiguous가 제거되면, 모든 입력 쿼리가 명확하게 Correct 또는 Incorrect를 유발하게 됩니다.
Removing Knowledge Leveraging Actions(지식 활용 작업 제거):
문서 정제, 검색 쿼리 재작성, 지식 선택을 제거하는 연구는 CRAG와 Self-CRAG의 유연성과 각 작업의 중요성을 보여줍니다.
5.4 Ablation Study
The impact of each triggered action.
PopQA 데이터셋에 대한 평가는 정확도 측면에서의 성능 변화를 보여주기 위해 수행되었습니다. 특히, '정확(Correct)' 또는 '부정확(Incorrect)' 조치가 제거되면, '모호함(Ambiguous)'과 병합되어 원래 '정확' 또는 '부정확'을 유발했던 비율이 '모호함'을 유발하게 됩니다. 반면에 '모호함' 조치가 제거되면, 모든 입력 쿼리가 명확하게 '정확' 또는 '부정확'을 유발하는 단일 임계값이 존재하게 됩니다. 이 결과에서 볼 수 있듯이, 어떤 조치가 제거되든 성능 저하가 발생하여, 각 조치가 생성의 견고성을 향상시키는 데 기여함을 보여줍니다.
-> 엄청 성능이 높은걸 볼 수 있다. 무족권 도입아닌가..?
The impact of each knowledge utilization operation.
또한, 각 지식 활용 작업의 영향에 관한 연구도 수행되었습니다. 표 3은 핵심 지식 활용 작업이 소거될 경우 성능이 어떻게 변경되는지를 보여줍니다. PopQA 데이터셋에 대한 정확도 측면에서 평가는 문서 정제, 검색 쿼리 재작성, 외부 지식 선택의 지식 활용 작업을 개별적으로 제거함으로써 수행되었습니다. 문서 정제를 제거함으로써, 기존 작업들에서처럼 원본 검색된 문서들이 직접 후속 생성기에 공급됨을 나타냅니다. 추가적으로, 검색 쿼리 재작성을 제거함으로써, 지식 검색 중에 질문이 키워드로 구성된 쿼리로 재작성되지 않음을 나타냅니다. 마지막으로, 지식 선택을 제거함으로써, 검색된 웹 페이지의 모든 내용이 선택 없이 모두 외부 지식으로 간주됨을 나타냅니다. 이 결과들은 최종 시스템의 성능이 어떤 지식 활용 작업이 제거되든 저하되었으며, 각 지식 활용 작업이 지식의 활용을 향상시키는 데 기여함을 밝혀줍니다.
5.5 Accuracy of the Retrieval Evaluator
검색 평가자의 품질이 전체 시스템의 성능을 크게 결정했습니다. 문서 검색 결과를 바탕으로, 검색 평가자가 이러한 결과의 전반적인 품질을 정확하게 판단할 수 있는지를 평가했습니다. 우리의 검색 평가자와 상업용 LLM인 ChatGPT의 문서 검색 결과에 대한 평가 정확도는 표 4에 나타냈습니다. 실험에서 사용된 ChatGPT, ChatGPT-CoT, 및 ChatGPT-few-shot의 프롬프트는 부록 A에서 참조할 수 있습니다. 결과는 가벼운 T5 기반의 검색 평가자가 모든 설정에서 경쟁력 있는 ChatGPT를 크게 능가함을 밝혔습니다.
5.6 Robustness to Retrieval Performance
검색 성능이 저하됨에 따라 Self-RAG와 Self-CRAG의 생성 성능이 감소하는 것을 볼 수 있으며, 이는 생성기가 검색기의 품질에 크게 의존하고 있음을 나타냅니다. 더욱이, 검색 성능이 저하됨에 따라 Self-CRAG의 생성 성능이 Self-RAG의 생성 성능보다 덜 감소했습니다. 이러한 결과는 검색 성능에 대한 견고성을 강화하는 데 있어서 Self-CRAG가 Self-RAG보다 우수함을 시사합니다.이러한 결론은, 검색 결과의 품질이 좋지 않을 때도 Self-CRAG가 비교적 높은 품질의 답변을 생성할 수 있는 능력을 가지고 있음을 의미합니다. 즉, Self-CRAG는 검색기의 부정확한 결과로 인한 영향을 더 잘 완화할 수 있는 모델이라고 해석할 수 있습니다. 이는 특히 검색 결과가 불완전하거나 불확실한 실제 환경에서 매우 유용한 특성입니다.
6 Conclusion
이 논문은 RAG 기반 접근 방식이 검색 오류에 직면했을 때, 생성 언어 모델(LMs)에 부정확한 지식을 노출시키는 문제를 연구합니다. 이 문제를 완화하기 위해, 생성의 견고성을 향상시키기 위한 플러그 앤 플레이 보정 검색 보강 생성(Corrective Retrieval Augmented Generation, CRAG)을 제안합니다. 본질적으로, 검색 평가자는 세 가지 조치를 차별적으로 추정하고 트리거합니다. 웹 검색 및 최적화된 지식 활용 작업의 추가적인 도움을 받아, CRAG는 검색된 문서의 자동 자가 보정 능력과 효율적인 활용을 크게 향상시켰습니다. 표준 RAG 및 Self-RAG와 결합한 실험은 RAG 기반 접근 방식에 대한 CRAG의 적응성을 광범위하게 입증하고, 네 가지 데이터셋에 대한 실험은 짧은 형태 및 긴 형태의 생성 작업에 걸친 일반화 가능성을 입증합니다.
결론적으로, CRAG는 검색 오류가 발생했을 때 생성 모델의 견고성을 향상시키는 효과적인 해결책으로 제시됩니다. 이는 검색된 결과물의 질을 높이고, 생성 작업의 정확도를 개선함으로써, 질문에 대한 더 정확하고 신뢰할 수 있는 답변을 제공합니다. 이러한 방식으로 CRAG는 다양한 도메인과 태스크에 걸쳐 유연하게 적용될 수 있는, 강력하고 일반화된 접근 방식을 제공합니다.