컨텍스트 창 100만 토큰 시대, RAG는 언제 이기고 언제 지는가

검색 증강 생성(retrieval-augmented generation, RAG)은 질문에 필요한 문서만 골라 모델에 넣는 방식이고, 긴 컨텍스트는 문서 전체를 통째로 밀어 넣는 방식이다. 컨텍스트 창이 100만 토큰까지 커져도 모델은 그 창을 끝까지 읽어내지 못하며, 그런데도 RAG가 확실히 밀리는 코퍼스는 따로 있다.

컨텍스트 창이 커질 때마다 도는 말

두 패널 비교 인포그래픽. 왼쪽 패널은 문서 더미 전체가 깔때기를 지나 모델 칩으로 들어가는 통째로 넣기(배지 100만 토큰), 오른쪽 패널은 더미에서 소수 문서만 뽑혀 들어가는 골라서 넣기(배지 16K만). 두 패널 사이 점선 경계에 이정표와 "조건이 가른다" 라벨

컨텍스트 창이 100만 토큰까지 늘었다. 새 모델이 나올 때마다 이 숫자가 갱신되고, 그때마다 업계에는 같은 말이 돈다. 이제 검색 같은 건 필요 없고 문서를 통째로 밀어 넣으면 된다는 말이다. 무엇을 넣을지 고르는 파이프라인은 창이 좁던 시절의 임시방편이었다는 이야기다.

이 말은 하나를 전제한다. 창에 들어가면 모델이 그걸 읽는다는 전제다. 창의 크기는 사양서에 적힌 숫자로 확인되지만, 그 안을 실제로 읽어내는 능력은 따로 재야 한다. 둘이 같다는 것은 아무도 증명한 적이 없다. 그런데 업계의 말은 둘을 늘 붙여서 쓴다.

그래서 이 글은 논문 세 편의 실측으로 그 전제를 쪼갠다. 긴 컨텍스트가 어디서부터 무너지는지(NoLiMa), 많이 넣는 것이 왜 최선이 아닌지(OP-RAG), 그럼에도 검색을 걷어내도 되는 코퍼스는 어떤 모양인지(CAG)를 차례로 확인한다. OP-RAG와 CAG의 수치는 그 기법을 제안한 연구팀의 자가평가다. NoLiMa는 성격이 조금 다르다. 기법이 아니라 시험지를 내놓은 쪽이 남의 모델을 채점한 것이다. 그 성격을 매번 같이 적어 둔다.

컨텍스트 창이 크다고 다 읽는 건 아니다

창을 읽어내는 능력을 재는 표준 시험은 이미 있다. 건초더미에서 바늘 찾기(needle-in-a-haystack, NIAH)다. 긴 문서 어딘가에 한 문장을 심어 두고 그 문장이 담은 사실을 모델에게 묻는다. 심은 위치와 문서 길이를 바꿔 가며 정답률을 재면 창의 어느 구간이 약한지 지도가 나온다.

문제는 이 시험이 너무 쉽다는 데 있다. 심어 둔 문장과 질문이 대개 같은 단어를 공유한다. 모델은 문맥을 이해하지 않고 그 단어가 있는 자리만 찾아도 정답을 맞힌다.

질문과 바늘 문장이 같은 고유명사를 품고 있으면, 모델은 그 단어가 있는 자리 하나만 짚어도 답을 만든다. 이때 재는 능력은 긴 문맥의 이해보다 문자열 대조에 가깝다. NoLiMa 저자들이 지적하는 지점이 여기다.

NoLiMa는 이 겹침을 걷어낸 벤치마크다. 바늘 문장과 질문이 단어를 공유하지 않도록 만들어, 모델이 뜻으로 연결해야만 답에 닿게 했다. 문서도 모델도 그대로 두고 시험지의 난도만 바꾼 셈이다.

NoLiMa — 32K에서 이미 절반 아래로 떨어진다

