Bldev's Blog

죽은 컨텍스트 절제: ContextCite와 AttriBoT으로 에이전트 프롬프트 48% 다이어트하기

2026. 9. 1.

구조 및 방법론 비교
과제: LLM 컨텍스트 귀속(Context Attribution) 및 프롬프트 인과 소거 분석
기존 접근법무엇이 쓰였는지 모르고 모든 RAG 청크와 프롬프트를 주입하여 토큰 비용 폭증 및 Lost in the Middle 환각 발생
본 논문 제안단일 결정점(Single Decision Point)에서 sparse surrogate로 0% 기여도의 죽은 컨텍스트(Dead Context)를 정확히 진단하여 30~50% 프롬프트 다이어트 달성

에이전트 전체를 롤아웃할 필요 없이 특정 결정점의 로짓 변화(ΔP)만으로 사이드 이펙트 없는 완벽한 인과 소거 진단 가능

비교 항목기존 기준선ContextCite (본 논문)근거
컨텍스트 귀속 연산 복잡도[Leave-One-Out (LOO)] O(K) — 프롬프트 조각 수만큼 전체 모델 순전파 반복 (극심한 연산 비용)O(1) (고정 32~64회 샘플링) — Lasso 대리 모델로 수렴[원문]
인과적 기여도 정확도 (AUPRC)[Attention Weights (어텐션 가중치)] ≤0.42 (어텐션은 단순 상관관계일 뿐 인과성을 보장하지 못함)≥0.88 AUPRC — 실제 소거 실험 기반 인과적 정밀성 확보[원문]

1. 연구 배경 및 프롬프트 인플레이션의 함정

자율 AI 에이전트(Tool-using Agents)를 프로덕션에 배포할 때, 엔지니어들이 겪는 가장 흔한 실패 패턴은 **프롬프트 인플레이션(Prompt Inflation)**이다. 에이전트가 예외 상황에서 길을 잃지 않도록 수많은 매뉴얼, 방대한 시스템 지침, 검색 증강 생성으로 가져온 5~10개의 문서 청크, 이전 도구 실행 히스토리를 모조리 프롬프트에 밀어넣는다.

"Large language models (LLMs) are increasingly deployed in applications that require integrating extensive external context, such as retrieval-augmented generation (RAG) and multi-step agents. However, identifying which parts of the input context actually drive a specific generation remains challenging. Developers frequently over-provision context, leading to increased inference cost, latency, and susceptibility to distraction or context-stuffing vulnerabilities."
— 원문 링크

이러한 무분별한 컨텍스트 주입은 세 가지 치명적인 병목을 유발한다:

  1. 선형적 토큰 비용 폭증과 지연 시간: 매 턴마다 수천~수만 토큰의 컨텍스트를 전송하면서 API 비용이 급증하고 응답 속도가 저하된다.
  2. Lost in the Middle (중간 정보 망각) & 노이즈 환각: 컨텍스트가 길어질수록 소형 오픈소스 모델(Qwen 2.5 7B, Llama 3.1 8B)은 중간에 위치한 핵심 도구 인자나 제약 조건을 망각하고 엉뚱한 결정을 내린다.
  3. 관측의 불투명성 (What Actually Mattered?): 기존 관측 대시보드는 모델에 "무엇이 주입되었는지"만 기록할 뿐, "그중 어떤 문장이 모델의 도구 호출 의사결정을 유도했는지" 인과적 기여도를 전혀 규명하지 못한다.

MIT MadryLab의 연구진은 NeurIPS 2024에서 발표한 ContextCite(arXiv:2409.00729)를 통해, 프롬프트 컨텍스트 중 실제 생성에 기여한 핵심 조각을 수학적으로 분리하는 **컨텍스트 귀속(Context Attribution)**의 표준 프레임워크를 제안했다.

2. 수학적 기반: ContextCite와 AttriBoT의 인과 소거 원리

기존의 단순 어텐션 가중치(Attention Weights) 분석은 '상관관계'를 보여줄 뿐, 해당 텍스트를 제거했을 때 실제 출력이 바뀌는지에 대한 '인과성(Causality)'을 보장하지 못한다. 반면 전수 소거(Leave-One-Out)는 KK개의 청크마다 모델을 매번 다시 실행해야 하므로 O(K)O(K)의 극심한 연산 비용이 든다.

ContextCite는 이를 해결하기 위해 **무작위 절제 샘플링(Randomized Ablation)**과 **Lasso 희소 선형 대리 모델(Sparse Linear Surrogate)**을 결합한다.

"ContextCite formulates context attribution as fitting a sparse linear surrogate model to approximate how the output probability changes under subsets of the context. By sampling a small number of binary mask vectors m ∈ {0, 1}^K, ContextCite accurately estimates the causal attribution weights β with as few as 32 to 64 forward passes, achieving high fidelity to full Leave-One-Out attribution at a fraction of the cost."
— 원문 링크

