논문 리뷰에 앞서 RAG에 대한 간략한 소개
RAG(Retrieval-Augmented Generation)은 Lewis et al.(2020) 논문에서부터(아래 링크 참고) 등장하였는데 이 논문에서는 LLM이 parametric memory(모델 학습 시 배우게 되는 지식) 뿐만 아니라 non-parametric memory(예를 들어 Wikipedia 등 외부 지식)을 활용하여 QA task에 높은 성능을 내도록 했다.
대표적인 사례로 Perplexity가 존재하며 그 작동 방식은 간략하게 말하면 쿼리와 외부 지식을 인코딩하여 쿼리 인코딩 벡터와 유사한 Top K개의 외부 지식을 선정한 뒤 이를 바탕으로 답변을 생성하는 원리이다.
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
ABSTRACT
이 논문은 Blackrock과 NVIDIA에서 함께 연구한 논문으로 금융에서 Conference Call 등의 비정형 텍스트 데이터에서 특징 추출 및 내재적 정보 해석을 수행하기 위한 프레임워크를 개발하였다.
논문에서는 두 가지 RAG 접근법을 언급하는데 하나는 기존 Lewis et al.(2020)에서 파생된 Vector RAG 그리고 또 하나는 지식 그래프를 기반으로 하는 GraphRAG가 있다. 이때 저자는 이 둘의 장점을 활용한 HybridRAG 접근법을 사용하여 이 모델이 정보 추출 정확도나 답변 생성 측면에서 VectorRAG와 GraphRAG보다 outperform한다는 것을 보였다.
INTRODUCTION
금융에서 비정형 데이터(뉴스, 공시 자료, 연준 회의록 등)로부터 데이터를 추출하고 분석하는 것은 아주 중요하다. LLM이 강력한 도구로 등장하였지만 학습 데이터 이외의 금융 데이터에서 정보를 추출할 때 할루시네이션 문제가 발생한다. 금융 문서들은 전형적으로 도메인 특화 용어, 다양한 데이터 포맷, 독특한 맥락적 관계를 가지기 때문에 general purpose LLM이 이를 다루기 어려워 한다. (특히 금융 문서의 경우 같은 단어라도 다른 기준에 의해 평가되거나 같은 기준이지만 다른 용어를 사용하는 경우가 있다.)
이를 해결하기 위해 관련 외부 데이터를 추출하여 성능을 높이는 방식인 RAG가 등장하였다. RAG는 앞서 언급했듯이 두 가지 접근법이 있는데 VectorRAG와 GraphRAG이다. 먼저 VectorRAG는 관련된 텍스트 저보를 추출하여 답변을 생성하는데 금융 문서에서 이러한 접근들은 상당한 한계점을 가진다. 예를 들어 전통적인 RAG 시스템(VectorRAG)은 문단 레벨에서 텍스트 청크로 쪼개는 데 이 접근이 금융 statement(재무제표)의 hierarchical한 특성을 무시하는 접근이고 이는 중요한 맥락 정보의 손실로 이어진다. 이 한계점은 보다 복잡한 접근법의 필요성을 강조한다.
지식 그래프(KG)는 Figure 1에서 볼 수 있듯이 객체 사이의 관계를 표현하는 트리플들(예를 들어 ("Joe Biden", "born_in", "Scranton")의 형식을 가짐)의 집합으로 검색 엔진, 추천 시스템 그리고 의료 분야에서 많이 사용된다. KG의 주요한 장점은 구조화된 표현을 제공한다는 것인데 이는 효과적인 질문과 추론을 가능하게 한다. 하지만 KG를 구축하는 것은 많은 인력과 비용이 든다는 문제가 있다.
Graph RAG(KG-RAG)는 RAG에 KG를 합함으로써 GraphRAG가 더 정확하고 context-aware한 답변을 생성하도록 한다. 하지만 GraphRAG는 엔티티가 명확하게 표현되지 않은 질문이나 추상적인 질문에서 underperform한다는 문제가 있다.
따라서 저자는 이 두 방법론을 조합한 HybirdRAG를 통해 두 접근법의 장점을 함께 활용하고자 한다.
METHODOLOGY
1) VectorRAG
전통적인 RAG(VectorRAG)는 주어진 외부 문서들을 언어 모델의 context size 한계로 인해 여러 청크들로 나누고 이들을 임베딩으로 전환하여 vector DB에 저장한다. 이후 query에 대해 similarity search하여 가장 관련 있는 청크들을 추출한다. 이렇게 Top-ranked 청크들은 생성 모델이 답변을 생성하는데 활용된다. 따라서 이는 real-time 정보와 모델의 지식을 합침으로써 문맥적으로 관련있고 디테일한 답변을 생성한다.
2) Knowledge Graph Construction
대부분의 KG를 만드는 방법론들은 세 가지 단계를 포함한다 : knowledge extraction, knowledge improvement, knowledge adaptation. 이때 저자는 knowledge adaptation은 사용하지 않고 KG를 정적인 그래프로 다뤘다.
Knowledge Extraction : 이 단계는 많은 비정형 반정형 데이터에서 구조적 정보를 추출하는 단계이다. 구체적으로 Entity recognition, Relationship extraction, Co-reference resolution을 수행한다. Entity recogniton과 relationship extraction은 말 그대로 글 속에서 엔티티들과 그들의 관계를 추출하는 것이고 Co-reference resolution은 같은 엔티티의 다양한 reference들을 연결한다.(예를 들어 "Ana works at Google. She loves her Job."에서 Ana, She, her은 같은 사람을 가르킴)
Knowledge Improvement : 이 단계는 애매함을 제거함으로써 KG의 퀄리티와 완벽성을 강화하는 단계이다. 주된 태스크는 KG completion과 fusion인데 completion의 경우 link prediction, entity resolution과 같은 기법을 통해 graph 내에서 빠진 개체나 관계들을 추론하는 것이다(Link prediction: 그래프 구조와 특징들을 기반으로 두 엔티티 사이의 관계 유형 예측, Entity resolution: 동일한 엔티티의 다양한 표현들을 합침). fusion의 경우 다양한 소스들로부터 정보를 조합하여 일관적이고 단일화된 KG를 생성한다.
저자는 이 두 단계를 구현하기 위해 two-stage LLM을 구현했는데 첫 번째 stage에서는 각 문서 청크의 추상적인 표현들을 생성하고 두 번째 stage에서 엔티티 추출과 관계 인식을 진행한다.
3) GraphRAG
KG-RAG or GraphRAG와 VectorRAG의 주요한 차이는 추출하는 부분에 있다. GraphRAG에서 쿼리는 연관된 노드나 관계들을 추출할 때 사용된다. 이렇게 추출된 Subgraph는 모델이 해석할 수 있게 임베딩으로 전환되어 사용된다. 결정적으로, 특정 회사에 대한 사용자 쿼리에 응답할 때 메타데이터 정보를 활용하여 쿼리 속 기업과 관련된 문서만 선택적으로 필터링하고 검색할 수 있었다.
최종적으로 HybridRAG에서는 벡터 기반의 추출 매커니즘과 KG 기반의 추출 시스템 모두로부터 추출된 맥락적 정보를 활용한다.(유사도 기반 추출 정보 + 구조화되고 relationship-rich한 정보)
4) Evaluation Metrics
이전 논문에서는 객관적으로 다양한 RAG 접근법들을 평가하기 위해 comprehensiveness( 질문의 모든 측면과 세부 사항들을 다루기 위한 답변의 세부사항들의 수), diversity(답변의 다양한 관점들을 제공하고 질문에 인사이트를 제공했는 지에 대한 풍부성), empowerment(독자가 이해하고 정보에 입각한 판단을 할 수 있는 답변의 용이성) 그리고 directness(질문을 다루기 위한 답변의 명확성)의 평가 기준을 사용했다. 이때 평가는 LLM이 진행하였으며 (질문, 평가 기준, 답변들)을 제공하여 이 평가 기준에서 어떤 답변이 가장 훌륭한지 그리고 그 이유를 작성하도록 했다. 하지만 이는 직접적으로 모델의 추출과 답변 생성 과정을 평가하지 않는다. 그 대신 저자는 faithfulness, answer relevance, context relevance를 통해 평가하였다.
Faithfulness : $$ F = |V|/|S| $$ 이때 |V|는 1) LLM으로 답변을 구체적인 statements로 분해 2) 사용한 context에 지지된 statements의 수 |S|는 전체 statements 수 (생성된 답변이 제공된 context에서 추론될 수 있는 정도)
Answer Relevance : $$ AR = \frac 1 n \Sigma(sim(q, qi )) $$ 이때 $ q_i $는 주어진 대답에 대해 LLM이 추론한 질문들이고 이 생성된 질문들이 얼마나 원 질문과 유사한지 평가 (얼마나 생성된 대답이 원 질문을 잘 다루는 지 정확성 측면에서 평가)
Context Precision :
컨텍스트의 top rank 내에 등장한 관련된 아이템들의 비율. $$ CP = \frac {v_k} {k} $$ 이때 v는 top k 내에서 정답과 관련하여 등장한 아이템 숫자 (추출된 컨텍스트 청크들과 ground truth answer과 유사도 평가)
Context Recall : ground truth answer가 사용된 컨텍스트를 추출할 수 있는 지 (추출된 컨텍스트가 ground truth answer과 얼마나 일치하는 지 평가)
DATA DESCRIPTION
이때 사용된 데이터들은 public하게 사용가능한 데이터가 포함되지 않았다.(구체적인 데이터는 논문 참고)
RESULT
아래 결과에서 Faithfulness는 GraphRAG와 HybridRAG가 좋은 결과를 보였고 Answer Relevancy(AR)은 HybridRAG가 0.96으로 가장 높았고 이어서 VectorRAG가 뒤따랐다. Context Precision(CP)는 GraphRAG가 0.96으로 가장 높았고 HybirdRAG가 0.79로 가장 낮았다. 하지만 Context Recall(CR)에서는 VectorRAG와 HybridRAG가 1로 완벽한 점수를 보였다.
개인적 코멘트
HybridRAG은 답변이 높은 Faithfulness를 가진 것을 보아 Hallucination이 적으며 AR이 높으므로 질문에 가장 적합한 답변을 생성한다. 하지만 CP가 낮은 것을 보아 추출의 정확도 자체는 높지 않지만 CR이 높은 것을 보아 반드시 필요한 정보는 추출했다고 볼 수 있다. 종합적으로 보면 추출 과정에서 불필요한 정보들도 함께 추출되었음을 알 수 있다. 추출 과정에서의 필터링 방법을 추가한다면 다른 접근법보다 모든 방면에서 높은 성능을 보일 것으로 생각된다.