Lost in the Middle
Lost in the Middle은 Liu 외의 2023년 Stanford/Samaya AI 논문이 문서화한 실증 발견으로, LLM이 긴 컨텍스트의 맨 앞이나 맨 뒤에 놓인 핵심 정보를 가장 잘 활용하고, 같은 정보가 중간에 있을 때는 성능이 눈에 띄게 나빠진다는 현상입니다. 100K+ 토큰 윈도우를 가진 모델도 여전히 이 U자 주의 곡선을 보입니다.
Lost in the Middle은 Liu 외의 2023년 Stanford/Samaya AI 논문이 문서화한 실증 발견으로, LLM이 긴 컨텍스트의 맨 앞이나 맨 뒤에 놓인 핵심 정보를 가장 잘 활용하고, 같은 정보가 중간에 있을 때는 성능이 눈에 띄게 나빠진다는 현상입니다. 100K+ 토큰 윈도우를 가진 모델도 여전히 이 U자 주의 곡선을 보입니다.
왜 중요한가
'큰 컨텍스트 윈도우'는 '모든 것을 동등하게 읽는다'와 같지 않습니다. 200K 컨텍스트 모델이 기술적으로는 책 한 권을 통째로 인제스트할 수 있지만, 500페이지 PDF의 300페이지에 답이 있는 질문의 실제 정확도는 5페이지나 495페이지에 있는 같은 질문보다 훨씬 낮습니다. 빌더에게 이는 구체적 결과를 낳습니다: 프롬프트 안에서 컨텍스트를 배치하는 순서가 답변 품질을 극적으로 바꾸며, 종종 얼마나 많은 컨텍스트를 제공하느냐보다 더 큽니다. "모델이 검색된 구절을 무시했다"는 대부분의 프로덕션 RAG 실패는 실제로는 Lost in the Middle이 변장한 것입니다.
원 발견
Liu 외의 2023년 논문 "Lost in the Middle: How Language Models Use Long Contexts"는 GPT-3.5·GPT-4·Claude와 여러 오픈 모델을 멀티 문서 질의응답에 테스트했습니다. 각 질문에서 관련 문서를 전체 20개 중 1·5·10·15·20번 위치에 섞어 넣었습니다. 결과:
- 관련 문서가 맨 앞에 있을 때 정확도 최고.
- 맨 뒤에 있을 때도 거의 그만큼 높음.
- 중간 위치에 있을 때 정확도가 20~30점 떨어짐.
모양은 U자: 양 끝에서 강하고, 중간에서 약합니다. 후속 연구는 Claude·Gemini·Llama가 컨텍스트를 늘려도 이 패턴이 유지됨을 보였습니다.
왜 일어나는가
여러 가설이 있고 아마 부분적으로 모두 사실입니다:
훈련 데이터 분포: 훈련 데이터는 중요한 정보를 맨 앞(헤드라인·토픽 문장)과 맨 뒤(결론·TL;DR)에 놓는 경향이 있습니다. 모델이 그 위치 사전을 학습합니다.
주의 감쇠: RoPE나 ALiBi 같은 기법이 있어도 셀프 어텐션의 유효 범위는 매우 긴 시퀀스에서 저하됩니다 — 멀리 있는 중간 토큰은 가까운 끝보다 주의 질량을 덜 받습니다.
위치 인코딩 한계: 확장된 컨텍스트 모델은 더 짧은 시퀀스로 튜닝된 위치 인코딩을 상속하므로, 중간 위치는 상대적으로 덜 학습됐습니다.
최근성 편향: 모델은 최근 토큰을 더 가중합니다. 이는 끝의 강함을 증폭하지만 중간에는 도움이 안 됩니다.
대응 설계
1. 가장 중요한 컨텍스트를 앞이나 뒤에: RAG의 경우, 상위 랭크 구절을 컨텍스트 블록의 맨 앞이나 맨 뒤에 놓습니다.
2. 검색 후 리랭킹: 리랭커로 검색된 청크를 관련성 순으로 정렬한 뒤 상위를 가장자리에 배치.
3. 검색 순서가 아니라 관련성 순으로 재정렬: 벡터 검색은 거리 순으로 반환하는 경우가 많은데, 가장 관련 있는 것이 높은 주의 위치에 오도록 재배치.
4. 중간을 요약: 원본 중간 컨텍스트를 그대로 붓지 말고 요약해 상단에 배치. 압축된 중간이 원본 중간보다 더 잘 살아남습니다.
5. 컨텍스트 축소: 길이가 늘수록 U 커브가 나빠집니다. 적고 더 관련 있는 청크가 많지만 한계 관련성인 것을 이깁니다.
6. 핵심 사실 반복: 같은 핵심 사실을 맨 위와 맨 아래에 배치하면 U 커브에 맞서는 대신 활용합니다.
7. 양 끝의 작업 지시: 일부 프롬프트는 컨텍스트의 맨 위와 맨 아래에 질문을 반복하고 그 사이에 증거를 샌드위치로 끼우면 효과적입니다.
2026년에도 유효한가
더 새로운 롱 컨텍스트 모델(Gemini 1.5·2.0, Claude 3.5+·4.x, GPT-4 Turbo·o 시리즈)은 중간 컨텍스트 회상을 상당히 개선했습니다. Gemini 2.0의 needle-in-a-haystack 테스트는 전체 윈도우에서 거의 완벽한 검색을 보입니다. 하지만 복잡 추론이 있는 실제 멀티 팩트 과제에서는 U자 모양이 여전히 — 덜 극적이지만 — 나타납니다. 실용 조언은 거의 바뀌지 않았습니다: 짧고 잘 정렬된 컨텍스트가 길고 무작위로 정렬된 컨텍스트를 이깁니다.
흔한 실수
큰 컨텍스트 = 더 나은 답이라고 가정: 일정 지점까지만 사실. 그 이후 중간 저하가 시작됩니다.
검색된 구절을 벡터 거리 순으로 그대로 넣기: 벡터 거리는 위치 중요도와 같지 않습니다.
리랭킹 생략: 검색 + 리랭크가 단순 검색 + 더 긴 컨텍스트보다 효과적입니다.
비현실적 위치로만 needle 테스트: 장난감 needle-in-haystack 테스트는 균등 무작위 위치에 needle을 두어 U 커브를 가립니다. 현실 사용 케이스로 테스트해야 합니다.
마케팅 문구 믿기: "1M 토큰 컨텍스트"는 모델이 1M 토큰을 모두 동등하게 다룬다는 뜻이 아닙니다.
Sources:
- Lost in the Middle: How Language Models Use Long Contexts - Liu et al.
- Needle in a Haystack Benchmark
- Anthropic Long Context Evaluation
관련 인블로그 게시물
inblog에서 활용하기
블로그 포스트를 쓸 때 Lost in the Middle을 의식해 구조를 잡으면 AI 인용 확률을 높일 수 있습니다. 권장 배치는 다음과 같습니다:
- 맨 앞 한 줄에 핵심 정의·결론을 둡니다. LLM이 포스트를 인용 소스로 읽을 때 가장 먼저 주의를 주는 위치입니다.
- 맨 뒤에 요약·TL;DR을 반복합니다. U 커브의 반대편 끝을 활용해 같은 사실을 두 번 인상에 남깁니다.
- 중간은 짧은 서브헤딩으로 쪼개고, 각 섹션 첫 문장에 그 섹션의 결론을 둡니다. 긴 단락 중간에 파묻힌 사실은 모델이 놓치기 쉽습니다.
- 핵심 수치·정의는 글 안에서 반복합니다. 한 번만 등장하면 그 위치가 중간일 때 인용에서 빠질 수 있습니다.
inblog가 이 구조를 자동으로 만들어주지는 않지만, 위 원칙을 따라 직접 배치하면 검색 엔진보다 LLM이 더 잘 뽑는 포스트를 만들 수 있습니다.