반응형

[논문 원본]

https://arxiv.org/pdf/2412.15605

 


Abstract

 

본 연구에서는 기존의 실시간 검색(RAG) 기반 시스템을 개선한 $\text{CAG (Context-Aware Generation)}$ 시스템을 제안합니다. CAG는 대규모 문서 집합을 미리 Key-Value $\text{(KV)}$ 캐시 형식으로 인코딩하여 저장하고, 이를 이용해 실시간 검색 없이 질의에 대한 답변을 생성하는 방식입니다. 이를 통해, 검색 지연을 없애고, 검색 오류를 줄이며, 시스템 복잡도를 최소화하는 장점이 있습니다. 이 방식은 특히 제한된 지식 기반에 대해 효율적이고 간소화된 대안을 제공할 수 있습니다.

Introduction

RAG$\text{(Retrieval-Augmented Generation)}$는 외부 지식 출처를 통합하여 대규모 언어 모델의 성능을 향상시킬 수 있는 강력한 접근법으로 주목받고 있다. 그러나 실시간 검색이 필요하며, 이는 검색 지연과 문서 선택 오류를 초래할 수 있다. 이에 대한 대안으로, 본 논문은 $\text{CAG (Context-Aware Generation)}$ 방법을 제안한다. CAG는 문서를 미리 로드하고 KV 캐시를 계산하여 저장함으로써, 실시간 검색을 생략하고 검색 지연을 제거한다. 이 방법은 특히 지식 기반이 제한적이고 관리 가능한 크기일 때 유용하다.

추론 중 실시간 검색 및 참조 컨텍스트 입력을 포함하여, 하단 섹션에는 KV-캐시를 미리 로드하여 추론 시 검색 단계와 참조 텍스트 입력을 제거하는 CAG 접근 방식

Methodology

CAG는 LLM의 확장된 컨텍스트 기능을 활용하여 외부 지식 출처를 사전 로드하고, 이를 KV 캐시로 인코딩하여 저장한다. CAG의 작업 흐름은 다음 세 가지 단계로 나뉜다:

 

  1. $\text{External Knowledge Preloading (외부 지식 미리 로딩)}$: 관련 문서를 LLM의 확장된 컨텍스트 윈도우에 맞게 전처리하고 KV 캐시로 인코딩하여 저장한다.
  2. $\text{Inference (추론)}$: 사전 계산된 KV 캐시와 사용자 쿼리를 함께 로드하여 추론을 수행한다. 실시간 검색이 필요 없어 검색 지연을 없애고, 문서 선택 오류를 줄인다.
  3. $\text{Cache Reset (캐시 초기화)}$: 여러 추론 세션을 지원하기 위해, KV 캐시는 효율적으로 초기화되어야 한다. 이를 통해 성능을 유지하며, 새로운 정보를 빠르게 반영할 수 있다.

 

3.1 Experimental Setup

본 실험에서는 SQuAD 1.0과 HotPotQA 두 개의 대표적인 질문 응답 데이터셋을 사용하여 성능을 평가했습니다. 실험에서는 문서 수와 참고 텍스트의 길이가 시스템 성능에 미치는 영향을 분석했습니다. 각 실험은 CAG와 두 가지 $\text{RAG 시스템(Sparse Retrieval (BM25)와 Dense Retrieval(OpenAI Indexes))}$ 간의 성능 비교를 기반으로 진행되었습니다.

사용된 모델:

  • 실험에서는 Llama 3.1 8B Instruction 모델을 기반으로 CAG와 RAG 시스템을 모두 평가했습니다. 이 모델은 최대 128k 토큰까지 처리할 수 있는 능력을 가진 대형 언어 모델로, 문서의 대용량 텍스트를 효과적으로 처리하며 성능을 발휘합니다. 실험은 Tesla V100 32GB × 8 GPUs 환경에서 수행되었습니다.

모델 작업 방식:

  • 본 시스템에서 생성된 응답은 사전 계산된 키-값 캐시 $\text{(Key-Value Cache)}$ 를 사용하여 처리됩니다. 즉, 각 데이터셋의 문서들이 KV 인코딩되어 Offline에 저장된 후, 추론 시 불러와서 실시간 검색을 하지 않고도 응답을 생성합니다.

$$CKV = KV-Encode(D)$$

위 수식에서 CKV문서 D의 키-값 캐시입니다. 이 캐시는 문서 D의 텍스트가 KV-Encode 함수에 의해 사전 계산되어 저장된 값입니다. 이후 이 값들을 사용하여 질문에 대한 답을 생성하는데, 이는 모델의 빠른 응답 생성에 기여합니다.

 

더보기

SQuAD 1.0

목표: 주어진 문서에서 질문에 대한 정확한 답을 찾는 것. (단일 문서 기반의 질문 응답 시스템을 평가하는데 사용)

구성: 각 질문은 하나의 문서에 대한 질문으로, 그 문서 내에서 답이 존재

데이터:

  • 문서: 536개의 Wikipedia 문서
  • 질문: 각 질문에 대한 단일 문장으로 이루어진 정답이 존재

특징: 문제는 일반적으로 “where”, “who”, “what”과 같은 정보에 대한 질문이 포함

더보기

HotPotQA

목표: 다중 문서에서의 추론을 요구하는 질문 응답 시스템을 평가하는 데이터셋. 주어진 질문에 대해 여러 문서에서 관련 정보를 결합해 답을 도출 (multi-hop reasoning, 다단계 추론을 필요로함)

