SpeakerMem-R1: 여러 명이 오가는 대화를 '누가·누구에 대해' 기억하는 AI 메모리

다자 대화에서 누가 누구에 대해 말했는지와 각자의 상황 변화까지 함께 기억하는 이중 트랙 메모리. 기존 메모리 시스템을 앞서는 성능을 보고했다.
English  ·  日本語  ·  한국어
← 목록으로
온
온틀 리서치
2026년 09월 25일 수정 2026.10.16 읽기 11분 조회 3

여러 사람이 뒤섞여 대화하는 자리에서 AI가 "누가 무슨 말을 했고, 그게 누구에 관한 것이며, 시간이 지나며 상황이 어떻게 바뀌었는지"까지 기억하게 만든 연구다. SpeakerMem-R1은 화자별 원문과 거기서 뽑아낸 상태 정보를 두 트랙으로 나눠 저장하고, 질문이 들어오면 두 트랙을 인물·사건·시간 기준으로 합쳐 답한다. 여러 명이 오가는 대화를 다루는 기존 메모리 시스템을 앞서는 성능을 보고했다.

이 논문이 푸는 문제

대부분의 AI 메모리 시스템은 "일대일 대화"를 전제로 설계됐다. 사용자 한 명과 AI가 주고받는 상황에서는 "무슨 말이 오갔나"만 잘 저장하면 된다. 화자는 어차피 둘뿐이라 굳이 구분할 이유가 크지 않다.

그런데 단체 채팅방이나 회의처럼 여러 명이 오가는 자리(다자 대화, multi-party dialogue)는 이야기가 완전히 달라진다. 관련 내용을 찾아오는 것만으로는 부족하다.

프로젝트 PM이 팀 채팅방을 몇 달간 지켜봤다고 하자. 그는 "이 말은 A가 B를 두고 한 얘기였고, C는 그때 이미 담당에서 빠진 상태였다"처럼 사람·관계·시점을 겹쳐서 기억해야 한다. 이처럼 뒤섞인 정보 속에서 ①누가 누구에 대해 말하는지(화자 귀속과 관계)와 ②시간에 따라 각자의 상황이 어떻게 바뀌는지(상태 재구성)를 추적하는 것이 핵심 난제다.

①은 발언을 올바른 화자에게 붙이고(화자 귀속, message attribution), 그 말이 누구에 관한 것인지, 사람들이 서로를 어떻게 인식하는지, 그룹 전체가 공유하는 정보가 무엇인지까지 함께 붙잡는 문제다. ②는 여기저기 흩어진 발언을 모아 "지금 이 사람의 상태"를 다시 조립하는 문제다. 이 논문은 기존 범용 LLM 메모리가 바로 이 두 지점에서 무너진다고 지적한다. 사람과 그룹 사이의 관계를 잃어버리고, 구성원·그룹·시간에 흩어진 단서를 하나로 통합하지 못하기 때문이다.

핵심 아이디어

SpeakerMem-R1의 중심은 이중 트랙 메모리(dual-track memory), 즉 기억을 성격이 다른 두 갈래로 나눠 보관하는 구조다.

트랙 1은 화자 이름표를 단 원문(verbatim)이다. 누가 정확히 뭐라고 말했는지를 그대로 남긴다. 회의 녹취록을 발언자 표시까지 살려 보관하는 것과 같아서, 나중에 "그 사람이 정확히 어떻게 표현했나"를 따질 근거가 된다.

트랙 2는 원문에서 요약·추론해 뽑아낸 상태(derived states)다. 이때 두 관점으로 나눠 정리한다. 개인별 정보는 인물 단위(person-level)로, 집단이 공유하는 정보는 그룹 단위(group-level)로 둔다. 녹취록과 별개로 "각 사람 프로필 카드"와 "팀 공용 게시판"을 따로 관리하는 셈이다.

질문이 들어오면 두 트랙을 그냥 나란히 놓지 않고 인물(entity)·사건(event)·시간(time) 세 축으로 양쪽 증거를 맞춘다. "이 사람에 관한 질문"이면 인물 축으로, "이 일이 언제 어떻게 됐나"면 사건·시간 축으로 원문과 상태를 대조해 답을 만든다.

문제는 이런 구조화된 기억을 만드는 과정에서 오류가 난다는 점이다. 발언을 엉뚱한 사람에게 붙이거나(귀속 오류), 상태를 잘못 갱신하는(업데이트 오류) 일이 생긴다. 게다가 자체 서버에서 돌리는 로컬 배포를 하려면 거대한 외부 모델에만 기댈 수도 없다.

