Project NEUROVERSE
목차

기초 이론 편 · 4부 AI는 어떻게 자료를 읽고 도구를 쓸까? — 4.1

컨텍스트 윈도우 — 모델은 대화를 기억하지 않습니다

모델은 매번 대화 전체를 처음부터 다시 읽습니다. 한 번에 읽을 수 있는 양을 넘으면, 넘친 부분은 아예 안 보입니다.

ChatGPT와 대화하다 보면 앞에서 한 말을 기억하는 것 같습니다. 그런데 사실 모델은 아무것도 기억하지 않습니다.

3.1에서 대화는 하나의 글로 이어 붙여서 모델에게 준다고 했습니다. 내가 새 메시지를 보낼 때마다, 서비스는 지금까지의 대화 전체를 다시 이어 붙여서 모델에게 줍니다. 모델은 그걸 처음부터 읽고 다음 토큰을 맞힙니다. 기억하는 것처럼 보이는 건, 매번 대화 전체를 다시 읽기 때문입니다.

문제는 모델이 한 번에 읽을 수 있는 양에 한계가 있다는 것입니다. 이 한계를 컨텍스트 윈도우(context window) 라고 하고, 토큰 수로 잽니다.

모델이 한 번에 볼 수 있는 양(토큰 수)을 바꿔보세요. 흐리게 변한 메시지는 창 밖이라 모델에게 아예 안 보여요.

  1. 나 안녕! 내 이름은 민지야. 10
  2. AI 안녕하세요, 민지님! 무엇을 도와드릴까요? 15
  3. 나 다음 주에 제주도 여행 가는데 일정 좀 짜줘. 15
  4. AI 좋아요. 며칠 동안 가시나요? 좋아하는 활동도 알려주세요. 18
  5. 나 3박 4일이고 바다랑 맛집을 좋아해. 15
  6. AI 첫째 날은 협재 해변, 둘째 날은 성산 일출봉 근처 맛집을 추천해요. 27
  7. 나 비 오면 갈 만한 곳도 알려줘. 11
  8. AI 실내라면 박물관이나 아쿠아리움 같은 곳이 좋아요. 19
  9. 나 고마워. 그런데 내 이름 뭐라고 했지? 12

AI

오른쪽 숫자는 각 메시지의 실제 토큰 수예요(o200k_base 기준). 대화 전체는 142토큰이에요.

해보면 보이는 것

창이 60토큰이면 최근 메시지 몇 개만 들어갑니다. 첫 메시지 “내 이름은 민지야”는 창 밖이라, 모델에게는 처음부터 없던 말입니다. 그래서 이름을 물어보면 모른다고 합니다. 모델이 깜빡한 게 아니라, 애초에 안 보이는 것입니다.

창을 142토큰 이상으로 늘리면 대화 전체가 들어가고, 이름을 맞힙니다.

실제로는 어떻게 될까

요즘 모델의 창은 이 위젯보다 훨씬 커서, 수만에서 수백만 토큰까지 되는 것도 있습니다. 책 몇 권 분량이죠. 그래도 아주 긴 대화나 큰 파일을 넣으면 넘칠 수 있습니다. 넘치면 서비스마다 대처가 다릅니다. 오래된 부분을 잘라내기도 하고, 앞부분을 요약해서 짧게 줄이기도 합니다.

일부 서비스의 “기억(메모리)” 기능도 같은 원리입니다. 모델이 진짜로 기억하는 게 아니라, 서비스가 따로 적어둔 메모를 새 대화를 시작할 때 컨텍스트에 같이 넣어주는 것입니다.

쓸 때 팁: 대화가 아주 길어져서 앞의 내용을 잘 반영하지 않는 것 같으면, 중요한 내용을 정리해서 새 대화를 시작하는 게 나을 때가 많습니다.

더 깊게 · 창을 무한히 늘리면 안 될까

3.5의 “더 깊게”에서 어텐션은 토큰 N개가 서로를 보느라 N × N만큼 계산한다고 했습니다. 창이 두 배가 되면 이 부분 계산은 네 배가 됩니다. 메모리도 많이 듭니다. 그래서 창을 키우는 건 비용이 크고, 긴 창을 효율적으로 다루는 방법은 지금도 활발히 연구되고 있습니다.

그리고 매번 대화 전체를 다시 읽기 때문에, 대화가 길어질수록 API 요금(입력 토큰 수)도 늘어납니다. 서비스들이 이미 읽은 앞부분 계산을 저장해뒀다가 재사용하는 방법(캐싱)을 쓰는 이유입니다.

정리

  • 모델은 대화를 기억하지 않습니다. 서비스가 매번 대화 전체를 다시 넣어줍니다.
  • 한 번에 읽을 수 있는 양이 컨텍스트 윈도우이고, 토큰 수로 잽니다.
  • 창 밖으로 밀려난 내용은 모델에게 아예 안 보입니다. 창 안이어도 똑같이 잘 반영된다는 보장은 없습니다.

이 장을 복사합니다. ChatGPT나 Claude 같은 AI에 붙여넣고 그대로 보내면 AI가 다 읽었다고 답합니다. 그다음 궁금한 걸 물어보세요.