컨텍스트 윈도우 관리 — AI가 앞에서 한 말을 잊는 이유

…

한줄 요약

AI는 컨텍스트 앞부분과 끝부분을 잘 기억하지만 중간은 자주 놓친다. 오케스트레이션에서 컨텍스트가 길어질수록 이 문제가 커진다.

본문

”Lost in the Middle” — 2023년 Stanford 연구

2023년 Stanford 연구팀이 발표한 논문 “Lost in the Middle: How Language Models Use Long Contexts”는 충격적인 발견을 담고 있었다.

연구팀은 GPT-4, Claude, 기타 LLM들에게 긴 문서를 주고 그 안에 있는 정보를 찾게 했다. 찾아야 할 정보를 문서의 어느 위치에 배치하는지에 따라 정확도가 크게 달랐다.

결과:

  • 문서 앞부분에 있을 때: 정확도 높음
  • 문서 끝부분에 있을 때: 정확도 높음
  • 문서 중간에 있을 때: 정확도 급락 (모델에 따라 20~40%p 하락)

긴 컨텍스트를 가진 모델도 마찬가지였다. 처리할 수 있는 토큰 수가 늘어났을 뿐, 중간을 잘 읽는다는 보장이 아니었다.


오케스트레이션에서 왜 이게 문제인가

단일 AI 호출은 컨텍스트가 짧다. 질문 + 필요한 맥락 = 수천 토큰.

멀티 에이전트 시스템은 다르다.

10단계 워크플로우에서 각 에이전트가 이전 에이전트들의 모든 결과를 컨텍스트로 받으면:

  • 1단계: 시스템 프롬프트(2,000) + 환자 데이터(3,000) = 5,000 토큰
  • 3단계: 앞 두 단계 결과 추가 = 12,000 토큰
  • 6단계: 앞 다섯 단계 결과 추가 = 35,000 토큰
  • 10단계: 앞 아홉 단계 결과 추가 = 80,000 토큰

마지막 단계의 에이전트에게는 1단계에서 수집된 중요한 초기 환자 데이터가 컨텍스트 중간에 파묻혀 있다. “Lost in the Middle” 현상이 발생할 가능성이 높다.


컨텍스트 길어지면 생기는 또 다른 문제

비용 증가: 토큰이 많아질수록 API 호출 비용이 늘어난다. 80,000 토큰은 5,000 토큰보다 16배 비싸다.

속도 저하: 처리할 토큰이 많을수록 응답 시간이 길어진다.

지시 희석: 시스템 프롬프트의 명확한 지시가 긴 대화 기록 뒤에 묻히면 AI가 덜 따르게 된다.


해결책 1 — 선택적 컨텍스트 전달

각 에이전트에게 전체 히스토리를 넘기지 말고, 그 에이전트가 필요한 정보만 선별해서 전달한다.

약물 검토 에이전트에게 필요한 것:
✓ 환자 기저질환 요약
✓ 현재 복용 약물 목록
✓ 이번에 제안된 새 약물
✗ 영상 판독 결과 (약물 검토와 무관)
✗ 간호 기록 전문 (핵심 요약으로 충분)
✗ 이전 에이전트들의 내부 추론 과정

비유: 협진 요청을 보낼 때 전체 입원 차트를 통째로 복사하지 않는다. 협진 목적에 필요한 내용을 요약해서 보낸다.


해결책 2 — 슬라이딩 윈도우

장기 대화에서 오래된 내용은 압축하고 최근 내용에 집중한다.

[전체 히스토리]
수집 단계 (2,000 토큰)
분석 단계 (3,000 토큰)
계획 단계 (2,500 토큰)
의사 검토 (1,000 토큰)
수정 단계 (2,000 토큰) ← 최근
현재 단계 (진행 중)  ← 현재

→ [슬라이딩 윈도우 적용]
초기 맥락 요약 (500 토큰으로 압축)
최근 3단계 전문 (5,500 토큰)
현재 단계 (진행 중)

오래된 단계는 핵심만 남기고 압축한다. 최근 단계는 전문을 유지한다.


해결책 3 — 외부 메모리 (External Memory)

중요한 정보를 컨텍스트 안에 넣지 말고, 필요할 때 DB에서 꺼내는 방식이다.

컨텍스트 (짧게 유지):
  "환자 P-2023의 약물 최적화 검토"
  "필요한 정보는 patient_db.get('P-2023')으로 조회"

외부 DB (정보 저장소):
  환자 데이터, 검사 결과, 이전 단계 결과 모두 저장

에이전트가 필요한 정보 조회:
  patient_db.get('P-2023', fields=['current_meds', 'lab_results'])

이 방식은 컨텍스트를 짧게 유지하면서 필요한 정보에는 항상 접근할 수 있다. 단 DB 조회 횟수만큼 비용과 시간이 추가된다.


의료 AI에서 실용적인 접근

긴 환자 기록을 다루는 의료 AI에 권장하는 방식:

계층적 요약: 상세 데이터는 외부에 저장하고, 에이전트에게는 요약본을 전달한다. 에이전트가 상세 내용이 필요하면 조회 툴로 직접 가져온다.

중요 정보는 항상 앞에: “Lost in the Middle”을 피하려면 각 에이전트에게 전달하는 컨텍스트에서 핵심 정보(환자 ID, 주요 기저질환, 현재 위험 요인)를 항상 앞에 배치한다.

단계별 리셋: 각 단계가 시작할 때 이전 단계 결과 전체를 받지 않고, 해당 단계에 필요한 압축 요약만 받는다. 각 에이전트는 “새로운 시작” 상태에서 작업한다.


더 알고 싶다면

🔗 관련 글

← 오케스트레이션 시리즈 전체 보기