그래서 저자들은 기억을 쓰는 모델 Writer-R1을 따로 학습시킨다. 여기에 두 장치가 들어간다.

  • SpeakerLevenshtein — 화자를 틀리는 실수를 직접 벌점으로 삼는 새로운 채점 방식이다. 이름에 편집 거리(Levenshtein)가 붙어 있지만, 논문은 표준 편집 거리를 그대로 쓰지는 않는다고 밝힌다. 핵심은 "누가·무엇을·어디에" 기록했는지까지 맞아야 점수를 주는 깐깐한 기준이라는 점이다. 글자만 비슷하다고 넘어가 주지 않으니, 화자를 헷갈린 기록은 곧바로 감점된다.
  • 화자 조건부 GRPO(speaker-conditioned GRPO) — GRPO는 강화학습(RL)으로 모델의 행동을 다듬는 기법인데, 여기서는 "누가 말했는가"를 조건으로 걸어 학습시킨다. 화자를 의식한 채 기억을 더 정확히 쓰도록 훈련하는 것이다.

정리하면, 구조(이중 트랙)로 "무엇을 기억할지"를 정하고, 학습(Writer-R1과 두 장치)으로 "그 기억을 정확히 쓰는 능력"을 끌어올렸다.

결과와 의미

수치를 보기 전에 채점 방식부터 짚자. 여기서 말하는 이진 정확도(binary accuracy)는 모델이 생성한 답을 정답이냐 오답이냐(1/0)로 채점한 값이다. 둘 중 하나를 고르는 양자택일 문제를 맞힌 비율이 아니라서, 찍어서 나오는 무작위 기준선과 단순 비교할 수 있는 수치가 아니다. 그래서 절대 점수가 다소 낮아 보여도 이상하지 않다. 다자 대화를 장기간 기억하는 일 자체가 그만큼 어렵다는 신호로 읽어야 한다.

이 논문이 보고한 성과는 다음과 같다(모두 초록 기준).

벤치마크 이진 정확도
GroupMemBench 47.9%
SocialMemBench 69.2%
EverMemBench 61.9%

여기에 더해:

  • EverMemBench 공개 리더보드(EverMind-AI 보고 기준)에서 62.33%로, 보고된 최신 프레임워크 가운데 최고치라고 밝힌다.
  • LoCoMo 전체 1,986개 문항에서 70.85%를 기록했다. 저자들은 이 "2인 장기 대화" 데이터셋을 경계 시험으로 쓴다. 다자 대화용으로 만든 시스템이 정작 일대일 상황에서 무너지지 않는지 확인하는 기준선이다.
  • 305개 문항을 통제한 실험에서, 강화학습이 지도학습만 한 Writer(SFT Writer)의 평균 정확도를 57.38%에서 68.20%로 끌어올렸다. 앞서 소개한 RL 장치가 실제로 기억 작성 품질을 높였다는 근거다.

평가는 이진 정확도와 함께 token-F1(정답과 토큰 단위로 얼마나 겹치는지)도 보고한다. 또 구성요소를 하나씩 빼보는 절제 실험(ablation)에서, 원문 트랙과 상태 트랙이, 그리고 인물 단위와 그룹 단위 관점이 서로를 보완한다는 점을 확인했다. 어느 한쪽만으로는 부족하고, 둘을 함께 둘 때 성능이 산다는 뜻이다.

결국 이 논문은 "다자 대화 기억은 검색만 잘해서 되는 문제가 아니다"라는 주장을 구조와 수치로 뒷받침한다. 원문 보존과 구조화된 상태 관리를 한 시스템에 함께 두고, 화자 정보를 학습 신호로 직접 쓴 것이 핵심 기여다.

한계와 남은 질문

