컨텍스트 창이란 무엇인가
이 장에서 배우는 것 모델이 "기억한다"고 느껴지는 것의 실제 구조. 이걸 알면 긴 작업에서 왜 앞의 지시를 잊은 것처럼 구는지가 설명됩니다.
매번 백지에서 시작합니다
먼저 놀라운 사실 하나입니다.
모델은 아무것도 기억하지 않습니다.
대화가 이어지는 것처럼 보이는 이유는, 지난 대화를 매번 통째로 다시 넣어주기 때문입니다.
"세 번째 것을 자세히 알려줘"가 통했던 이유가 이것입니다. 기억한 게 아니라 앞 대화가 그 요청 안에 같이 들어 있었던 것입니다.
컨텍스트 = 지금 넣어준 전부
그 "지금 넣어준 전부"를 컨텍스트라고 부릅니다. 여기에는 대화만 들어가는 게 아닙니다.
graph TD
A["시스템 지시<br/>역할 · 규칙 · 말투"] --> E["컨텍스트"]
B["지난 대화 전체"] --> E
C["붙여넣은 자료<br/>문서 · 표 · 코드"] --> E
D["도구 실행 결과"] --> E
F["이번 요청"] --> E
E --> G["모델"]도구 실행 결과도 컨텍스트에 들어갑니다. 이게 나중에 중요해집니다 — 조회 결과가 크면 그만큼 자리를 차지합니다.
창에는 크기가 있습니다
컨텍스트 창(context window)에는 정해진 최대 크기가 있습니다. 모델마다 다르지만, 어떤 크기든 유한하다는 점이 핵심입니다.
크기를 세는 단위는 토큰입니다. 대략 이렇게 생각하시면 됩니다.
| 대략 | |
|---|---|
| 한국어 1글자 | 토큰 1개 안팎 |
| 영어 1단어 | 토큰 1~2개 |
| A4 한 장 | 토큰 1,000~1,500개 |
정확히 알 필요는 없습니다. "긴 문서를 넣으면 자리를 많이 차지한다" 정도의 감이면 충분합니다.
왜 이게 중요한가
세 가지 실무적 결과가 따라 나옵니다.
1. 넣은 만큼 돈이 듭니다
비용은 대체로 주고받은 토큰 양으로 계산됩니다. 대화가 길어지면 매 요청마다 그 전체를 다시 보내므로, 뒤로 갈수록 한 번의 요청이 비싸집니다.
같은 질문이라도 긴 대화 끝에서 하면 더 비쌉니다.
2. 창이 차면 밀려납니다
한도에 닿으면 오래된 것부터 밀려납니다. 다음 장의 주제입니다.
3. 넣을수록 좋은 게 아닙니다
"자료를 많이 주면 좋겠지" 싶지만 반대인 경우가 있습니다. 관련 없는 자료가 많으면 정작 중요한 것이 묻힙니다. 사람도 100장짜리 자료에서 핵심을 찾는 게 더 어렵습니다.
필요한 것만, 필요할 때. 이게 컨텍스트를 다루는 원칙입니다.
대화를 새로 시작해야 할 때
| 상황 | 판단 |
|---|---|
| 주제가 바뀌었다 | 새 대화. 앞 맥락이 도움이 안 되면 짐입니다 |
| 앞의 시도가 실패했고 방향을 바꾼다 | 새 대화. 실패한 시도가 계속 영향을 줍니다 |
| 같은 주제를 이어간다 | 유지 |
| 답이 점점 이상해진다 | 새 대화. 창이 찼을 가능성 |
마지막이 흔한 신호입니다. 긴 대화에서 답 품질이 떨어지면 모델 문제가 아니라 컨텍스트가 지저분해진 것일 때가 많습니다.
자주 하는 오해
"이전 대화를 기억하니 개인정보도 기억하겠네?"
두 가지를 구분해야 합니다.
- 대화 중 기억: 그 대화 안에서만. 새 대화에는 안 넘어갑니다
- 서비스가 저장하는 것: 이건 서비스마다 다릅니다
조심할 것에서 다룬 대로, 무엇이 어디에 저장되는지는 서비스 정책을 확인해야 합니다. 모델의 기억 구조와 서비스의 저장 정책은 별개 문제입니다.
"창이 크면 다 해결되나?"
크기가 커지면 여유가 생기는 건 맞습니다. 그런데 비용은 계속 늘고, 관련 없는 내용이 많으면 품질이 떨어지는 문제는 남습니다. 크기는 완화이지 해결이 아닙니다.
확인
1. 모델이 앞 대화를 "기억"하는 실제 구조는?
답
기억하지 않습니다. 매 요청마다 지난 대화를 통째로 다시 넣어주는 것입니다. 그래서 대화가 길어질수록 한 번의 요청에 들어가는 양이 늘어납니다.
2. 같은 질문인데 긴 대화 끝에서 하면 왜 더 비쌉니까?
답
앞의 대화 전체를 함께 보내기 때문입니다. 20번째 요청은 앞의 19턴을 전부 포함합니다.
3. 긴 대화에서 답이 점점 이상해지면 무엇을 의심해야 합니까?
답
컨텍스트가 차거나 지저분해진 것입니다. 모델 성능 문제가 아니라 관련 없는 내용이 쌓인 것일 때가 많으므로, 새 대화로 시작하는 게 빠릅니다.
창이 찼을 때 실제로 무슨 일이 벌어지는지 봅니다 → 컨텍스트가 밀려날 때