결과는 뚜렷하게 갈렸다. 1K 이하의 짧은 문맥에서 99.3점을 받은 GPT-4o가 32K에서는 69.7점으로 내려앉는다. 32K에서 기준선의 절반 이상을 지킨 모델은 13개 중 둘뿐이었다. GPT-4o와 Gemini 1.5 Pro다. 나머지 11개는 절반 아래로 내려갔고, Command R+는 90.9에서 7.4로, Mistral Large 2는 87.9에서 18.8로 떨어진다. 이 점수들은 기법을 파는 쪽이 아니라 시험지를 만든 저자들이 잰 것이고, 채점은 모델 내부를 볼 수 없는 블랙박스 상태에서 이뤄졌다.

13개 모델의 컨텍스트 길이별 NoLiMa 점수 히트맵
그림 1. NoLiMa Table 3 — 행=모델(기준선 내림차순), 열=문맥 길이. 32K 열에서 기준선의 절반 미만인 모델이 11개다.

그림 1를 세로로 훑으면 감쇠가 특정 모델의 사정이 아니라는 게 보인다. 기준선 점수가 높든 낮든 오른쪽으로 갈수록 색이 빠진다. 논문은 여기서 유효 길이(effective length)라는 지표를 쓴다. GPT-4o의 유효 길이는 8K인데, 같은 모델이 광고하는 창은 128K다.

추론에 특화된 모델은 어떨까. 논문은 최난도 10문항으로 추린 NoLiMa-Hard도 함께 잰다. GPT-o1은 99.9에서 시작해 4K 92.0, 8K 78.0, 16K 60.1, 32K 31.1로 내려가고, DeepSeek R1-Distill-Llama-70B는 99.9에서 32K 20.7까지 떨어진다. 추론 단계를 더 밟는 모델도 32K에서 기준선의 절반을 지키지 못한다. 창이 크다는 것과 창을 읽어낸다는 것은 역시 다른 능력이다.

많이 넣을수록 좋다는 건 틀렸다 — OP-RAG의 역U자

두 번째 실측은 반대편을 잰다. 창을 다 읽지 못한다면 검색은 남는데, 그다음 질문은 얼마나 많이 골라 넣느냐다. 조각을 많이 넣을수록 정답에 필요한 문장이 창 안에 들어올 확률은 올라간다. 그러니 예산이 허락하는 만큼 넣는 것이 상식처럼 보인다.

OP-RAG는 검색해 온 조각을 관련도 순서가 아니라 원문에 나온 순서대로 배치한다. 바꾼 것은 배치 규칙 하나뿐이다. 그 하나로 EN.QA F1이 38.40에서 44.43으로 올랐다(둘 다 128개 조각, 약 16K 토큰). EN.QA는 긴 문서를 읽고 질문에 답하는 영어 과제이고, F1은 모델이 낸 답이 정답과 얼마나 겹치는지를 재는 점수다. 관련도 순으로 줄을 세우면 문서의 앞뒤 맥락이 흐트러진다. 원문 순서를 지키면 그 손실이 사라진다.

로그 x축 위 검색 토큰 16K·24K·48K 세 점을 잇는 상승선과, 오른쪽 117K 자리에 뚝 떨어져 찍힌 전량 투입 별도 표식(34.26)
그림 2. OP-RAG의 EN.QA F1 — 16K/24K/48K 확정점 3개와 117K 전량 투입(34.26, RAG 없음 — 별도 계열). 중간 구간 곡선은 원문에 수치가 없어 찍지 않았다.

그림 2의 모양이 이 절의 핵심이다. 검색 토큰을 늘리면 F1이 16K에서 44.43, 24K에서 45.45, 48K에서 47.25까지 오른다. 그리고 그 뒤로 꺾인다. 같은 생성 모델(Llama3.1-70B)에 117K 전량을 그냥 넣으면 34.26이다.

