AI VIDEO BRIEFING
확장 캐시 증강 생성(CAG): 모든 문서가 중요할 때의 검색 전략 비교
오비폴드의 AI 책임자가 모든 문서가 답에 필요하고 자주 교체되는 까다로운 상황에서 단순 RAG, GraphRAG, 그리고 병렬 캐시를 쓰는 확장 CAG를 비교한다.

핵심 메시지
쉽게 이해하기
오비폴드의 AI 부문 책임자 루이스 로메로 세비야는 '모든 맥락이 중요할 때'의 지식 표현 문제를 다룬다. 그가 든 구체적 시나리오는 까다롭다. 많은 문서가 모두 하나의 사건을 나타내고, 컬렉션의 모든 문서가 사용자의 질문에 답하는 데 필요하며, 게다가 문서가 매우 빠르게 낡아 새 정보로 통째로 교체된다는 것이다.
가장 단순한 출발점은 평범한 RAG다. 임베딩 모델로 문서를 벡터로 바꿔 벡터 데이터베이스에 저장하고, 질문도 벡터로 만들어 유사도 임계값 안의 벡터를 검색해 LLM에 넘긴다. 벡터 DB 삽입이 비교적 빨라 컬렉션이 낡으면 새것으로 교체하기 좋다. 그러나 이 시나리오에서는 '모든' 문서가 답에 필요한데 컬렉션 전체를 LLM에 넘길 수는 없다는 근본적 한계가 남는다.
더 정교한 접근은 GraphRAG다. 모든 문서가 글로벌 질문에 관련된다면 세부 정보 사이에 연결과 관계가 있을 것이므로, LLM이 모든 문서를 읽어 핵심 엔티티와 관계를 추출하고 지식 그래프를 구성한다. 질문이 오면 그래프를 탐색해 컬렉션 전체에 걸친 완전한 답을 종합한다. 문서가 자주 바뀌지 않는다면 훌륭하지만, 데이터가 깊게 얽혀 있으면서 자주 교체되는 이 시나리오에서는 교체 때마다 그래프를 재계산하는 비용과 시간이 너무 크다.
발표자는 더 단순한 발상으로 되돌아간다. 어차피 GraphRAG도 각 문서를 LLM에 통과시켜야 한다면, 그냥 모든 문서를 컨텍스트에 넣으면 어떨까? 이것이 캐시 증강 생성(CAG)으로, 큰 컨텍스트 창을 가진 모델에 문서를 적재하고 모델의 KV 행렬을 저장해 캐시한다. 문제는 컨텍스트 창이 유한하고, 너무 많이 채우면 답변 품질이 떨어진다는 점이다.
그래서 제안하는 해법이 '확장 CAG'다. 여러 CAG를 병렬로 두고 문서를 여러 컨텍스트 버킷에 분산한다. 각 캐시는 자기 내용에 대한 질문에 답할 수 있고, 더 똑똑한 감독 모델이 각 버킷을 심문해 답을 종합한다. 문서는 도메인별로 묶기보다 특정 순서 없이 분산하되 버킷당 문서 수를 균형 있게 둔다(관계가 촘촘하면 감독 모델이 무관해 보이는 도메인을 무시하기 때문). 캐시를 병렬로 적재할 수 있어 지식 구축이 GraphRAG보다 훨씬 빠르고 단순 RAG보다 정확하다. KV 캐시 비용이 크다는 우려에는 각 캐시의 수명을 최적화해 비용을 줄일 수 있다고 답한다.
주요 인사이트
- '모든 문서가 답에 필요하다'는 조건은 상위 k개만 뽑는 단순 RAG의 전제를 깨뜨린다. 검색 전략은 데이터의 성격에서 출발해야 한다.
- 데이터 교체 빈도가 아키텍처를 좌우한다. 자주 바뀌는 데이터에는 매번 재계산이 필요한 지식 그래프가 부적합하다.
- 컨텍스트 창은 무한한 자원이 아니다. 너무 채우면 오히려 답변 품질이 떨어지므로 '많이 넣기'가 항상 답은 아니다.
- 버킷을 도메인으로 나누면 감독 모델이 무관해 보이는 버킷을 건너뛰어 답을 놓친다. 순서 없이 균형 있게 분산하는 편이 촘촘히 얽힌 데이터에 유리하다.
- 만능 검색 전략은 없다. 연산·비용·속도의 트레이드오프를 이해하고 문제에 맞춰 골라야 한다.
자주 묻는 질문
어떤 상황에서 단순 RAG가 부족한가요?
모든 문서가 하나의 글로벌 질문에 모두 관련되는 경우입니다. 단순 RAG는 유사도 임계값 안의 일부 벡터만 검색하는데, 컬렉션 전체가 답에 필요하면 전부를 LLM에 넘길 수 없어 한계가 생깁니다.
GraphRAG의 약점은 무엇인가요?
LLM으로 모든 문서를 읽어 엔티티와 관계로 지식 그래프를 구성하는데, 데이터가 자주 교체되면 매번 그래프를 다시 계산해야 합니다. 이 재계산은 연산 비용이 매우 크고 시간이 오래 걸립니다.
확장 캐시 증강 생성(CAG)은 어떻게 동작하나요?
여러 CAG를 병렬로 두고 문서를 여러 컨텍스트 버킷에 분산합니다. 각 캐시는 자기 내용에 답하고, 더 똑똑한 감독 모델이 각 버킷에 후속 질문을 던져 답을 종합합니다. 캐시를 병렬로 적재하므로 GraphRAG보다 빠르고 단순 RAG보다 정확합니다.
문서를 버킷에 분산할 때 도메인별로 나누면 안 되는 이유는?
문서 간 관계가 촘촘하면 감독 모델이 처음 보기에 무관해 보이는 도메인을 무시하는 경향이 있기 때문입니다. 그래서 특정 순서 없이 분산하되 버킷당 문서 수만 균형 있게 맞춥니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