AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

LLM 팁 – 작은 컨텍스트 창을 슬라이딩 윈도우·토큰 예산·요약으로 운영하기

컨텍스트 창이 작은 모델에서는 “모든 대화를 넣기”가 해법이 아니다. 최근 대화는 슬라이딩 윈도우로, 오래된 결정은 요약으로, 외부 사실은 RAG로 역할을 나누면 토큰 사용량을 예측 가능하게 유지하면서 필요한 근거를 남길 수 있다.

먼저 토큰 예산을 나눈다

모델의 최대 입력 길이 전부를 채우지 말고, 응답과 도구 호출을 위한 여유를 남긴다. 예를 들어 8,000토큰 창이라면 시스템 지침 15%, 최근 대화 25%, 검색 문서 40%, 출력 여유 20%처럼 상한을 정한다. 비율은 예시일 뿐이며, 중요한 것은 각 영역이 다른 영역을 침범하지 않게 하는 것이다.

데이터다루는 방법버려도 되는 조건
최근 대화최근 N턴 슬라이딩 윈도우이미 요약에 반영됨
사용자 목표·제약짧은 상태 요약목표가 바뀜
문서 근거관련도 순 RAG 청크예산을 넘김
긴 작업 이력롤링 요약원문을 다시 검색 가능

1. 최근 대화는 슬라이딩 윈도우로 제한한다

슬라이딩 윈도우는 새 대화가 들어올 때 가장 오래된 대화를 제거하는 FIFO 방식이다. 비용과 지연 시간을 일정하게 만들지만, 초반의 제약을 잊을 수 있다. 따라서 시스템 프롬프트와 별도로 작업 목표, 결정, 미해결 항목을 상태 요약으로 유지해야 한다.

history = history[-6:]  # 최근 6개 대화 턴만 전달

단순 대화형 지원 봇이나 최근 맥락이 대부분인 코드 보조 작업에는 이 방법만으로도 충분할 수 있다.

2. RAG는 토큰 예산 안에서 채운다

검색 결과를 상위 K개 전부 붙이지 않는다. 시스템 지침과 질문의 토큰을 먼저 계산한 뒤, 관련도 순 청크를 하나씩 넣되 한도를 넘는 순간 멈춘다. 문서 하나가 예산을 독점하지 않도록 청크 길이와 문서별 최대 개수도 둔다.

selected = []
used = fixed_tokens
for chunk in ranked_chunks:
    if used + token_count(chunk) > retrieval_budget:
        continue
    selected.append(chunk)
    used += token_count(chunk)

이 방식은 장문 컨텍스트 RAG에도 유효하다. 단순히 긴 창을 쓰는 것보다 근거의 밀도와 출처를 관리하기 쉽다.

3. 오래된 대화는 롤링 요약으로 바꾼다

윈도우에서 밀려나는 대화는 버리기 전에 구조화된 요약으로 갱신한다. 요약문에 대화체 전체를 재진술하지 말고, 이후 답변에 필요한 사실만 넣는다.

목표: 고객 이탈 예측 모델 배포
결정: 배치 추론, 주 1회 재학습
제약: 개인정보는 외부 API로 전송하지 않음
미해결: 임계값과 모니터링 지표 확정

요약 자체도 틀릴 수 있으므로, 중요한 수치·승인·계약 조건은 원문 ID를 보존하고 필요할 때 검색해 확인한다.

운영 체크리스트

  • 입력·출력·검색·요약에 각각 토큰 상한을 둔다.
  • 예산 초과, 검색 청크 수, 요약 갱신 횟수를 관측한다.
  • 사용자의 고정 지시와 최신 질문을 임의로 잘라내지 않는다.
  • 긴 작업은 정기적으로 요약을 검증하고 원문 근거 링크를 남긴다.

관련 문서

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)