A Smart Rabbit
이현승의 개인 홈페이지[자기소개]

LLM의 컨텍스트 길이 제한을 극복하기 위한 재귀 호출 아키텍처 (Recursive Language Models(RLM))

작성 2026.01.16분류 레퍼런스주제 D. 기술과 도구

원문
사이트
arxiv.org
저장한 날
2026.01.16

유형: 논문 · 저자: Alex L. Zhang, Tim Kraska, OmarKhattab · 출처: MIT CSAIL · 별점: ⭐️⭐️⭐️⭐️

  • 긴 프롬프트를 모델에 그대로 넣는 방식이 왜 본질적으로 깨지는지 짚고, 그 대안으로 Recursive Language Models (RLMs) 라는 추론 전략을 제안
  • 긴 프롬프트를 신경망 입력이 아니라 외부 환경의 데이터로 취급하고, LLM이 코드를 써서 필요한 부분만 꺼내 보고, 쪼개고, 자기 자신을 재귀 호출하며 처리하게 만듦
  • “컨텍스트 윈도우”를 물리적으로 늘리는 게 아니라, inference-time compute(추론 시 계산) 를 더 쓰되 읽는 방식을 바꿔서 수백만~천만 토큰급 입력을 다루려는 시도

핵심

  1. 기존 LLM의 한계
    • Transformer 기반 모델은 고정된 컨텍스트 윈도우 길이 제한이 존재한다.
    • 긴 텍스트에서는 context rot이 발생해 성능이 크게 저하된다.
  2. RLM
    • RLM은 아키텍처 변경이 아니라 추론 시 실행 전략을 개선하여 긴 입력을 처리
    • 긴 입력을 외부 환경으로 취급하고 스스로 분할·탐색·재귀 호출을 통해 처리하게 함으로써 Context Window 제한 해결
    • 기존 LLM이나 요약/검색 기반 장기 컨텍스트 방식보다 성능이 크게 우수하며, 비용 또한 비슷하거나 낮게 유지
  3. 프로그래밍 환경(REPL) 활용
    • 긴 문서/입력 전체를 외부 환경(Python REPL)에 저장하고, 코드로 접근, 검색, 분할하도록 함

방식 텍스트 입력 처리 전략 단점
LLM 텍스트를 한 번에 넣어 읽음 Token 제한, 성능 급락
RAG 요약/검색으로 일부만 사용 정보 손실
RLM 텍스트를 환경으로 두고 필요한 조각만 프로그램처럼 처리 동적 코드+재귀 호출 필요

개념

  • RLM = 사서 + 조수
    1. 사서는 책을 한꺼번에 암기하지 않고 필요한 장만 꺼내 본다
    2. 필요하면 조수에게 맡기고 최종적으로 정답을 종합한다.
  • Root LM
    • 질문을 받으면 작업을 순서대로 설계하고 그 설계에 따라 행동(코드 실행, 분해, 재귀 호출)을 계속 한다
  • REPL (Read-Eval-Print Loop)
    • 코드를 한 줄 실행하고 결과를 바로 보고 다음 코드를 이어가는 대화형 실행 환경
    • 모델이 print(context[:10000]) 같은 코드를 실행해 문서의 일부를 화면에 띄워 보고, 다음 행동을 결정
  • Python REPL
    • Prompt 전체를 REPL의 변수로 저장하고
    • Root LM이 코드로 직접 조작하면서 재귀 호출하는 구조를 만든다
  • peek
    • 전체를 다 읽지 않고 일부만 살짝 확인
    • 앞 1만 글자, 특정 키워드 주변 500글자 같은 미리보기로 어디에 뭐가 있는지 탐색
  • decompose
    • 큰 문제를 작은 하위 문제로 쪼개기
    • 문서를 “섹션 단위”나 “문서 묶음 단위”로 나눠서 각각을 따로 처리하도록 작업 목록을 만듦
  • recursively call itself
    • 모델이 하위 문제를 풀기 위해 더 작은 모델 호출을 여러 번 사용
      1. Root LM은 큰 문제를 받는다
      2. 세부 설명이 필요하면 자기 자신에게 다시 질문을 던진다
      3. 작은 조각만 주고 그 답을 받아서 종합한다
    • 루트 모델(GPT-5)이 전체 전략을 짜고, 서브 모델(GPT-5-mini 등)이 각 조각을 처리하게 하는 계층 구조를 사용

긴 프롬프트를 신경망에 넣지 말고 환경 취급한다

  • 기존 방식
    • 1,000페이지 문서를 통째로 모델 입력에 넣으려 함
      • 모델은 입력을 한 번에 훑어야 하고, 길어질수록 “앞부분을 점점 잘 못 쓰는 현상”이 커짐
      • 논문은 이 현상을 context rot로 지칭
    • 모델 컨텍스트 윈도우가 272K 토큰이라고 하자 (논문 Figure 1 설명에서 GPT-5 맥락 길이 언급)
      • 입력이 1M 토큰이면 통째로는 못 넣음
  • RLM 방식
    • 1,000페이지 문서는 모델 밖에 둠
      • 모델은 문서 전체를 들고 있는 대신, 지금 필요한 2~3페이지를 꺼내서 처리하는 절차를 반복
    • 문서 1M 토큰은 외부에 그대로 둠
      • 모델은 지금 필요한 부분만, 예를 들어 50K 토큰 단위로 꺼내서 판단
      • 그 판단 결과(요약이 아니라 결론에 필요한 중간 산출물)만 작은 메모로 축적

기존 재귀 분해 접근 한계

  • 이전 방법들은 “생각을 쪼개기”는 했지만, 원본 자료에 무제한으로 접근하기는 못 함
  • 입력이 어느 임계값을 넘으면, 결국 마지막엔 모델 입력에 넣을 수 있는 만큼만으로 다시 돌아가게 됨
  1. “입력=모델 입력”이라는 고정 관념
    • NLP 시스템 대부분이 ‘토큰 시퀀스를 넣는다’가 기본 인터페이스였고, 그 밖의 접근은 RAG 같은 “부가 기능”으로 취급됨
    • RLM은 인터페이스를 유지하면서도(문자열 입력/문자열 출력) 내부에서 “환경+코드+재귀 호출”로 패러다임을 바꿈
  2. LLM이 코드를 꽤 잘 쓰고, 도구 호출을 자연스럽게 할 만큼 성숙해졌음
    • REPL에서 탐색하고, chunking하고, 서브 호출을 배치하는 건 툴 사용 능력이 받쳐줘야 함
    • 논문 시스템 프롬프트가 가능한 한 REPL과 sub-LLM을 많이 쓰라 같은 지시를 포함하는 것도 이 전제를 노골화한 사례

A Smart Rabbit|GitHub|LinkedIn|RSS