컨텍스트 윈도우와 컨텍스트 길이
용어 컨텍스트 윈도우와 컨텍스트 길이는 흔히 동의어로 사용됩니다. 출처에서 둘을 구분하는 경우, 윈도우는 최대 용량을 뜻하고 길이는 현재 사용 중인 양을 뜻합니다.
따라서 다음 세 가지 수치를 구분할 필요가 있습니다.
- 최대 컨텍스트 윈도우: 모델 또는 엔드포인트에 대해 광고되는 용량입니다.
- 현재 컨텍스트 길이: 특정 요청과 응답에 들어 있는 토큰 수입니다.
- 안정적으로 사용할 수 있는 컨텍스트: 모델이 사용자의 작업에 맞게 효과적으로 활용할 수 있는 양입니다.
세 번째 수치는 고정된 사양이 아닙니다. 모델, 작업, 관련 세부 정보의 배치, 그리고 주의를 두고 경쟁하는 무관한 자료의 양에 따라 달라집니다.
컨텍스트 윈도우의 작동 방식
애플리케이션은 요청에 사용할 자료를 구성합니다. 여기에는 다음이 포함될 수 있습니다.
- 시스템 및 개발자 지침
- 이전 사용자 및 어시스턴트 메시지
- 현재 메시지
- 검색된 구문 또는 첨부 문서
- 도구 설명 및 도구 결과
- 서식 및 특수 제어 토큰
토크나이저는 이 자료를 모델이 처리하는 토큰으로 변환합니다. 그런 다음 대규모 언어 모델은 한 번에 토큰 하나씩 응답을 생성합니다. 생성된 각 토큰은 다음 토큰을 생성할 때 사용할 수 있는 시퀀스의 일부가 되므로 출력에도 공간이 필요합니다.
이후 대화 차례에서는 애플리케이션이 일반적으로 이전 자료 중 선택한 부분을 다시 전송합니다. 대화 기록을 그대로 유지할 수도 있고, 오래된 대화 차례를 삭제할 수도 있으며, 관련 구문만 검색하거나, 이전 자료를 요약으로 대체할 수도 있습니다. 별도의 메모리 기능은 요청 사이에 정보를 저장할 수 있지만, 그 저장 공간 자체가 컨텍스트 윈도우는 아닙니다. 모델이 정보를 사용하려면 먼저 해당 정보가 현재 컨텍스트에 포함되어야 합니다.
경계에 도달했을 때의 동작은 다양합니다. API는 크기가 초과된 요청을 거부할 수 있습니다. 채팅 제품은 가장 오래된 자료를 삭제하거나 이를 요약할 수 있습니다. 생성은 제한에 도달하면 중단될 수 있습니다. 정확한 모델과 엔드포인트의 문서를 확인하세요.
예시로 살펴보기
어떤 모델에 가상의 12,000토큰 공유 컨텍스트 윈도우가 있다고 가정해 보겠습니다.
- 숨겨진 지침: 700토큰
- 도구 정의: 800토큰
- 유지된 채팅 및 문서: 6,500토큰
- 현재 요청: 1,000토큰
입력 합계는 9,000토큰입니다. 응답에는 최대 3,000토큰이 남습니다.
이제 엔드포인트에 별도의 2,000토큰 출력 제한이 있다고 가정해 보겠습니다. 공유 윈도우에 3,000토큰이 남아 있더라도 응답에는 2,000토큰만 사용할 수 있습니다. 실제 제한은 적용 가능한 제약 중 가장 먼저 도달하는 제약입니다.
애플리케이션이 6,500토큰의 기록을 1,500토큰 요약으로 압축하면 입력은 4,000토큰으로 줄어듭니다. 그러면 더 많은 공간이 생기지만, 컨텍스트 윈도우가 더 커진 것은 아닙니다. 이는 이전 자료를 더 작게 표현한 다른 형태이며, 요약에서 생략된 세부 정보는 요청에서 사라집니다.
컨텍스트 윈도우가 중요한 이유
윈도우는 모델이 한 번에 고려할 수 있는 원본 자료의 양을 제한합니다. 따라서 긴 계약서를 한 번의 요청으로 제출할 수 있는지, 긴 대화를 일관되게 유지할 수 있는지, 또는 코딩 어시스턴트가 문제를 해결하는 데 충분한 저장소 내용을 제공할 수 있는지에 영향을 줍니다.
또한 출력 계획에도 영향을 줍니다. 사용 가능한 용량을 입력으로 거의 모두 채우면 답변을 생성할 공간이 너무 적게 남을 수 있습니다. 애플리케이션은 기록이나 검색된 텍스트를 얼마나 포함할지 결정하기 전에 출력 예산을 미리 확보하는 경우가 많습니다.
컨텍스트가 많아지면 비용도 증가합니다. 입력이 길수록 처리에 더 많은 시간과 연산이 필요한 경우가 많고, 많은 API는 토큰 단위로 요금을 부과합니다. 무관한 컨텍스트가 유용한 근거를 식별하기 어렵게 만들 수도 있습니다. 가장 좋은 요청이 반드시 가장 많은 내용을 담은 요청인 것은 아닙니다. 필요한 응답을 생성할 여유를 남기면서 관련 자료를 충분히 포함해야 합니다.
더 큰 윈도우가 더 나은 메모리를 의미하지는 않습니다
컨텍스트 윈도우는 지속적인 메모리, 지식 또는 지능이 아니라 용량을 측정합니다. 모델은 어떤 구문을 입력받더라도 그 모든 부분을 똑같이 잘 사용할 수 있는 것은 아닙니다.
통제된 장문 컨텍스트 연구에 따르면 관련 정보가 중간에 깊이 묻혀 있을 때보다 시작이나 끝부분에 있을 때 모델의 성능이 더 좋을 수 있습니다. 결과는 모델과 작업에 따라 다르지만, 실용적인 교훈은 일관됩니다. 광고된 최대치는 무엇을 담을 수 있는지를 알려줄 뿐, 모델이 무엇을 완벽하게 기억하거나 추론할 수 있는지를 알려주지는 않습니다.
프롬프트 캐싱도 이러한 구분을 바꾸지 않습니다. 접두사를 재사용할 때 필요한 작업량이나 비용을 줄일 수는 있지만, 캐시된 자료 역시 모델의 컨텍스트 용량에 포함될 수 있습니다.
컨텍스트 윈도우는 지식 컷오프와도 다릅니다. 컨텍스트 윈도우는 현재 응답 중에 사용할 수 있는 정보를 제한합니다. 지식 컷오프는 학습 중 습득한 정보의 시간적 경계를 나타냅니다.
다음에 읽을 내용
텍스트가 제한에 포함될 때 어떻게 계산되는지 이해하려면 AI에서 토큰이란 무엇인가요?를 읽어 보세요. 컨텍스트 윈도우가 모델의 한 번에 하나의 토큰을 생성하는 과정에서 어떤 역할을 하는지 알아보려면 LLM이란 무엇인가요?를 읽어 보세요. 컨텍스트 용량과 가장 자주 혼동되는 제한에 대해서는 컨텍스트 윈도우와 지식 컷오프의 차이를 읽어 보세요.