Skip to content

컨텍스트 엔지니어링의 정의

AI 에이전트 품질의 핵심, 컨텍스트 엔지니어링이란 무엇인가


학습 목표

  1. 컨텍스트 엔지니어링의 정의와 핵심 개념을 이해한다.
  2. 프롬프트 엔지니어링과 컨텍스트 엔지니어링의 차이를 구분한다.
  3. 컨텍스트 엔지니어링이 왜 중요한지 설명할 수 있다.
  4. LLM 컨텍스트 윈도우의 구성 요소를 파악한다.

1. 컨텍스트 엔지니어링이란?

컨텍스트 엔지니어링(Context Engineering)은 LLM이 주어진 작업을 합리적으로 달성할 수 있도록, 올바른 형식의 정보와 도구를 제공하는 동적 시스템을 구축하는 기술이다.

단순히 프롬프트 하나를 잘 쓰는 것이 아니다. LLM에게 전달되는 모든 입력(시스템 프롬프트, 사용자 메시지, 검색된 문서, 대화 이력, 사용 가능한 도구 목록)을 상황에 맞게 동적으로 조합하는 시스템 설계 전체를 가리킨다.

이 용어는 Tesla Autopilot과 OpenAI에서 일한 Andrej Karpathy가 "프롬프트 엔지니어링보다 컨텍스트 엔지니어링이 더 정확한 표현"이라고 언급하면서 본격적으로 확산되었다. 이후 AI 에이전트를 개발하는 엔지니어들 사이에서 핵심 역량으로 자리 잡았다.

컨텍스트 엔지니어링의 범위

컨텍스트 엔지니어링은 하나의 기법이 아니라, 여러 기술을 포괄하는 **상위 개념(umbrella concept)**이다.

프롬프트 엔지니어링, RAG, 메모리 관리, 툴 사용은 각각 독립적인 기술이지만, 컨텍스트 엔지니어링은 이 모든 것을 하나의 시스템으로 통합하여 설계하는 관점이다.


2. 프롬프트 엔지니어링과의 관계

컨텍스트 엔지니어링을 이해하려면, 먼저 프롬프트 엔지니어링과의 차이를 명확히 구분해야 한다.

프롬프트 엔지니어링

프롬프트 엔지니어링은 하나의 정적인 프롬프트를 잘 작성하는 기술이다. 사용자가 직접 프롬프트 텍스트를 다듬고, 지시사항을 명확하게 표현하며, 예시를 추가하는 등의 작업을 수동으로 수행한다.

"다음 텍스트를 3줄로 요약해줘. 핵심 키워드를 볼드 처리해줘."

이 프롬프트는 한 번 작성하면 바뀌지 않는다. 모든 상황에 동일한 프롬프트가 사용된다.

컨텍스트 엔지니어링

컨텍스트 엔지니어링은 상황에 따라 동적으로 최적의 컨텍스트를 구성하는 시스템을 설계하는 기술이다. 사용자의 요청, 현재 대화 이력, 관련 문서, 사용 가능한 도구 등을 종합적으로 고려하여 LLM에 전달할 입력을 자동으로 조합한다.

시스템이 자동으로 구성하는 컨텍스트:
  1. 시스템 프롬프트 (역할, 규칙)
  2. 사용자의 이전 대화 요약 (메모리)
  3. 관련 문서 3건 (RAG 검색 결과)
  4. 사용 가능한 도구 목록 (Function Calling 스키마)
  5. 현재 사용자 메시지

비교 다이어그램

비유하자면, 프롬프트 엔지니어링은 요리사에게 건네는 레시피 한 장을 잘 쓰는 것이고, 컨텍스트 엔지니어링은 요리사에게 신선한 재료, 조리 도구, 레시피, 주방 환경을 모두 최적으로 갖춰주는 시스템을 설계하는 것이다.


3. 왜 중요한가?

LLM 성능의 상향 평준화

GPT-4, Claude, Gemini 등 주요 LLM들의 기본 성능이 빠르게 상향 평준화되고 있다. 동일한 모델을 사용하더라도 결과물의 품질이 천차만별인 이유는 무엇일까? 바로 어떤 컨텍스트를 제공하느냐에 달려 있다.

