상위: 01_00_MOC


한줄 요지

컨텍스트 오염(Context Poisoning)은 환각이나 오류가 에이전트의 컨텍스트(목표·요약·메모리)에 한번 기록된 뒤 “신뢰된 선례”로 거듭 참조되면서 피드백 루프를 이루는 현상이다. 단순 환각과 달리 영속성과 자기 강화(self-reinforcing) 특성을 띤다.


1. 공식 정의 — Breunig 2025 원문

David Breunig은 2025년 6월 22일 “How Long Contexts Fail (and How to Fix Them)“에서 컨텍스트 오염을 다음과 같이 정의한다.

“Context Poisoning is when a hallucination or other error makes it into the context, where it is repeatedly referenced.”

— David Breunig, How Long Contexts Fail (and How to Fix Them), 2025-06-22

이 정의는 세 요소로 나눠 볼 수 있다.

  1. 진입(Entry): 환각이나 오류가 컨텍스트에 기록된다.
  2. 반복 참조(Repeated Reference): 이후 추론 사이클이 그 오류를 근거로 삼는다.
  3. 영속화(Persistence): 오류가 맥락 전반으로 굳어진다.

Elasticsearch Labs의 Tomás Murúa(2026-02-10)는 운영 관점에서 이 현상을 좀 더 넓게 정의한다.

“Context poisoning occurs when compromised, outdated, or irrelevant information enters an LLM’s context window, leading to degraded responses, hallucinations, or perpetuated errors.”

— Tomás Murúa, Context Poisoning in LLMs: Defense Through Context Engineering, Elasticsearch Labs, 2026-02-10


2. 단순 환각 vs 컨텍스트 오염 — 결정적 차이

컨텍스트 오염은 환각(hallucination)이 맞는 특수한 운명이다. 모든 오염은 환각에서 비롯되지만, 모든 환각이 오염으로 이어지지는 않는다.

구분단순 환각컨텍스트 오염
발생 위치출력(output)컨텍스트(context) 기록
지속성일시적 (해당 응답에 국한)영속적 (이후 추론에 누적 영향)
피드백 루프없음있음 — 오류가 새 오류를 생성
탐지 난이도중간 (출력 확인으로 발견 가능)높음 (컨텍스트 역추적 필요)
복구 방법해당 응답 재생성컨텍스트 정화 또는 재초기화

컨텍스트에 기록된 오류는 이후 추론이 그것을 “확인된 사실”로 취급하면서 점점 강화된다. 이것이 피드백 루프(feedback loop), 또는 스노우볼 효과(snowball effect)다.

flowchart LR
    A["추론 사이클 N<br/>(환각 발생)"] -->|컨텍스트 기록| B["오염된 컨텍스트<br/>(goals / summary / memory)"]
    B -->|반복 참조| C["추론 사이클 N+1<br/>(오염 기반 추론)"]
    C -->|새 오류 기록| B
    C --> D["추론 사이클 N+2<br/>(오염 심화)"]
    D -->|누적 강화| B

    style B fill:#ff6b6b,color:#fff

3. 컨텍스트 실패 4유형 — Breunig 전체 분류표

Breunig(2025)은 컨텍스트 오염을 포함한 네 가지 실패 모드를 분류한다. 지금까지 나온 컨텍스트 실패 정리 가운데 가장 체계적인 틀에 속한다.

#유형정의핵심 메커니즘
1Context Poisoning환각 또는 오류가 컨텍스트에 기록되어 반복 참조됨피드백 루프, 스노우볼 효과
2Context Distraction누적 컨텍스트가 너무 길어져 모델이 훈련 지식보다 컨텍스트 이력에 과도하게 의존100k 토큰 임계 이후 반복 행동 편향
3Context Confusion불필요한 콘텐츠(도구 정의, 문서)가 응답 품질을 저하모델은 컨텍스트에 있는 모든 것에 주의를 기울여야 함
4Context Clash컨텍스트 내 상충하는 정보들이 추론을 방해초기 가정에 과도하게 의존, 오류에서 회복 불가

각 유형의 정의를 원문으로 확인한다.

Context Distraction: “When a context grows so long that the model over-focuses on the context, neglecting what it learned during training.”

Context Confusion: “When superfluous content in the context is used by the model to generate a low-quality response.”

Context Clash: “When you accrue new information and tools in your context that conflicts with other information in the context.”

