컨텍스트 엔지니어링(context engineering) - A Survey of Context Engineering for Large Language Models

2025-08-01by minkyu5분 읽기

나는 A Survey of Context Engineering for Large Language Models를 읽고, 컨텍스트 엔지니어링을 "프롬프트 문장 몇 줄을 다듬는 일"이 아니라 모델이 참조하는 정보 전체를 설계·조립·최적화하는 체계적 공정으로 이해하게 되었다. 내가 이해한 바로는, 이 분야는 추상적으로 말해 "정보 물류(Information Logistics)"에 가깝다. 모델은 확률적으로 문장을 이어 붙이는 기계지만, 무엇을 보고 이어 붙일지는 전적으로 우리가 넣어주는 맥락에 달려 있다. 이 논문은 그래서 컨텍스트를 하나의 길고 고정된 문자열이 아니라, 여러 출처에서 수집·가공·관리된 구성요소들의 동적 집합으로 재정의한다. 수집 함수들이 관련 정보를 모으고, 가공 함수들이 그것을 정리·압축·구조화하고, 최종 조립 함수가 목적에 맞게 배열해 하나의 컨텍스트를 만든다는 관점이다. 부족하지만 내 말로 옮기면, "좋은 답"은 곧 "잘 설계된 입력 장면의 총합"이라는 뜻이었다.

운 좋게도 이 글은 그 총합을 풀어헤쳐 두 층위의 분류로 보여준다. 첫째는 토대가 되는 컴포넌트 층위다. 여기에는 ① 프롬프트·외부 지식 검색·동적 조립 같은 컨텍스트 획득/생성, ② 장문 처리·자기개선(Self-refinement)·멀티모달·관계/구조 데이터 통합 같은 컨텍스트 가공, ③ 메모리 계층·압축·최적화 같은 컨텍스트 관리가 들어간다. 둘째는 이렇게 준비된 부품들을 아키텍처로 묶어 쓰는 구현 층위다. RAG(검색결합생성), 대화/장기 메모리 시스템, 툴 통합 추론(함수 호출·환경 상호작용), 멀티에이전트 조정 같은 시스템들이 여기에 속한다. 나는 이 이분법이 "무엇을 준비하고(부품), 어떻게 엮어 쓰는가(조립)"를 명료하게 가르는 점이 인상 깊었다.

논문이 추구하는 방식은 요약하면 흩어진 기법들을 하나의 수평적 프레임으로 묶어, 설계·운영·평가가 가능한 공학적 학문으로 격상시키는 것이다. 저자들은 1,400편이 넘는 연구를 모아 맥락을 "길고 정적인 문자열"로 취급하던 프롬프트 엔지니어링과 달리, 구성요소들의 동적 조립으로 모델 입력을 공식화한다. 이 공식화의 요지는, 맥락을 여러 모듈의 출력으로 분해하고 모듈별로 디버깅·최적화가 가능하게 만드는 데 있다. 그래서 오류 분석도 "문장 몇 줄을 바꾸자"가 아니라 "검색이 과적합했는가, 압축이 의미를 깎았는가, 정렬/배치가 논리 흐름을 망쳤는가"처럼 기능별로 원인을 추적한다. 나는 이런 분해가 "감으로 하는 프롬프트"의 한계를 넘게 해준다고 느꼈다.

원리는 생각보다 소박하다. 첫째, 제약하의 정보 최대화다. 컨텍스트 윈도는 유한하고, 긴 입력은 계산·메모리 비용이 급증한다. 그러니 과제에 필요한 정보를 선별하고, 중복을 제거하고, 요점을 압축해 '유효 정보량'을 최대화해야 한다. 이때 긴 문맥을 다루는 구조적 요령(청킹·순서화·핵심어 앵커링 등)과 학습되지 않은 지식의 외삽을 돕는 검색/도메인 지식 주입이 함께 쓰인다. 둘째, 상태성의 도입이다. 프롬프트는 본질적으로 무상태에 가깝지만, 실제 시스템은 사용자 이력·작업 진행 상황·환경 상태를 기억해야 한다. 그래서 단기 버퍼와 장기 스토리지를 구분한 메모리 계층, 그리고 그것을 불러와 현재 목적에 맞게 재배치하는 오케스트레이션이 핵심이 된다. 셋째, 형식의 정규화다. 모델이 잘 받아들이는 구조(예: 슬롯 채움, 테이블·그래프 요약, 함수서명 스펙)를 사용해 의미 손실 없이 압축하고, 필요할 때 도구 호출로 외부 연산을 이관한다. 이런 원리들은 "길게 넣기만 하면 된다"는 단순화를 경계한다. 실제로 시퀀스 길이가 늘수록 계산/메모리 비용이 급증(셀프어텐션의 제곱 스케일)하고, 장문에서 성능이 난조를 보이는 문제가 보고되기 때문이다.

이 프레임의 장점은 몇 가지 결로 정리할 수 있었다. 첫째, 성능과 견고성의 동시 개선이다. 검색·가공·관리의 모듈화를 통해 "무엇이 먹혔는가"를 분해 측정하고, 병목을 바꾸어 보며, 도메인 편향이나 환각을 특정 단계에서 억제할 수 있다. 둘째, 확장성이다. 멀티모달·구조 데이터·타임라인·참여자 상태 같은 이질적 정보를 동일한 조립선 위에서 관리함으로써, 새로운 데이터원을 추가해도 전체 시스템을 갈아엎지 않아도 된다. 셋째, 자원 최적화다. 압축·요약·재배치로 불필요한 토큰을 줄여 지연과 비용을 낮춘다. 넷째, 상태적 상호작용이 가능해진다. 메모리 계층과 툴 통합은 회차를 넘어서는 맥락 유지, 작업 분해, 외부 시스템과의 안전한 인터페이스를 가능케 한다. 다섯째, 엔지니어링 가능성—즉, 진단·재현·거버넌스의 여지가 커진다. 무엇을 언제 어떤 기준으로 맥락에 넣었는지 로깅·평가할 수 있으니, 안전·윤리·규정 준수 논의의 기반도 마련된다. 나는 특히 마지막 지점에서 "운영 가능한 AI"의 그림이 그려졌다.

물론 한계와 과제가 없지는 않다. 저자들이 지적하듯, 오늘의 시스템은 복잡한 맥락을 이해하는 능력에 비해, 동일한 수준으로 정교한 장문 출력을 생성하는 능력에서 비대칭이 남아 있다. 그래서 컨텍스트 엔지니어링은 단지 "더 많이, 더 길게" 넣는 일이 아니라, 출력의 구조·평가·자기개선을 함께 설계하는 문제로 확장된다. 나는 이 지점에서 글쓰기와 닮았다고 느꼈다. 자료를 많이 모았다고 글이 좋아지지 않듯, 맥락을 많이 넣었다고 결과가 성숙해지지 않는다. 결국 무엇을 버리고 무엇을 남길지, 그리고 남긴 것을 어떻게 배열할지가 관건이 된다.