볼트 홈: README
해설 — 컨텍스트 산만 깊이읽기: 회의가 길어질수록 안건을 잊는다
한 줄 정의
컨텍스트 산만은 필요한 정보가 컨텍스트 안에 전부 들어 있는데도 컨텍스트가 길어졌다는 사실 그 자체만으로 모델이 집중력을 잃고, 훈련된 추론 능력 대신 누적된 과거 이력에 끌려다니는 실패다. “못 봐서 틀린 것”(절단)이 아니라 “다 보이는데 흐트러져서 틀린 것”이라는 점이 핵심이다.
왜 중요한가
“컨텍스트 윈도우가 1M 토큰이니까 문서를 통째로 넣으면 된다.” 이 한 문장이 현장에서 가장 비싼 오해다. 산만을 모르면 “정보를 더 넣으면 더 잘하겠지”라며 컨텍스트를 채우다가, 정작 왜 성능이 오히려 떨어지는지는 영문을 모른다. 산만은 RAG와 롱컨텍스트 전략이 광고만큼 작동하지 않는 이유, “광고된 컨텍스트 길이”와 “실효 컨텍스트 길이”가 왜 다른지를 메커니즘 수준에서 설명한다(02_01-정의-컨텍스트-산만). 이걸 알아야 입력을 채우는 게 아니라 설계할 수 있다.
1. 비유로 잡는 직관 — 길어지는 회의
산만을 한 장면으로 새기려면 끝없이 길어지는 회의를 떠올리면 된다.
회의가 30분이면 모두가 안건에 집중한다. 그런데 3시간, 5시간으로 늘어지면 무슨 일이 벌어지나. 사람들은 원래 풀려던 문제(훈련된 추론)를 잊고, 지금까지 회의에서 나온 말들(누적 이력)에 끌려다니기 시작한다. “아까 이렇게 하기로 했으니 이번에도 그렇게 하자”는 관성이 새로운 사고를 밀어낸다. 더 길어지면 회의록 중간에 적힌 중요한 결정은 아무도 기억 못 하고(위치 편향), 앞부분과 방금 한 말만 남는다.
여기가 결정적이다. 회의가 망가지는 건 누가 거짓말을 해서(오염)가 아니다. 모든 발언이 정확해도 단지 길어졌다는 이유만으로 집중이 무너진다. 컨텍스트 산만이 정확히 이렇다. 올바른 정보만 가득 채워도 길이 자체가 추론을 압도한다(02_01-정의-컨텍스트-산만).
흔한 오해 ① — "산만은 컨텍스트가 잘려서(절단) 정보를 못 본 거다"
정반대다. 절단(truncation)은 정보가 윈도우 밖으로 밀려나 안 보이는 것이고, 산만은 정보가 전부 안에 들어 있는데도 흐트러지는 것이다(02 산만). Du et al.(EMNLP 2025)은 무관한 토큰을 공백으로 대체하거나 마스킹해 잡음을 완벽히 제거하고 검색 품질을 통제한 뒤에도, 단지 길이가 늘기만 하면 성능이 13.9%~85% 떨어짐을 보였다(02_01-정의-컨텍스트-산만). 다 들어 있는데 길어서 못 쓴다, 이게 산만이다.
2. 두 개의 엔진 — 어텐션 희석과 위치 편향
회의가 망가지는 데 두 가지 힘이 작동하듯, 산만도 두 메커니즘이 함께 민다.
2-1. 어텐션 희석 — 표가 많아질수록 한 표의 무게가 준다
트랜스포머의 어텐션은 모든 토큰이 다른 모든 토큰에 “주의 표”를 던지는 투표와 같다. 그런데 이 표의 총합은 softmax로 항상 1이 되도록 정규화된다. 표의 총량은 고정인데 후보(토큰)만 늘어나는 구조다. 4K 토큰일 때 핵심 정보가 받던 주의는 300K 토큰이 되면 같은 정보인데도 훨씬 옅게 희석된다. 한 표의 무게가 줄어드는 셈이다(02_02-메커니즘-어텐션-희석).
이건 단순한 비유가 아니라 물리적 사실이다. 어텐션은 실제로 희소(sparse)해서, 상위 10% 위치가 전체 어텐션의 약 38%를 가져간다. 300K 토큰 문서에서 핵심 30K에 95%의 주의가 쏠린다면 나머지 270K에 흩어진 세부 정보는 5%밖에 못 받는다(02_02-메커니즘-어텐션-희석). 중요한 정보가 있어도 묻혀버린다.
흔한 오해 ② — "Flash Attention 쓰면 긴 컨텍스트 문제는 해결됐다"
아니다. Flash Attention이 해결한 건 메모리 사용량과 계산 속도다. 같은 결과를 더 빠르게, 더 적은 메모리로 계산할 뿐이다. softmax 정규화로 인한 가중치 희석 자체는 전혀 건드리지 못한다(02_02-메커니즘-어텐션-희석). 메모리 효율과 집중도는 다른 문제다.
2-2. 위치 편향 — 회의록 중간은 아무도 기억 못 한다
두 번째 엔진은 위치다. Liu et al.(Lost in the Middle, TACL 2024)이 보인 유명한 발견이 있다. 같은 정보라도 컨텍스트의 처음이나 끝에 있으면 잘 활용되지만, 중간에 묻히면 성능이 약 18퍼센트포인트 급락한다. 성능 곡선이 U자형을 그린다(02_03-메커니즘-위치-편향-u자형).
이게 사람의 기억과 똑 닮았다. 목록을 외울 때 처음 항목(초두 효과)과 마지막 항목(최신 효과)은 잘 기억하지만 중간은 흐릿하다. 회의록도 첫 안건과 방금 한 말은 또렷한데 중간 두 시간은 뿌옇다. 결정적으로 이 U자형은 “긴 컨텍스트 전용”이라고 광고하는 모델에서도 똑같이 나타난다(02_03-메커니즘-위치-편향-u자형). “1M 토큰 지원”이 “1M 토큰을 균일하게 활용 가능”을 뜻하지 않는다는 직접 증거다.
xychart-beta title "컨텍스트 위치별 정확도 개념도 — U자형" x-axis ["처음", "초반", "중반초", "중간", "중반후", "후반", "끝"] y-axis "정확도 퍼센트" 50 --> 100 line [91, 80, 70, 62, 68, 82, 89]
두 엔진은 따로 도는 게 아니라 서로를 악화시킨다. 길어져서 어텐션이 희석되고(엔진1), 묻힌 정보가 하필 어휘 단서까지 없으면(NoLiMa가 보인 잠재 추론 상황) 접근은 사실상 불가능에 가까워진다. 에이전트 이력은 정확히 이 최악의 조합을 만들기 쉽다. 초기 계획의 제약 조건이 수만 토큰 뒤에서 어휘 단서도 없이 다시 연결돼야 할 때, 어텐션은 그 연결을 잃는다(02_02-메커니즘-어텐션-희석).
3. 산만 임계점 — 실효 컨텍스트는 광고보다 훨씬 짧다
회의에 “이 시간을 넘으면 급격히 망가진다”는 변곡점이 있듯, 모델마다 성능이 질적으로 붕괴하는 산만 임계점(distraction ceiling)이 있다. 이 선을 넘으면 검색은 작동하는 척 보여도 새로운 계획과 다단계 추론은 무너진다(02_04-개념-산만-임계점).
핵심 충격은 이 임계점이 광고된 길이보다 훨씬 낮다는 것이다. 실효 컨텍스트 길이는 보통 광고 컨텍스트의 50~65% 수준에 그친다. 에이전트 추론은 이보다도 훨씬 이른 지점에서 무너진다(02_04-개념-산만-임계점).
게다가 임계점은 단일 절벽이 아니라 과제 난도별로 여러 겹의 변곡선이다. 같은 길이라도 단순 검색은 멀쩡한데 다단계 추론은 이미 무너져 있을 수 있다. 회의가 길어져도 “방금 누가 뭐랬지?” 같은 단순 회상은 되지만 “이 모든 걸 종합해 새 결정을 내려라”는 먼저 마비되는 것과 같다. 그래서 “이 길이면 안전한가”라는 질문은 어떤 과제냐부터 못 박지 않으면 답이 없다.
| 모델 | 광고 컨텍스트 | 산만 임계 추정치 |
|---|---|---|
| Mixtral-8x7B | 32K | 약 4K |
| Llama 3.1 405B | 128K | 약 32K |
| GPT-4 계열 | 128K | 약 64K |
| Gemini 2.5 Pro | 1M | 약 100K (에이전트) |
흔한 오해 ③ — "1M 토큰 모델이면 1M 토큰을 다 쓸 수 있다"
가장 비싼 오해다. Gemini 2.5 Pro는 1M 토큰을 광고하지만, 에이전트 추론은 광고치의 10% 수준인 100K에서 이미 무너졌다(02_04-개념-산만-임계점). RULER 벤치마크 기준 NIAH(단순 검색)에서 99%를 찍는 모델이 복합 추론 태스크에서는 같은 길이에서 60%대로 떨어진다(02_06-paper-lost-in-the-middle 계열 후속 연구). “이 모델 1M이라 문서 통째로 넣어도 돼요?”라는 말을 들으면 어떤 과제인지부터 물어야 한다. 단순 검색이냐 다단계 추론이냐로 임계점이 완전히 다르다.
4. 실제 에이전트에서 어떤 모습인가 — 포켓몬이 원을 그리며 갇히다
산만을 살로 만드는 사례 역시 Gemini 2.5 포켓몬이다(오염 해설과 같은 실험이지만, 여기서는 길이가 일으킨 측면을 본다). 에이전트는 게임 상태를 관찰하고 행동한 뒤 그 결과를 다시 컨텍스트에 기록하는 루프를 돌렸고, 그 이력이 계속 쌓였다.
“컨텍스트가 100k 토큰을 크게 넘어서자, 에이전트는 새로운 계획을 합성하기보다 방대한 이력에서 행동을 반복하는 경향을 보였다.” — Gemini 2.5 Tech Report, 02_01-정의-컨텍스트-산만 경유
증상은 직관적이었다. 에이전트가 Pewter City 뒷마당에서 원을 그리며 수 시간 동안 갇혔고, 컨텍스트를 강제 초기화했을 때만 그 루프에서 빠져나왔다(02_04-개념-산만-임계점). 회의가 너무 길어져 안건을 잊고 같은 잡담만 도는 상태를, 회의를 리셋해서야 깨뜨린 격이다.
여기서 산만 고유의 메커니즘을 짚어 보자. 에이전트의 컨텍스트는 자기 과거 행동의 역사다. 이 역사가 무거워지면 모델은 “지금까지 이렇게 해왔으니 이번에도”라는 귀납적 패턴 복사에 빠진다. 새 상황에 맞는 창의적 계획(novel planning) 능력은 억눌리고, 훈련 때 배운 일반 추론(“이런 상황엔 이렇게”)은 뒷전으로 밀린다(02_01-정의-컨텍스트-산만). 과거가 너무 무거워져 현재의 판단력을 압도하는 것이다.
흔한 오해 ④ — "포켓몬이 갇힌 건 잘못된 정보(오염) 때문 아닌가?"
오염과 산만은 같은 실험에서 교차하지만 원인이 다르다. 오염은 컨텍스트의 내용(WHAT)이 틀린 것, 산만은 컨텍스트의 길이(HOW MUCH)가 문제인 것이다. 산만은 올바른 정보만 가득해도 발생한다. 단지 길어지기만 해도 충분하다(02_01-정의-컨텍스트-산만, 09_01-감별진단-5대모드-종합비교). 포켓몬 사례는 둘이 함께 나타난 경우다. 그래서 진단할 때 “내용이 틀렸나, 길어서 흐트러졌나”를 따로 떼어 봐야 한다.
5. 처방 — 채우지 말고 설계하라
산만의 처방은 메커니즘에서 곧장 따라 나온다. 핵심 원칙은 하나, 실효 컨텍스트가 임계점을 넘기 전에 입력을 줄이고 재배치하라는 것이다(02_11-처방-컨텍스트-산만-완화-체크리스트).
- 중요 정보는 처음이나 끝에 배치하라. Lost in the Middle을 역이용한다. 시스템 프롬프트와 핵심 지시, 제약은 처음에, 가장 관련성 높은 RAG 청크와 사용자 질문, 실행 명령은 끝에 둔다. 중요도 낮은 배경 정보만 중간에 배치한다(02_03-메커니즘-위치-편향-u자형).
- 에이전트 이력은 주기적으로 압축하라. 누적 이력이 새 계획을 방해하니, 슬라이딩 윈도우 요약이나 중요 사건 선택 보존으로 유효 길이 자체를 줄인다. 목표와 핵심 제약은 매 턴 시스템 프롬프트로 재주입(처음 위치 고정)하고, 최근 관찰은 항상 끝에 붙인다(02_11-처방-컨텍스트-산만-완화-체크리스트).
- 증거 재인용(evidence recitation)을 활용하라. 답변 전 관련 근거를 먼저 인용하게 하면, 중간에 묻힌 정보를 작업 맥락 가까이로 끌어내 장문 태스크를 단문 태스크로 바꾸는 효과가 난다(02_01-정의-컨텍스트-산만).
- 벤치마크를 의심하라. NIAH 99%를 “긴 컨텍스트 완벽 지원”으로 읽지 마라. 그 과제가 어휘 매칭 검색인지 개념 추론인지, 실제 사용이 단순 검색인지 다단계 추론인지를 먼저 물어야 한다(02_06-paper-lost-in-the-middle 계열).
흔한 오해 ⑤ — "성능이 떨어지면 정보를 더 넣어 보강하면 된다"
산만에서는 이게 불을 기름으로 끄려는 행동이다. 정보를 더 넣으면 컨텍스트가 더 길어지고, 어텐션은 더 희석되고, 중요 정보는 더 깊이 묻힌다. 산만의 처방은 더하기가 아니라 빼기와 재배치다(02_11-처방-컨텍스트-산만-완화-체크리스트).
flowchart TD A["긴 컨텍스트 입력"] --> B{"정보가 전부<br/>들어 있는가"} B -- 아니오 --> T["절단 문제<br/>산만 아님"] B -- 예 --> C["컨텍스트 산만"] C --> M1["어텐션 희석"] C --> M2["위치 편향 U자형"] M1 --> D["산만 임계점 초과"] M2 --> D D --> R1["빼기: 압축·요약으로<br/>유효 길이 축소"] D --> R2["재배치: 핵심을<br/>처음·끝으로"] D --> R3["재인용: 근거를<br/>맥락 가까이로"] style C fill:#e67e22,color:#fff style D fill:#e74c3c,color:#fff
6. 2026 연구가 더해준 것
2024년 Lost in the Middle이 위치 편향을 보였다면, 2026년 연구는 “길이 그 자체가 품질을 깎는다”는 산만의 본진을 더 또렷이 했다.
Context Discipline and Performance Correlation(arXiv:2601.11564)은 컨텍스트 길이를 변수로 두고 성능과 품질 저하의 상관을 분석해, 3절의 “산만 임계점”이 내용을 통제한 뒤에도 길이만으로 나타남을 다시 확인했다. 핵심은 처방 이름에 박혀 있다. ‘컨텍스트 규율(discipline)’, 즉 길이를 방치하지 말고 훈육하라는 것이다. 회의를 짧게 끊고 안건을 다시 못 박는 사회자의 역할을 에이전트 루프 안에 상시 두라는 뜻이다(02_04-개념-산만-임계점).
이 “사회자”를 실무로 구현한 사례가 Slack Engineering의 장기 에이전트 운영법이다(“Managing context in long-run agentic applications”, 2026-04-13). 핵심은 전체 메시지 히스토리를 끌고 다니지 않는 것이다. 대신 누적 이력을 그때그때 압축하는 온라인 컨텍스트 요약과, 중요한 결정만 따로 적어 두는 Director’s Journal 채널을 둔다. 4절의 포켓몬이 이력이 무거워져 원을 그리며 갇혔다가 리셋해야 풀렸다면, Slack의 처방은 리셋이 필요할 만큼 무거워지기 전에 이력을 줄곧 가볍게 유지하는 예방책이다. 5절의 “빼기와 재배치” 원칙을 프로덕션 에이전트에 박아 넣은 형태다(02_11-처방-컨텍스트-산만-완화-체크리스트). 끝없이 길어지는 회의를, 온라인 요약으로 매 라운드 회의록을 새로 압축하고 결정 일지로 핵심만 따로 보존해 깨뜨리는 셈이다.
한 줄로 정리하면, 2026년은 “길이를 훈육하라(context discipline)“는 원칙과, 전체 히스토리 대신 온라인 요약과 결정 일지로 장기 에이전트를 가볍게 유지하는 실무 패턴을 더했다.
요약·체크리스트
이 모드를 한 문단으로: 컨텍스트 산만은 끝없이 길어지는 회의와 같다. 모든 발언이 정확해도, 길어졌다는 사실만으로 사람들이 원래 안건(훈련된 추론)을 잊고 누적된 이력에 끌려다닌다. 여기엔 두 엔진이 작동한다. 토큰이 많아지면 한 표의 무게가 줄어드는 어텐션 희석, 그리고 회의록 중간을 아무도 기억 못 하는 위치 편향(U자형)이다. 모델마다 성능이 질적으로 붕괴하는 산만 임계점이 있는데, 그 선은 광고된 길이보다 훨씬 낮고 에이전트 추론에서는 더더욱 낮다. 처방은 정보를 더하는 게 아니라 빼고 재배치하는 것이다.
기억할 핵심 직관 한 줄: 산만은 “정보가 없어서”가 아니라 “정보가 너무 많아서” 흐트러진다. 다 보이는데 못 쓴다.
감별 체크리스트
- 정보가 윈도우 밖으로 밀려났나(절단), 아니면 안에 다 있는데 못 쓰나(산만)?
- 틀린 이유가 내용이 거짓(오염)인가, 단지 길어서(산만)인가? 올바른 정보만 가득해도 산만이면 산만이다
- 중요 정보가 컨텍스트 중간에 묻혀 있지 않은가? (Lost in the Middle 위험)
- 현재 입력이 해당 모델의 산만 임계점(실효 컨텍스트, 광고치의 50~65%, 에이전트는 더 낮음)을 넘었는가?
- 성능 보강 시도가 정보를 더하는 방향인가? 산만에서는 빼기와 재배치가 정답이다
관련 노트
- 02 산만 — 챕터 02 MOC: 산만 전체 지도
- 02_01-정의-컨텍스트-산만 — 정의와 핵심 직관, 검색 vs 생성적 추론
- 02_02-메커니즘-어텐션-희석 — 어텐션 희석(softmax 정규화·희소성)
- 02_03-메커니즘-위치-편향-u자형 — 위치 편향 U자형(Lost in the Middle)
- 02_04-개념-산만-임계점 — 산만 임계점과 실효 컨텍스트 갭
- 02_06-paper-lost-in-the-middle — 위치 편향의 원전 논문
- 02_11-처방-컨텍스트-산만-완화-체크리스트 — 완화 처방 체크리스트
- 09_01-감별진단-5대모드-종합비교 — 5대 모드 종합 감별
- 01 오염 — 산만과 교차하는 옆 모드(오염)