컨텍스트 윈도우
LLM이 한 번에 처리할 수 있는 정보의 한계를 이해합니다.
컨텍스트 윈도우란?
LLM의 "작업 기억" 크기
컨텍스트 윈도우(Context Window)는 LLM이 한 번에 처리할 수 있는 최대 토큰 수입니다. 이 안에 시스템 프롬프트, 대화 기록, 현재 질문, 그리고 응답이 모두 들어가야 합니다.
- 시스템 프롬프트 — 모델의 역할, 규칙 설정
- 대화 기록 — 이전 질문과 답변들
- 현재 입력 — 지금 보내는 질문/요청
- 응답 공간 — 모델이 생성할 답변을 위한 공간
모델별 컨텍스트 크기
2026년 기준 주요 모델 비교
대략적인 기준: 1페이지 ≈ 400 토큰 (영어 기준)
한국어는 토큰 효율이 낮아 같은 토큰 수로 더 적은 내용을 담을 수 있습니다.
컨텍스트 초과 시 발생하는 일
오래된 정보부터 잘려나간다
대화가 길어져 컨텍스트 윈도우를 초과하면, 가장 오래된 메시지부터 잘려나갑니다. 모델은 잘린 내용을 기억하지 못합니다.
컨텍스트 초과 예시
→ 모델은 사용자 이름(김철수)과 프로젝트 정보를 더 이상 기억하지 못함
긴 대화 중 갑자기 모델이 "아까 말씀하신 내용이 뭐였죠?"라고 묻는다면, 컨텍스트가 잘려서 이전 정보를 잃어버린 것입니다.
"Lost in the Middle" 현상
긴 컨텍스트의 숨겨진 함정
컨텍스트가 크다고 해서 모든 정보를 동등하게 활용하는 것은 아닙니다. 연구에 따르면, LLM은 중간 부분의 정보를 잘 기억하지 못합니다.
📉 Attention 분포
LLM은 컨텍스트의 처음과 끝에 더 많은 주의를 기울이고, 중간 부분은 상대적으로 덜 참조합니다.
- 중요한 정보는 프롬프트의 처음이나 끝에 배치
- RAG에서 검색된 문서를 넣을 때 순서를 신경 써야 함
- 긴 컨텍스트 = 무조건 좋은 것이 아님
- 필요한 정보만 간결하게 전달하는 것이 효과적
컨텍스트 관리 전략
효율적으로 컨텍스트를 활용하는 방법
📝 요약(Summarization)
오래된 대화를 요약하여 저장. 전체 기록 대신 요약본만 컨텍스트에 포함.
✂️ 청킹(Chunking)
긴 문서를 작은 조각으로 나눔. 필요한 조각만 선택적으로 포함.
🎯 선택적 포함
모든 기록을 넣지 않고, 현재 질문과 관련된 정보만 선별.
💾 외부 메모리
벡터 DB에 정보 저장. 필요할 때만 검색해서 컨텍스트에 추가 (RAG).
컨텍스트가 길수록 API 비용이 증가합니다. 128K 토큰을 매번 보내면 비용이 급격히 늘어납니다. 필요한 정보만 효율적으로 보내는 것이 비용 절감에도 도움됩니다.
핵심 요약
- 컨텍스트 윈도우는 LLM이 한 번에 처리할 수 있는 최대 토큰 수
- 시스템 프롬프트 + 대화 기록 + 입력 + 출력이 모두 포함되어야 함
- 초과 시 오래된 내용부터 잘림 (기억 상실)
- Lost in the Middle: 중간 정보는 잘 활용되지 않음
- 요약, 청킹, RAG 등으로 효율적 컨텍스트 관리 필요