Don't Do RAG: When Cache-Augmented Generation is All You Need for Knowledge Tasks

대규모 언어 모델(Large Language Model, LLM)의 발전은 자연어 처리(NLP) 작업에서 혁신적인 성과를 가져왔습니다.

 

특히, 검색-보강 생성(Retrieval-Augmented Generation, RAG)은 외부 지식 기반을 활용하여 모델의 문맥 이해력을 크게 향상시키는 방법으로 주목받아 왔습니다.

 

RAG는 특정 작업에서 외부 데이터 소스를 동적으로 검색하고 이를 기반으로 문맥에 적합한 응답을 생성하는 시스템입니다.

 

이는 개방형 질문 응답(Open-Domain Question Answering)과 같은 지식 집약적 작업에서 탁월한 성능을 발휘해 왔습니다.

 

하지만 RAG에는 다음과 같은 한계가 있습니다:

  • 실시간 검색은 시스템의 지연(latency)을 초래하여 사용자 경험을 저하시킬 수 있습니다.
  • 검색 단계에서 부정확하거나 관련 없는 문서를 선택하면 모델의 응답 품질이 크게 저하됩니다.
  • 검색 및 생성 모듈을 통합해야 하는 시스템 구조는 복잡성을 증가시키며, 이를 유지하고 최적화하는 데 추가적인 노력이 필요합니다.

CAG(Cache-Augmented Generation, 캐시-보강 생성) 연구는 이러한 RAG의 단점을 극복하고자 제안한 방법으로,

 

1) 대규모 언어 모델의 확장된 컨텍스트 윈도우를 활용하여 외부 데이터를 사전에 로드하고,

 

2) 키-값(Key-Value, KV) 캐시를 생성하여 실시간 검색 단계를 완전히 제거합니다.

 

이를 통해 시스템의 지연을 최소화하고, 검색 오류를 방지하며, 구조적 단순성을 확보할 수 있습니다.

 

특히, 장기 컨텍스트(Long Context)를 처리할 수 있는 최신 LLM의 도입은 CAG의 구현 가능성을 높였습니다.

 

최신 모델은 최대 수십만 개의 토큰을 처리할 수 있어 대규모 데이터 컬렉션을 한 번에 모델에 제공할 수 있습니다.

 

이를 통해 RAG가 필요했던 여러 작업에서 CAG가 동일하거나 더 나은 성능을 제공할 수 있음을 실험적으로 입증했습니다.

 

CAG의 핵심 기여는 다음 세 가지로 요약됩니다:

  • 검색 없는 장기 컨텍스트 패러다임: 모든 문서를 사전에 로드하고 KV 캐시를 활용하여 실시간 검색을 완전히 제거.
  • 성능 비교 연구: RAG와 CAG의 성능을 다양한 데이터셋에서 비교하여, CAG가 효율성과 정확성에서 우수함을 입증.
  • 실용적 통찰 제공: CAG의 효율적 활용 방안을 제시하며, 특정 응용 분야에서 검색 없는 방식이 가지는 이점을 강조.

이 연구는 단순히 새로운 기법을 제안하는 데 그치지 않고, RAG와의 비교를 통해 CAG가 제공하는 현실적이고 실질적인 이점을 명확히 제시합니다.

 

이는 데이터 크기가 제한적이고 관리 가능한 지식 기반을 사용하는 작업에서 특히 유용합니다.

 

 

 

 

CAG는 RAG와 달리, 실시간 검색 없이 모델의 확장된 컨텍스트 윈도우를 활용하여 사전에 로드된 정보를 기반으로 응답을 생성합니다. 이를 위해 세 가지 주요 구성 요소가 필요합니다:

  • 확장된 컨텍스트 윈도우(Long Context Window): 최신 대규모 언어 모델(Large Language Model, LLM)은 최대 128,000 토큰까지 처리할 수 있는 확장된 컨텍스트 윈도우를 제공합니다. 이를 통해 대규모 문서 컬렉션을 모델의 입력으로 제공할 수 있습니다.
  • 사전 로딩된 데이터(Preloaded Data): 모델이 필요한 모든 정보를 사전에 로드하고, 이를 기반으로 추론을 수행합니다. 이 과정에서 데이터의 크기와 품질이 모델 성능에 직접적으로 영향을 미칩니다.
  • 키-값 캐시(Key-Value Cache): 모델의 추론 상태를 사전에 계산하고 저장하여, 동일한 데이터를 반복적으로 처리하지 않아도 되도록 최적화합니다. 이는 시스템의 효율성을 크게 향상시키는 핵심 기술입니다.

 

 

 

 

 

지식 사전 로딩(Preloading External Knowledge)