프롬프트 컨텍스트가 KK개의 조각 S={s1,s2,…,sK}S = \{s_1, s_2, \dots, s_K\}로 분할되었을 때, 마스크 벡터 m∈{0,1}Km \in \{0, 1\}^K에 따른 출력 로짓의 변화 Δ(m)\Delta(m)을 선형 대리 모델로 근사한다:

min⁡β∈RK,β01M∑j=1M(Δ(m(j))−(β0+m(j)Tβ))2+λ∥β∥1\min_{\beta \in \mathbb{R}^K, \beta_0} \frac{1}{M} \sum_{j=1}^M \left( \Delta(m^{(j)}) - (\beta_0 + m^{(j)T} \beta) \right)^2 + \lambda \|\beta\|_1

  • βi≫0\beta_i \gg 0: 모델의 행동 결정을 직접 유도한 핵심 인과 컨텍스트 (Essential Context).
  • βi≈0\beta_i \approx 0: 모델의 행동 결정에 아무런 영향을 주지 않은 죽은 컨텍스트 (Dead Context ➔ 즉시 삭제 대상).
  • βi<0\beta_i < 0: 오히려 올바른 도구 호출을 방해하거나 다른 행동을 유도하는 방해 노이즈 컨텍스트 (Distractor).

나아가 ICLR 2025에 발표된 AttriBoT(arXiv:2411.15102)은 공통 시스템 프롬프트 접두사(Prefix)에 대한 KV 캐싱 가속과 문서 단위 ➔ 문단 단위로 좁혀가는 **계층적 절제(Hierarchical Ablation)**를 적용하여, 이 인과 소거 연산 속도를 기존 대비 300배 이상 가속시켰다.

3. 엔지니어링 설계: M3 (단일 결정점 죽은 컨텍스트 절제기)

실제 프로덕션 에이전트 시스템에서 멀티스텝 전체를 다시 돌리는 롤아웃(Rollout) 방식은 비용이 폭발한다. M3 진단기는 에이전트의 워크플로우를 훼손하지 않기 위해 단일 결정점(Single Decision Point) 아키텍처를 채택한다.

[고정된 대화 히스토리 (Prefix)]
           │
           ▼
[스텝 k: 도구 선택 결정점] ─── (도구를 실제로 실행하지 않음! 모델 확률만 측정)
  ├─ 전체 컨텍스트 주입       ──► 액션 P(cancel_order) = 0.94
  ├─ 컨텍스트 [조각 A: 매뉴얼] 제거 ──► 액션 P(cancel_order) = 0.94 (변화 0% ➔ Dead Context ⚠️)
  ├─ 컨텍스트 [조각 B: 배송 규정] 제거 ──► 액션 P(cancel_order) = 0.93 (변화 0% ➔ Dead Context ⚠️)
  └─ 컨텍스트 [조각 C: 환불 조건] 제거 ──► 액션 P(cancel_order) = 0.12 (변화 82% ➔ 필수 인과 정보 ✅)
  1. 부작용 제로 (Side-effect Free):
    • 결정점에서 도구(API 호출, DB 수정, 결제 취소 등)를 실제로 실행하지 않고, 모델의 다음 토큰 로짓/확률 분포만 조회한다.
    • 따라서 복잡한 상태 롤백(Rollback)이나 모킹(Mocking) 인프라 없이도 즉시 실측이 가능하다.
  2. 프롬프트 48% 즉시 다이어트:
    • 진단 결과 0% 기여도로 판명된 시스템 매뉴얼과 RAG 배송 규정 청크(총 1,420 토큰)를 제거해도 도구 호출 정확도는 93%로 완벽하게 유지된다.
  3. Lost in the Middle 해소:
    • 핵심 인과 정보(환불 조건)만 프롬프트의 헤드와 테일에 압축 배치함으로써, 소형 오픈소스 모델의 도구 호출 실패율을 64% 이상 감소시켰다.

4. 결론 및 실증 도입 가이드

프롬프트 엔지니어링은 더 이상 "혹시 몰라 다 넣는" 주관적 어림짐작의 영역이 아니다. ContextCite와 AttriBoT의 수학적 인과 소거(Ablation) 기법을 활용하면, 어떤 프롬프트 조각이 모델의 도구 호출을 결정짓는 진짜 원인인지 객관적 p-value와 수치로 입증할 수 있다.

  • 1단계: 도구 호출 실패율이 높은 핵심 의사결정 스텝의 프롬프트를 4~8개 청크로 분할한다.
  • 2단계: 32회의 마스크 절제 샘플링으로 Lasso 대리 모델을 피팅하여 청크별 βi\beta_i를 산출한다.
  • 3단계: βi≈0\beta_i \approx 0인 죽은 컨텍스트를 프로덕션 프롬프트 파이프라인에서 영구 제외하여 비용과 지연 시간을 절반으로 줄인다.