<-home

컨텍스트 엔지니어링: AI를 효과적으로 사용하는 방법

점점 빠르게 변화하는 AI

작년과 올해 사이에 삶에서 느껴진 가장 큰 변화가 있다면 AI일 것입니다. 사람과 대화하듯 질문하는 내용에, 사람처럼 대답하는 AI를 보면서 신기해하던게 불과 작년이었는데, 이제는 복잡한 내용을 이해하고 정리하는 것을 넘어서 새로운 것을 만들고 이를 검토하는 것까지 가능할정도로 엄청나게 빠르게 발전하고 있습니다.

작년에 서점에 가면 ‘프롬프트 엔지니어가 되는 방법’이라는 주제의 책들이 굉장히 많았습니다. ‘좋은 질문을 할 수 있는 엔지니어’가 앞으로 AI 시대에 가장 필요할 것이라는 내용이 대다수였죠.

하지만 불과 1년이 채 되지 않은 시점에, 우리는 ‘개같이 말해도 찰떡같이 알아듣는’ AI를 만나고 있습니다. 내가 무엇을 궁금해하는지 모를 정도로 이해하기 어려운 질문을 던지더라도, 100%는 아니지만 그만큼 근접할 정도로 이해하기 위해 노력한 흔적이 뭍은 답변을 제공하는 것을 경험하고 있습니다.

앞에서 이야기할 내용이지만, 현재 AI는 ‘잘 설계된 컨텍스트, 즉 풍부하고 정확한 정보가 주어졌을 때, 매우 복잡한 내용이라 하더라도 정확하게 이해’할 수 있습니다. 하지만 이러한 이해를 바탕으로 무언가를 새롭게 생성하고자 하면, 특히 결과물이 점점 복잡해질수록 일관성이 부족해지거나 중복된 내용이 발생하는 등 생성 능력에 있어서 아직 부족한 점을 보이고 있습니다.

2025년 7월에 작성된 논문 ‘A Survey of Context Engineering for Large Language Models‘에서는 컨텍스트 엔지니어링에 대해서 소개하고 있습니다. 이 논문은 프롬프트 엔지니어링과 컨텍스트 엔지니어링을 비교하고, 사용자가 더 나은 AI 활용을 위해 어떻게 컨텍스트 엔지니어링을 적용해야하는지에 대해 설명합니다.

프롬프트 엔지니어링과 컨텍스트 엔지니어링

프롬프트 엔지니어링은 ‘최고의 답변을 생성할 수 있는 최고의 질문’을 만드는데 집중합니다. 마치 ‘숙련된 수사관이 증인에게서 가장 정확한 진술을 이끌어내기 위해 단어 하나와 뉘앙스 하나까지 신중하게 고르는 것’과 비슷합니다.

하지만 컨텍스트 엔지니어링은 ‘AI가 문제를 해결하고 좋은 답변을 줄 수 있도록 최선을 다해 도와주는 것’과 같습니다. 숙련된 수사관인 AI에게 이제까지 모든 자료가 담긴 사건 파일을 건내주는 것과 같습니다. 이 파일에는 명확한 지시사항, 외부 참고자료, 사용 가능한 도구 목록, 그리고 과거 상호작용 기록등이 포함될 수 있습니다.

차원 프롬프트 엔지니어링 컨텍스트 엔지니어링
범위 단일 텍스트 입력(프롬프트) 최적화 다수의 정보 소스로 구성된 전체 정보 환경 설계
모델 정적인 텍스트 문자열 ($C = \text{prompt}$) 동적이고 구조화된 정보 요소들의 조립 ($C = \mathcal{A}(c_1, c_2,…, c_n)$)
목표 특정 프롬프트에 대한 최상의 응답 생성 주어진 과제에 대해 보상(품질)을 극대화하는 정보 시스템 최적화
복잡성 수동적, 반복적 시도를 통한 최적의 문구 탐색 검색, 선택, 조립 등 여러 기능으로 구성된 시스템 수준의 최적화
정보 흐름 프롬프트 내에 정보가 고정됨 외부 데이터베이스, 도구, 메모리 등에서 정보를 동적으로 가져와 활용
상태 관리 주로 상태가 없음 (매번 새로운 대화) 메모리 구성요소를 통해 이전 상호작용의 상태를 명시적으로 관리
확장성 프롬프트가 길고 복잡해질수록 취약해짐 모듈식 구성 요소를 통해 복잡성을 체계적으로 관리
오류 분석 수동 검사 및 반복적인 프롬프트 수정 각 정보 구성 요소(함수)에 대한 체계적인 평가 및 디버깅

