WIKI
Context Engineering
Context Engineering
긴 대화와 작업에서 어떤 정보를 모델 컨텍스트에 유지할지 설계하는 방법은 무엇인가.
Scope
핵심 질문
Context Engineering은 LLM에게 어떤 정보를 어떤 순서와 형식으로 제공할지 어떻게 설계하는가?
포함 범위
- system instruction
- 사용자 요청
- 검색·도구 결과
- working memory
- 정보 우선순위와 선택
- 컨텍스트 오염
제외 범위
- 단순한 prompt 문구 작성법
- 특정 모델의 숨겨진 프롬프트
Research
핵심 근거
- LLM의 출력은 모델 파라미터뿐 아니라 현재 컨텍스트에 강하게 의존한다.
- 긴 컨텍스트에 정보를 많이 넣는 것 자체가 품질을 보장하지 않으며 관련성 낮은 정보는 오히려 판단을 방해할 수 있다.
- retrieval과 structured state는 필요한 시점에 필요한 정보만 제공하는 핵심 수단이다.
참고 자료
- Lewis et al., Retrieval-Augmented Generation: https://arxiv.org/abs/2005.11401
- Liu et al., Lost in the Middle: https://arxiv.org/abs/2307.03172
Draft
Context Engineering은 LLM에게 어떤 정보를 보여주고, 어떤 정보는 제외하며, 필요한 정보를 어떤 시점에 다시 불러올지 설계하는 작업이다.
Prompt Engineering이 한 번의 지시문 표현에 초점을 두는 경우가 많다면 Context Engineering은 모델이 작업하는 전체 정보환경을 다룬다.
모델은 현재 컨텍스트로 일한다
LLM은 요청을 처리할 때 모델 파라미터와 현재 입력 컨텍스트를 함께 사용한다.
같은 모델이라도 관련 파일, 이전 결정, 도구 결과가 정확히 제공되면 좋은 답을 만들 수 있고, 잘못된 파일이나 오래된 지시가 섞이면 성능이 크게 떨어질 수 있다.
그래서 Agent 시스템에서는 모델 교체만큼 컨텍스트 구성이 중요하다.
컨텍스트의 구성요소
실제 시스템의 컨텍스트에는 여러 종류의 정보가 들어간다.
- 시스템 규칙
- 현재 사용자 요청
- 최근 대화
- 검색된 문서
- 코드나 파일
- 도구 실행 결과
- 작업 상태
- 과거 결정의 요약
이들을 모두 같은 중요도로 다뤄서는 안 된다.
관련성이 가장 중요하다
컨텍스트 윈도우가 충분히 크다고 해서 가능한 모든 문서를 넣는 것은 좋은 전략이 아니다.
무관한 정보가 많으면 모델이 어떤 근거를 우선해야 하는지 판단하기 어려워지고, 긴 입력의 중간 부분에 중요한 사실이 묻힐 수도 있다.
좋은 Context Engineering은 '얼마나 많이 넣느냐'보다 '지금 결정에 필요한 것을 정확히 넣느냐'에 가깝다.
Retrieval
외부 문서가 많다면 필요한 부분만 검색해 가져오는 retrieval이 유용하다.
검색에는 keyword search, vector search, 구조화된 질의, 파일 경로 규칙 등 여러 방법이 있다. 중요한 것은 검색결과가 모델에게 실제 질문과 함께 전달되고, 필요하면 원문 위치를 다시 확인할 수 있어야 한다는 점이다.
Working State
긴 작업에서는 대화 로그 전체보다 현재 상태가 더 중요할 수 있다.
예를 들어 코딩 Agent라면 현재 목표, 수정한 파일, 실패한 테스트, 아직 남은 TODO를 짧은 구조로 유지하면 과거 수백 턴보다 실용적이다.
컨텍스트 오염
오래된 요구사항, 이미 폐기된 계획, 중복된 문서가 계속 들어오면 모델이 잘못된 조건을 따라갈 수 있다.
따라서 컨텍스트에는 수명주기가 필요하다. 새 결정이 이전 결정을 대체하면 이전 정보를 제거하거나 명시적으로 폐기 상태로 표시해야 한다.
Prompt Engineering과의 차이
Prompt Engineering은 Context Engineering의 일부라고 볼 수 있다.
좋은 문장을 쓰는 것도 중요하지만, 모델이 필요한 사실을 받지 못했다면 프롬프트만 정교하게 만들어도 해결되지 않는다.
반대로 관련 정보가 잘 정리돼 있으면 비교적 간단한 지시로도 안정적인 결과를 얻을 수 있다.
핵심
Context Engineering은 모델의 작업공간을 설계하는 일이다. 필요한 정보의 선택, 검색, 상태보존, 압축, 우선순위와 폐기정책을 함께 다루며 장기 Agent에서는 모델 자체만큼 중요한 시스템 설계 요소다.