
Context Rot: 입력 토큰 증가가 LLM 성능에 미치는 영향
요약
LLM의 컨텍스트 윈도우가 확장됨에 따라 성능이 유지될 것이라는 일반적인 가정과 달리, 입력 토큰 증가가 모델 성능에 미치는 부정적 영향을 분석합니다. 기존 NIAH 벤치마크의 한계를 지적하며, 의미적 매칭과 복잡한 작업 환경에서의 성능 저하 현상을 입증합니다.
핵심 포인트
- 기존 NIAH 벤치마크는 단순 어휘 매칭에 치중되어 실제 추론 능력을 반영하지 못함
- 입력 토큰 길이가 증가할수록 모델의 성능은 불균일하게 저하됨
- 의미 중심적(Semantic) 작업과 복잡한 질의응답에서 성능 저하가 더 두드러짐
- 긴 컨텍스트 활용 시 단순 검색 이상의 정밀한 평가 체계가 필요함
최근 LLM (Large Language Models)의 발전은 더 긴 컨텍스트 윈도우 (Context Window)를 향한 추세를 보이고 있으며, 최신 모델들의 입력 토큰 (Input Token) 수는 수백만 개에 달하고 있습니다. 이러한 모델들이 Needle in a Haystack (NIAH) [1]와 같이 널리 채택된 벤치마크에서 거의 완벽한 점수를 달성하기 때문에, 긴 컨텍스트 작업 전반에 걸쳐 성능이 균일할 것이라고 흔히 가정되곤 합니다.
하지만 NIAH는 근본적으로 단순한 검색 (Retrieval) 작업입니다. 즉, 알려진 문장("바늘")을 관련 없는 긴 문서("건초더미") 안에 배치하고, 모델이 이를 찾아내도록 유도하는 방식입니다. 이 벤치마크는 확장 가능하지만, 일반적으로 직접적인 어휘 매칭 (Lexical Matching)을 평가하며, 이는 유연하고 의미 중심적인 (Semantically Oriented) 작업들을 대표하지 못할 수 있습니다.

