본문 바로가기

논문

MemInsight: Autonomous Memory Augmentation for LLM Agents

 

MemInsight: Autonomous Memory Augmentation for LLM Agents

Large language model (LLM) agents have evolved to intelligently process information, make decisions, and interact with users or tools. A key capability is the integration of long-term memory capabilities, enabling these agents to draw upon historical inter

arxiv.org


LLM 에이전트는

  • 단순히 질문에 답하는 걸 넘어서, 의사 결정 내리고, 사용자나 도구와 상호 작용하도록 발전해왔다

이런 에이전트의 핵심은 메모리에 있다

  • 과거 대화를 저장해서 일관성 있고, 개인화된 응답을 생성 가능함

 

하지만 이런 메모리 구조에는 몇 가지 문제점이 있다고 함

  1. 데이터가 누적될수록 관련 정보 찾기 어려움
  2. 과거대화양이 많아져서 메모리 관리 어려움
  3. Raw 형식 저장은 불필요한 정보도 함께 저장되며, 이는 검색 품질 저하를 초래함
  4. 작업 간 지식 통합이 어렵다, 이는 다양한 문맥에서 정보 활용에 제약이 있음

그래서 이 문제를 해결하기 위해 MemInsight를 제안

To address these challenges, we propose
MemInsight, an autonomous memory augmentation approach that allows LLM agents to structure and utilize memory more effectively.
  • LLM이 스스로 자신의 기억을 구조화하고 활용하게 만드는 방법

MemInsight에는 3가지 주요 구성 요소로 구성됨

  1. 속성 추출 (Attribute Mining)
    → 대화에서 중요한 속성 자동 추출 (ex: 감정, 주제, 의도)
  2. 메모리 주석 (Memory Annotation)
    → 추출한 속성을 메모리에 정리하여 저장
  3. 기억 검색 (Memory Retrieval)
    → 나중에 필요할 때, 속성을 기준으로 관련 기억을 검색

Autonomous Memory Augmentation (자율 메모리 증강)

  • 챕터 3, MemInsight를 설명하는 핵심 파트, 부록 B와 같이 봐야 함

 

MemInsight 구성요소 3단계 (이 세 과정이 "증강 -> 저장 -> 검색"의 흐름을 만듦)

 

  1. 속성 추출(Attribute Mining) : 의미 있는 속성 추출
  2. 메모리 주석(Annotation) : 속성으로 메모리에 주석을 다는 작업
  3. 검색(Memory Retrieval) : 속성을 이용해 적절한 기억 검색

그럼 속성(attribute)을 어떻게 정의하고 생성(추출) 할 건지? 가 궁금하다.

먼저, Effective 한 속성 =  (meaningful + accurate  + contextually relevant)이라고 함

 

그래서 속성 생성 시, 3가지 고려요소가 있음

  1. 속성 관점(Perspective)
  2. 속성 세부 수준 (Granularity)
  3. 속성 우선순위 (Prioritization)

첫 번째, Attribute Perspective

  • MemInsight는 크게 2가지 관점을 사용함
  1. Entity-centric Perspective (객체 중심 관점)  : 특정한 "항목(엔티티)"에 집중한 속성 생성 방식
    • 영화 -> 감독, 배우, 장르, 개봉 연도
    • 책 -> 작가, 출판사, 페이지 수, 시리즈 여부
    • 예: [genre]<드라마>, [director]<봉준호>, [release_year]<2019>
    • 영화 추천 시스템에서 개별 영화 정보 저장
  2. Conversation-centric Perspective (대화 중심 관점) : 전체 대화 흐름, 사용자 표현 등을 기반으로 속성 추출
    • 사용자가 어떤 영화를 좋아하는 이유
    • 감정 변화, 행동 동기, 선택 이유
    • 예: [emotion]<기대됨>, [intent]<휴식 필요>, [preference]<가족 영화 선호>

두 번째, Attribute Granularity : 속성 세부 수준

  • MemInsight는 크게 2가지 수준을 사용함
  1. Turn-level
    1. 개별 발화 기준으로 속성 추출(미세 분석)
    2. 더 세밀하고 정교한 정보 가능
    3. 예: “그 영화 감동적이었어.” → [emotion]<감동>
  2. Session-level
    1. 대화 전체를 요약해서 생성 (전반적 흐름 파악) 
    2. 예: [topic]<가족 영화>, [overall_emotion]<힐링>

 

예시 대화

Melanie: "Caroline, 우리 마지막으로 얘기한 이후로 많은 일이 있었어. 지난 토요일에 정신 건강을 위한 자선 마라톤에 참가했거든. 정말 보람 있었어. 우리 마음도 잘 돌봐야겠다는 생각이 들었어."

Caroline: "와, 멜! 그 자선 마라톤 정말 멋지다! 정신 건강에 대한 인식을 높이는 건 정말 가치 있는 일이야. 너 정말 자랑스러워!"

Melanie: "고마워, Caroline! 요즘 자기 돌봄(self-care)이 얼마나 중요한지 느끼고 있어. 내가 나 자신을 잘 챙겨야 가족도 잘 챙길 수 있다는 걸 알게 됐어."

Caroline: "정말 공감해. 자기 자신을 돌보는 건 정말 중요하지. 항상 쉽진 않지만 꼭 필요한 일이야."

 

 

1. 이때, Turn-level Annotation (턴별 주석 예시)

Turn 1:
[event]: <정신 건강을 위한 자선 마라톤>
[time]: <지난 토요일>
[emotion]: <보람 있음>
[topic]: <정신 건강>

 

2. 그리고, Session-level Annotation (세션 전체 주석 예시)

Melanie:
[event]: <정신 건강 자선 마라톤 참가>
[emotion]: <보람 있음>
[intent]: <자기 돌봄에 대한 생각>

Caroline:
[event]: <정신 건강 인식 향상>
[emotion]: <자랑스러움>

 

이때, 부록에 보면 속성 생성은 zero-shot 방식 프롬프팅(예시)을 보여줌

# prompt 
"You are an assistant that extracts key attributes from user utterances.

Input: “I had a rough day at work. Thinking of rewatching Spirited Away. It always helps me calm down.”

Output format:
[event]: <value>
[emotion]: <value>
[intent]: <value>
[movie]: <value>


===========================
생성 예시
[event]: rough day at work
[emotion]: stressed
[intent]: calming down
[movie]: Spirited Away

마지막, Attribute Prioritization : 속성 우선순위 정렬

  • 속성과 값을 메모리에 저장할 때 어떤 방식으로 저장할지를 다룸.
  • 앞에서 속성을 뽑아냈으니, 이제 어떻게 저장? 을 정해야 함

저장 포맷 

{mi: ⟨a1, v1⟩, ⟨a2, v2⟩, ..., ⟨an, vn⟩}

mi: 메모리 인스턴스 (하나의 대화 턴 혹은 세션)
ai: 속성 (attribute)
vi: 속성 값 (value)

ex) 
Memory ID: conv_001
{
  [event]<인사이드 아웃 2 감상>,
  [emotion]<감동, 힐링>,
  [intent]<감정을 치유하고 공유하고 싶음>,
  [relationship]<가족과의 시간>,
  [aspect]<감정 표현>,
  [reaction]<눈물>,
  [companion]<엄마>
}

 

속성 우선순위 방식 2가지

  1. Basic Augmentation
    • 무작위 저장
  2. Priority Augmentation
    • 중요도 기준으로 정렬
    • 중요도 기준에 대해 자세히 나오지는 않음, 해당 메모리(예: 대화)와 더 밀접하게 관련된 속성부터 우선적으로 정렬이라고 명시되어 있음

그럼 Attribute Mining and Annotation (속성 생성 및 주석 달기)를 위한

