전통적인 검색 증강 생성(RAG)은 최신 데이터를 LLM에 주입하는 표준 기술로 자리 잡았지만, **“수개월 동안 전혀 변하지 않는 정적 데이터(사내 규정, API 문서, 고정 지침)조차 매 쿼리마다 벡터 DB 검색과 임베딩 연산을 반복해야 하는 비효율”**이 존재합니다.
**CAG (Cache-Augmented Generation, 캐시 증강 생성)**는 모델이 읽은 토큰을 내부 KV (Key-Value) 캐시 메모리에 영구 보관해 두고 즉각 재사용하는 방식으로, RAG와 결합했을 때 추론 속도를 2~4배 향상시키고 토큰 비용을 획기적으로 절감할 수 있습니다.
Sources
1. RAG + CAG 하이브리드 아키텍처
flowchart TD
classDef queryNode fill:#c5dcef,stroke:#2b6cb0,stroke-width:1.5px,color:#333;
classDef routerNode fill:#e0c8ef,stroke:#6b46c1,stroke-width:1.5px,color:#333;
classDef coldNode fill:#fde8c0,stroke:#d69e2e,stroke-width:1.5px,color:#333;
classDef hotNode fill:#ffc8c4,stroke:#e53e3e,stroke-width:1.5px,color:#333;
classDef outNode fill:#c0ecd3,stroke:#38a169,stroke-width:1.5px,color:#333;
Query["사용자 쿼리"] --> Router{"지식 분류 라우터"}
Router -->|"정적 지식 (Cold Data)"| CAG["CAG: KV 캐시 메모리 적재
(LMCache / CacheBlend)"]
Router -->|"동적 지식 (Hot Data)"| RAG["RAG: 실시간 벡터 DB 검색
(최신 데이터 추출)"]
CAG --> Blend["컨텍스트 결합 및 추론"]
RAG --> Blend
Blend --> Output["2~4배 빠른 고품질 답변 생성"]
class Query queryNode;
class Router routerNode;
class CAG coldNode;
class RAG hotNode;
class Blend,Output outNode;2. 2계층 지식 분할 전략
- Cold Data (정적 지식 계층 - CAG):
- 사내 규정집, 제품 카탈로그, 프레임워크 공식 문서 등 거의 바뀌지 않는 데이터는 모델의 KV 캐시(Prompt Cache)에 1회 적재하여 영구 재사용합니다.
- Hot Data (동적 지식 계층 - RAG):
- 당일 뉴스, 실시간 주가, 최근 대화 세션 로그 등 실시간 변동 데이터만 벡터 DB 검색을 통해 동적으로 가져옵니다.
3. Prefix Caching의 맹점과 LMCache의 해결책
- 기존 Prompt Caching의 한계:
- 상용 API(OpenAI, Anthropic)의 프롬프트 캐싱은 바이트 단위의 정확한 접두사(Exact Prefix) 일치에만 작동합니다.
- 두 개 이상의 캐시된 문서를 결합하거나 순서가 바뀌면 즉시 캐시 미스(Cache Miss)가 발생하여 캐시 활용률이 급감합니다.
- CacheBlend (LMCache)의 혁신:
- 트랜스포머의 어텐션은 대부분 문서 내부 로컬 토큰끼리 참조하고, 문서 경계를 넘는 어텐션은 극소수라는 점에 착안.
- CacheBlend는 문서 경계의 극소수 토큰만 빠르게 재계산하고 개별 캐시된 KV 블록들을 동적으로 병합하여, 문서 결합 순서와 무관하게 2~4배 빠른 속도로 다중 문서를 쿼리할 수 있도록 지원합니다.