---
tags: [AI-Agent, RAG]
---

# Context Engineering

> 한정된 컨텍스트 윈도우에 무엇을, 얼마나, 어떤 순서로 넣을지 설계하는 전략.

## 핵심 개념

LLM은 입력 컨텍스트 윈도우(예: 8K~200K 토큰)가 유한하고, 토큰이 많을수록 비용·지연이 늘며 성능이 흔들린다. **컨텍스트 엔지니어링**은 검색된 청크·시스템 지시·대화 이력·도구 결과 등을 윈도우 예산 안에 **최적 배치**하는 작업이다. 프롬프트 엔지니어링이 "어떻게 말할까"라면, 컨텍스트 엔지니어링은 "무엇을 보여줄까"에 가깝다.

## 왜 중요한가

### Lost in the Middle
모델은 컨텍스트의 **처음과 끝**의 정보를 잘 활용하지만 **중간**의 정보는 놓치는 경향이 있다. 따라서 가장 중요한 근거는 앞이나 뒤에 배치하는 것이 유리하다.

### 컨텍스트 오염 / 희석
관련 없는 청크가 많이 섞이면 모델이 핵심을 못 찾고 환각이 늘어난다. 양보다 **신호 대 잡음비**가 중요하다 → [[Re-ranking]]으로 선별.

## 주요 전략

- **예산 배분**: 시스템 프롬프트 / 검색 컨텍스트 / 대화 이력 / 출력 여유분으로 토큰을 나눈다.
- **선별과 압축**: 상위 K개만 넣고(재순위), 길면 요약·핵심 추출로 압축한다.
- **순서 배치**: 중요 근거를 앞·뒤에, 보조 정보를 가운데에.
- **구조화**: 청크에 구분선·출처 헤더를 붙여 모델이 경계를 인식하게 한다 → [[Grounding]] 강화.
- **메모리 계층화**: 단기/장기 메모리를 분리해 윈도우에 필요한 것만 끌어온다([[Short Term Memory]], [[Long Term Memory]]).
- **동적 검색(에이전트)**: 한 번에 다 넣지 않고, 필요할 때 도구로 추가 정보를 가져온다.

## RAG·에이전트와의 관계

- RAG에서 컨텍스트 엔지니어링은 [[Chunking]] → 검색 → [[Re-ranking]] → 프롬프트 조립의 마지막 단계다.
- 에이전트에서는 매 턴 컨텍스트가 누적되므로, 압축·요약·메모리 관리가 장기 실행의 핵심이 된다.

## 관련 노트

- [[Chunking]]
- [[Re-ranking]]
- [[Grounding]]
- [[Memory Architecture]]
- [[Short Term Memory]]
- [[Long Term Memory]]
- [[RAG Architecture]]
