AI · AI 기초
AI의 토큰과 컨텍스트 윈도우란 무엇인가요?
핵심 답변
토큰은 언어 모델이 읽고 쓰는 텍스트의 단위로, 짧은 단어 하나, 긴 단어의 일부, 문장 부호, 몇 글자가 토큰이 될 수 있습니다. 컨텍스트 윈도우(context window)는 모델이 한 번에 고려할 수 있는 최대 토큰 수로, 지시문, 대화 기록, 첨부 파일, 모델이 쓰는 답변까지 모두 합산합니다. 이 한도를 넘으면 오래된 내용이 잘리거나 요청이 실패합니다.
토큰은 어떻게 생겼나
언어 모델은 글자나 단어 전체를 읽지 않습니다. 먼저 토크나이저가 정해진 어휘 목록에서 텍스트를 조각으로 자르고, 각 조각이 숫자가 됩니다. 모델은 이 숫자만 봅니다.
아래 예시는 OpenAI의 오픈소스 토크나이저 라이브러리 tiktoken의 o200k_base 인코딩으로 센 결과입니다. 다른 모델은 다른 토크나이저를 쓰므로 수치는 다르지만 경향은 비슷합니다.
| 텍스트 | 토큰 수 | 분할 방식 |
|---|---|---|
| The cat sat on the mat. | 7 | The | cat | sat | on | the | mat | . |
| Tokenization is surprisingly unintuitive. | 7 | Token | ization | is | surprisingly | unint | uitive | . |
| unbelievable | 3 | un | bel | ievable |
| strawberry | 3 | st | raw | berry |
| 2026-11-02 | 6 | 202 | 6 | - | 11 | - | 02 |
| ChatGPT | 2 | Chat | GPT |
| 我喜欢吃苹果。 | 5 | 我 | 喜欢 | 吃 | 苹果 | 。 |
흔한 단어는 보통 앞 공백까지 포함해 토큰 하나입니다. 드물거나 긴 단어는 여러 조각으로 나뉩니다. 숫자와 날짜는 뜻과 맞지 않는 방식으로 쪼개지는데, 모델이 계산에서 실수하는 이유 중 하나입니다. strawberry도 세 덩어리로 들어오기 때문에 모델은 글자 r이 몇 개인지 직접 보지 못합니다.
모델이 서브워드 토큰을 쓰는 이유
단어 전체를 어휘로 삼으면 목록이 엄청나게 커지는데도 새 단어, 이름, 오타는 놓칩니다. 글자 하나하나를 어휘로 삼으면 모든 텍스트가 매우 길어집니다. 서브워드 토큰은 그 절충안입니다.
요즘 토크나이저 대부분은 바이트 쌍 인코딩(BPE)이나 그 변형을 씁니다. 단일 바이트나 글자에서 시작해, 학습 텍스트에서 가장 자주 붙어 나오는 쌍을 새 토큰으로 합치는 일을 반복합니다. 수없이 합치고 나면 자주 쓰는 단어는 토큰 하나가 되고, 드문 단어도 더 작은 조각으로 조립할 수 있습니다. 어휘에 없는 문자열이 생기지 않는 셈입니다.
모델 계열마다 자기 토크나이저를 따로 학습하기 때문에 같은 문장도 모델에 따라 토큰 수가 다릅니다. 토큰 수는 예상치나 예산을 잡는 데 유용하지만, 모든 모델에 통하는 단위는 아닙니다.
같은 문장, 다른 언어
토크나이저는 대체로 학습 데이터에 가장 많이 나온 언어에 맞춰 학습됩니다. 데이터가 적거나 문자 체계가 다른 언어는 같은 의미에 토큰이 더 많이 드는 경우가 흔합니다. "이 글을 세 줄로 요약해 주세요(Please summarize this article in three bullet points)"라는 지시를 번역해 예전 토크나이저 cl100k_base와 새 토크나이저 o200k_base로 센 결과입니다.
| 언어 | 글자 수 | 토큰 수 (cl100k_base) | 토큰 수 (o200k_base) |
|---|---|---|---|
| 영어 | 53 | 9 | 9 |
| 스페인어 | 36 | 7 | 7 |
| 중국어(간체) | 13 | 13 | 10 |
| 일본어 | 20 | 15 | 12 |
| 한국어 | 24 | 19 | 13 |
| 베트남어 | 42 | 21 | 14 |
눈에 띄는 점이 두 가지 있습니다. 어휘가 더 큰 새 토크나이저는 중국어, 일본어, 한국어, 베트남어에서 훨씬 효율적입니다. 그래도 이 예시에서는 여전히 같은 내용에 영어보다 토큰이 더 듭니다. API 요금과 컨텍스트 한도는 토큰 단위로 계산하므로, 언어에 따라 같은 작업이 더 비싸고 윈도우도 더 빨리 찰 수 있습니다.
컨텍스트 윈도우란
컨텍스트 윈도우는 요청 한 번에 쓰는 모델의 작업 기억입니다. 학습으로 배운 것과는 별개입니다. 모델이 답을 쓰는 데 쓸 수 있는 모든 것이 이 안에 들어가야 하고, 답변 자체도 포함됩니다.
채팅 앱에서는 새 메시지를 보낼 때마다 이전 대화가 함께 전송됩니다. 그래서 대화가 길어질수록 윈도우가 찹니다. 보통 한 요청에서 다음이 모두 계산됩니다.
- 시스템 프롬프트: 앱이나 개발자가 넣은 숨겨진 지시
- 이전의 모든 사용자 메시지와 어시스턴트 답변
- 첨부 문서, 붙여 넣은 텍스트, 이미지와 거기서 추출한 텍스트
- 도구 정의와 웹 검색 결과 같은 도구 실행 결과
- 새 답변. 답하기 전에 모델이 쓰는 숨겨진 추론(thinking) 토큰도 포함
윈도우 크기는 모델마다 크게 다르고 자주 바뀝니다. 이 글을 쓰는 시점에는 작은 로컬 모델의 수천 토큰에서 일부 대형 호스팅 모델의 100만 토큰 이상까지 다양합니다. 사용하는 모델의 문서를 확인하세요.
윈도우가 가득 차면 생기는 일
제품마다 한도를 다루는 방식이 다릅니다.
| 상황 | 보통 일어나는 일 | 눈에 보이는 증상 |
|---|---|---|
| API 요청이 윈도우보다 큼 | 오류와 함께 요청이 거부됨 | 프롬프트가 너무 길다는 메시지 |
| 답변이 출력 한도에 닿음 | 생성이 일찍 멈춤 | 답이 문장이나 목록 중간에서 끊김 |
| 앱에서 대화가 길어짐 | 가장 오래된 대화가 삭제되거나 요약으로 대체됨 | 어시스턴트가 처음에 말한 세부 내용을 잊음 |
| 아주 긴 컨텍스트지만 한도 안 | 모델이 전부 보관하지만 활용도는 떨어짐 | 긴 입력 중간에 있는 사실을 놓침 |
마지막 행이 일상에서 가장 중요합니다. 연구에 따르면 모델은 긴 입력의 처음과 끝에 있는 정보를 중간에 있는 정보보다 더 잘 활용하는 경향이 있습니다. 모델 제공사도 토큰 수가 늘면 정확도와 회상력이 떨어질 수 있다고 밝힙니다. 윈도우가 크면 더 많이 넣을 수 있지만, 모델이 그것을 전부 잘 쓴다는 보장은 없습니다.
토큰을 가늠하고 아끼는 방법
- 먼저 추정하세요. 영어는 단어 수에 약 1.3을 곱합니다. 중국어나 일본어는 글자 수를 세고, 새 토크나이저에서는 글자당 1토큰 안팎이거나 조금 적다고 보면 됩니다. cv.cm의 글자 수 세기 같은 도구를 쓰면 단어와 글자 수를 빠르게 알 수 있습니다.
- 정확해야 할 때는 정확히 세세요. 모델마다 수치가 다르므로 호출하는 모델의 토크나이저나 토큰 계산 엔드포인트를 쓰세요.
- 필요한 것만 보내세요. 파일 전체가 아니라 관련 부분만 붙여 넣고, 반복되는 머리글, 바닥글, 상투적 문구는 지웁니다.
- 긴 프롬프트에서는 핵심 지시를 중간에 묻지 말고 처음이나 끝에 두세요.
- 주제가 바뀌면 새 채팅을 시작하세요. 예전 메시지가 공간을 차지하고 모델을 헷갈리게 만들 수 있습니다.
- 답변 공간을 남겨 두세요. 입력이 윈도우를 거의 채우면 답이 짧아지거나 끊깁니다.
- 긴 작업은 지금까지의 결정 사항을 요약해 달라고 한 다음, 그 요약을 가지고 새 채팅에서 이어 가세요.
흔한 실수
- 토큰을 단어로 착각하기. 1,000단어 문서가 1,000토큰은 아니며, 많은 언어에서는 훨씬 더 많습니다.
- 모델이 전부 읽었다고 가정하기. 윈도우 안이라도 긴 입력의 중간에 있는 세부 내용은 무시될 수 있습니다. 근거로 삼은 구절을 인용해 달라고 요청하세요.
- 채팅을 넘어선 기억 기대하기. 앱이 저장된 메모를 넣어 주지 않는 한 새 대화는 빈 윈도우에서 시작합니다.
- 숨은 내용 잊기. 시스템 프롬프트, 도구 정의, 추론 토큰은 보이지 않아도 윈도우를 차지합니다.
- 모델 간 한도를 그대로 비교하기. 토크나이저가 다르기 때문에 같은 10만 토큰 한도라도 모델마다 담을 수 있는 텍스트 양이 다릅니다.
자주 묻는 질문
1,000단어는 몇 토큰인가요?
요즘 흔한 토크나이저로 일반적인 영어 산문이라면 약 1,200~1,300 토큰입니다. 코드, 숫자, URL, 영어가 아닌 많은 언어는 더 많이 필요합니다.
공백과 문장 부호도 토큰으로 세나요?
네. 문장 부호는 보통 독립 토큰이고, 공백 하나는 대개 다음 단어의 앞부분에 합쳐집니다. 공백, 줄바꿈, 들여쓰기가 늘면 토큰도 늘 수 있습니다.
이미지도 토큰을 쓰나요?
네. 이미지를 받는 모델은 이미지를 일정 수의 토큰으로 바꾸고, 이 토큰이 컨텍스트 윈도우에 포함됩니다. 이미지가 크거나 세밀할수록 보통 토큰이 더 들며, 정확한 규칙은 모델마다 다릅니다.
ChatGPT 같은 챗봇이 앞에서 한 말을 잊는 이유는 무엇인가요?
긴 대화에서는 앱이 컨텍스트 윈도우 안에 머물도록 오래된 메시지를 삭제하거나 요약할 수 있습니다. 예전 메시지가 남아 있어도 모델이 덜 주의를 기울일 수 있습니다. 핵심 사실을 다시 말해 주거나 짧은 요약으로 새 채팅을 시작하면 도움이 됩니다.
컨텍스트 윈도우는 클수록 항상 좋은가요?
꼭 그렇지는 않습니다. 더 많은 자료를 넣을 수 있지만 비용이 더 들고, 모델이 느려지거나 세부 사항에 덜 정확해질 수 있습니다. 짧고 잘 고른 컨텍스트가 더 나은 답을 주는 경우가 많습니다.