본문 바로가기

Papers/General

[Review] Think-in-Memory: Recalling and Post-thinking Enable LLMs with Long-Term Memory

Abstract

  • Memory-augmented LLM은 높은 성능을 보이지만, 반복적인 Retrieval은 편향된 정보를 유발하기 때문에 일관성 없는 추론 결과를 가져올 수 있다.
    • 1단계: recall relevant thoughts from memory
    • 2단계: response 생성 이후, LLM agent post-thinks and incorporates both historical and new thoughts to update memory
  • 반복되는 Retrieval을 해결하기 위해 post-thinks를 historical memory로 저장 (insert, merge, forget 등의 작업)
  • Locality-Sensitive Hashing(LSH)를 활용하여 장기적인 대화에 대한 효율적인 검색

 

Methodology

  • 대화 턴의 시퀀스가 주어지면 각 턴은 튜플 (𝑄, 𝑅)로 나타내어지며, 이는 해당 턴에서 사용자의 쿼리 (Q)와 에이전트의 응답 (R)
  • 주된 목표는 새로운 쿼리 𝑄𝑥에 대해 인간과 유사한 더 정확한 응답 𝑅𝑦를 생성하는 것이며, 동시에 history 대화 턴의 문맥 정보를 기억하는 것
  • 즉, 장기적인 대화를 처리 + 사용자와의 여러 대화 후에 유용한 historical info를 유지

[구성요소]

  • Agent(A): 동적인 대화를 용이하게 하는 사전 훈련된 LLM 모델로, ChatGPT [1] 및 ChatGLM [17]과 같은 모델이 포함
  • Memory cache(M): 해시 테이블로 이루어진 지속적으로 확장되는 키-값 쌍으로, 키는 해시 인덱스이고 값은 thoughts
  • Locality-sensitive Hashing: M에서 관련된 정보를 빠르게 저장하고 찾음

[Workflow]

  1. Recall and generation: 사용자로부터 새로운 질문이 주어지면 LLM 에이전트 A는 정확한 응답을 생성하기 위해 관련 생각을 검색합니다. 자체 생성된 추론적인 생각을 외부 메모리로 저장하므로 이 단계에서는 원시 역사적 대화 텍스트를 반복된 추론 없이 직접 Retrieval하고 질문에 답할 수 있음
  2. Post-think and update: 질문에 답한 후에 LLM 에이전트에게 𝑄-𝑅 쌍을 기준으로 후생각을 하도록하고 새롭게 생성된 자체 추론적 생각을 메모리 캐시 M에 삽입

[Storage for Memory Cache]

Thoughts-based-system; Memory storage system M은 AI-User 상호 작용의 knowledge를 저장

  • 𝑇은 튜플 형식으로 저장되며 (𝐻𝑖𝑑𝑥,𝑇)로 나타내어지며, 여기서 𝐻𝑖𝑑𝑥는 해시 함수 F(𝑇 )에 의해 얻어진 해시 인덱스
  • 이 해시 기반 저장은 빠른 메모리 검색뿐만 아니라 메모리 업데이트를 용이하게 하며, 역사적 생각의 상세한 인덱스를 제공

 

  • 두 Entity 간의 관계: 관계 트리플 (𝐸h,𝑟𝑖,𝐸𝑡)로 표현됨. 𝐸h는 관계 𝑟𝑖를 통해 tail 엔터티 𝐸𝑡에 연결된 head 엔터티이며, 여기서 𝑖 ∈ [0, 𝑁 ]이고 𝑁은 관계의 수입니다. 개념적으로 𝑅h = {𝑟1, · · · , 𝑟𝑁 }은 엔터티 𝐸h에 대한 모든 단일 점프 관계로 구성
  • Entity의 관계를 활용하는 목표는 관계 triple과 일치하는 고품질의 문장을 얻는 것
    • OpenIE와 같은 오픈 정보 추출을 위한 Pretrained 모델 활용
    • LLM 기반 few-shot prompt로 인한 context learning (LLM agent를 사용하여 Entity 간의 관계 파악)

