컨텍스트 윈도우 완전 해설: 토큰, 어텐션, 그리고 롱 컨텍스트가 무너지는 지점
더 큰 컨텍스트 윈도우가 더 좋은 기억력과 같은 것은 아닙니다. 컨텍스트 윈도우가 진짜 무엇인지, 긴 입력이 왜 성능이 떨어지는지, 그리고 이를 고려해 설계하는 법을 살펴봅니다.
컨텍스트 윈도우는 현대 AI에서 가장 많이 인용되면서도 가장 적게 이해되는 수치 중 하나입니다. 더 큰 RAM이나 더 큰 저장 공간이 더 좋게 들리는 것처럼, 더 큰 컨텍스트 윈도우도 무조건 더 좋게 들립니다. 그렇게 단순하지 않습니다. 컨텍스트 윈도우는 실제 한계와 조용한 실패 모드를 지닌 작업 공간이며, 이를 무한하고 완벽한 기억력처럼 다루는 것이야말로 세 단락 전에 알려준 내용을 알 수 없이 잊어버리는 시스템을 출시하게 되는 경로입니다.
이 글은 컨텍스트 윈도우가 구체적으로 무엇인지, 그 밑바탕의 메커니즘이 왜 긴 입력을 비싸고 불완전하게 만드는지, 그리고 그 한계가 없는 척하는 대신 그것을 존중하는 시스템을 설계하는 법을 설명합니다.
컨텍스트 윈도우란 실제로 무엇인가
언어 모델은 문자나 단어를 직접 읽지 않습니다. 모델은 토큰(token) — 한 단어, 단어의 일부, 또는 문장 부호인 경우가 많은 텍스트 덩어리 — 을 읽습니다. 대략적인 어림짐작으로, 토큰 하나는 영어 몇 글자에 해당하므로, 한 페이지의 텍스트는 수백 개의 토큰입니다. 정확한 대응은 모델의 토크나이저에 따라 다르지만, 원칙은 변하지 않습니다. 텍스트는 모델이 무언가를 보기 전에 토큰의 시퀀스가 됩니다.
컨텍스트 윈도우는 모델이 한 번에 고려할 수 있는 토큰의 최대 개수입니다. 당신이 제공하는 입력 더하기 모델이 생성하는 출력이, 같은 예산을 공유합니다. 단일 상호작용에서 모델이 "아는" 모든 것은 이 윈도우 안에 존재합니다. 당신의 지시, 붙여넣은 문서, 지금까지의 대화, 그리고 작성 중인 답변까지 말입니다. 별도의 장기 기억은 없습니다. 사람들이 모델이 채팅의 앞부분을 "기억한다"고 말할 때 의미하는 것은, 그 앞부분 텍스트가 여전히 윈도우 안에 있다는 것입니다. 무언가가 윈도우 밖으로 떨어지는 순간, 모델은 그것에 전혀 접근할 수 없습니다.
이것이 첫 번째로 지속되는 통찰입니다. 컨텍스트 윈도우는 저장소가 아니라 단기 작업 기억입니다. 그것은 지속되지 않고, 스스로 자라지 않으며, 그 안의 어떤 것도 반드시 사용된다는 보장이 없습니다.
어텐션: 엔진과 그 비용
롱 컨텍스트가 왜 어려운지 이해하려면 어텐션(attention), 즉 모델이 각 토큰을 다른 토큰들과 관련짓게 하는 메커니즘에 대한 감을 잡아야 합니다. 처리하는 모든 토큰에 대해, 모델은 윈도우 안의 다른 각 토큰이 그것에 얼마나 영향을 미쳐야 하는지를 따져봅니다. 그것이 바로 모델이 대명사를 그것이 가리키는 명사와 연결하거나, 질문을 문서 앞쪽에 묻혀 있는 관련 문장과 연결하게 해주는 것입니다.
결정적인 성질은 그 비용이 어떻게 증가하는가입니다. 모든 토큰이 다른 모든 토큰에 어텐션을 줄 수 있기 때문에, 작업량은 대략 토큰 수의 제곱에 비례해 늘어납니다. 입력을 두 배로 늘리면 작업량이 두 배가 되는 것이 아니라, 대략 네 배가 됩니다. 이것이 매우 긴 입력을 처리하는 일이 시간과 비용 양쪽에서 불균형하게 비싼 이유이고, 컨텍스트 윈도우가 임의로 커질 수 없고 단단한 천장을 갖는 이유입니다. 이 제곱 법칙 비용은 길이에 대한 근본적인 세금입니다. 여러 기법이 이를 줄이고 있고, 더 효율적인 롱 컨텍스트 방법에 대한 연구도 활발히 진행 중이지만, 기본 압력은 결코 사라지지 않습니다. 더 긴 입력은 어텐션을 주기에 초선형적으로 더 비쌉니다.
토큰은 비용과 한계의 단위다
모든 것이 토큰으로 측정되기 때문에, 토큰은 당신이 부딪히게 될 거의 모든 실질적 제약의 단위이기도 합니다.
- 호스팅 모델에서는 토큰 단위로 과금됩니다. 입력과 출력 모두입니다. 프롬프트에 든 긴 문서는 보낼 때마다 실제 돈이 듭니다.
- 지연 시간은 토큰을 따라갑니다. 윈도우에 토큰이 많을수록 대체로 응답이 느려집니다. 읽을 것이 더 많고, 생성이 같은 예산을 두고 경쟁하기 때문입니다.
- 윈도우는 공유됩니다. 거대한 입력은 답변을 위한 공간을 덜 남깁니다. 윈도우를 컨텍스트로 가득 채우면 출력을 굶길 수 있습니다.
여기서 실용적인 습관이 따라옵니다. 토큰을 의도적으로 쓰는 예산으로 다루십시오. 프롬프트를 "혹시 모르니까" 자료로 채우는 것은 공짜 보험이 아닙니다. 돈이 들고, 지연을 더하며, 다음 섹션에서 설명하듯 실제로 답변을 더 나쁘게 만들 수도 있습니다.
롱 컨텍스트가 무너지는 지점: 잃어버린 중간
사람들을 가장 놀라게 하는 실패 모드가 여기 있습니다. 텍스트가 윈도우 안에 넉넉히 들어맞을 때조차, 모델은 그 전부에 똑같이 어텐션을 주지 않습니다. 널리 관찰된 패턴은, 모델이 긴 입력의 시작과 끝에 있는 정보를 중간에 묻힌 정보보다 더 신뢰성 있게 사용한다는 것입니다. 결정적인 사실을 긴 문서의 한가운데에 두면, 기술적으로는 바로 윈도우 안에 있는데도 모델은 그것을 본 적이 없는 것처럼 행동할 수 있습니다.
이는 큰 컨텍스트 윈도우가 모델이 당신이 넣은 모든 것을 사용한다고 보장하지 않는다는 뜻입니다. 들어맞는 것과 사용되는 것은 다릅니다. 사양표의 용량 수치는 무엇이 들어맞는지 알려주지만, 무엇이 신뢰성 있게 사용되는지에 대해서는 거의 아무것도 알려주지 않습니다.
같은 효과가 팀들이 거듭 재발견하는 직관에 반하는 결과를 설명합니다. 프롬프트에 더 많은 문서를 욱여넣으면 답변 품질이 올라가기는커녕 내려갈 수 있다는 것입니다. 관련 없는 텍스트가 많아질수록 어텐션이 희석되고, 관련 있는 부분을 가장 놓치기 쉬운 중간으로 더 깊이 밀어 넣습니다. 컨텍스트에서는 더 많은 것이 자동으로 더 좋은 것이 아니며, 때로는 더 나쁩니다.
한계를 피하지 말고, 한계를 위해 설계하라
이런 제약을 없앨 수는 없지만, 그것이 좀처럼 발목을 잡지 않도록 설계할 수는 있습니다. 지배 원칙은 단순합니다. 덜 넣고, 옳은 것을 보일 자리에 두라.
- 버리지 말고 검색하라. 지식 베이스 전체를 붙여넣는 대신, 현재 질문과 관련된 몇 개의 구절만 가져와 그것만 포함하십시오. 이것이 검색 증강 시스템(retrieval-augmented systems)의 핵심 아이디어이며, 모든 것을 버리듯 넣는 것이 비싸고 신뢰할 수 없기 때문에 정확히 그 이유로 존재합니다.
- 위치가 중요하다. 가장 중요한 지시와 가장 관련 있는 근거를, 긴 블록의 중간에 묻지 말고 프롬프트의 시작이나 끝 가까이에 두십시오.
- 과거를 요약하라. 긴 대화에서는 모든 단어를 앞으로 가져가는 대신, 주기적으로 앞선 턴을 짧은 요약으로 압축하십시오. 이렇게 하면 전체 예산을 대화록에 쓰지 않고도 핵심 사실을 윈도우 안에 유지합니다.
- 답변을 위한 공간을 남겨라. 출력을 위해 윈도우를 충분히 예약하십시오. 윈도우를 가장자리까지 채우는 프롬프트는 응답을 잘라내거나 저하시킬 수 있습니다.
- 실제 길이로 회상을 시험하라. 사용 사례에 긴 입력이 포함된다면, 알려진 사실을 현실적인 문서의 중간에 숨겨두고 모델이 그것을 찾아내는지 확인하는 작은 평가를 만드십시오. 용량 수치가 당신을 지켜준다고 가정하지 말고, 실패 모드를 직접 측정하십시오.
실제 적용 예시
제품 설명서를 바탕으로 답하는 지원 어시스턴트를 상상해 봅시다. 순진한 설계는 모든 프롬프트에 설명서 전체를 붙여넣고, 큰 윈도우가 알아서 처리해 주리라 믿습니다. 그것은 느리고, 비싸며, — 관련 단락이 대개 중간 어딘가에 있기 때문에 — 신뢰할 수 없을 것입니다. 절제된 설계는 설명서를 인덱싱하고, 사용자 질문에 맞는 두세 개 구절을 검색하며, 그것을 프롬프트의 끝 가까이에 명확히 배치하고, 답변을 위한 넉넉한 공간을 남깁니다. 두 번째 시스템은 가용한 컨텍스트의 훨씬 작은 비율만 사용하면서도 더 저렴하고, 더 빠르며, 게다가 더 정확합니다. 이것이 한 예시에 담긴 교훈 전부입니다. 윈도우를 잘 쓰는 것이 채우는 것을 이깁니다.
정리
컨텍스트 윈도우는 토큰으로 측정되는 모델의 단기 작업 기억이며, 당신의 입력과 모델의 출력 사이에서 공유됩니다. 어텐션은 그것을 유용하게 만드는 것이자, 그 비용이 길이의 제곱에 비례해 늘기 때문에 그것을 제한적으로 만드는 것입니다. 용량 수치는 무엇이 들어맞는지 알려줄 뿐, 모델이 무엇을 신뢰성 있게 사용할지는 알려주지 않습니다. 그리고 긴 입력의 중간에 대한 잘 문서화된 약점은 더 많은 텍스트가 더 나은 답변과 같지 않다는 것을 뜻합니다. 그에 맞게 설계하십시오. 버리지 말고 검색하고, 중요한 것을 보일 자리에 배치하고, 과거를 요약하고, 응답할 공간을 남기고, 실제 길이로 회상을 시험하십시오. 윈도우의 한계를 존중하는 팀은 그저 더 큰 것을 사는 팀보다 윈도우에서 더 많은 것을 얻어냅니다.
출처 참고: 컨텍스트 윈도우의 크기와 이를 확장하는 구체적 기법은 빠르게 바뀌므로, 이 해설은 지속되는 메커니즘에 초점을 둡니다. 현재의 용량과 방법은 공식 모델 문서와 1차 연구를 직접 참조하십시오.
