LLM Memory vs Context Window: The Gap Nobody Explains

개요

LLM의 컨텍스트 윈도우는 한 번에 처리할 수 있는 토큰의 용량을 의미하며, 메모리는 이 컨텍스트 윈도우에 어떤 정보를 포함시킬지 결정하는 정책입니다. LLM 애플리케이션에서 발생하는 과도한 비용과 정보 누락 문제는 이 두 가지 개념을 혼동하는 데서 비롯됩니다.

주요 내용

* 컨텍스트 윈도우의 실제 작동 방식:
* 컨텍스트 윈도우는 모델이 다음 토큰을 생성할 때 참조하는 토큰들의 집합으로, 모델의 아키텍처에 의해 결정되는 최대 시퀀스 길이를 가집니다.
* 컨텍스트 윈도우는 용량일 뿐, 모든 토큰이 유용하게 사용되는 것을 보장하지는 않습니다. 입력이 길어질수록 중간 정보에 대한 모델의 인식 능력이 저하되는 "lost in the middle" 문제가 발생합니다.
* 컨텍스트 윈도우의 크기는 비용과 지연 시간을 선형적으로 증가시키며, 모든 토큰은 매번 처리됩니다.
* 컨텍스트 윈도우는 호출 간 상태를 유지하지 않으므로, 모델은 이전 요청을 전혀 기억하지 못합니다. 메모리는 애플리케이션이 각 호출에 주입하는 전략입니다.

* LLM 메모리의 분류:
* 작업 메모리 (Working Memory): 현재 턴에서 모델이 직접 추론하는 데 사용되는 정보(사용자 메시지, 최근 대화 기록, 검색 결과, 시스템 프롬프트 등)입니다. 컨텍스트 윈도우의 실제 내용이며, 비용과 정보 누락 사이의 균형을 맞추는 것이 중요합니다.
* 에피소드 메모리 (Episodic Memory): 과거 대화의 전체 기록(턴, 타임스탬프, 결정, 결과)입니다. 분석 및 대화 재구성에 필요하지만, 전체를 컨텍스트 윈도우에 직접 넣는 것은 비효율적입니다. 데이터베이스에 저장하고 필요할 때 일부만 추출해야 합니다.
* 시맨틱 메모리 (Semantic Memory): 모델이 참조하는 영구적인 지식(제품 문서, 정책, 과거 해결된 티켓 등)입니다. 벡터 데이터베이스를 통해 사용자 질문과 관련된 정보를 검색하여 컨텍스트로 주입합니다. RAG 시스템에서 "메모리"라고 할 때 가장 흔하게 언급되는 부분이며, 검색 품질이 중요합니다.
* 요약 메모리 (Summary Memory): 대화 기록을 압축하여 컨텍스트 윈도우 크기 문제를 해결하는 전략입니다. 예를 들어, 20개 턴을 200개 토큰으로 줄일 수 있습니다. 단점은 정보 손실이 있는 압축이며, 중요한 세부 정보가 누락될 수 있습니다.

* 컨텍스트 윈도우 구성 전략:
* 컨텍스트 윈도우를 고정된 예산으로 간주하고 우선순위에 따라 항목을 할당해야 합니다.
* 일반적인 우선순위: 시스템 프롬프트 > 요약 메모리 > 최근 3~5개 원본 턴 > 검색된 문서 > 현재 도구 출력.
* 윈도우가 꽉 찰 경우, 현재 정보를 버리기보다 과거 정보를 압축하는 방식을 우선해야 합니다. 사용자들은 최근 대화를 더 자주 참조합니다.

* 구현 및 문제점:
* 작업 메모리 구현: 일정 턴마다 대화 기록을 요약하고, 항상 최근 몇 개의 원본 턴을 유지하는 방식으로 구현할 수 있습니다.
* 비용 절감: 효율적인 메모리 관리는 토큰당 비용을 90%까지 절감할 수 있습니다.
* 요약 메모리의 문제점: 요약은 정보 손실이 발생할 수 있으며, 잘못된 정보가 요약에 포함되어 지속적으로 전파될 수 있습니다. 이를 방지하기 위해 이전 요약이 아닌 원본 기록을 바탕으로 다시 요약해야 합니다.
* 검색 메모리의 문제점: 임베딩 모델이나 top-k 설정 오류로 인해 관련 없는 컨텍스트가 주입될 수 있습니다. 검색된 각 청크를 가설로 취급하고 평가해야 합니다.
* 컨텍스트 윈도우의 한계: 작업 세트가 컨텍스트 윈도우보다 크고 압축할 수 없는 경우, 청크별 처리(map-reduce) 또는 더 큰 컨텍스트 윈도우를 가진 모델 사용을 고려해야 합니다.

* 메모리 계층 구축 시 고려사항:
* 모든 애플리케이션에 복잡한 메모리 계층이 필요한 것은 아닙니다. 대화가 짧거나 단일 세션으로 끝나는 경우, 요약이나 검색 계층은 불필요할 수 있습니다.
* 대화가 길고 여러 세션에 걸치거나, 변경되는 지식을 참조하거나, 토큰 비용이 눈에 띄는 경우 전체 메모리 스택 구축을 고려해야 합니다.
* 한 턴당 몇 센트 이상 비용이 발생하는 경우 메모리 정책을 통해 비용 절감 효과를 얻을 수 있습니다.

시사점

LLM 애플리케이션의 성공은 단순히 컨텍스트 윈도우의 크기에 의존하는 것이 아니라, 효율적인 메모리 관리 전략을 통해 비용을 절감하고 정보 활용도를 높이는 데 달려있습니다. 컨텍스트 윈도우는 공간이며, 메모리는 그 공간을 어떻게 채울지 결정하는 지혜로, 이는 LLM 에이전트의 성능과 비용 효율성을 좌우하는 핵심 요소입니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions