| [Glossary] 컨텍스트 윈도우 완벽 정리 | Context Window를 쉽게 이해하는 법 |
한 줄 요약: 컨텍스트 윈도우(Context Window)란, LLM이 단일 추론 요청에서 동시에 처리할 수 있는 텍스트(토큰)의 최대 크기로, AI의 기억 용량에 해당한다.
1. 컨텍스트 윈도우란 무엇인가?
사람이 짧은 단기 기억을 가진 것처럼, LLM도 한 번에 “볼 수 있는” 정보의 양에 한계가 있습니다. 이 한계를 컨텍스트 윈도우라고 합니다.
책상 위에 올려놓을 수 있는 서류의 양이라고 생각하면 됩니다. 책상이 크면 더 많은 서류를 펼쳐놓고 동시에 참고할 수 있지만, 책상 크기를 넘어서는 서류는 올려놓을 수 없습니다. 컨텍스트 윈도우가 크면 긴 문서, 긴 대화, 복잡한 코드베이스를 통째로 처리할 수 있습니다.
토큰(Token)은 LLM이 텍스트를 처리하는 단위입니다:
- 영어: 평균 1단어 ≈ 1.3토큰
- 한국어: 평균 1음절 ≈ 1~2토큰
- 1,000토큰 ≈ 약 750단어(영어) ≈ 약 500~600자(한국어)
2. 핵심 개념 이해하기
주요 모델별 컨텍스트 윈도우 크기 (2025년 기준)
| 모델 | 컨텍스트 윈도우 | 약 A4 페이지 수 |
|---|---|---|
| Claude 3.5 Sonnet | 200,000 토큰 | ~약 650페이지 |
| Claude 3 Opus | 200,000 토큰 | ~약 650페이지 |
| GPT-4o | 128,000 토큰 | ~약 400페이지 |
| Gemini 1.5 Pro | 1,000,000 토큰 | ~약 3,300페이지 |
| GPT-3.5 Turbo | 16,385 토큰 | ~약 53페이지 |
컨텍스트 윈도우의 구성
┌─────────────────────────────────────────┐
│ 컨텍스트 윈도우 (200K 토큰) │
│ │
│ [시스템 프롬프트] [대화 히스토리] [문서] │
│ 2K 토큰 50K 토큰 148K │
└─────────────────────────────────────────┘
입력(Input)과 출력(Output) 모두 컨텍스트 윈도우에 포함됩니다. 대화가 길어질수록 이전 대화가 윈도우를 채우고, 결국 오래된 내용이 “밀려납니다”.
Lost-in-the-Middle 문제
컨텍스트 윈도우가 크더라도, LLM은 앞부분과 뒷부분에 더 집중하는 경향이 있습니다. 긴 문서의 중간 부분 정보는 상대적으로 덜 반영될 수 있습니다.
3. 실무 적용 예시
컨텍스트 윈도우를 효율적으로 관리하는 코드입니다.
import tiktoken
from openai import OpenAI
def count_tokens(text: str, model: str = "gpt-4o") -> int:
"""텍스트의 토큰 수를 계산합니다."""
encoding = tiktoken.encoding_for_model(model)
return len(encoding.encode(text))
def truncate_to_limit(
messages: list[dict],
max_tokens: int = 120_000, # GPT-4o 한도의 93%
model: str = "gpt-4o"
) -> list[dict]:
"""컨텍스트 한도 초과 시 오래된 메시지를 제거합니다."""
total = sum(count_tokens(m["content"], model) for m in messages)
# 시스템 프롬프트는 항상 유지
system_msgs = [m for m in messages if m["role"] == "system"]
user_msgs = [m for m in messages if m["role"] != "system"]
while total > max_tokens and user_msgs:
removed = user_msgs.pop(0) # 가장 오래된 메시지 제거
total -= count_tokens(removed["content"], model)
return system_msgs + user_msgs
# 사용 예시
client = OpenAI()
messages = [
{"role": "system", "content": "당신은 친절한 AI 어시스턴트입니다."},
{"role": "user", "content": "매우 긴 문서 내용..."},
# ... 수백 개의 메시지
]
trimmed = truncate_to_limit(messages)
response = client.chat.completions.create(
model="gpt-4o",
messages=trimmed
)
4. 컨텍스트 윈도우 vs 유사 개념 비교
| 구분 | 컨텍스트 윈도우 | 벡터 DB(장기 메모리) | 파인튜닝 |
|---|---|---|---|
| 위치 | 단기(추론 중) | 외부(영구 저장) | 모델 가중치 |
| 용량 | 제한적 (수백K 토큰) | 거의 무제한 | 모델 크기에 의존 |
| 검색 방식 | 전체 포함 | 유사도 검색 | 내재화된 지식 |
| 비용 | 토큰당 과금 | 저장·검색 비용 | 학습 비용 |
| 최신성 | 실시간 | 인덱싱 시점 | 학습 시점 |
5. 마치며
컨텍스트 윈도우는 LLM의 “작업 기억” 역할을 합니다. 크기가 크면 더 복잡한 작업을 처리할 수 있지만, 비용도 함께 증가합니다. 프롬프트 캐싱(Prompt Caching)을 활용하면 반복되는 시스템 프롬프트 비용을 최대 90% 절감할 수 있고, RAG와 결합하면 컨텍스트 한계를 효과적으로 극복할 수 있습니다.
참고 자료
- Anthropic Claude 모델 비교 — 모델별 컨텍스트 윈도우 크기 공식 정보
- Lost in the Middle: How Language Models Use Long Contexts — 컨텍스트 중간 정보 손실 연구 논문
함께 읽으면 좋은 용어
이 개념과 함께 알아두면 이해가 깊어지는 관련 용어들입니다.
댓글 남기기