우리는 이전에 충분히 탐구되지 않았던 환경에서의 모델 동작을 조사하기 위해 표준 NIAH 작업을 확장했습니다. 우리는 직접적인 어휘 매칭이 아닌 의미적 (Semantic) 매칭을 가진 바늘의 효과와, 건초더미 내용에 변형을 도입했을 때의 효과를 조사합니다.
또한, LongMemEval [2]을 사용한 대화형 질의응답 (Question-Answer) 평가와 모델이 일련의 반복되는 단어들을 복제하는 합성 작업 (Synthetic Task)을 포함했습니다. 각 작업은 컨텍스트 길이 (Context Length)의 영향만을 격리하기 위해 의도적으로 단순하게 유지되었으며 정밀하게 제어되었습니다.
우리는 이러한 최소한의 조건 하에서도 입력 길이가 증가함에 따라 모델 성능이 저하되며, 종종 놀랍고 불균일한 방식으로 나타난다는 것을 입증합니다. 실제 응용 분야는 일반적으로 훨씬 더 큰 복잡성을 수반하므로, 실제 환경에서는 입력 길이의 영향이 훨씬 더 두드러질 수 있음을 시사합니다.
심층적인 기술 보고서는 아래에 계속됩니다. 저희의 연구가 유용하다고 생각되신다면, 인용을 고려해 주세요:
AI 애플리케이션을 위한 검색 성능 개선 작업에 관심이 있으신가요? Chroma는 채용 중입니다.
최근의 LLM (Large Language Models)은 수백만 토큰에 달하는 입력 컨텍스트 길이 (input context lengths)를 갖는 것이 일반적입니다. Gemini 1.5 Pro [3]가 2024년 초에 1M 컨텍스트 창 (context window)을 처음으로 선보였으며, 이후 최근의 GPT-4.1의 1M 컨텍스트 창 [4]과 10M을 지원하는 Llama 4 [5]가 뒤를 이었습니다. 긴 컨텍스트 (long context)의 활용 사례는 매우 매력적입니다. 컨텍스트가 길어질수록 LLM은 매 호출마다 더 많은 정보를 처리할 수 있고, 더 많은 정보를 바탕으로 한 결과물 (informed outputs)을 생성할 수 있기 때문입니다.
이러한 모델들에 대한 긴 컨텍스트 평가 (long context evaluations)는 종종 입력 길이에 관계없이 일관된 성능을 보여줍니다. 하지만 이러한 평가들은 범위가 좁으며, 실제 환경에서 긴 컨텍스트가 어떻게 사용되는지를 대표하지 못합니다. 가장 흔히 사용되는 테스트인 '건초더미 속의 바늘 (Needle in a Haystack, NIAH)'은 모델이 긴 컨텍스트를 안정적으로 처리하는 능력을 일반화하기 위해 자주 사용되는 단순한 어휘 검색 (lexical retrieval) 작업입니다. 에이전트 작업 (agent tasks)이나 요약 (summarization)과 같은 실제 애플리케이션은 더 넓고 종종 더 모호한 정보에 대해 훨씬 더 많은 처리와 추론 (reasoning)을 요구합니다.
현실적인 긴 컨텍스트 벤치마크 (benchmarks)를 설계하는 것은 도전적인 과제입니다. 입력 길이가 증가함에 따라 작업의 복잡성도 함께 증가하는 경우가 많아, 성능 저하가 더 긴 입력 때문인지 아니면 본질적으로 더 어려운 문제 때문인지 분리하여 파악하기 어렵습니다. 이를 해결하기 위해, 우리의 실험은 작업 복잡성을 일정하게 유지하면서 입력 길이만을 변화시켜, 입력 길이 자체의 효과만을 직접 측정할 수 있도록 했습니다.
우리는 다음 내용을 제시합니다:
주요 폐쇄형 (closed-source) 및 오픈 웨이트 (open-weights) 모델을 포함한 18개의 LLM에 대한 평가를 통해, 입력 길이가 증가함에 따라 성능이 불균일하게 나타남을 밝힙니다.
방해 요소 (distractors)를 처리할 때와 질문-답변 유사도 (question-answer similarity)가 변할 때 관찰된 모델별 행동 패턴에 대한 기술.
우리의 결과를 재현할 수 있는 전체 코드베이스 (codebase).
모델의 긴 문맥 (long context) 능력을 평가하기 위해 가장 널리 사용되는 벤치마크 중 하나는 Needle in a Haystack (NIAH)입니다. 확장 가능한 테스트로서 유용하긴 하지만, 이는 어휘 검색 (lexical retrieval)이라는 좁은 능력만을 측정합니다. 모델들은 일반적으로 NIAH에서 좋은 성능을 보이며, 이는 긴 문맥 문제가 대체로 해결되었다는 인식을 불러일으켰습니다.
하지만 NIAH는 실제 대부분의 긴 문맥 작업에서 요구되는 사항을 과소평가합니다. 비어휘적 일치 (non-lexical matches)를 포함하는 바늘-질문 쌍을 사용하는 NoLiMa [6]와 같은 NIAH의 변형들은 상당한 성능 저하를 드러냅니다. 주어진 텍스트 조각의 부재를 인식하는 능력을 테스트하는 AbsenceBench [7]와 같이 난이도 면에서 유사해 보이는 다른 작업들 또한 입력 길이가 증가함에 따라 성능 저하를 보여줍니다.
또한, 긴 문맥 작업은 종종 작업의 일부로서 방해 요소 (distractors) 사이의 모호성을 해소하는 과정을 포함합니다. 한 가지 예로 Multi-round co-reference resolution (MRCR) [8] [9]이 있는데, 이는 다회차 대화 (multi-turn conversation) 속에서 유사한 사용자 요청들 사이로부터 특정 사용자 요청의 $i$번째 인스턴스를 검색하는 작업을 포함합니다. 그러나 긴 문맥 설정에서 방해 요소가 미치는 영향에 대한 조사는 여전히 부족한 실정입니다.
긴 문맥 작업에서 중요한 요소는 입력 길이가 어떻게 확장되는가입니다. Latent List [8]는 모델이 다양한 입력 길이에 걸쳐 정해진 횟수의 Python 리스트 연산을 수행해야 하는 작업입니다. 무관한 문맥을 채우는 다양한 방식들이 테스트되었으며, 이는 모델 성능에 비균일한 영향을 미친다는 것을 보여줍니다 [1]. 예를 들어, 국소적으로 서로를 상쇄하는 리스트 연산을 추가하는 것은 print 문을 추가하는 것에 비해 모델 성능을 더 심각하게 저하시킵니다. 이는 '무관한 콘텐츠'의 유형이 얼마나 중요한지를 강조하며, 일부 유형은 입력 길이에 따라 증가하는 복잡성을 유발할 수 있음을 시사합니다.
유사하게, Graphwalks [10]는 모델에게 16진수 해시(hexadecimal hashes)로 구성된 유향 그래프(directed graph)를 제공한 후, 임의의 노드에서 시작하여 너비 우선 탐색 (BFS, breadth-first search)을 수행하도록 요청하는 그래프 순회 (graph traversal) 작업입니다. 입력 길이의 증가는 순회해야 할 그래프의 크기 증가를 의미하며, 결과적으로 작업의 난이도를 높입니다. 증가하는 작업 복잡성 (task complexity)을 입력 길이와 구별하여 모호성을 제거하기는 어려우며, 이는 입력 길이만으로 인해 성능에 미치는 영향을 분리하여 파악하는 것을 어렵게 만듭니다. 이는 관심 변수로서 입력 길이를 분리하는 것이 중요하다는 점을 시사하며, 이는 LLM이 긴 입력값에 대해 실제로 어떻게 동작하는지 이해하는 데 필수적입니다.
고전적인 '건초더미 속 바늘 (Needle in a Haystack)' 작업은 긴 컨텍스트 창 (context window, '건초더미')의 중간에 임의의 사실('바늘')을 배치한 다음, 모델에게 그 사실에 대해 질문하는 방식입니다.
이 작업의 원래 구현은 어휘적 일치 (lexical matches)를 활용하는 바늘-질문 쌍을 사용합니다. 그러나 실제 상황에서의 긴 컨텍스트 사용은 종종 모호한 작업에 대한 의미론적 이해 (semantic understanding)를 요구합니다.