구상: 하나의 질문에 대해 두 개 이상의 문서에서 정보를 종합해야하는 경우가 많음

데이터:

  • 문서: 약 113,000개의 질문-답 세트가 포함된 데이터셋으로, 질문마다 2개 이상의 문서가 필요

특징:

  • Multi-hop reasoining: 여러 문서에 걸쳐서 정보를 연결해 답을 유도하는 문제로, 기존의 SQuAD와는 다르게 여러 단계의 추론이 필요

 

3.2 Baseline Systems

  • Sparse Retrieval System (BM25): BM25는 전통적인 텍스트 검색 알고리즘으로, 질의와 문서 간의 단어 빈도와 문서 길이를 기반으로 순위를 매깁니다. 질의와 문서 간의 일치도를 계산하고, 이를 바탕으로 적합한 문서를 검색합니다. 질의 $q$에 대해 BM25는 다음과 같이 문서 $D$를 평가합니다.

$$ \text{BM25}(q, D) = \sum_{t \in q} \text{IDF}(t) \cdot \frac{f(t, D) \cdot (k_1 + 1)}{f(t, D) + k_1 \cdot \left(1 - b + b \cdot \frac{|D|}{avgDL}\right)}$$

여기서 $f(t, D)$는 문서 $D$에서 용어 $t$의 빈도, $|D|$는 문서의 길이, $avgDL$은 문서들의 평균 길이, $k_1$과 $b$는 하이퍼파라미터입니다.

  • Dense Retrieval System $\text{(OpenAI Indexes)}$: OpenAI Indexes는 dense embedding을 사용하여 문서와 질의를 공유된 의미 공간$\text{(shared semantic space)}$에서 처리합니다. Dense retrieval은 문서와 질의 간의 의미적 유사성을 계산하여 관련 문서를 찾습니다. 이는 다음과 같은 방식으로 계산됩니다:

$$\text{similarity}(q, D) = \mathbf{q}^T \mathbf{D}$$

여기서 $q$와 $D$는 각각 질의와 문서의 임베딩 벡터입니다. 이 벡터들은 고차원 공간에서의 유사성을 기반으로 계산되며, 단어의 의미적 관계를 반영합니다.

 

3.3 Results

Dataset Size System Top-1 BERTScore Top-3 BERTScore Top-5 BERTScore Top-10 BERTScore
HotPotQA Small Sparse RAG 0.0673 0.0673 0.7549 0.7461
  Dense RAG 0.7079 0.7509 0.7414 0.7516
  CAG (Ours) 0.7759 0.7999 0.8022 0.8191
SQuAD Small Sparse RAG 0.7469 0.7999 0.8022 0.8191
  Dense RAG 0.6445 0.7304 0.7583 0.8035
  CAG (Ours) 0.8265 0.8424 0.8491 0.8605
           

표 설명: 위 표는 BERTScore를 기반으로 한 CAG와 RAG 시스템의 성능 비교를 나타냅니다. CAG 시스템은 대부분의 실험에서 상위 점수를 기록하며, 특히 Top-1 BERTScore에서 월등히 높은 성과를 보였습니다.

 

3.4 Generation Time (생성 시간)

Dataset Size System Generation Time (s)
HotPotQA Small CAG 0.85292
  w/o CAG 9.24734
HotPotQA Medium CAG 1.66132
  w/o CAG 28.81642
     

표 설명: CAG 시스템은 생성 시간 면에서도 크게 향상된 결과를 보여줍니다. 기존의 RAG 시스템에 비해 생성 시간이 현저히 빠름을 확인할 수 있습니다.

 

Conclusion

긴 컨텍스트를 처리할 수 있는 LLM의 발전을 바탕으로, CAG는 기존 RAG 시스템을 대체할 수 있는 가능성을 제시한다. 특히, 지식 기반이 상대적으로 제한적이고 관리 가능한 경우 CAG가 효율적이고 간단한 해결책을 제공할 수 있다. 또한, 향후 LLM의 발전에 따라, CAG는 더 많은 복잡한 작업에도 적용될 수 있을 것이다. 하이브리드 접근법으로는, 사전 로딩된 컨텍스트와 선택적인 검색을 결합하여 유연성을 높일 수 있다.


생각한 한계점 (예상)

  • 실시간 문서 처리 불가능: CAG 방식은 문서를 미리 KV 캐시로 로드하여 사용하므로, 새로운 문서를 실시간으로 처리하고 반영하는 데 한계가 있을 수 있다. 실시간 문서 업로드 후 즉시 질문을 처리하는 것은 불가능하다.
  • 메모리 한계: 문서가 많을 경우, 모든 정보를 RAM에 저장해야 하므로 메모리의 용량이 제한적일 수 있다. 메모리 용량을 초과할 경우, 캐시를 초기화하거나 일부 데이터를 제외하는 방법을 사용할 수 있지만, 이는 실시간 반영의 유연성을 떨어뜨릴 수 있다.
  • 스케일링 문제: CAG가 효과적으로 작동하기 위해서는 전체 문서가 모델의 컨텍스트 윈도우에 맞는 크기로 전처리되어야 한다. 하지만 대규모 데이터셋에서는 이 방법이 비효율적일 수 있다. 특히 문서가 방대할 경우, 모든 데이터를 사전 로딩하는 데 시간이 많이 소요될 수 있다.
반응형

+ Recent posts