3가지 단계를 좀 정리해 보자

  1. Attribute Perspective (관점 결정)
    • 속성을 어떤 관점에서 추출할래? (영화? 대화?)
  2. Attribute Granularity (속성 수준 결정)
    • 속성을 어느 수준으로 추출할래?, 어디까지 세밀하게 볼래? (한 문장? 전체 대화?)
  3. Annotation and Attribute Prioritization
    • 속성을 어떻게 정렬하고 저장할래?

 

예시 대화, 3 턴

[Turn 1]
유진: 지난 주말에 엄마랑 '인사이드 아웃 2'를 봤어. 진짜 감동적이더라.  
[Turn 2]
수연: 와, 그 영화 엄청 기대하고 있었는데! 어떤 점이 제일 좋았어?  
[Turn 3]
유진: 캐릭터들이 감정을 표현하는 방식이 너무 좋았어. 눈물도 났고... 진짜 힐링됐어.

 

1. Attribute Perspective (속성 관점 선택)

Conversation-centric 선택 : 사용자(유진)의 감정, 경험, 의도, 선호를 중심으로 속성 추출


2. Attribute Granularity (속성 세부 수준 결정)

Turn-level (각 발화에서 직접 추출)

[Turn 1]
[event]: <영화 관람>
[companion]: <엄마>
[movie]: <인사이드 아웃 2>
[emotion]: <감동>

[Turn 3]
[aspect]: <감정 표현>
[reaction]: <눈물>
[emotion]: <힐링됨>

 

Session-level (전체 흐름 요약)

[event]: <인사이드 아웃 2 감상>
[emotion]: <감동 + 힐링>
[intent]: <감정을 치유하고 공유하고 싶음>
[relationship]: <가족과의 시간>

 


 

3. Annotation and Attribute Prioritization

 

Priority Augmentation 적용, 더 중요한 속성부터 정렬

1. [intent]<감정을 치유하고 공유하고 싶음>
2. [event]<인사이드 아웃 2 감상>
3. [emotion]<감동, 힐링>
4. [relationship]<가족과의 시간>
5. [aspect]<감정 표현>
6. [reaction]<눈물>
7. [companion]<엄마>

다시 MemInsight 구성유소 3가지를 보면, 위에서 Mining과 Annotation을 알아봤음.

  1. 속성 추출 (Attribute Mining)
    → 대화에서 중요한 속성 자동 추출 (ex: 감정, 주제, 의도)
  2. 메모리 주석 (Memory Annotation)
    → 추출한 속성을 메모리에 정리하여 저장
  3. 기억 검색 (Memory Retrieval)

그러면, Memory Retrieval (메모리 검색)에 대해 알아보자

  • 속성을 사용한 메모리를 활용해 적절한 메모리를 검색하는 단계


두 가지 검색 방식 + 두 방식을 모두 사용하는 방법(Comprehensive)

 

  1. Attribute-based Retrieval
    • 현재 문맥에서 속성을 생성하고, 메모리에 있는 속성과 정확히 일치하는 데이터를 검색
    • 예를 들어 현재 질문이 [genre]<드라마>와 [emotion]<감동>이라면
      메모리에 이 두 속성을 가진 항목만 추출
    • 장점 : 정확한 콘텍스트 일치, 사람이 직관적으로 이해하기 쉬움 
    • 단점 : 속성이 누락되거나 조금만 달라도 검색 X -> 유연성 떨어짐 
  2. Embedding-based Retrieval
    • 속성 전체를 임베딩하여 벡터 공간에서 유사한 메모리를 찾음
    • 예: [emotion]<감동> [genre]<가족> → 문장으로 만들고 벡터화
    • FAISS를 이용한 top-k 검색
    • 검색된 메모리는 현재 대화에 통합되어 응답 품질을 향상
    • 장점 :  유연성 높음
    • 단점 : 사람이 해석하기에는 어려움 

Embedding-based Retrieval에서 속성을 문장처럼 합쳐서 벡터로 변환한다고 함, 아래는 예시

[emotion]<감동> [event]<마라톤> [intent]<자기돌봄>
→ 임베딩 벡터로 변환

실험 결과