컨텍스트 엔지니어링의 단계

논문에서는 컨텍스트 엔지니어링을 크게 3가지 기반 요소로 구성합니다. 이를 제품을 만드는 공급망이라고 할 때, 아래와 같이 표현할 수 있습니다.

  • 검색 및 생성: 원자재를 조달합니다
  • 처리: 공장에서 원자재를 가공합니다.
  • 관리: 가공된 제품을 창고에 효율적으로 전달하고 이를 관리합니다.

1. 컨텍스트 검색 및 생성

좋은 프롬프트의 중요성

컨텍스트 엔지니어링에서도 프롬프트 엔지니어링, 즉 좋은 질문은 당연히 중요합니다. 우리는 AI에게 ‘이렇게 답변하게 된 과정을 보여달라고 요청’하거나, ‘하나의 답변 말고 여러 가능성을 동시에 탐색하도록 요청’해야 합니다. 이를 통해 AI가 성급한 결론을 내리지 않고, 여러 가능성을 추론함으로써 가장 효과적인 방향으로 사고를 확장할 수 있도록 도울 수 있습니다.

외부 지식의 활용

AI는 ‘학습한 내용까지만 생각할 수 있다’는 제약이 있습니다. ChatGPT의 경우에도 선택한 모델에 따라 알고 있는 최신 정보가 달라지기도 합니다.

하지만 최근에는 검색 증강 생성(RAG: Retrieval Augmented Generation) 기술을 통해 AI에게 인터넷, 내부 문서와 같은 외부 지식을 답변 생성에 사용할 수 있도록 제공할 수 있습니다. 이는 컨텍스트 엔지니어링 기법에 가장 핵심적인 기술중 하나로, AI가 가지고 있는 큰 문제점 중 하나인 환각(Hallucination)이라고 불리는 거짓된 정보 생성을 크게 줄일 수 있습니다.

초기 RAG가 단순한 사실 검색에 그쳤다면, 최근 RAG 시스템은 크게 2가지로 구분되어 더욱 정교한 방식으로 정보를 처리합니다.

  • 모듈형(Modular RAG): 사용자는 질문을 더 명확하게 다듬는 ‘질의 재작성’ 모듈, 여러 데이터베이스에서 동시에 정보를 가져오는 ‘다중 소스 검색’ 모듈, 그리고 검색된 정보들 중 가장 유용한 것을 골라내는 ‘재순위화’ 모듈 등을 필요에 따라 자유롭게 조합하여 최적의 RAG 파이프라인을 구축합니다.

  • 에이전트(Agentic RAG): AI는 단순히 정보를 검색하는 것을 넘어, 스스로 ‘조사’를 수행합니다. 복잡한 질문을 받으면 이를 여러 개의 하위 질문으로 분해하고, 각각에 대한 정보를 검색한 뒤, 그 결과들을 종합하여 최종 결론을 도출합니다.

AI는 외부로부터 전달받은 지식을 마인드맵과 같은 그래프 형태로 연결합니다. 이렇게 연결된 정보들은 AI가 연관된 내용을 통한 다단계 추론을 훨씬 정확하게 할 수 있도록 합니다.

2. 컨텍스트 처리

컨텍스트 크기의 한계

AI는 한번에 처리할 수 있는 정보의 양에 한계를 갖고 있습니다. 우리도 한번에 공부할 수 있는 정보의 양이 한정되어 있듯이, AI 또한 메모리에 한계를 갖고 있습니다. 이로 인해, AI에게 너무 많은 정보를 제공하게 되면 중간 분실(Lost-In-The-Middle) 현상이 발생하기도 합니다. 중간에 있는 정보를 잊어버린채 잘못된 답변을 하거나, 생성된 결과의 일관성이 무너지기도 합니다. 이를 해결하기 위한 다양한 연구들(FlashAttention, Mamba 등)이 있습니다.