NoLiMa는 컨텍스트 길이 (context length)가 증가함에 따라 비어휘적 일치 (non-lexical matching)가 모델에게 도전 과제가 된다는 것을 입증했습니다. 이 작업은 모델이 잠재적 연관성 (latent associations)을 추론해야 하는 바늘-질문 쌍을 활용합니다. 예를 들면 다음과 같습니다:
질문: 어떤 캐릭터가 헬싱키(Helsinki)에 다녀왔나요?
바늘: 사실, 유키(Yuki)는 키아스마(Kiasma) 미술관 옆에 삽니다.
이 질문에 답하기 위해 모델은 먼저 키아스마 미술관이 헬싱키에 위치해 있다는 것을 알아야 하며, 그다음 그 잠재적 연관성 링크를 만들어야 합니다. 이는 모델의 비어휘적 일치 능력뿐만 아니라 세계 지식 (world knowledge)도 테스트합니다. NoLiMa의 바늘-질문 쌍 중 72.4%가 이러한 외부 지식을 요구하며, 이는 이 벤치마크가 순수한 비어휘적 일치 능력 테스트라기보다 모델이 두 가지 작업을 동시에 어떻게 처리하는지를 테스트하는 것에 더 가깝게 만듭니다.
비어휘적 일치 (non-lexical matching)의 영향을 단독으로 테스트하는 연구는 여전히 미흡한 상태입니다. 더욱이, "어휘적 (lexical)" 대 "비어휘적 (non-lexical)"이라는 이분법적 구분은 실제 시나리오에서의 질의응답 (question-answering) 복잡성을 지나치게 단순화합니다. 바늘-질문 (needle-question) 쌍은 유사성의 스펙트럼 상에 존재하지만, 모두 이 광범위한 범주로 분류됩니다.
모델은 종종 방해 요소 (distractors)도 처리해야 하며, 이는 성능을 저하시키는 것으로 나타났습니다 [11].
이 보고서 전반에 걸쳐, 우리는 방해 요소 (distractors)와 무관한 콘텐츠 (irrelevant content)를 다음과 같이 구분합니다:

- 방해 요소 (Distractors)는 바늘 (needle)과 주제적으로 관련이 있지만, 질문에 완전히 답하지는 못하는 것
- 무관한 콘텐츠 (Irrelevant content)는 바늘 및 질문과 관련이 없는 것
이전 연구들은 방해 요소가 비균일한 영향을 미친다는 것을 입증했으나, 대부분의 평가는 짧은 입력 길이와 오래된 모델들을 대상으로 이루어졌습니다. 현재의 최첨단 (state-of-the-art) 모델들은 방해 요소에 더 탄력적 (resilient)이라고 주장되지만, 다양한 입력 길이에 걸쳐 그 성능이 광범위하게 테스트되지는 않았습니다.
NIAH (Needle In A Haystack)의 또 다른 미개척 측면은 건초더미 (haystack) 그 자체입니다. 건초더미는 종종 단순히 입력 길이를 확장하기 위한 수단으로 취급되지만, 이는 건초더미의 콘텐츠 자체가 작업 성능에 영향을 미치지 않는다는 가정을 전제로 합니다. 만약 모델이 실제로 건초더미의 콘텐츠에 무감각하다면, 건초더미의 주제나 서사적 흐름 (narrative flow)과 같이 이 콘텐츠를 변화시키더라도 결과에 아무런 영향을 미치지 않아야 합니다. 그러나 이 가정은 대체로 검증되지 않은 상태로 남아 있습니다.
우리는 이러한 요인들의 영향을 조사하기 위해 네 가지 통제된 실험을 설계합니다:
우리는 임베딩 (embeddings)을 사용하여 바늘-질문 쌍 사이의 코사인 유사도 (cosine similarity)를 계산합니다. 견고성 (robustness)을 위해, 우리는 다섯 가지 임베딩 모델인 text-embedding-3-small, text-embedding-3-large, jina-embeddings-v3, voyage-3-large, 그리고 all-MiniLM-L6-v2의 평균값을 사용합니다. 우리는 입력 길이가 증가함에 따라 바늘-질문 유사도가 모델 성능에 어떤 영향을 미치는지 측정합니다.
유사도가 높은 바늘-질문 쌍을 채택하여, 네 가지 방해 요소를 작성합니다. 다음과 같은 설정이 준비되어 있습니다:
- Baseline: 바늘(needle)만 존재, 방해 요소(distractor) 없음
- Single distractor: 바늘 + 무작위 위치에 배치된 하나의 방해 요소
- Multiple distractors: 바늘 + 무작위 위치에 배치된 네 개의 모든 방해 요소
우리는 방해 요소와 입력 길이 사이의 불균일성(non-uniformity)을 측정하기 위해, 입력 길이가 증가함에 따라 방해 요소가 모델 성능에 미치는 영향을 테스트합니다.
우리는 주제가 서로 다른 두 가지 건초더미(haystack)인 Paul Graham의 에세이와 arXiv 논문 [12]을 사용하며, 각 건초더미에 대응하는 바늘을 작성합니다. 바늘-건초더미 유사도(needle-haystack similarity)를 측정하기 위해, 건초더미를 임베딩(embedding)하고 각 바늘에 대해 상위 5개의 청크(chunk)를 검색한 다음, 이들의 코사인 유사도(cosine similarity) 점수를 평균냅니다. 이 과정은 견고성(robustness)을 위해 다섯 가지의 서로 다른 임베딩 모델을 통해 반복됩니다.
전형적인 NIAH 설정에서 건초더미는 각각 고유한 논리적 흐름을 가진 일관된 텍스트들의 연결로 구성됩니다. 예를 들어, 기존의 NIAH 벤치마크는 일련의 Paul Graham 에세이를 사용하며, 각 에세이는 논거를 형성하기 위해 구조화된 아이디어 조직을 따릅니다. 이러한 구조가 모델 성능에 영향을 미치는지 평가하기 위해, 우리는 다음 두 가지 조건을 비교합니다:
- Original: 각 발췌문 내의 자연스러운 아이디어 흐름을 유지함
- Shuffled: 논리적 연속성 없이 동일한 전체 주제를 유지하기 위해 건초더미 전체에서 문장들을 무작위로 재배열함
우리는 다음을 입증합니다:
- 모든 실험에 걸쳐, 모델 성능은 입력 길이가 증가함에 따라 일관되게 저하됩니다.
- 유사도가 낮은 바늘-질문 쌍은 성능 저하 속도를 높입니다.
- 방해 요소는 서로 간의 방해 정도에 따라 모델 성능에 불균일한 영향을 미칩니다. 이러한 영향은 입력 길이가 증가함에 따라 더 두드러지게 나타나며, 다양한 모델이 이에 반응하는 방식에서도 차이가 관찰됩니다.
- 바늘-건초더미 유사도는 모델 성능에 균일한 영향을 미치지 않으며, 이는 추가적인 조사가 필요함을 시사합니다.
- 건초더미의 구조적 패턴은 모델이 긴 입력을 처리하는 방식에 일관된 영향을 미칩니다.
바늘(needle) 유형, 건초더미(haystack) 주제, 그리고 건초더미 구조의 모든 고유한 조합에 대해, 우리는 다음 항목들을 통해 각 모델을 테스트합니다:
- 8개의 입력 길이 (input lengths)
- 11개의 바늘 위치 (needle positions)
우리는 해당 설정이 호환되지 않거나 (예: o3) 명시적으로 권장되지 않는 경우 (예: Qwen의 "thinking mode")를 제외하고, temperature=0 설정 하에 각 모델의 최대 컨텍스트 창 (context window) 전체에 대해 평가합니다. Qwen 모델의 경우, 32,768 토큰에서 131,072 토큰으로 확장하기 위해 YaRN 방식 [13]을 적용합니다.
적용 가능한 경우, 표준 모델과 "thinking mode" 모델을 모두 포함합니다.
우리는 부록에 기술된 방법론을 사용하여, 정렬된 (aligned) GPT-4.1 판사(judge)를 통해 모델의 출력을 평가합니다.
모델이 작업을 수행하기를 거부하는 드문 사례들이 관찰되었습니다 (총 194,480회의 LLM 호출 중 69회 — 0.035%). 예를 들어, Claude Opus 4는 때때로 stop_reason="refusal"과 함께 빈 출력을 생성할 수 있습니다.
실제 응용 분야에서 모델은 종종 모호한 작업을 처리하고, 정확한 어휘적 일치 (lexical matches)에 의존하지 않고도 관련 정보를 식별할 것으로 기대됩니다. 예를 들어, 에이전트(agent)에게 방대한 코퍼스 (corpus)를 검색해야 하는 작업이 주어졌을 때, 사용자가 관련 부분에 대해 정확한 키워드를 지정하는 경우는 드뭅니다. 대신, 모델은 관련성을 추론해야 합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기