1. 질문 응답 Task에서 각 모델의 F1 Score 비교 결과

  • MemInsight는 전체적으로 가장 안정적이고 높은 성능을 보임
  • Claude + Priority + 임베딩 조합이 가장 효과적 
  • RAG Baseline (DPR) : Dense Passage Retrieval로 문맥 검색 후 답변 생성
    • 전반적으로 낮은 성능이지만, Adversarial 질문에서 최고 성능(89.9%) 기록


2. Memory Retrieval Accuracy (Recall@5) in 질문 응답 Task

  • “과거 대화 중 어떤 문장이 이 질문과 관련 있는지 찾아야 하지?”
  • 검색된 상위 5개의 기억 중에 정답이 포함되어 있으면 OK


3. Statistics of attributes generated for the LLM - REDIAL

REDIAL 데이터셋 내에서 MemInsight가 메모리를 생성한

  • 총 영화 개수 : 9687편
  • 평균적으로 7.39개 속성 생성
  • 속성 생성 실패율이 0.1%, zero-shot prompting으로도 실패 없이 잘 생성했다는 뜻
  • 속성 주석 중 가장 많이 등장한 5개 속성, 장르 / 개봉 연도 / 감독 배경 / 주요 인물 

단순히 추천 성능이 좋아졌다는 뜻이 아님

  • 추천의 기반이 되는 메모리(영화 정보)가 얼마나 잘 구성되어 있는지를 보여주기 위한 표
  • 이 표에는 직접적인 품질 점수는 없지만, 속성 수 / 실패율, 생성된 속성의 종류가 곧 "메모리 품질" 간접 지표다라는 걸 보여주고 있음


4. 설득력(Persuasiveness) & 관련성(Relatedness) 평가

  • 영화 추천이 인간 관점에서 납득이 가는지, 자연스러운지 평가한 결과
  • recall 지표가 "맞췄냐?"를 본다면, 여기선 "말이 되냐?"를 봄
  • 근데 인간 관점에서 평가를 인간이 아닌 LLM이 대신한 평가 결과

결과

  • Claude-Haiku 기반 임베딩 검색이 가장 설득력 있는 추천을 생성
  • Mistral 기반 모델은 정답과 가장 유사한 추천을 수행

 

평가 항목 2가지

  1. 1. Persuasiveness (설득력)
    • Unpersuasive : 설득력 전혀 없음, 낮을수록 좋음
    • Partially Persuasive : 그럴듯한데, 뭔가 약함
    • Highly Persuasive : 매우 설득력 있음 
  2. 2. Relatedness (관련성) 
    • Not Comparable : 관련 없음, 낮을 수록 좋음
    • Comparable : 비슷한 분위기 / 장르 / 주제
    • Math : 거의 정답 수준으로 일치 

결론 및 한계

세 가지 대표 작업에서 성능 입증

 

  • 질문 응답: F1, Recall, 특히 Multi-hop reasoning에서 향상
  • 영화 추천: 설득력, 관련성, 장르 일치도 모두 상승
  • 이벤트 요약: Turn-level 속성 + 원문 결합이 가장 효과적

Priority 기반 속성 정렬이 성능 향상에 특히 효과적

  • 검색 품질 및 문맥 파악력 상승

기존 RAG 방식의 한계를 보완

  • 단순 retrieval이 아니라 의미 중심의 맞춤형 메모리 검색 가능

속성 생성의 품질 문제

  • 속성 추출은 LLM을 통해 수행되므로, LLM의 환각(hallucination) 현상이 직접적인 영향을 줄 수 있음
  •  잘못된 속성 추출 → 잘못된 기억 → 잘못된 응답

평가지표의 한계

  • 일부 실험은 LLM 기반 평가라 객관적이지 않음

대규모 테스트 부족

  • 실제로 논문에서 다룬 Task는 3가지

속성 정의의 유연성 부족

  • 현재 사용된 속성들(예: 감정, 의도, 주제 등)은 사전에 정의된 스키마 사용
  • 상황에 따라 속성 유형을 새롭게 만들어내는 능력은 아직 없음