Storage based on Hash; 유사한 thoughts는 효율성을 위해 메모리의 동일한 그룹에 저장되도록 Hash table architecture를 활용

  • Locality-Sensitive Hashing(LSH)은 각 𝑑-차원 임베딩 벡터 𝑥 ∈ R𝑑를 해시 인덱스 F(𝑥)에 할당하여, 가까운 벡터는 높은 확률로 동일한 해시 인덱스를 얻음
  • Random projection을 활용하여 구축: F(𝑥)=argmax([𝑥𝑅;−𝑥𝑅]), (1) 여기서 𝑅은 크기가 (𝑑,𝑏/2)인 Random 행렬이고 𝑏는 메모리의 그룹 수입니다. [𝑢;𝑣]는 두 벡터의 연결을 나타냄

[Retrieval for Memory Recalling]

  • 1단계: LSH 기반 검색
    • 새로운 쿼리 𝑄에 대해 먼저 LLM 에이전트를 기반으로 그 임베딩 벡터 𝑥를 얻음
    • LSH 함수 (즉, 방정식 1)는 쿼리의 해시 인덱스를 생성
    • 이 해시 인덱스는 또한 LSH의 특성에 따라 메모리 캐시에서 유사한 생각의 가장 가까운 그룹을 Represent
  • 2단계: 유사성 기반 검색
    • 가장 가까운 그룹 내에서 쿼리와 해당 그룹의 각 생각 간의 쌍별 유사성을 계산
    • 상위-𝑘 생각은 쿼리에 정확하게 답하기 위한 관련 이력으로 Retrieval
    • 쌍별 유사성은 전체 메모리 캐시가 아니라 그룹 내에서 계산되므로 이전 메모리 메커니즘보다 효율적인 검색 가능

[Memory Update]

각 해시 인덱스는 유사한 생각을 포함하는 그룹에 해당합니다. 동일한 그룹 내에서 TiM은 다음과 같은 작업을 지원하여 메모리 내 생각을 조직합니다:

• 삽입, 즉, 새로운 생각을 메모리에 저장합니다. 생각 생성에 대한 프롬프트는 Figure 3에 표시되어 있습니다.

• 잊기, 즉, 불필요한 생각을 메모리에서 제거합니다. 이 작업의 프롬프트는 Figure 4에 표시되어 있습니다.

• 병합, 즉, 메모리 내에서 유사한 생각을 병합합니다. 이 작업의 프롬프트는 Figure 5에 표시되어 있습니다.

 

Dataset

  • KdConv: film, music, travel 3가지 도메인에 대한 conversation, utterance, information 종류로 이루어진 데이터셋
  • Generated Virtual Dataset(GVD): 10일동안 15명의 chatgpt사용자가 참여한 데이터셋으로 사전 정의된 주제에 대해 대화하여 memory를 정확하게 기억하는지에 대해 test하기 위해 활용
  • Real-world Medical Dataset: 시나리오에서 Memory를 기억하는지에 대해 test하기 위해 활용

 

Evaluation

  • 검색 정확도는 관련 메모리가 성공적으로 Retrieval되었는지를 평가합니다 (레이블: {0: 아니오; 1: 예}).
  • 응답 정확도는 질문에 올바르게 답하는지를 평가합니다 (레이블: {0: 틀림; 0.5: 부분적; 1: 올바름}).
  • 맥락 일관성은 응답이 자연스럽고 일관되게 생성되었는지를 평가합니다. 예를 들어, 대화 컨텍스트와 회상된 메모리를 연결하는지 여부 (레이블: {0: 일관성 없음; 0.5: 부분적 일관성; 1: 일관성 있음}).

 

비교 Reference

  • SCM(Self-Controlled Memory system), 2023: input length도 기억하기 위해 memory controller를 만들어 저장 후 retrieval
  • RelationLM, 2022: KGLSTM encoderencoding하여 LLM에 합쳐 다음 token을 예측할 때 활용
  • LongMem, 2023: Key, value pairmemory를 토큰별로 나누어 저장 후 retrieval
  • MemoryBank, 2023: Forgetting rate를 활용하여 memory에 더 오래 지속되도록 수치를 조정하고 FAISSretrieval