요즘, 왤케 똑똑해...? (LLM Context Window 찍먹기)

Gemini 3.0이나 sonnet 4.5는 도대체 어떻게 이렇게 길게 대화를 해도 문맥을 계속 기억하는가

Jun Noh

나는 개발할 때 GeminiSonnet를 옆에 끼고 사는 편이다. 모르는 거 물어보기도 하고, 귀찮은 정규식 짜달라고 하기도 하고.

뭐, 요즘은 그냥 거의 외주사다.

근데 최근에 나온 모델들을 쓰다가 문득 격세지감을 느꼈다.

불과 1~2년 전만 해도 AI랑 대화를 좀 길게 나누다 보면, 애가 초반에 설정했던 페르소나를 잊거나 방금 정의한 변수를 까먹고 딴소리(Hallucination)를 하는 경우가 다반사였다.

흔히 말하는 컨텍스트 윈도우(Context Window)의 한계 때문에 대화가 길어지면 앞의 내용을 물리적으로 밀어내야 했기 때문이다.

그런데 최근 모델들은 다르다.

긴 코드를 통째로 붙여넣고 수십 번의 대화가 오가도 문맥을 칼같이 기억한다.

도대체 그사이에 무슨 일이 있었던 거지?

단순히 하드웨어가 좋아져서 그런 건가 싶어 찾아봤는데, 알고 보니 단순한 스펙 업이 아니라 알고리즘과 아키텍처 레벨에서의 엄청난 진화가 있었다.

오늘은 개발자 입장에서 흥미롭게 찾아본 AI가 금붕어 기억력을 탈출하게 된 기술적 배경을 내 식대로 정리해보려고 한다.

기술의 연대기: 512 토큰에서 200만 토큰까지

사실 이쪽 역사를 잘 몰랐다.

그냥 “버전 업 됐으니 좋아졌겠지” 하고 썼으니까.

근데 찾아보니 우리가 지금 누리고 있는 ‘무한에 가까운 문맥’은 꽤 치열한 엔지니어링의 결과물이었다.

흐름은 대략 이렇다.

  • 2017년 (태초): Google의 Attention Is All You Need 논문이 나왔을 때다. 혁명적이었지만 당시 표준 컨텍스트는 고작 512 토큰. A4 용지 한 장 채우기도 벅찼다.
  • 2018~2020년 (덩치만 키우던 시절): GPT-3 같은 거대 모델이 등장했다. 파라미터(지능)는 엄청 커졌는데, 정작 기억력(컨텍스트)은 2,048 토큰 수준이었다. 덩치는 산만한데 단기 기억력은 여전히 부족했던 셈이다.
  • 2023년 (효율성의 혁명): 이때부터 분위기가 바뀐다. FlashAttention이 등장해 메모리 병목을 해결하며 속도를 높였고, 위치 정보를 유연하게 처리하는 RoPE 기술이 표준이 되면서 긴 문맥 처리가 현실의 영역으로 들어왔다.
  • 2024년~현재 (무한의 시대): Gemini 3 Pro 등이 등장하며 100만(1M)~200만(2M) 토큰을 다루기 시작했다. 이제 책 수백 권, 프로젝트 전체 코드를 한 번에 넣을 수 있게 된 것이다.

어떻게 가능했을까? 핵심 기술 3가지

단순히 메모리를 늘린 게 아니었다. $O(N^2)$이라는 복잡도의 저주를 풀기 위한 수학적, 구조적 해결책들이 있었다.

가장 핵심이 되는 기술 3가지를 아주 얕게 뜯어보자.

① $O(N^2)$의 저주를 깬 ‘Ring Attention’

개발자로서 가장 흥미로웠던 부분이다. 트랜스포머의 핵심인 Self-Attention은 입력 길이가 2배가 되면 연산량은 4배가 된다. 100만 토큰을 쌩으로 계산하는 건 비용상 불가능하다.

최신 모델들은 Ring Attention 같은 기술을 쓴다.

긴 데이터를 여러 GPU/TPU에 쪼개서 링(Ring) 형태로 돌려가며 계산하는 방식이다.

분산 처리 시스템을 통해 물리적 메모리의 한계를 넘어버린 것이다. (더 들어가진 말자, 생각하기 포기하게 될 거 같다.)

② “중간 내용을 잊지 마” (NIAH)

예전 모델들은 글의 시작과 끝은 기억하는데 중간 내용을 까먹는 ‘Lost in the Middle’ 현상이 심했다.

하지만 지금은 NIAH(Needle In A Haystack, 건초더미에서 바늘 찾기) 벤치마크에서 99% 이상의 회수율을 보여준다.

수십만 줄의 로그 파일 중간에 딱 한 줄 있는 에러 코드를 찾아내라고 해도 정확히 찾아낸다. 모델이 정보를 단순히 ‘읽는’ 게 아니라, 내부적으로 정밀하게 인덱싱하고 있다는 뜻이다.

③ 위치 정보의 유연화 (RoPE)

예전에는 “첫 번째 단어, 두 번째 단어…” 식으로 절대적인 번호를 매겼다면, 최신 모델은 **RoPE(Rotary Positional Embeddings)**를 통해 정보를 회전시켜서 인코딩한다.

덕분에 학습 때 보지 못했던 엄청 긴 문장이 들어와도 위치 정보를 자연스럽게 확장(Extrapolation)해서 이해할 수 있게 되었다.

3. 개발자인 우리에겐 뭐가 달라질까?

이런 기술적 배경을 알고 나니, 실무에서 어떻게 써먹을지가 더 명확해졌다.

RAG(검색 증강)의 역할 변화 예전엔 문서를 잘게 쪼개서(Chunking) 벡터 DB에 넣고 검색해야 했지만, 이제는 웬만한 문서는 통째로 넣고 질문해도 된다. (물론 비용 효율성을 위해 RAG는 여전히 필요하지만, 예전처럼 나노 단위로 쪼갤 필요는 없어졌다.)

전체 코드 리팩토링 파일 하나가 아니라, 프로젝트 전체를 컨텍스트에 올릴 수 있다.

“A파일의 변경 사항이 B파일의 이 함수에 어떤 사이드 이펙트를 줄까?” 같은 질문이 가능해진 것이다.


4. 마치며

“AI가 똑똑해졌다”라고만 생각했는데, 그 뒤에는 Ring Attention, RoPE 같은 알고리즘의 최적화와 하드웨어 엔지니어링의 승리가 있었다.

예전엔 ‘어떻게 요약해서 AI한테 떠먹여 줄까’를 고민했다면, 이제는 이 방대한 컨텍스트 공간을 활용해 어떤 복잡한 문제를 풀게 할까를 고민해야 할 시점인 것 같다.

혹시 나처럼 “요즘 AI 기억력 왜 이렇게 좋아졌지?” 하고 궁금했던 분들에게 조금이라도 도움이 되었기를

마침.

다른 글 보기