컨텍스트 엔지니어링: 왜 내 에이전트는 생각대로 움직이지 않을까?

컨텍스트 엔지니어링: 기술 동향
컨텍스트 엔지니어링 기술 동향을 총 정리한 “A survey of context engineering for large language models (Mei et al., 2025)” 논문을 읽어보았습니다. 이미 많은 분들을 통해 유명해진 논문이지만 연휴를 맞이하여 다시 한 번 밀도 깊게 살펴보는 시간을 가졌습니다. 이 논문에서는 약 1,400편 이상의 레퍼런스를 분석하고 RAG, 메모리, 도구 사용 등 개별적으로 논의되던 기술들을 ‘Context Engineering’ 이라는 통일된 학문 분야로 정립하고 있습니다. LLM 성능이 contextual information에 의존한다는 점에 주목하며 모델에 최적화된 정보를 체계적으로 전달하는 방식을 165페이지라는 방대한 분량으로 집대성했습니다.
특히 이 논문의 가장 큰 학술적 기여는 컨텍스트 엔지니어링을 두 가지 계층적 구조로 분류한 점입니다. 첫 번째는 컨텍스트 검색 및 생성·처리·관리와 같은 핵심 기술을 의미하는 Foundational Components이고, 다른 하나는 이러한 기술을 조합해서 만드는 RAG, 메모리 시스템, 멀티 에이전트 등 실제 애플리케이션을 지칭하는 System Implementations입니다. 이러한 분류 체계는 AI 에이전트 시스템을 개발 시 발생하는 문제를 체계적으로 진단할 수 있는 기준을 제시한다는 점에서 가치가 높습니다. 예를 들어, 특정 에이전트가 올바르게 작동하지 않을 때, 문제가 시스템 구현 단계의 복잡한 상호작용 때문인지 아니면 근간이 되는 기본 구성 요소, 즉 컨텍스트 처리 자체의 결함인지를 구분하여 접근할 수 있게 해줍니다.
논문에서는 ‘컨텍스트 엔지니어링’ 이라는 용어를 통해 에이전트 개발에 대한 이론적 청사진을 정의함으로써 ‘무엇을’ 구축해야 하는지 명확한 방향성을 제공했다면 실제 현업에서는 그러한 기술들을 ‘어떻게’ 안정적이고 효율적으로 구현할 것인지에 대해 추가적인 고민이 필요합니다. 논문의 일부 내용을 리뷰하며 실제 프로덕션 환경의 에이전트 구현 관점에서 몇 가지 중요한 부분을 아래와 같이 정리해 보았습니다.
1. 구조화된 데이터 처리의 현실
논문 (4.2.4 Relational and Structured Context) 에서는 관계형 및 구조적 컨텍스트 처리의 어려움을 지적하며 단순한 텍스트 변환의 한계를 언급하고 있습니다.
4.2.4 Relational and Structured Context 섹션에서는 LLM의 근본적인 한계점인 구조화된 데이터 처리의 어려움을 명확히 짚어주고 있습니다. LLM은 본질적으로 순차적인 텍스트를 처리하도록 설계되었기 때문에 테이블, 데이터베이스, 지식 그래프와 같은 데이터의 복잡한 관계를 잘 보존하지 못합니다. 단순히 이런 데이터들을 텍스트로 변환(Linearization)하는 것만으로는 정보가 분산될 때 성능이 저하되는 문제가 발생합니다.
논문에서는 이러한 문제를 해결하기 위해 세 가지 주요 접근법을 제시합니다.
첫째, 신경망 통합(Neural Integration) 방식입니다. 지식 그래프 임베딩을 통해 개체와 관계를 벡터로 변환하거나 Graph Neural Network를 트랜스포머와 결합한 하이브리드 모델(예: GraphFormers)을 사용하여 구조적 정보를 직접 학습시키는 접근법입니다.
둘째, 데이터 표현 변환(Data Representation) 방식입니다. 테이블의 행이나 지식 그래프의 triple을 완전한 문장으로 바꾸는 Verbalization 기법 등이 여기에 해당합니다. 또한, 복잡한 추론 작업에서는 일반 문장보다 SQL이나 Python 코드 형태로 데이터를 표현하는 것이 더 효과적일 수 있다고도 언급합니다.
셋째, 통합 프레임워크(Integration Frameworks) 방식입니다. 사전 학습 단계에서 지식을 주입하는 K-BERT 모델부터, 추론 시점에 RAG처럼 필요한 정보를 검색해 컨텍스트에 주입하는 KAPING 등 다양한 방법을 소개하고 있습니다.
결론적으로 이 섹션은 구조화된 데이터 통합이 단순히 정보를 제공하는 것을 넘어 LLM의 환각(Hallucination)을 줄이고 사실적 정확성을 높이는 데 결적정인 역할을 한다고 강조합니다. 또한, 복잡한 다단계 추론(Multi-hop Reasoning) 능력을 향상시키는 데에도 기여한다고 설명하고 있습니다.
마찬가지로 실제 개발 환경에서는 “수십 또는 수백만 건의 데이터가 담긴 데이터베이스 테이블을 모델이 어떻게 정확히 이해하고 쿼리하게 만들 것인가?”라는 문제에 직면하게 됩니다. 테이블의 스키마 정보, 각 컬럼의 의미, 데이터 간의 관계 등에 대해 LLM이 오해 없이 파악할 수 있도록 구조화된 데이터를 정제하고 변환하는 컨텍스트 설계 전략이 필수적입니다.
2. RAG 시스템의 신뢰성
논문 (5.1 Retrieval-Augmented Generation) 에서는 RAG 기술에 대해 LLM의 지식 한계를 보완하는 핵심 시스템으로 정의하고 있습니다.
5.1 Retrieval-Augmented Generation 섹션에서는 RAG를 LLM이 가진 정적인 지식(parametric knowledge)와 외부의 동적인 정보 사이 간극을 메우는 핵심적인 시스템 구현체로 소개하며 시작합니다. 이 섹션에서는 RAG 기술이 어떻게 진화하고 있는지를 세 가지 주요 흐름으로 나누어 보여줍니다.
Modular RAG: 기존의 단순한 ‘검색 후 생성’의 선형적인 구조에서 벗어나 각 단계를 독립적인 모듈로 만들어 유연하게 재구성할 수 있는 프레임워크를 설명합니다. FlashRAG, ComposeRAG 같은 예시를 통해 질문을 분해하거나 쿼리를 재작성하는 등, 파이프라인의 각 부분을 독립적으로 최적화하는 현대적인 RAG의 발전 방향을 제시하고 있습니다.
Agentic RAG: RAG 파이프라인에 자율적인 AI 에이전트를 결합하는 접근법입니다. 이 방식에서는 검색 과정을 단순한 정보 조회가 아닌 에이전트가 스스로 계획을 세우고(planning), 도구를 사용하며(tool use), 결과를 반영하여(reflection) 다음 행동을 결정하는 동적인 작업으로 취급합니다. Self-RAG처럼 에이전트가 필요할 때만 정보를 검색하고 그 결과의 품질을 스스로 평가하는 등 한층 더 지능적인 검색이 가능해집니다.
Graph-Enhanced RAG: 단순한 텍스트 덩어리를 검색하는 대신 지식 그래프(Knowledge Graph)와 같이 관계가 정의된 구조적 지식을 활용하는 방식입니다. 정보 간의 명시적인 연결을 통해 다단계 추론(Multi-hop Reasoning)을 지원하고 논리적 일관성을 높여 환각(Hallucination)을 줄이는 데 효과적이라고 설명합니다.
결론적으로 이 섹션은 RAG가 더 이상 단순히 외부의 정보를 참조하는 기술이 아니라 더욱 유연하고(Modular), 지능적이며(Agentic), 구조적인(Graph-Enhanced) 방향으로 빠르게 발전하고 있음을 보여줍니다. 또한, 실시간 스트리밍 데이터 처리나 저지연 검색 등 실제 운영 환경에서의 요구사항까지 다루며 RAG 기술의 현재와 미래를 포괄적으로 다룹니다.
가장 중요한 것은 RAG 시스템의 성능이 검색된 정보의 ‘품질’에 의해 결정된다는 점입니다. 만약 소스 문서가 부적절하게 분할되거나 의미적으로 관련 없는 정보 조각이 검색된다면, LLM은 이를 기반으로 잘못된 정보를 생성할 가능성이 높아집니다. 따라서, 단순히 RAG 아키텍처를 구축하는 것을 넘어 문서의 의미적 단위를 보존하며 텍스트를 분할(Semantic Chunking)하고 효과적인 벡터 표현을 생성하는 엔지니어링 기법이 시스템의 신뢰성을 좌우하는 핵심 과제가 됩니다.
3. 에이전트 메모리 시스템과 운영 효율성
논문 (5.2 Memory Systems) 에서는 메모리 시스템을 통해 에이전트가 지속적인 상호작용을 할 수 있다고 설명하며 단기/장기 메모리의 개념적 아키텍처를 제시합니다.
5.2 Memory Systems 섹션에서는 LLM이 단순히 매번 상호작용을 독립적으로 처리하는 stateless 모델을 넘어서 정보를 지속적으로 저장하고 활용하는 정교한 에이전트로 발전하기 위한 핵심 요소로 메모리 시스템을 소개합니다.
이 섹션은 메모리 시스템을 세 가지 주요 관점에서 체계적으로 분석합니다.
Memory Architecture: LLM의 메모리가 어떻게 구성되는지에 대한 이론적 토대를 제공합니다. 메모리를 시간적 관점(단기-장기), 구현 방식(파라미터, 활성화 상태) 등 다양한 기준으로 분류하고 있습니다.
단기 기억(Short-term Memory)은 컨텍스트 윈도우 내에서 작동하며 현재 대화의 흐름을 유지하는 역할을 합니다.
장기 기억(Long-term Memory)는 컨텍스트 윈도우의 한계를 극복하기 위해 외부 저장소를 활용하며, 과거의 정보를 필요할 때 다시 불러오는 메커니즘을 다룹니다. 특히 MemoryBank와 같이 에빙하우스 망각 곡선 이론을 적용한 흥미로운 접근법도 소개하고 있습니다.
Memory-Enhanced Agents: 메모리 아키텍처가 실제 에이전트에 어떻게 통합되어 능력을 향상시키는지 설명합니다. ChatGPT, Google Gemini와 같은 상용 시스템부터 추천 시스템, 자율 주행 등 다양한 분야의 실제 적용 사례를 통해 메모리의 중요성을 보여주고 있습니다. 여기서 RAG 기술이 장기 기억을 구현하는 핵심 기술 중 하나로 활용되며 벡터DB와 같은 외부 저장소를 통해 LLM의 지식을 확장한다고 언급합니다.
Evaluation & Challenges: LLM의 메모리 능력을 어떻게 측정하고 현재 어떤 한계에 부딪히고 있는지 심도 있게 다룹니다. 기존 NLP 평가 지표로는 메모리의 복잡한 측면을 평가하기 어려우며 LongMemEval 등 전용 벤치마크가 필요하다고 지적합니다. 또한, 현재 LLM 에이전트 대부분이 근본적으로 stateless 방식으로 작동하기 때문에 진정한 의미의 점진적 학습이나 장기 기억 능력을 평가하는 데 큰 어려움이 있다고 분석하고 있습니다.
결론적으로 이 섹션은 에이전트가 ‘학습하고 적응하는’ 존재가 되기 위해서 정교한 메모리 시스템의 설계, 구현 및 평가가 필수적임을 강조합니다. 인간의 인지 과정을 모방한 다양한 시도들을 소개하며 이 분야가 앞으로 나아갈 연구 방향도 함께 제시하고 있습니다.
실제 프로덕션 레벨에서 중요한 점은 단기-장기 메모리 유형의 관리 방식이 완전히 다르다는 점입니다. 단기 기억을 위해 대화 히스토리를 무작정 누적하면 컨텍스트 길이를 초과해 overflow 문제가 발생하고, 방대한 외부 문서를 참조하는 장기 기억은 검색 정확도와 속도가 발목을 잡습니다. 따라서, 각기 다른 목적을 가진 메모리를 효율적으로 운영하기 위한 별도의 컨텍스트 관리 및 연동 전략이 필요합니다.
4. 에이전트의 도구 사용
논문 (5.3 Tool-Integrated Reasoning) 에서는 모델이 외부 API나 함수를 호출하며 문제 해결 능력을 확장한다고 설명합니다.
5.3 Tool-Integrated Reasoning 섹션에서는 LLM이 단순한 텍스트 생성기에서 외부 환경과 상호작용하는 존재로 진화하는 데 결정적인 역할을 하는 도구(Tool)에 대해 설명합니다. LLM의 최신 정보 부재, 계산 능력 부족 등 한계를 외부 도구를 활영하여 어떻게 극복하는지를 보여주고 있습니다.
Function Calling: LLM이 API, 데이터베이스 등 외부 도구를 사용할 수 있게 하는 기술적 기반을 설명합니다. 초기 Toolformer에서부터 ReAct의 ‘생각-행동-관찰’ 사이클, 그리고 ToolLLM 같은 최신 프레임워크에 이르기까지 기술의 발전 과정을 정리합니다. 또한, APIGen처럼 도구 사용 능력을 학습시키기 위한 데이터 생성 전략 및 API-Bank, ToolHop과 같은 벤치마크도 다루고 있습니다.
Tool-Integrated Reasoning: 단순히 도구를 호출하는 것을 넘어 추론 과정 중에 동적으로 도구를 활용해 문제 해결 능력을 극대화하는 패러다임을 제시합니다. Program-Aided Language Models(PAL)처럼 계산 과정을 코드로 생성하여 python interpreter에 맡기는 방식, ReAct처럼 추론과 행동을 번갈아 수행하는 방식 등 다양한 프레임워크를 소개합니다. 특히, 추론과 행동을 결합하는 Agent-based Frameworks를 가장 발전된 형태로 정의하고 있으며 이것이 자율적이고 적응적인 AI 에이전트 시스템의 핵심이라고 강조합니다.
Agent-Environment Interaction: 강화 학습(Reinforcement Learning)을 통해 에이전트가 시행착오를 겪으며 최적의 도구 사용 전략을 스스로 발견하게 하는 접근법을 소개합니다. ReTool과 같이 코드 인터프리터 사용을 최적화해서 수학 추론 능력을 크게 향상시킨 사례를 통해, 명시적으로 도구 사용을 모델링하는 것이 학습 효율과 성능 모두에 기여함을 보여줍니다. 또한, GTA 벤치마크 결과 GPT-4의 성공률이 50% 미만인 점을 언급하며 현재 에이전트가 실제 세계의 복잡한 도구 사용 시나리오에서 여전히 상당한 한계를 가지고 있음을 지적합니다.
결론적으로 이 섹션은 에이전트의 핵심 능력인 ‘도구’ 사용이 어떻게 시작되었고, 어떻게 추론 과정과 깊이 결합되었으며, 앞으로 어떤 방식으로 발전하고 평가되어야 하는지에 대한 포괄적인 로드맵을 제공합니다.
모델의 도구 사용은 이론적으로는 강력한 방식이지만 실제 개발자들이 겪는 가장 큰 어려움은 ‘제어 가능성’ 입니다. 컨텍스트로 에이전트에게 도구 사용법을 제공해도 의도와 다른 파라미터를 사용하거아 나예 함수 호출을 실패하는 케이스가 빈번하게 발생합니다. LLM의 확률적 특성을 제어하고 원하는 행동을 정확히 유도하기 위해서는 도구의 기능과 제약 조건을 명시하는 ‘도구 명세(Tool Description)’ 컨텍스트를 얼마나 정교하게 설계하는지에 달려있습니다.
5. 멀티 에이전트 시스템과 효율적 협업
논문 (5.4 Multi-Agent Systems) 에서는 멀티 에이전트 시스템에서의 통신 프로토콜과 오케스트레이션의 필요성을 언급하고 있습니다.
5.4 Multi-Agent Systems 섹션은 개별 에이전트의 능력을 뛰어넘는 복잡한 문제 해결을 위한 멀티 에이전트 시스템을 다룹니다. 여러 자율적인 에이전트들이 어떻게 원활하게 협력하는지에 대해 체계적으로 설명하고 있습니다.
Communication Protocols: 에이전트들이 서로 ‘대화’하는 방식을 다룹니다. 1990년대 초의 KQML, FIPA ACL과 같은 초기 표준부터 최근 에이전트 생태계의 상호운용성을 위해 등장한 MCP, A2A, ACP, ANP와 같은 현대적인 프로토콜 생태계까지의 발전 과정을 정리합니다. 또한, LLM의 발전으로 에이전트 간 소통이 단순한 명령 전달을 넘어 정교한 자연어를 통해 더 민감한 문맥을 이해할 수 있게 되었다고 설명하고 있습니다.
Orchestration Mechanisms: 오케스트라의 지휘자처럼 전체 시스템이 원활하게 작동하도록 에이전트를 선택하고, 작업을 분배하며, 상호작용의 흐름을 제어하는 ‘조율’의 역할을 설명합니다. 사용자의 입력을 받아 어떤 에이전트에게 작업을 맡길지 결정하고, 각 에이전트에게 필요한 컨텍스트를 분배하며, 전체 작업의 진행 상황을 관리하는 것이 핵심입니다.
Coordination Strategies: 멀티 에이전트 시스템이 실제 운영 환경에서 겪는 현실적인 어려움과 해결 방향을 다룹니다. LangGraph, AutoGen과 같은 최신 프레임워크도 작업 중 일부가 실패했을 때 전체 시스템의 일관성을 유지하는 트랜잭션 무결성 지원이 부족하다고 지적하고 있습니다. 또한, 에이전트들이 장기적인 컨텍스트를 유지하는 데 실패하거나 중앙 오케스트레이터 구조가 오히려 예측 불가능성을 높이는 등의 문제점을 분석하며 SagaLLM과 같은 해결책을 제안하기도 합니다.
결론적으로 이 섹션은 여러 에이전트를 단순히 모아놓는 것을 넘어 이들이 하나의 유기적인 팀으로 작동하기 위해서는 표준화된 소통 방식(통신 프로토콜), 지능적인 지휘자(오케스트레이션), 그리고 견고한 위기 관리 능력(협업 전략)이 필수적임을 강조합니다. 이를 통해 멀티 에이전트 시스템이 헬스케어, 네트워크 관리, 비즈니스 프로세스 등 다양한 실제 응용 분야에서 어떻게 활용될 수 있는지도 보여주고 있습니다.
실무에서 중요한 점은 여러 에이전트가 단순히 통신만 한다고 해서 효율적 협업이 이루어지지는 않는다는 점입니다. 예를 들어, 오케스트레이터에 의한 병목 현상이나 에이전트 간 작업 중복 및 충돌 등 실제 운영 환경에서는 다양한 문제가 발생할 수 있습니다. 효율적인 멀티 에이전트 시스템을 구축하기 위해서는 모든 에이전트가 공유해야 하는 정보 (Shared Context)와 개별 에이전트만 보유하는 정보(Private Context) 흐름의 최적화, 즉 고도의 컨텍스트 엔지니어링 전략이 필요합니다.
결론: 이론적 프레임워크 + 실용적 구현 전략 (feat. 강의)
결론적으로 “A Survey of Context Engineering for Large Language Models” 논문은 복잡하고 분산된 에이전트 기술들을 하나의 통일된 개념으로 묶어낸 중요한 연구입니다. 이 논문이 제시한 이론적 프레임워크를 바탕으로 이제 각 시스템 구현 단계에서 마주하는 RAG의 신뢰성, 메모리 효율성, 도구 제어와 같은 실질적인 엔지니어링 문제를 해결해야 하는 과제를 안게 되었습니다.
패스트캠퍼스를 통해 오픈 예정인 강의 [맥락을 설계하는 기술, 컨텍스트 엔지니어링으로 완성하는 실전형 Multi-Agent]는 컨텍스트 엔지니어링 이론과 실제 구현 사이의 간극을 줄이기 위한 커리큘럼으로 준비했습니다. 본문에서 잠시 언급한 실질적인 엔지니어링 문제를 포함해서 멀티 에이전트 시스템 아키텍처 설계 패턴 등 실무적 관점에서의 구체적인 해결책과 코드 기반의 구현 노하우를 체계적으로 정리했습니다.
관심 있으신 분들은 아래 링크를 통해 상세 커리큘럼을 확인하실 수 있습니다.
▶ https://fastcampus.info/48Gyl0Z
본문에서 다룬 내용 | 온라인 강의 해당 챕터 |
|---|---|
구조화된 데이터 | Part 03. Ch02. LLM을 위한 Tabular 데이터 컨텍스트 구조 |
RAG 시스템의 | Part 03. Ch 01. 검색 품질을 좌우하는 텍스트 컨텍스트 |
에이전트 메모리 | Part 03. Ch 03. 에이전트의 기억력 메모리 컨텍스트 엔지니어링 |
에이전트의 | Part 03. Ch 04. 도구 사용과 추론 능력 관리 컨텍스트 엔지니어링 |
멀티 에이전트 시스템과 효율적 작업 | Part 03. Ch 05. 에이전트 팀플레이를 완성하는 컨텍스트 엔지니어링 |