3-1. 유형 간 교차 사례 — Poisoning이 Distraction을 유발하는 패턴

네 유형은 서로 독립적이지 않다. 그중에서도 Poisoning → Distraction 교차는 에이전트 환경에서 자주 관찰된다.

  1. 환각이 목표 목록(goals list)에 기록된다(Poisoning 발생).
  2. 오염된 목표를 향한 무의미한 행동이 컨텍스트를 채우기 시작한다.
  3. 컨텍스트가 100k 토큰을 넘어서면 모델이 이력 반복에 갇힌다(Distraction 발생).
  4. 새 계획을 세우는 대신 같은 행동을 되풀이한다.

Gemini 2.5 포켓몬 에이전트 사례가 이 교차를 잘 보여준다. 자세한 내용은 4절에서 다룬다.

flowchart TD
    P["Context Poisoning<br/>오류가 목표에 기록됨"] --> D["Context Distraction<br/>오염된 이력이 누적됨"]
    D --> loop["모델이 새 계획 대신<br/>과거 행동을 반복"]
    P -.->|동시 발생 가능| C["Context Confusion<br/>불필요한 도구 호출"]
    P -.->|동시 발생 가능| CL["Context Clash<br/>오염된 목표 ↔ 실제 상황 충돌"]

    style P fill:#e74c3c,color:#fff
    style D fill:#e67e22,color:#fff

4. 1차 문헌으로서의 Gemini 2.5 기술보고서 — “context poisoning” 최초 명시

4-1. 배경: Gemini Plays Pokémon 실험

Google DeepMind는 Gemini 2.5 Pro를 에이전트로 삼아 포켓몬 레드/블루(Game Boy 원작 게임)를 플레이하는 장기 실험(“Gemini Plays Pokémon”, GPP)을 진행했다. 장기 에이전트 행동을 실제 환경에서 관찰한 일종의 자연 실험이라는 점에서 의미가 있다.

Gemini 2.5 기술보고서(Google DeepMind, 2025)는 이 실험에서 관찰된 현상을 서술하면서 “context poisoning”이라는 용어를 명시적으로 쓴 주요 1차 문헌이다.

4-2. TEA 아이템 사례 — 오염의 기원

포켓몬 레드/블루에서 플레이어는 자동판매기 음료(FRESH WATER, SODA POP, LEMONADE)를 목마른 경비원에게 건네야 길을 통과할 수 있다. 반면 리메이크작인 파이어레드/리프그린에서는 원작에 없는 특수 아이템 “TEA”를 쓴다. 파이어레드 지식이 훈련 데이터에 들어 있던 Gemini 2.5 Pro는 원작 게임에 존재하지도 않는 TEA를 구해야 한다는 환각을 일으켰다.

“Gemini 2.5 Pro at several points was deluded into thinking that it had to retrieve the TEA in order to progress, and as a result spent many, many hours attempting to find the TEA or to give the guard TEA.”

— Gemini 2.5 Technical Report, Google DeepMind, 2025 (p.70)

이 환각이 목표 목록에 기록된 순간 컨텍스트 오염이 시작됐다.

4-3. 보고서 원문 직접 인용

“An especially egregious form of this issue can take place with ‘context poisoning’ – where many parts of the context (goals, summary) are ‘poisoned’ with misinformation about the game state, which can often take a very long time to undo. As a result, the model can become fixated on achieving impossible or irrelevant goals.”

— Gemini 2.5 Technical Report, Google DeepMind, 2025 (p.70)

“These delusions, though obviously nonsensical to a human (‘Let me try to go through the entrance to a house and back out again. Then, hopefully the guard who is blocking the entrance might move.’), by virtue of poisoning the context in many places, can lead the model to ignore common sense and repeat the same incorrect statement.”

— Gemini 2.5 Technical Report, Google DeepMind, 2025 (p.70)

“Context poisoning can also lead to strategies like the ‘black-out’ strategy (cause all Pokémon in the party to faint, ‘blacking out’ and teleporting to the nearest Pokémon Center and losing half your money, instead of attempting to leave).”

— Gemini 2.5 Technical Report, Google DeepMind, 2025 (p.70)