정점이 아니라 가장 작은 조건만 봐도 결론은 같다. 16K 검색 토큰으로 44.43인데 117K 전량은 34.26이다. 토큰을 약 7분의 1만 쓰고도 앞선다(117K를 16K로 나눈 값이며 논문에 그렇게 적힌 표현은 아니다 — 글쓴이 종합). 넣을 수 있다는 것과 넣는 것이 이득이라는 것은 별개다. 이 수치들도 OP-RAG 연구팀의 자가평가다.

RAG가 정말 지는 곳 — 바운디드 코퍼스와 CAG

여기까지만 보면 검색이 늘 이기는 것 같지만, 그렇지 않은 영역이 분명히 있다. CAG(cache-augmented generation)는 검색 단계를 아예 없앤다. 대상 문서가 창에 들어갈 만큼 작고 잘 안 바뀐다면, 전체를 한 번 미리 넣어 키-값(KV) 캐시를 만들어 두고 질문마다 그 캐시를 재사용한다. 키-값 캐시는 한 번 처리한 문맥의 중간 계산을 저장해 둔 것이라, 같은 문맥을 다시 물어볼 때 그 계산을 처음부터 되풀이하지 않아도 된다. 검색기도, 순위 매기기도, 조각 나누기도 필요 없다. 대신 코퍼스의 경계가 미리 정해져 있어야 한다.

코퍼스 규모별 CAG와 최고 성능 RAG의 BERTScore 대조
그림 3. HotPotQA 분할별 BERTScore(CAG 논문 v2) — small·medium에서는 CAG가 앞서지만 large에서 sparse RAG에 역전당한다.

그림 3가 그 경계를 그대로 보여 준다. HotPotQA에서 CAG는 small 분할 0.7951, medium 0.7821로 검색 방식들을 앞선다. 점수는 BERTScore다. 생성한 답과 정답이 뜻으로 얼마나 가까운지를 재는 지표라고 보면 된다. 그런데 가장 큰 분할에서는 CAG 0.7407이 sparse 검색 top-5의 0.7535에 뒤진다.

여기서 sparse 검색은 단어가 겹치는 정도로 문서를 고르는 방식(BM25 계열)을 말한다. 뜻을 벡터로 견주는 dense 검색과 대비되는 축이다. 그 오래된 방식에 뒤집힌 large 분할이 논문의 최대 실험이고, 규모는 64문서 85K 토큰이다. 100만 토큰 창에 한참 못 미치는 지점에서 우위가 사라진다.

이 수치는 개정판(v2) 기준이다. 초판(v1)에서는 같은 large 분할에서도 CAG가 앞섰다. 원저자가 최신판에서 스스로 경계선을 좁힌 셈이니, 초판 수치를 인용한 글을 볼 때는 버전을 먼저 확인하는 편이 좋다. 함께 자주 인용되는 "약 40배 빠르다"도 비교 대상을 봐야 한다. 그건 캐시 없이 매번 전체를 다시 계산하는 방식과의 비교이지 RAG와의 비교가 아니다. sparse 검색 top-3의 생성 시간(0.67~0.74초)은 CAG보다도 짧다.

CAG의 이득은 절대 속도 1위가 아니다.

검색 파이프라인을 통째로 지우고도 전체 문맥을 그대로 유지한다는 점이 이득이다. 그리고 그 이득이 살아 있는 구간은 논문 자신의 실험 안에서 이미 닫히기 시작한다. 이 수치들 역시 CAG를 제안한 연구팀의 자가평가다.

비용도 같은 방향을 가리킨다

정확도만 놓고 보면 판단이 애매한 구간이 남는데, 비용을 얹으면 방향이 분명해진다. 창에 넣은 토큰은 첫 응답이 나오기 전에 한 번씩 전부 처리된다. 이 단계를 프리필(prefill)이라고 부른다. 100만 토큰을 밀어 넣었다면 100만 토큰어치 프리필 값이 질문마다 붙는다는 뜻이다. 아래는 2026년 8월 기준 공식 단가다.

