Show GN: MemAware – AI 에이전트가 "내가 뭘 알고 있는지"를 아는지 측정하는 벤치마크
(github.com/kevin-hs-sohn)AI 에이전트 메모리 시스템을 만들면서 기존 벤치마크들의 공통적인 한계를 발견했습니다.
LoCoMo, LongMemEval, MemoryAgentBench 등 기존 메모리 벤치마크는 전부 같은 걸 테스트합니다: "과거 대화에서 답을 찾을 수 있는가?" 이건 검색 엔진 성능 테스트이지, 메모리 시스템 테스트가 아닙니다.
실제 멀티세션 에이전트에서 어려운 건 유저가 언급하지 않은 과거 맥락을 스스로 떠올리는 것입니다.
예시
Easy — 키워드가 겹쳐서 검색으로 찾을 수 있는 경우:
"고양이 Luna가 새 소파를 계속 긁어요. 훈련법 추천해줘."
→ Luna가 유저의 고양이라는 걸 기억해야 함
Medium — 같은 도메인이지만 키워드가 다른 경우:
"8시 30분 미팅에 맞춰 알람을 몇 시에 맞출까?"
→ 6주 전에 언급한 편도 45분 통근 시간을 기억해야 함. "알람 미팅"으로 검색하면 통근 대화는 안 나옴
Hard — 완전히 다른 도메인 간의 연결:
"2010년에 졸업한 대학 성적표를 요청했는데 현재 이름으로 기록이 없대요."
→ 유저가 성을 Johnson에서 변경했다는 걸 기억해야 함. "성적표"와 "개명"은 키워드 겹침이 전혀 없음
결과
900개 질문 (각 난이도 300개)에 대한 베이스라인:
| 방법 | Easy | Medium | Hard | 전체 |
|---|---|---|---|---|
| 메모리 없음 | 1.0% | 0.7% | 0.7% | 0.8% |
| BM25 검색 | 4.7% | 1.7% | 2.0% | 2.8% |
| BM25 + 벡터 검색 | 6.0% | 3.7% | 0.7% | 3.4% |
핵심 발견:
- BM25 검색은 거의 도움이 안 됨. 0.8% → 2.8%로 미미한 개선에 토큰은 5배 소모
- 벡터 검색도 Hard에서 0.7% — 메모리 없는 것과 동일. 시맨틱 유사도로는 "성적표 요청" → "개명" 연결 불가
- "항상 검색하라"는 전략은 비용만 낭비. 질문당 ~4.7K 토큰을 소모하지만 대부분 무관한 노이즈
현재 RAG 기반 메모리(ChatGPT Memory, Mem0, MemGPT 등)는 전부 "매번 검색" 패턴인데, implicit context에서는 구조적으로 한계가 있다는 걸 데이터로 보여줍니다.
LongMemEval (ICLR 2025, MIT 라이선스) 세션 데이터 기반이고, 자체 메모리 시스템을 테스트할 수 있는 플러그인 구조로 되어있습니다.
Hard 난이도를 풀 수 있는 접근법에 대한 의견이 궁금합니다.