에이전트 메모리 계층에 LLM의 기억 판단은 필요 없다
Agent memory layers don't need an LLM deciding what to remember
핵심 요약
LLM을 이용한 메모리 추출 과정의 불투명성을 지적하며, 원시 데이터를 직접 저장하고 검색하는 방식의 효율성을 주장함.
- 메모리 추출 문제 — LLM을 통한 기억 선별은 추론 비용을 발생시키고 결과의 검증을 어렵게 함.
- 검증 가능성 확보 — 원시 데이터를 마크다운으로 저장하면 검색 실패 시 원인을 즉각 파악할 수 있음.
- 검색 품질의 트레이드오프 — 요약된 메모리 대신 원시 데이터를 사용하면 노이즈가 늘어나지만 투명성이 높아짐.
- 대안적 접근 — 임베딩 모델을 활용한 로컬 저장소 방식이 추론 비용 없이도 충분한 성능을 냄.
대부분의 에이전트 메모리 설정은 입력 단계에서 모델 호출을 실행합니다. 무언가가 턴을 읽고, 보관할 가치가 있는지 결정하고, '메모리'로 다시 작성한 뒤 유형과 중요도 점수를 태깅하죠. 이건 모든 상호작용마다 두 번째 추론 과정을 거치는 셈인데, 저는 그게 비용을 들일 올바른 곳이 아니라고 생각합니다.
비용이 문제가 아닙니다. 판단 과정이 감사 불가능하다는 게 문제죠. 에이전트가 무언가를 기억해내지 못할 때, 검색이 놓친 건지 아니면 추출기가 6일 전에 보관할 가치가 없다고 판단한 건지 알 수가 없습니다. 두 가지 다른 버그인데 증상은 똑같고, 이 둘을 구분하려면 존재하지도 않는 로그를 읽어야 하죠.
그 단계를 빼버리면 저장소, 임베딩, 검색만 남습니다. 그게 바로 메모리 계층이죠. 제가 memU를 사용하는 이유 중 일부가 바로 이것 때문입니다. 핵심은 이 세 가지 작업을 수행하는 약 500줄의 코드로, commit, list, retrieve로 노출됩니다. 보관되는 내용은 읽기 쉬운 마크다운이며, 로컬 sqlite db에 임베딩되고 인덱싱됩니다. Apache-2.0 라이선스고요.
물론 요약의 이점은 사라집니다. 원시 턴은 요약된 것보다 노이즈가 많아서 보상 차원에서 검색 성능이 더 좋아야 하죠. 저는 그 거래를 받아들이겠습니다. 읽을 수 없는 깔끔한 저장소보다 읽을 수 있는 노이즈 섞인 저장소가 낫기 때문입니다. 하지만 실제로 측정해 본 사람이라면 반대 의견도 진지하게 고려할 겁니다.
누군가는 어차피 찾아낼 테니 비용에 대해 솔직히 말하자면, 셀프 호스팅을 한다고 해서 임베딩 제공업체로부터 자유로운 건 아닙니다. 여전히 키가 필요하죠. 단일 머신 환경이기도 하고요. 박스 간 동기화는 그들의 호스팅 모드에서나 가능합니다. 그리고 기억 품질은 전적으로 어떤 임베더를 사용하느냐에 달려 있습니다. 작은 모델을 쓰면 추상적인 내용에 대해서는 기억이 모호해집니다. 사실이나 절차는 잘 돌아오지만요. 제가 지나가듯 언급했던 선호도는 훨씬 덜 안정적입니다.
아직도 하네스(harness)에서 추출 단계를 실행하면서 그만한 가치가 있다고 느끼는 분 계신가요? 검색이 해주지 못하는 어떤 이득을 얻고 있는지 알고 싶습니다.