4-4. 관찰된 행동 패턴 요약

  • 목표 고착(goal fixation): 불가능하거나 존재하지 않는 목표(TEA 아이템)를 수백 턴 동안 추구한다.
  • 블랙아웃 전략(black-out strategy): 파티 포켓몬을 전부 기절시켜 포켓몬 센터로 강제 이동하는 비합리적 행동을 반복한다. 탈출 경로를 찾는 대신 일부러 역행하는 셈이다.
  • 도구 망각: 스트레스 상황에서 pathfinder 도구 사용을 아예 잊어버린다.
  • 상식 무력화: “집 입구로 들어갔다 나오면 경비원이 움직일 것”처럼 명백히 비합리적인 진술을 되풀이한다.
  • 복구 난이도: “can often take a very long time to undo”라는 표현대로, 오염이 깊어지면 되돌리는 데 아주 긴 시간이 든다.

이 사례가 특히 중요한 까닭은, 오염 현상이 트위치 채팅 시청자들마저 따로 알아챌 만큼 반복적이고 눈에 띄었다는 데 있다. 한 세션에서 우연히 난 오류가 아니라 구조적으로 되풀이되는 패턴이었던 것이다.


5. RAG 운영 관점의 5가지 발생 패턴 — Murúa / Elasticsearch Labs

Tomás Murúa(Elasticsearch Labs, 2026-02-10)는 Breunig의 이론적 분류와 달리 RAG 운영 현장에서 실제로 나타나는 오염 패턴을 다섯 가지로 나눈다. 엔지니어링 관점에서 한층 실용적인 진단 틀이다.

#패턴정의Breunig 유형 대응
1Context Rot (컨텍스트 부패)갱신 없이 지속되는 오래된 데이터Context Poisoning (시간적 오염)
2Context Overflow (컨텍스트 범람)과도한 정보로 인한 집중력 희석Context Distraction과 유사
3Conflicting Information (상충 정보)복수 출처의 모순된 데이터Context Clash와 유사
4Semantic Noise (의미론적 잡음)벡터 유사도는 높으나 맥락적으로 무관한 콘텐츠Context Confusion과 유사
5Malicious Injection (악성 주입)의도적으로 삽입된 적대적 콘텐츠Poisoning의 적대적 형태

5-1. Murúa vs Breunig 비교

두 분류 체계는 보는 각도가 다르다.

  • Breunig: 에이전트 컨텍스트의 인지적 실패 모드를 본다. 컨텍스트가 에이전트의 추론을 어떻게 망가뜨리는가.
  • Murúa: RAG 파이프라인의 데이터 품질을 본다. 어떤 잘못된 데이터가 컨텍스트로 흘러드는가.

두 체계는 서로를 보완한다. Murúa의 분류가 “오염 소스(source)“를 진단한다면, Breunig의 분류는 “오염 효과(effect)“를 분석한다.

flowchart LR
    subgraph Murua["Murúa — 오염 소스 분류"]
        rot["Context Rot"]
        overflow["Context Overflow"]
        conflict["Conflicting Info"]
        noise["Semantic Noise"]
        inject["Malicious Injection"]
    end

    subgraph Breunig["Breunig — 오염 효과 분류"]
        P["Context Poisoning"]
        D["Context Distraction"]
        C["Context Confusion"]
        CL["Context Clash"]
    end

    rot --> P
    inject --> P
    overflow --> D
    noise --> C
    conflict --> CL

    style P fill:#e74c3c,color:#fff

5-2. Murúa의 핵심 인사이트

“Large context windows don’t eliminate the need for precision; they amplify it.”

“context engineering isn’t about providing more information but about providing the right information.”

이 두 문장은 컨텍스트 오염 문제의 역설을 짚는다. 맥락 창이 클수록 오염될 공간도 넓어지고, 잘못된 정보가 그 안에 “파묻혀” 탐지를 피해 갈 여지도 함께 커진다.


6. 오염의 피드백 루프 메커니즘 — 왜 영속화되는가

6-1. LLM의 컨텍스트 처리 구조적 특성

지금의 LLM 아키텍처는 컨텍스트를 처리할 때 세 가지 구조적 특성을 갖는다.

  1. 출처 추적 부재(No Provenance Tracking): 각 토큰이 어떤 도구 호출이나 외부 문서, 혹은 에이전트 자신의 추론에서 나왔는지 기록하지 않는다.
  2. 반복 빈도 가중치(Frequency Weighting): 컨텍스트 안에서 자주 등장하는 정보일수록 어텐션(attention)이 높아진다. 오염된 정보도 반복 참조될수록 더 단단한 “신뢰된 사실”로 굳는다.
  3. 위치 편향(Positional Bias): 컨텍스트 앞부분(초기 목표 설정)에 적힌 정보는 이후 추론 전반에 큰 영향을 미친다.

6-2. 자기 강화 루프 — 3단계 악화

오염된 정보가 요약(summary)에 섞여 들어가면 다음과 같은 루프가 돌기 시작한다.

  1. 오염된 정보 → 요약 포함: 요약이 다음 컨텍스트 세그먼트로 넘어간다.
  2. 요약 → 추론 기반: 다음 추론이 그 요약을 근거로 새 추론을 만든다.
  3. 새 추론 → 재기록: 그 추론이 다시 요약과 메모리에 기록된다.

Gemini 기술보고서의 “can often take a very long time to undo”는 이 루프가 얼마나 깊이 포개질 수 있는지를 보여준다. 오염이 요약 레이어에 자리 잡으면, 요약을 다시 쓰지 않는 한 사이클마다 거듭 재주입된다.

6-3. 오염 지점 역추적의 어려움

에이전트가 다단계 작업(multi-step task)을 수행하면 컨텍스트에는 수십에서 수백 번에 이르는 도구 호출 결과와 중간 요약, 목표 업데이트가 뒤섞인다. 오염이 어디서 언제 들어왔는지 되짚으려면 전체 컨텍스트 로그를 일일이 분석해야 하지만, 대다수 에이전트 프레임워크는 이런 audit trail을 구조적으로 제공하지 않는다.


7. Murúa의 RAG 방어 9가지 실천

Elasticsearch Labs는 컨텍스트 오염에 맞서는 운영 레벨 방어책을 제시한다. 각 방법은 Breunig의 네 가지 실패 유형에 짝지어 대응한다.

방어 방법대응 오염 패턴
시간 기반 필터링 (range query, now-6M)Context Rot
메타데이터 부스팅 (버전/배포환경 가중치)Conflicting Information
하이브리드 검색 (어휘 + 의미 + RRF)Semantic Noise
리랭킹 (reranking)Semantic Noise, Context Confusion
전략적 청킹 (granularity ↔ context 균형)Context Overflow
LLM 전달 전 명시적 필터 (제품/카테고리/도메인)Malicious Injection, Noise
검색 볼륨 조정Context Overflow
요약 적용Context Overflow
모니터링 및 반복 개선전체 패턴

8. 논쟁점 — 환각과 오염의 경계

컨텍스트 오염 개념에서 가장 핵심적인 논쟁은 “환각과 오염의 경계는 어디인가”다.

입장 A: 오염은 환각의 서브셋이다. 환각이 컨텍스트 기록이라는 경로를 거쳐 영속화된 경우를 오염이라 부를 뿐이니, 별개 분류가 아니라 환각 연구의 연장선이라는 견해다.

입장 B: 오염은 환각과 질적으로 다른 현상이다. 환각은 모델의 파라메트릭 지식 문제이고, 오염은 에이전트 시스템 설계 문제라는 견해다. 환각을 완벽히 없앤다 해도, 외부 공격(악성 주입)이나 잘못된 추론이 컨텍스트에 기록되는 구조적 취약성은 그대로 남는다.

지금 컨텍스트 엔지니어링 분야의 주류 시각은 입장 B에 가깝다. Breunig의 네 분류가 오염을 독립된 실패 모드로 다룬다는 점이 그 방증이다.


9. 미해결 과제

  • 오염된 컨텍스트를 자동으로 탐지하는 표준 방법론이 없다. 지금은 수동 로그 분석이나 외부 검증 LLM에 기대고 있다.
  • 컨텍스트 안 각 정보에 신뢰 점수(trust score)를 매기는 메커니즘이 아직 무르익지 않았다.
  • 다중 에이전트(multi-agent) 환경에서 에이전트 사이로 오염이 번지는 경로 연구가 부족하다.
  • 출처 추적(provenance tracking) 없이는 오염 지점을 되짚는 일 자체가 구조적으로 불가능하다. 에이전트 프레임워크 차원의 설계 변경이 필요하다.
  • “컨텍스트 오염”이라는 용어는 Gemini 2.5 보고서에서 처음 명시적으로 쓰인 뒤 빠르게 퍼지고 있지만, 그 범위(적대적 오염을 포함하는지 등)를 둘러싼 학술적 합의는 아직 형성 중이다.

관련 노트


참고문헌