요즘 LLM을 비교하는 글을 보면 “이 모델은 context window가 크다”라는 말을 자주 봅니다. 그런데 막상 입문 단계에서는 이 말이 무엇을 뜻하는지, 그리고 왜 그렇게 중요한지 감이 잘 안 잡힙니다.
간단히 말하면 context window는 모델이 한 번의 응답을 만들 때 참고할 수 있는 입력 범위입니다. system prompt, 사용자 질문, 이전 대화, 검색해서 가져온 문서, 툴 실행 결과까지 모두 이 범위 안에 들어갑니다.
이 글에서는 아래 내용을 설명합니다.
- context window가 정확히 무엇인지
- 토큰 제한이 왜 중요한지
- 긴 대화와 긴 문서에서 어떤 문제가 생기는지
- 실무에서 어떻게 다루는지
핵심은 window가 크다고 무조건 좋은 것이 아니라, 제한된 공간 안에 어떤 정보를 어떻게 넣느냐가 품질을 크게 좌우한다는 점입니다. RAG 파이프라인에서 관련 문서 10개를 전부 넣었더니 답변이 오히려 장황해지고 핵심을 놓치는 경우가 늘었습니다. top-4로 줄이고 나머지는 요약본으로 대체하니 정확도가 68%에서 85%로 올랐고, 토큰 비용도 40% 줄었습니다.
Context window란 무엇인가
LLM은 무한한 길이의 입력을 한 번에 처리하지 못합니다. 항상 일정한 범위 안의 토큰을 보고 다음 출력을 만듭니다. 그 작업 범위가 바로 context window입니다.
여기에 들어가는 것은 생각보다 많습니다.
- system prompt
- 사용자 입력
- 이전 대화 기록
- 검색된 문서 조각
- 툴 실행 결과
- 모델이 곧 이어서 생성해야 할 출력 여유분
즉 “문서를 몇 페이지까지 읽을 수 있나”보다 조금 더 넓은 개념입니다. 현재 응답을 만드는 데 모델이 활용할 수 있는 작업 공간이라고 보는 편이 더 정확합니다.
토큰 제한은 왜 중요할까
문맥이 조금만 길어져도 context budget은 금방 소모됩니다. 예를 들어 코딩 도우미나 문서 분석 도구는 아래 항목이 한 요청 안에 같이 들어가는 일이 많습니다.
- 긴 system prompt
- 사용자 질문
- 관련 코드나 문서 일부
- 이전 대화에서 결정된 조건
- 출력 포맷 지시
이때 토큰 예산을 대충 잡으면 중요한 정보가 잘리거나, 반대로 너무 많은 정보를 넣어서 잡음만 늘어날 수 있습니다.
예를 들면 이런 식입니다.
System instructions: 600 tokens
User question: 300 tokens
Chat history summary: 900 tokens
Retrieved documents: 5,000 tokens
Tool output: 1,200 tokens
Reserved output space: 1,500 tokens
모델의 허용 범위가 충분하지 않다면 어디선가 잘라내야 합니다. 문제는 이때 무엇을 남기고 무엇을 버리느냐가 답변 품질에 직접 영향을 준다는 점입니다.
Context window가 크면 무조건 좋을까
큰 window는 분명 유용합니다. 더 많은 문서와 더 긴 대화를 한 번에 넣을 수 있으니까요. 하지만 여기에는 흔한 오해가 있습니다. 많이 넣을 수 있다고 해서 모델이 그 정보를 모두 잘 활용하는 것은 아닙니다.
오히려 이런 문제가 생길 수 있습니다.
- 중요한 정보가 긴 맥락 속에 묻힘
- 덜 중요한 문서가 함께 들어가 잡음 증가
- 응답 비용 증가
- 응답 지연 증가
즉 “더 많이 넣기”와 “더 잘 쓰기”는 다른 문제입니다. 실무에서는 단순히 window 숫자만 보는 것보다, 필요한 정보만 선별해서 넣는 설계가 더 중요할 때가 많습니다.
긴 대화에서 자주 생기는 문제
채팅형 제품에서는 대화가 길어질수록 초반 규칙과 사실이 점점 뒤로 밀립니다. 그러면 모델이 다음과 같은 실수를 하기 쉽습니다.
- 초반 제약 조건을 잊어버림
- 이미 말한 내용을 반복해서 다시 물음
- 말투나 출력 형식을 놓침
- 앞에서 내린 결론과 다른 방향으로 흐름이 틀어짐
그래서 긴 대화 시스템은 모든 대화를 원문 그대로 계속 붙이는 방식을 오래 유지하지 않습니다. 대신 보통 아래 중 하나를 섞습니다.
- 대화 요약 메모
- 핵심 상태만 유지하는 memory layer
- 최근 대화 일부만 유지
- 중요한 사실만 별도 구조화
즉 긴 대화를 잘 다루는 문제는 “기록을 많이 보관하는가”보다 “무엇을 현재 문맥으로 다시 주입하는가”에 가깝습니다.
긴 문서에서는 무엇이 달라질까
문서가 길어질수록 모든 내용을 한 번에 넣는 전략은 금방 비효율적이 됩니다. 특히 매뉴얼, 정책 문서, 위키, 코드베이스처럼 길고 구조가 복잡한 자료는 더 그렇습니다.
실무에서는 보통 아래 전략을 씁니다.
1. Chunking
문서를 작은 조각으로 나눕니다. 그래야 현재 질문과 관련 있는 부분만 선택해서 넣을 수 있습니다.
2. Retrieval
질문과 관련된 chunk만 검색해서 context에 포함합니다. 이 구조가 바로 RAG 가이드에서 설명한 방식과 연결됩니다.
3. Section summary
문서 전체 대신 섹션 요약을 먼저 만들고, 필요할 때 원문 조각을 다시 가져옵니다.
4. 단계형 질문
한 번에 모든 답을 만들려고 하지 않고, 먼저 범위를 좁힌 뒤 세부 질문으로 들어갑니다.
결국 긴 문서를 잘 다루는 핵심은 큰 window 하나에 기대는 것이 아니라, 정보를 구조적으로 압축하고 선택하는 것입니다.
RAG와 context window는 어떤 관계일까
초보자 입장에서는 둘이 비슷해 보일 수 있지만 역할이 조금 다릅니다.
- context window: 현재 요청에서 모델이 볼 수 있는 총 입력 공간
- RAG: 그 공간 안에 어떤 문서를 넣을지 고르는 방식
RAG가 있으면 모든 문서를 한꺼번에 넣지 않아도 됩니다. 질문과 관련된 조각만 가져와서 넣기 때문에:
- 비용을 줄이기 쉽고
- 잡음을 줄일 수 있고
- 정확도를 높이기 쉬워집니다
즉 context window와 RAG는 경쟁 관계가 아니라 같이 쓰일 때 효과가 큰 경우가 많습니다.
실무에서 어떻게 대응하면 좋을까
실제 시스템을 만들 때는 “최대 몇 토큰까지 되나”만 보지 말고, 문맥 예산을 어떻게 배분할지 먼저 생각하는 편이 좋습니다.
아래 질문이 도움이 됩니다.
- system prompt가 너무 길지 않은가
- 이전 대화를 원문 그대로 다 넣고 있지 않은가
- 검색 문서 수가 필요 이상으로 많은가
- 출력 길이를 위한 여유 공간을 확보했는가
- 요약과 원문을 섞는 기준이 있는가
이 질문에 답하다 보면 window 한계는 단순한 모델 스펙 문제가 아니라 프롬프트 설계와 데이터 흐름 문제라는 점이 보입니다.
자주 하는 오해
1. context window가 크면 모델이 모든 내용을 완벽히 기억한다
아닙니다. 들어갔다고 해서 다 똑같이 잘 활용되는 것은 아닙니다.
2. 긴 문서는 통째로 넣는 것이 가장 좋다
중요한 정보가 묻히고 비용만 커질 수 있습니다.
3. context 문제는 최신 모델로만 해결된다
모델 선택도 중요하지만, chunking, retrieval, summary 설계가 결과를 크게 바꾸는 경우가 많습니다.
FAQ
Q. context window와 memory는 같은 말인가
완전히 같지는 않습니다. context window는 현재 응답에서 쓸 수 있는 입력 범위에 가깝고, memory는 그 안에 무엇을 다시 넣어 줄지 관리하는 개념에 더 가깝습니다.
Q. window가 큰 모델은 항상 더 비쌀까
실사용에서는 보통 입력량이 늘수록 비용과 지연도 함께 늘어납니다. 그래서 품질과 효율을 같이 봐야 합니다.
Q. 긴 문서를 다루려면 무조건 큰 window가 필요할까
꼭 그렇지는 않습니다. 좋은 chunking과 retrieval만으로도 상당히 좋은 결과를 낼 수 있습니다.
Read Next
- 문서를 선별해서 가져오는 구조는 RAG 가이드에서 이어서 볼 수 있습니다.
- 프롬프트 안에 무엇을 남길지 고민할 때는 프롬프트 엔지니어링 가이드도 함께 도움이 됩니다.
- 긴 문맥에서 품질이 실제로 좋아졌는지 확인하려면 LLM 평가 가이드를 같이 보는 것이 좋습니다.
먼저 읽어볼 가이드
검색 유입이 많은 핵심 글부터 이어서 보세요.
- 미들웨어 트러블슈팅 가이드: Redis, RabbitMQ, Kafka 중 어디부터 볼까 Redis, RabbitMQ, Kafka가 함께 있는 시스템에서 지금 보이는 장애가 어느 계층에 더 가까운지, 첫 10분 안에 무엇을 확인하고 어떤 글로 들어가야 하는지 정리한 실전 허브 가이드입니다.
- Kubernetes CrashLoopBackOff: 먼저 볼 것들 startup failure, probe, config, resource limit 관점에서 CrashLoopBackOff를 어떻게 나눠서 봐야 하는지 정리한 가이드입니다.
- Astro 기술 블로그 SEO 체크리스트: 트래픽 기다리기 전에 먼저 고칠 것 Astro 기술 블로그를 위한 실전 SEO 체크리스트입니다. 배포 호스트 확인, robots.txt, sitemap, canonical, hreflang, 구조화 데이터, 페이지별 메타데이터, noindex 판단, 검증 명령까지 우선순위대로 정리합니다.
- 다국어 블로그 canonical과 hreflang 설정 가이드: 무엇을 확인하고 어디서 깨질까 다국어 블로그에서 canonical과 hreflang을 어떻게 설정해야 하는지 실전 기준으로 정리합니다. self-canonical, 상호 연결되는 hreflang 묶음, x-default, 카테고리 페이지, 최종 렌더 HTML 점검, 한 언어 버전이 다른 언어 버전을 눌러버리는 실수까지 다룹니다.
- OpenAI Codex CLI 설치 가이드: 설치, 인증, 첫 작업까지 OpenAI Codex CLI를 실전 기준으로 설치하는 방법을 정리했다. 설치, 로그인, 첫 실행, Windows 주의점, 첫 작업을 어떻게 시작하면 좋은지까지 다룬다.