모델 입력 단가/100만 토큰 100만 토큰 프리필 1회 캐시 히트 시
Claude Opus 5 $5 $5.00 $0.50 (0.1배)
Claude Sonnet 5 $2 $2.00 $0.20 (0.1배)
Gemini 2.5 Pro $1.25 (20만 이하) / $2.50 (초과) $2.50 $0.25 (0.1배)
GPT-5.6-Sol $5.00 $5.00 $0.50 (0.1배)
GPT-4.1 $2.00 $2.00 $0.50 (0.25배)

100만 토큰을 한 번 밀어 넣는 데 회당 2~5달러가 들고, 캐시가 맞으면 0.2~0.5달러로 내려간다(단가에 100만을 곱한 산술 — 글쓴이 종합). 네 배(GPT-4.1)에서 열 배(나머지 네 모델)에 이르는 이 차이는 캐시를 다시 쓰느냐에서 갈린다. 같은 문서를 계속 물어보며 캐시를 재사용하면 싼 쪽이고, 질문마다 새로 밀어 넣으면 비싼 쪽이다. 프롬프트 캐싱은 CAG 같은 접근의 경제성을 받치는 장치이지 긴 컨텍스트 자체를 싸게 만드는 장치가 아니다.

Gemini는 캐시 유지에 별도 보관료가 붙는다(100만 토큰 기준 시간당 4.50달러). 상주 캐시를 계획한다면 프리필 단가만 보지 말고 유지 시간을 곱해 볼 것. Anthropic은 캐시 쓰기가 5분 유지 1.25배, 1시간 유지 2배다.

비용 다음으로 따라오는 질문은 얼마나 기다리느냐다. 첫 토큰까지 걸리는 시간(time to first token, TTFT)의 절대값은 공식 문서에 수치가 없어 단정하지 않는다. 지연 축에서 댈 수 있는 근거는 앞 절의 CAG 실측(85K 규모)뿐이고, 그 값을 100만 토큰으로 늘려 잡는 외삽은 하지 않는다.

그래서 RAG를 걷어내도 되는 조건

세 편의 실측을 한 줄씩 놓으면 이렇다. 창이 커져도 모델이 다 읽지는 못하고(NoLiMa), 골라 넣은 소수 토큰이 전량 투입을 이기며(OP-RAG), 그럼에도 작고 고정된 코퍼스에서는 검색을 지워도 된다(CAG). 실무에서 먼저 물을 것은 세 번째가 언제 성립하느냐다. 질문 세 개로 나누면 이렇게 된다.

조건 확인 질문 근거
경계가 뚜렷한가 답에 필요한 문서 목록을 미리 적을 수 있나 캐시를 미리 만들려면 대상이 고정돼야 한다
창보다 충분히 작은가 전체가 수만 토큰 규모인가 85K 분할에서 이미 sparse 검색에 역전당했다
갱신이 드문가 문서가 바뀌는 주기가 질문 주기보다 긴가 바뀔 때마다 캐시를 다시 만들면 비용 이점이 사라진다

세 칸 모두 예라면 검색기를 두는 대신 캐시 프리로드를 검토할 만하다. 하나라도 아니오라면 RAG가 남는 이유는 두 가지로 좁혀진다. 긴 문맥에서 생기는 성능 열화를 피하는 것, 그리고 토큰 예산을 아끼는 것이다. 검색기를 둘지 말지는 창의 크기가 아니라 코퍼스의 모양이 정한다.

더 읽기

  • NoLiMa: Long-Context Evaluation Beyond Literal Matching (ICML 2025) — https://arxiv.org/abs/2502.05167
  • In Defense of RAG in the Era of Long-Context Language Models (OP-RAG, NVIDIA) — https://arxiv.org/abs/2409.01666
  • Don’t Do RAG: When Cache-Augmented Generation is All You Need (WWW Companion ’25) — https://arxiv.org/abs/2412.15605