CAG의 첫 번째 단계는 관련 지식을 사전에 로드하는 것입니다. 이 과정은 다음과 같이 이루어집니다:

  1. 데이터 수집 및 전처리: 작업에 필요한 문서(𝒟 = {𝑑₁, 𝑑₂, …})를 수집하고, 문서의 크기를 모델의 컨텍스트 윈도우에 맞게 조정합니다. 이 과정에서 중복 제거, 불필요한 정보 삭제, 문서 압축 등의 전처리 작업이 수행됩니다.
  2. 모델 입력 구성: 사전 로딩된 문서와 사용자 질의(𝒬)를 통합하여 모델의 입력으로 사용됩니다. 입력 형식은 문서와 질의를 결합한 형태로, 다음과 같이 표현할 수 있습니다: 𝒫 = Concat(𝒟, 𝒬)
  3. 효율적인 데이터 관리: 데이터 크기를 줄이기 위해 필요한 정보만 선별적으로 포함합니다. 예를 들어, 특정 작업에 필요한 도메인 지식만 로드하여 메모리 사용량을 최적화합니다.

KV 캐시(Key-Value Cache) 생성

사전 로드한 지식을 바탕으로 KV 캐시를 생성합니다. KV 캐시는 CAG의 핵심 구성 요소로, 모델의 추론 효율성을 크게 향상시킵니다. 캐시를 생성하고 저장하는 방법은 다음과 같이 이뤄집니다:

  1. KV 캐시 생성: 문서(𝒟)를 모델에 입력하여 사전 계산된 키-값 쌍(CKV)을 생성합니다: CKV = KV-Encode(𝒟). (KV-Encode는 모델의 내부 상태를 저장하는 함수)
  2. KV 캐시 저장: 생성된 KV 캐시는 디스크나 메모리에 저장됩니다. 이는 이후 추론 단계에서 바로 로드되어 사용됩니다.

이렇게 캐시를 생성 및 저장하여 사용하는 경우, 동일한 문서를 여러 번 처리할 필요가 없어 계산 자원을 절약할 수 있습니다. 이를 통해 추론 시간이 단축되어 사용자 경험 또한 개선할 수 있습니다.

CAG의 추론(Inference) 과정

CAG의 추론 단계는 사전 계산된 KV 캐시와 사용자의 질의를 결합하여 응답을 생성합니다.

 

먼저, 사용자 질의(𝒬)와 KV 캐시(CKV)를 결합하여 모델에 입력합니다.

 

모델이 생성한 응답 ℛ은 다음과 같이 표현할 수 있습니다: ℛ = M(𝒬 | CKV).

 

이 때 KV 캐시가 포함된 입력은 모델의 컨텍스트 윈도우에 로드되어 모델은 사전 로딩된 문서와 사용자 질의를 통합적으로 이해하여 높은 품질의 응답을 생성합니다.

 

또한, 별도의 검색 단계를 거치지 않아 RAG 대비 더욱 빠른 답변 생성이 가능합니다.

 

하지만, 여러 번의 추론이 진행됨에 따라 캐시는 점점 커지므로, 이를 효율적으로 관리하기 위해 캐시 초기화 단계가 필요합니다.

 

즉, 새로운 토큰들(t1,t2,...,tk)이 계속적으로 KV 캐시에 추가되어 KV 캐시 크기가 증가할 때, 캐시를 초기화하거나, 불필요한 토큰을 제거하여 캐시 크기를 줄이는 작업이 필요합니다.

 

 

 

 

 

속도 차이가 압도적인데?

 

 

https://discuss.pytorch.kr/t/cag-cache-augmented-generation-llm-long-context-rag/5792

 

CAG(Cache-Augmented Generation): LLM의 Long Context를 활용한 RAG 대체 기법에 대한 연구

CAG 연구 소개 대규모 언어 모델(Large Language Model, LLM)의 발전은 자연어 처리(NLP) 작업에서 혁신적인 성과를 가져왔습니다. 특히, 검색-보강 생성(Retrieval-Augmented Generation, RAG)은 외부 지식 기반을 활

discuss.pytorch.kr

 

https://arxiv.org/abs/2412.15605?utm_source=pytorchkr&ref=pytorchkr

 

Don't Do RAG: When Cache-Augmented Generation is All You Need for Knowledge Tasks

Retrieval-augmented generation (RAG) has gained traction as a powerful approach for enhancing language models by integrating external knowledge sources. However, RAG introduces challenges such as retrieval latency, potential errors in document selection, a

arxiv.org

 

https://medium.com/@sahin.samia/cache-augmented-generation-a-faster-simpler-alternative-to-rag-for-ai-2d102af395b2

 

Cache-Augmented Generation: A Faster, Simpler Alternative to RAG for AI

Introduction

medium.com

 

구현 예시?

 

https://medium.com/@ronantech/cache-augmented-generation-cag-in-llms-a-step-by-step-tutorial-6ac35d415eec

 

Cache-Augmented Generation (CAG) in LLMs: A Step-by-Step Tutorial

How to build a CAG in Python

medium.com

 

 

TAGS.

Comments