솔직하게 남는 지점들도 있다.

  • 절대 점수는 아직 낮다. GroupMemBench 47.9%라는 수치는 "보고된 최고치"인 동시에 "아직 아무도 확실히 풀지 못한 문제"라는 뜻이다. 이 기억을 그대로 자동 실행에 연결하기엔 이르다.
  • 초록만으로는 세부가 보이지 않는다. 트랙을 나누는 구체적 기준, 상태를 갱신하는 규칙, 실패 사례의 유형 등은 초록에 담기지 않았다. 실제 적용을 판단하려면 본문 확인이 필요하다.
  • 일반화 범위. LoCoMo를 경계 시험으로 쓴 건 좋은 태도지만, 언어·도메인·인원 규모가 크게 다른 실제 서비스 대화에서도 같은 이점이 유지될지는 초록 밖 질문이다.
  • 비용과 지연. 원문과 상태를 이중으로 저장하고 질의할 때마다 세 축으로 결합하는 만큼, 저장량도 연산도 단일 트랙보다 무겁다. 저자들이 Writer를 따로 학습시킨 이유도 이 부담과 무관하지 않아 보인다. 결국 이 연구는 "정확도와 비용 사이의 트레이드오프를 어떻게 관리할 것인가"라는 근본 질문을 남긴다. 더 많이 기억하고 더 정교하게 맞출수록 비용은 오르고, 가볍게 만들수록 정확도는 흔들린다.

이러한 한계는 역설적으로 이 기술을 어디에 어떻게 써야 하는지를 알려준다.

실용적 관점: 그래서 어떻게 쓸 수 있나?

온틀은 AI 프로젝트 매니저를 파견하는 서비스다. PM 성격의 에이전트가 여러 사람이 오가는 협업 현장(슬랙 채널·회의·단체 대화)을 지켜보며 일한다는 점에서, 이 논문의 문제의식은 곧 우리 문제다. 그리고 앞의 한계들은 그대로 "어떻게 써야 하는가"의 답이 된다.

  • 화자를 보존하는 설계는 선택이 아니라 요건이다. 예컨대 "수요일까지 API 명세를 넘기기로 한 사람이 누구였나"를 PM 에이전트가 헷갈리면 곧바로 신뢰를 잃는다. 일반적인 검색(RAG)은 관련 문장을 찾아오는 데 강하지, "누가 말했는지"를 지키는 데는 약하다. 그래서 협업용 에이전트는 검색 정확도와 별개로 화자·관계 보존을 따로 관리해야 한다.
  • 원문과 요약을 함께 들고 있으면 충돌을 잡을 수 있다. 상태 카드에 "C가 결제 모듈 담당"이라고 적혀 있는데 최근 원문에는 "C가 그 일에서 빠지겠다"고 돼 있다면, 둘을 대조해 모순을 띄울 수 있다. 이중 트랙은 바로 이 "요약이 틀렸을 때 원문으로 되짚는" 구조를 제공한다.
  • 개인용 카드와 팀 공용 게시판을 나누는 설계는 상황판과 직결된다. "담당자별 진행 상태"와 "팀 공용 결정사항"을 다른 층으로 두면, 한 사람의 변경이 팀 공유 정보를 덮어쓰는 사고를 줄일 수 있다.

다만 절대 점수가 아직 낮다는 사실은 냉정하게 받아들여야 한다. 중요한 귀속·상태 판단일수록 자동 실행에 바로 걸기보다 사람이 한 번 확인하도록 두는 편이 안전하다. 정확도와 비용의 트레이드오프가 분명한 지금 단계에서는, 이 기억 구조를 "사람의 판단을 대신하는 장치"가 아니라 "사람이 빠르게 확인하도록 정리해 주는 장치"로 쓰는 것이 합리적이다.

메시지마다 화자 이름표만 달면 충분하지 않나요?

이름표(원문 트랙)는 "누가 말했나"는 지켜 주지만 "지금 이 사람의 상태가 무엇인가"에는 답하지 못합니다. 흩어진 발언을 모아 상태로 정리하는 두 번째 트랙이 있어야 "지금 담당이 누구인지" 같은 질문에 답할 수 있고, 원문과 대조해 상태가 틀렸을 때 바로잡을 수도 있습니다.

LoCoMo 같은 2인 대화는 왜 성능표에 넣었나요?

다자 대화용으로 특화한 시스템이 정작 가장 단순한 일대일 대화에서는 오히려 약해지는 부작용이 없는지 확인하는 안전장치입니다. 특수 기능을 넣고도 기본기가 흔들리지 않는지 보는 경계 시험이라고 이해하면 됩니다.

우리 팀 협업 도구에 당장 붙일 수 있나요?

설계 아이디어(화자 보존, 원문과 상태 분리, 인물과 그룹 관점 분리)는 바로 참고할 만합니다. 다만 절대 정확도가 아직 높지 않으므로, 핵심 판단은 자동화에 곧장 맡기기보다 사람 확인을 한 단계 두는 쪽을 권합니다.

참고자료