배경: LLM의 context window가 4K에서 128K, 200K 이상으로 급속히 확장되었으나, 공식 벤치마크는 긴 문맥 내 정보 검색(retrieval) 능력을 체계적으로 측정하지 못했다. 문제: 모델이 공칭 context length를 지원하더라도, 문맥의 특정 위치에 놓인 정보를 실제로 검색할 수 있는지는 별개의 문제이다. 특히 중간 위치의 정보가 누락되는 “Lost in the Middle” 현상이 보고되었다. 방법: 긴 문서(haystack, Paul Graham 에세이 반복)에 특정 사실 문장(needle)을 삽입하고, 문맥 길이(1K-200K tokens) × 바늘 위치(0-100% depth) 그리드를 구성하여 모델의 검색 정확도를 2D heatmap으로 시각화한다. 결과: GPT-4 Turbo는 128K에서 ~87% 정확도(중간 위치 취약), Claude 3 Opus는 ~98%, Gemini 1.5 Pro는 ~97%의 검색률을 달성하였다. 의의: 정형 벤치마크가 아닌 **커뮤니티 주도 압력 테스트(pressure test)**로서, 장문맥 성능의 사실상 표준 시각화 도구가 되었으며 모델 비교 및 마케팅에 널리 활용된다.
Long-Context, Retrieval, Pressure Test, Heatmap, Lost in the Middle
데이터셋 구성
규모 및 분할
항목
내용
유형
고정 데이터셋 아님 — 매개변수화된(parameterized) 테스트 프레임워크
문맥 길이 범위
1K ~ 200K tokens (1K 단위 또는 로그 스케일로 설정 가능)
바늘 위치 범위
0% (문서 시작) ~ 100% (문서 끝), 보통 10% 간격
일반적 그리드 크기
15-20개 길이 × 10-11개 위치 = 150~220 evaluation points
Haystack 소스
Paul Graham 에세이 (반복 연결로 길이 채움)
Needle 예시
특정 사실 문장 1개 (또는 multi-needle 변형에서 복수)
Feature/Column 구조
필드
타입
설명
예시
context_length
int
전체 입력 토큰 수
32000, 128000
needle_depth_percent
float
바늘이 삽입된 위치 (0-100%)
50.0 (중간)
needle
str
삽입된 사실 문장
"The best thing to do in San Francisco is..."
haystack
str
배경 문서 (에세이 반복)
Paul Graham 에세이 × N회 반복
model_response
str
모델의 응답 텍스트
"According to the document, the best thing..."
score
int/float
검색 성공 여부
1 (성공) / 0 (실패), 또는 1-10 LLM judge
난이도/유형 분포
변형
설명
난이도
Single Needle
단일 사실 문장 검색
기본
Multi-Needle
2-10개 사실 문장 동시 검색
상
Reasoning Needle
검색 + 추론 필요 (예: 두 사실 결합)
최상
Adversarial Needle
유사 정보 속 정확한 바늘 식별
상
실제 데이터 예시
Sample 1: 기본 설정 (성공 케이스)
context_length: 64000needle_depth_percent: 25.0needle: "The best thing to do in San Francisco is eat a sourdough bread bowl at Fisherman's Wharf."question: "What is the best thing to do in San Francisco?"model: "claude-3-opus"model_response: "According to the document, the best thing to do in San Francisco is eat a sourdough bread bowl at Fisherman's Wharf."score: 10
Sample 2: Lost in the Middle (실패 케이스)
context_length: 128000needle_depth_percent: 50.0needle: "The best thing to do in San Francisco is eat a sourdough bread bowl at Fisherman's Wharf."question: "What is the best thing to do in San Francisco?"model: "gpt-4-turbo-128k"model_response: "The document discusses various topics about startups and programming but I could not find specific information about San Francisco activities."score: 1
Sample 3: Multi-Needle 변형
context_length: 100000needle_depth_percent: [10.0, 50.0, 90.0]needles: - "The secret code for the library is 7291." - "The mayor's favorite food is pepperoni pizza." - "The annual festival is held on March 15th."question: "What are the secret code, mayor's favorite food, and festival date?"model: "gemini-1.5-pro"score: [10, 8, 10] # 중간 위치 바늘 부분 누락
왜 이 연구를 하는가?
핵심 질문
“LLM이 128K, 200K context를 지원한다고 하지만, 실제로 긴 문맥의 모든 위치에서 정보를 검색할 수 있는가?”
기존 한계
한계
설명
공칭 vs 실효 context
모델이 128K 토큰을 입력받을 수 있다고 해서 모든 위치의 정보를 활용하는 것은 아님
기존 벤치마크 부재
장문맥 검색을 체계적으로 측정하는 표준 벤치마크가 없었음
Lost in the Middle
Liu et al. (2023)이 이론적으로 보고했으나, 다양한 모델에 대한 시각적 비교 부재
마케팅 vs 실력
모델 제공사들이 context window 크기를 경쟁적으로 늘리지만 실질적 성능 검증 부족
핵심 통찰
단순하지만 강력한 압력 테스트(pressure test) 설계로, 2D heatmap 한 장이 모델의 장문맥 능력을 직관적으로 드러낸다. 복잡한 메트릭 없이도 어디서 실패하는지 즉시 파악 가능하다.
방법 (Method)
flowchart TD
subgraph 준비
A[Paul Graham 에세이 수집] --> B[Haystack 구성: 에세이 반복으로 목표 길이 채움]
C[Needle 문장 정의] --> D[삽입 위치 결정: depth_percent]
end
subgraph 그리드_구성
B --> E[context_length 리스트 설정\n1K, 2K, 4K, ..., 128K, 200K]
D --> F[needle_depth 리스트 설정\n0%, 10%, 20%, ..., 100%]
E --> G[2D 평가 그리드 생성\nlength × depth]
F --> G
end
subgraph 평가
G --> H[각 grid point마다:\nHaystack에 Needle 삽입]
H --> I[모델에 질의:\n바늘 관련 질문]
I --> J[응답 채점:\nbinary 또는 LLM judge 1-10]
end
subgraph 시각화
J --> K[2D Heatmap 생성\nX=length, Y=depth, Color=score]
K --> L[모델 간 비교 분석]
end
핵심 구성요소
구성요소
설명
Haystack
Paul Graham 에세이를 반복 연결하여 목표 토큰 수까지 채운 배경 문서
Needle
"The best thing to do in San Francisco is eat a sourdough bread bowl at Fisherman's Wharf." 등 검색 대상 사실 문장
Depth Percent
Needle 삽입 위치. 0%=문서 시작, 50%=정중앙, 100%=문서 끝
Retrieval Question
Needle의 내용을 묻는 질문 (예: "What is the best thing to do in San Francisco?")
Scoring
기본: binary (검색 성공/실패). 확장: GPT-4를 judge로 활용하여 1-10점 채점
Heatmap
최종 결과 시각화. 녹색=성공, 적색=실패로 모델의 “사각지대” 직관적 표현
발견 (Findings)
주요 결과
모델
128K 정확도
200K 정확도
주요 패턴
GPT-4 Turbo
~87%
N/A
중간 위치(40-60%)에서 현저한 성능 저하
Claude 3 Opus
~98%
~95%
전 구간 안정, 극단 길이에서 미세 하락
Gemini 1.5 Pro
~97%
~96%
전반적 안정적 성능 유지
Mistral Large
~75%
N/A
32K 이후 급격한 성능 하락
핵심 발견
Lost in the Middle 확인: GPT-4 Turbo는 문맥 중간(40-60% depth)에서 검색 실패율이 가장 높음 → 위치 편향(positional bias) 존재
U자형 성능 곡선: 대부분의 모델이 문서 시작과 끝에서는 잘 검색하지만, 중간에서 약해지는 패턴
Context length 임계점: 특정 길이를 넘으면 급격히 성능이 떨어지는 모델 존재 (cliff effect)
Multi-needle 확장: 바늘 수가 증가하면 모든 모델의 성능이 하락, 특히 중간 위치 바늘 누락률 증가
모델 간 격차: 같은 128K 지원 모델이라도 실효 검색 능력에 10% 이상 차이
이론적 의의
실효 context length 개념 정립: 공칭 context window와 실제 활용 가능 범위의 차이를 정량적으로 드러냄
위치 편향 시각화: Transformer attention 메커니즘의 위치 의존적 한계를 실증적으로 보여줌
평가 방법론 기여: 복잡한 벤치마크 없이도 매개변수화된 압력 테스트로 모델 능력을 효과적으로 측정할 수 있음을 시연