상위: 06_00_MOC
Compress 전략 — 요약 · 프루닝 · KV-캐시 최적화 · 압축 전용 LLM
한 줄 정의
Compress 전략은 요약, 프루닝, KV-캐시 최적화로 작업에 꼭 필요한 토큰만 남기는 전략이다. 컨텍스트 과부하와 02 산만(100K 토큰 임계)를 곧바로 해결하면서 프로덕션 비용을 최대 10배까지 줄인다.
“Anything beyond 100,000 tokens triggered agents to repeat prior actions rather than generate novel solutions.” — Drew Breunig, 2025
왜 Compress인가 — 동기
에이전트 실행이 길어지면 두 갈래의 비용이 급등한다.
- 성능 비용: 100K 토큰을 넘기면 모델이 새로운 합성 대신 반복을 택하는 “Context Distraction”이 나타난다(02 산만).
- 경제적 비용: KV-캐시가 미적중하면 적중 때보다 비용이 10배로 뛴다.
Compress 전략은 토큰 자체를 줄이거나, 캐시가 유지되도록 컨텍스트 구조를 안정화해 이 두 문제를 함께 푼다.
flowchart TD LONG["긴 컨텍스트<br/>(과부하·비용 위험)"] --> C1 & C2 & C3 & C4 C1["컨텍스트 요약<br/>Context Summarization"] C2["컨텍스트 프루닝<br/>Context Pruning"] C3["압축 전용 LLM<br/>Compressor Agent"] C4["KV-캐시 최적화<br/>Cache Preservation"] C1 --> OUT["압축된 컨텍스트<br/>(성능 ↑, 비용 ↓)"] C2 --> OUT C3 --> OUT C4 --> OUT
1. 컨텍스트 요약 (Context Summarization)
1-1. Claude Code auto-compact
컨텍스트 창이 95%를 넘으면 전체 에이전트 궤적(user-agent interaction trajectory)을 자동으로 요약·압축한다(LangChain, 2025).
- 입력: 수백 턴에 걸친 전체 에이전트-사용자 상호작용
- 출력: 핵심 결정·이벤트·현재 상태를 담은 압축 요약
- 트리거: 컨텍스트 창 95% 도달 시 자동
1-2. 요약 유형
| 유형 | 설명 | 적용 시점 |
|---|---|---|
| 재귀 요약 (Recursive) | 이전 요약을 다시 요약하는 다단계 압축 | 매우 긴 실행 |
| 계층 요약 (Hierarchical) | 구조화된 계층별 압축 | 복잡한 태스크 |
| 포인트 삽입 요약 | 특정 시점(예: 검색 결과 직후) 후처리 | 토큰 집약적 도구 출력 |
1-3. 전략적 적용 지점
LangChain(2025)이 정리한 요약의 최적 삽입점:
- 도구 출력(검색 결과, 코드 실행 결과) 직후 후처리
- 서브에이전트 간 컨텍스트 인계 시점
- 주기적 궤적 요약 (정기 압축)
2. 컨텍스트 프루닝 (Context Pruning)
2-1. Provence Pruning
무관한 정보를 걷어내되 전체 컨텍스트의 95%를 삭제한 뒤에도 핵심 정보를 지키는, 질문-응답에 특화된 pruning 기법이다(Breunig, 2025).
- 사용 도구: Provence (QA 특화 context pruning 모델)
- 효과: 95% 토큰 삭제 후에도 정답 보존
2-2. 하드코딩 휴리스틱 Trim
단순하지만 효과적인 방법:
- 대화 목록에서 오래된 메시지 삭제
- 도구 출력에서 반복 패턴 제거
- 형식 토큰(마크업, 들여쓰기 과잉 등) 제거
2-3. 학습형 토큰레벨 압축 (LLMLingua 계열)
앞의 요약·프루닝과 달리 LLMLingua 계열(LLMLingua, LongLLMLingua, LLMLingua-2 — Microsoft, arXiv:2310.05736)은 소형 언어모델의 perplexity(혼란도)를 신호 삼아 개별 토큰을 직접 제거한다. 소형 LM이 보기에 “예측 가능해서 정보량이 낮은” 저정보 토큰을 떨어내고, 예측하기 어려운 고정보 토큰만 남기는 방식이다. 이렇게 프롬프트를 2~20배 압축해도 다운스트림 성능은 유지되며, 압축 결과가 사람 눈에는 비문(非文)처럼 보여도 LLM은 이를 복원해 활용한다. LLMLingua-2는 GPT-4로 만든 데이터로 토큰 보존과 삭제를 이진 분류로 학습시켜, 양방향(BERT 계열) 인코더가 빠르게 압축하도록 발전했다.
핵심은 압축이 작동하는 층위(層位)가 서로 다르다는 데 있다. 요약은 의미를 다시 쓰고, 추출 프루닝은 문장이라는 단위를 통째로 고르며, LLMLingua는 토큰 단위로 깎아낸다.
| 기법 | 작동 단위 | 메커니즘 | 산출물 형태 |
|---|---|---|---|
| 요약 (Summarization) | 의미 | LLM이 핵심을 재서술(rewrite) | 사람이 읽을 수 있는 새 문장 |
| 추출 프루닝 (Extractive Pruning) | 문장·청크 | 관련도 높은 단위를 선택(select) | 원문 일부의 부분집합 (Provence 등) |
| 토큰레벨 압축 (LLMLingua) | 토큰 | 소형 LM perplexity로 저정보 토큰 삭제(drop) | 압축된 토큰열(사람엔 비문, LLM엔 유효) |
메커니즘 차이 요지: 요약 = 의미 재서술, 추출 프루닝 = 단위 선택, LLMLingua = perplexity 기반 토큰 삭제. 셋 다 “토큰을 줄인다”는 목표는 같지만 무엇을 단위로, 무엇을 신호로 줄이는가가 다르다. “압축 = 요약본”은 이 중 하나일 뿐이다.
gist tokens (Mu et al., 2023, arXiv:2304.08467)는 긴 프롬프트를 소수의 학습된 “gist(요지) 토큰” 활성값으로 증류해 KV로 캐싱하는 학습형 압축이다. 토큰을 고르거나 지우는 대신 모델 내부 표현으로 압축한다는 점에서 LLMLingua와 결이 다르다.
3. 압축 전용 LLM — Cognition의 접근
Walden Yan(Cognition/Devin, 2025)은 긴 작업을 감당하려고 히스토리 압축에 특화된 별도 LLM을 두자고 제안한다.
“We introduce a new LLM model whose key purpose is to compress a history of actions & conversation into key details, events, and decisions. This is hard to get right.” — Walden Yan, Cognition, 2025
flowchart LR MAIN["Main Agent<br/>(전체 히스토리 보유)"] -->|"컨텍스트 초과 시"| COMP COMP["Compressor LLM<br/>(히스토리 → 핵심 압축)<br/>파인튜닝 가능"] -->|"핵심 압축 반환"| MAIN MAIN -->|"압축된 컨텍스트로 계속 실행"| NEXT["다음 태스크"]
핵심 과제는 무엇을 버릴지 결정하는 일이다. Yan의 주장은 이렇다.
- 일반 LLM으로는 제대로 해내기 어렵다(“hard to get right”).
- 도메인 특화 소형 모델을 파인튜닝하는 편이 효과적이며, 실제로 Cognition이 그렇게 했다.
- 범용 요약보다 도메인 특화 압축이 낫다.
요컨대 압축은 단순한 요약이 아니라 도메인 지식이 받쳐줘야 하는 정밀 작업이다.
4. KV-캐시 최적화 — Manus의 경제적 핵심 전략
KV-캐시(Key-Value Cache)는 트랜스포머의 어텐션 계산 결과를 재사용해 반복 토큰 처리 비용을 절감하는 메커니즘이다. Manus는 이를 가장 중요한 단일 지표로 꼽는다.
“The KV-cache hit rate is the single most important metric for a production-stage AI agent.” — Yichao ‘Peak’ Ji, Manus, 2025
4-1. 비용 구조
| 상태 | Claude Sonnet 기준 비용 |
|---|---|
| 캐시 적중 (Cache Hit) | $0.30/MTok |
| 캐시 미적중 (Cache Miss) | $3.00/MTok |
| 차이 | 10배 |
입출력 토큰 비율이 100:1로 입력이 압도적인 Manus의 환경에서는 이 전략의 경제적 효과가 극대화된다.
4-2. KV-캐시 보존 4원칙
flowchart TD P1["1. 시스템 프롬프트 앞부분 안정화<br/>타임스탬프 등 가변 요소 금지"] P2["2. Append-Only 컨텍스트<br/>과거 액션·관측 절대 수정 금지"] P3["3. 결정론적 직렬화<br/>JSON 필드 순서 고정 등"] P4["4. 도구 목록 고정<br/>+ 로짓 마스킹(Logit Masking)으로<br/>가용성 관리 (디코딩 단계)"] P1 --> P2 --> P3 --> P4 P4 --> RESULT["KV-캐시 히트율 최대화<br/>비용 최대 10× 절감"]
원칙 1 — 시스템 프롬프트 앞부분 안정화 캐시는 프롬프트의 접두사(prefix)가 같을 때 적중한다. 타임스탬프나 동적 사용자 ID처럼 변하는 요소를 시스템 프롬프트 앞부분에 넣으면 요청마다 캐시가 깨진다.
원칙 2 — Append-Only 컨텍스트 과거 액션과 관측값은 손대지 않고 새 내용만 끝에 덧붙인다. 중간 내용이 바뀌면 그 뒤의 캐시가 전부 무효가 된다.
원칙 3 — 결정론적 직렬화 JSON 필드 순서, 공백, 줄바꿈을 늘 똑같이 맞춘다. 의미가 같아도 직렬화 형태가 달라지면 캐시가 미적중한다.
원칙 4 — 로짓 마스킹 (Logit Masking) 도구 목록을 컨텍스트에서 그때그때 빼는 대신, 디코딩 단계에서 특정 토큰의 logit 점수를 억눌러 도구 가용성을 관리한다. 컨텍스트 자체를 건드리지 않으므로 KV-캐시가 보존된다.
주의 — 로짓 마스킹의 한계: 디코딩 단계 개입이 필요해 서버사이드 구현이 전제된다.
logit_bias같은 API 파라미터가 없는 폐쇄형 환경에서는 사용이 제한된다.
5. Context Distraction 임계값 (100K 토큰)
Breunig(2025)이 정의한 핵심 임계는 다음과 같다.
“Context Distraction occurs beyond 100,000 tokens where models favor repetition over novel synthesis.”
| 구간 | 모델 행동 |
|---|---|
| 100K 토큰 미만 | 새로운 합성(novel synthesis) |
| 100K 토큰 초과 | 반복(repetition) 선호 |
이 100K 임계값이 Compress 전략의 주요 트리거다. 에이전트 실행이 이 값에 다가서면 곧바로 요약·프루닝을 걸어야 한다.
6. Compress가 막는 실패모드
| 실패모드 | Compress 기법 | 메커니즘 |
|---|---|---|
| 과부하 (Overload) | auto-compact 95% | 절삭 전 요약으로 컨텍스트 축소 |
| 산만 (Distraction) | 100K 토큰 이전 pruning | Context Distraction 임계 예방 |
| 오염 (Poisoning) | Provence 95% pruning | 무관·유해 토큰 선제 제거 |
| 암묵적 결정 분산 | 압축 전용 LLM | 에이전트 경계에서 핵심 결정 보존 |
| KV-캐시 파괴 | Append-only + 직렬화 고정 | 캐시 보존으로 10배 비용 절감 |
참고문헌
- Context Engineering for Agents — The LangChain Team, 2025, LangChain Blog
- Don’t Build Multi-Agents — Walden Yan, 2025, Cognition Blog
- Context Engineering for AI Agents: Lessons from Building Manus — Yichao ‘Peak’ Ji, 2025, Manus Blog
- How to Fix Your Context — Drew Breunig, 2025, dbreunig.com
- LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models — Jiang et al., Microsoft, 2023, arXiv:2310.05736 (LLMLingua / LongLLMLingua / LLMLingua-2)
- Learning to Compress Prompts with Gist Tokens — Mu, Li & Goodman, 2023, arXiv:2304.08467
관련 노트
- 06_07-Manus-KV캐시-파일시스템-교훈 — KV-캐시 최적화의 실전 전체 전략
- 06_06-멀티에이전트-반대-Cognition-DontBuild — 압축 전용 LLM의 출처 Cognition
- 06_09-실패모드-전략-매핑표 — Compress가 막는 실패모드 전체 매핑
- 02 산만 — 100K 토큰 임계의 상세 메커니즘
- 05 부패 — KV-캐시 파괴와 부패의 연결