GIGO 원칙

컴퓨터 과학의 고전적 원칙인 **GIGO(Garbage In, Garbage Out)**가 LLM에도 그대로 적용된다.

입력 (컨텍스트)출력 (결과)
모호하고 불완전한 지시부정확하고 쓸모없는 응답
관련 없는 대량의 문서핵심을 벗어난 장황한 응답
명확한 지시 + 관련 문서 + 적절한 도구정확하고 실용적인 응답

좋은 컨텍스트가 좋은 결과를 만든다. 이것이 컨텍스트 엔지니어링의 핵심 전제다.

AI 에이전트의 품질 = 컨텍스트 엔지니어링의 품질

최근 AI 에이전트(Claude Code, Cursor, Copilot 등)가 폭발적으로 성장하고 있다. 이 에이전트들의 품질을 결정짓는 것은 기반 LLM 모델이 아니라 컨텍스트 엔지니어링 시스템의 설계 수준이다.

  • Claude Code가 프로젝트 구조를 파악하고, CLAUDE.md를 읽고, 도구를 선택하는 것이 모두 컨텍스트 엔지니어링이다.
  • Cursor가 현재 열린 파일, 관련 파일, 프로젝트 설정을 자동으로 수집하여 LLM에 전달하는 것도 컨텍스트 엔지니어링이다.
  • RAG 파이프라인이 사용자 질문에 맞는 문서를 검색하여 프롬프트에 삽입하는 것도 컨텍스트 엔지니어링이다.

4. 컨텍스트 윈도우의 구성

LLM의 컨텍스트 윈도우(context window)는 모델이 한 번에 처리할 수 있는 입력의 최대 크기다. 이 제한된 공간에 무엇을 넣느냐가 결과의 품질을 좌우한다.

컨텍스트 윈도우에 들어가는 정보는 크게 3가지로 분류된다.

지시 (Instructions)

LLM에게 무엇을, 어떻게 해야 하는지 알려주는 규칙이다.

  • 시스템 프롬프트: "너는 한국어로 응답하는 시니어 개발자야. 코드는 TypeScript로 작성해."
  • 규칙 파일: Claude Code의 CLAUDE.md, Cursor의 .cursorrules
  • 출력 형식 지정: JSON 스키마, 마크다운 구조 등 원하는 출력 포맷

지식 (Knowledge)

LLM이 응답을 생성할 때 참고할 수 있는 정보다.

  • RAG 결과: 사용자 질문과 관련된 문서를 벡터 DB에서 검색하여 주입
  • 메모리: 이전 대화 내용 요약, 사용자 선호도, 프로젝트 컨텍스트
  • 첨부 문서: 코드 파일, 에러 로그, API 스펙 문서 등

도구 (Tools / Function Calling)

LLM이 텍스트 생성 외에 외부 기능을 호출할 수 있도록 하는 인터페이스다.

  • 함수 스키마: 도구의 이름, 설명, 파라미터 정의 (JSON Schema 형태)
  • 도구 설명: 어떤 상황에서 어떤 도구를 사용해야 하는지 안내
  • 실행 결과: 도구를 호출한 후 반환된 결과값 (다시 컨텍스트에 추가됨)

컨텍스트 엔지니어링의 핵심은 이 3가지 요소를 한정된 컨텍스트 윈도우 안에서 최적의 비율로 배치하는 것이다. 불필요한 정보가 공간을 차지하면 정작 중요한 정보가 들어갈 자리가 없어진다.


5. 핵심 정리

컨텍스트 엔지니어링은 LLM에게 전달되는 모든 입력(지시, 지식, 도구)을 상황에 맞게 동적으로 구성하는 시스템을 설계하는 기술이다. 프롬프트 엔지니어링이 "좋은 질문을 하는 기술"이라면, 컨텍스트 엔지니어링은 "좋은 질문을 할 수 있는 환경 자체를 만드는 기술"이다. AI 에이전트의 품질은 기반 모델이 아니라 컨텍스트 엔지니어링의 수준에 의해 결정된다.