사실 이부분은 ‘컴퓨터 또한 메모리라는 한정된 기억공간을 갖는다’는 내용으로 보면, 당연한 결과일 뿐입니다. 다만 인간은 ‘과거를 기억하기 위한 다양한 수단을 사용’하는 것과 달리, AI는 상대적으로 방법과 공간의 한계가 명확합니다.

자발적인 개선

AI는 주어진 컨텍스트를 가지고 자체적인 개선(Self-Refine)이 가능합니다. 스스로 초안을 만들고, 이걸 비평하고, 초안을 수정합니다. 이러한 과정을 계속 반복해서 최적의 결과물을 생성합니다. 이를 다른 관점에서 보면, 우리가 공상 과학에서나 보던 ‘AI는 스스로 성장하고 있다’는 이야기가 현실로 이루어지고 있는 것이죠. 우리는 점점 발전해가는 결과를 얻을 수 있다는 기술적 이점 이면에, 앞으로 어떻게 발전할지 예측할 수 없는 진정한 인공지능을 마주하고 있는지도 모릅니다.

3. 컨텍스트 관리

AI는 기본적인 대화가 끝나면 모든것을 잊어버립니다. 이를 해결하기 위해, AI는 메모리라는 한정된 기억공간을 갖습니다. 메모리는 작은 공간이라는 제약이 있지만, 빠르게 기억을 불러올 수 있습니다. AI 뿐만 아니라 많은 시스템에서는 ‘자주 사용하는 정보를 메모리에 두고, 장기 기억을 할 수 있는 저장소에서 필요할 때마다 정보를 불러오는 방식’을 사용합니다. MemGPT는 이러한 방식을 통해 정보를 효율적으로 관리할 수 있는 기능(페이징)을 제공합니다.

또한 AI가 사용하는 작업공간, 즉 컨텍스트 창도 한정된 공간을 갖습니다. 모든 정보를 그대로 담을 수 없기 때문에, AI는 이를 압축하여 사용합니다. 컨텍스트 압축을 통해 AI는 핵심만 요약한 ‘요약노트’를 만들어서, 메모리에 더 많은 정보를 효율적으로 저장할 수 있도록 합니다.

우리는 어떻게 AI를 사용하면 좋을까?

논문에서 제공한 내용을 바탕으로, 우리는 ‘AI를 통해 최적의 답변을 얻을 수 있는 방법’을 찾을 수 있습니다.

작업의 목적을 명확하게 하고, 범위를 최소화 한다.

이는 ‘내가 무엇을 요청하고 싶은지 명확하게 파악’하는 것에서부터 시작합니다. 실생활에서도 그렇듯이, AI에도 좋은 질문, 즉 프롬프트 엔지니어링이 가장 중요합니다. 그리고 이 요청을 가장 작은 단위의 질문으로 나눌 수 있어야 합니다. 질문의 크기가 커질수록 Lost-In-The-Middle 현상이 발생할 가능성이 높아집니다. 논문에서는 ‘중요한 정보가 컨텍스트의 시작 또는 끝에 위치할 때 가장 좋은 성능을 보여준다’고 말합니다.

작업을 요청할때에도 마찬가지입니다. 한번에 많은 작업을 요청하기보다는, 작업을 모듈화하고 단계별로 요청하는 것이 좋습니다.

최대한의 정보를 제공한다.

사용자가 AI를 사용하는 가장 큰 목적은 ‘빠르게 최적의 결과물을 얻는 것’입니다. 사실 AI에게 정보를 제공하는 것 자체가 또다른 업무일 수 있습니다. 하지만 AI에게 제공하는 정보가 많아질수록, AI가 더욱 양질의 답변을 제공한다는 것은 당연한 결과입니다.

단순히 정보를 많이 주는 것을 넘어, AI가 잘 활용할 수 있는 형태로 정보를 가공하고 이를 조립하여 제공해야 합니다. 정확한 정보가 담긴 전문 지식을 제공해야 하고, AI가 자체적으로 할 수 없는 일을 도울 수 있는 외부 도구(API)를 호출하여 효과적인 작업이 가능하도록 해야 합니다.