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]
- Recall and generation: 사용자로부터 새로운 질문이 주어지면 LLM 에이전트 A는 정확한 응답을 생성하기 위해 관련 생각을 검색합니다. 자체 생성된 추론적인 생각을 외부 메모리로 저장하므로 이 단계에서는 원시 역사적 대화 텍스트를 반복된 추론 없이 직접 Retrieval하고 질문에 답할 수 있음
- 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: KG를 LSTM encoder로 encoding하여 LLM에 합쳐 다음 token을 예측할 때 활용
- LongMem, 2023: Key, value pair로 memory를 토큰별로 나누어 저장 후 retrieval
- MemoryBank, 2023: Forgetting rate를 활용하여 memory에 더 오래 지속되도록 수치를 조정하고 FAISS로 retrieval