# Memora: 장기 작업을 위한 확장형 메모리 시스템

> Clean Markdown view of GeekNews topic #30956. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=30956](https://news.hada.io/topic?id=30956)
- GeekNews Markdown: [https://news.hada.io/topic/30956.md](https://news.hada.io/topic/30956.md)
- Type: news
- Author: [baeba](https://news.hada.io/@baeba)
- Published: 2026-06-30T09:13:12+09:00
- Updated: 2026-06-30T09:13:12+09:00
- Original source: [github.com/microsoft](https://github.com/microsoft/Memora)
- Points: 3
- Comments: 0

## Topic Body

#### 요약 개요  
  
* **목적**  
  
  * AI 에이전트가 대화·문서에서 필요한 정보를 자동으로 추출하고 장기적으로 저장·검색할 수 있도록 지원하는 메모리 프레임워크  
* **핵심 설계**  
  
  * 전체 원문인 `Memory value`는 그대로 보존하고, 검색에는 `Primary abstraction`과 `Cue anchors`를 사용  
* **주요 차별점**  
  
  * 원문 전체를 직접 임베딩하는 일반적인 RAG보다 정보 손실과 검색 모호성을 줄이는 구조를 지향  
* **주요 기능**  
  
  * 메모리 자동 추출, 중복 제거, 병합·갱신, 의미 기반 검색, 키워드 검색, LLM 기반 다단계 검색 지원  
* **적용 대상**  
  
  * 장기 대화형 AI, 다중 에이전트 시스템, 개인화 서비스, 문서 기반 지식 관리  
* **현재 상태**  
  
  * Python 기반 MIT 라이선스 공개 프로젝트이며, 벤치마크와 실험 기능을 포함하지만 초기 공개 단계에 가까움  
  
---  
  
### 서론  
  
#### 에이전트 메모리 관리의 복잡성 해결  
  
* 기존 AI 에이전트 개발에서는 다음 문제를 개발자가 직접 처리해야 함  
  
  * 어떤 정보를 메모리로 저장할 것인지 결정  
  * 저장된 정보를 언제 갱신하거나 삭제할 것인지 판단  
  * 사용자 질문과 관련된 기억을 검색  
  * 중복되거나 충돌하는 기억을 관리  
* Memora는 이러한 메모리 생명주기를 프레임워크 내부에서 처리하는 것을 목표로 함  
* 개발자는 저수준 저장·검색 로직보다 에이전트의 업무 기능과 응답 생성에 집중할 수 있음  
  
#### 기존 메모리 구조의 한계  
  
* 일반적인 RAG 시스템  
  
  * 문서나 대화 원문을 일정 크기로 분할  
  * 각 조각을 임베딩하여 벡터 데이터베이스에 저장  
  * 질문과 의미적으로 가까운 조각을 검색  
* 이 방식은 구현이 간단하지만 다음 문제가 발생할 수 있음  
  
  * 긴 문맥이 여러 조각으로 분리됨  
  * 유사한 표현의 정보가 중복 저장됨  
  * 단순한 의미 유사도가 실제 질문 의도와 일치하지 않을 수 있음  
  * 압축된 요약만 저장하면 세부 정보가 손실될 수 있음  
* 그래프형 지식베이스는 관계 표현에는 유리하지만 스키마와 관계 구조를 지속적으로 관리해야 하는 부담이 있음  
  
---  
  
### 본론  
  
#### 원문과 검색 구조를 분리  
  
* Memora의 각 메모리는 세 가지 요소로 구성됨  
  
##### Memory value  
  
* 실제 저장되는 전체 정보  
* 원문과 세부 내용을 압축하지 않고 보존  
* 검색 인덱스에는 직접 포함하지 않음  
* 정보 손실 없이 원래 문맥을 유지하는 역할  
  
##### Primary abstraction  
  
* 해당 메모리가 무엇에 관한 것인지를 나타내는 대표 요약  
* 하나의 메모리마다 하나씩 생성  
* 검색, 갱신, 병합, 중복 제거의 기준으로 활용  
* 메모리의 정체성을 나타내는 표준 단위로 사용  
  
##### Cue anchors  
  
* 하나의 메모리에 접근할 수 있는 여러 의미적 단서  
* 인물, 대상, 사건, 핵심 속성 등을 조합하여 구성  
* 하나의 기억에 여러 단서를 연결할 수 있음  
* 여러 기억이 동일한 단서를 공유하는 다대다 구조를 형성  
  
#### 검색 대상의 선택적 인덱싱  
  
* Memora는 모든 원문을 직접 인덱싱하지 않음  
* 실제 검색에는 다음 정보만 사용  
  
  * Primary abstraction  
  * Cue anchors  
* 검색이 완료되면 연결된 원본 Memory value를 반환  
* 이 구조의 목적  
  
  * 검색 표현과 실제 저장 정보를 분리  
  * 검색 인덱스를 간결하게 유지  
  * 원문의 세부 정보를 그대로 보존  
  * 원문 임베딩에서 발생할 수 있는 의미적 잡음을 감소  
  
#### RAG와 그래프 구조의 중간 형태  
  
* 일반 RAG보다 구조화된 검색 단서를 제공  
* 그래프 데이터베이스처럼 모든 관계를 엄격한 스키마로 정의하지 않음  
* 기억 위에 추상화 계층을 추가하여 유연성과 구조성을 동시에 확보하려는 방식  
* 핵심 방향  
  
  * 원문은 자유로운 형태로 저장  
  * 검색과 연결에는 구조화된 표현 사용  
  * 저장 구조와 검색 구조를 독립적으로 관리  
  
---  
  
#### 메모리 생성부터 응답까지의 처리 흐름  
  
##### 1. 메모리 수집  
  
* 에이전트가 대화 또는 문서를 처리  
* 내용에서 다음 정보를 자동 추출  
  
  * 사실 정보  
  * 사건 및 경험  
  * 절차와 작업 방법  
* 긴 대화는 주제별 에피소드로 분할  
* 핵심 정보를 구조화된 메모리 항목으로 변환  
  
##### 2. 지능형 저장  
  
* ChromaDB 벡터 데이터베이스를 기본 저장소로 사용  
* 의미 임베딩을 이용하여 메모리를 저장  
* 새 정보가 입력되면 기존 메모리와 비교  
* 유사하거나 중복되는 정보에 대해 다음 작업 수행  
  
  * 중복 제거  
  * 기존 기억과 병합  
  * 오래된 정보 갱신  
* 선택적으로 Cue index를 생성하여 구조화된 검색을 지원  
  
##### 3. 적응형 검색  
  
* 질문 유형과 설정에 따라 여러 검색 전략을 제공  
  
###### Semantic 검색  
  
* 질문과 메모리 표현 사이의 벡터 유사도를 계산  
* 구현이 단순하고 일반적인 질문에 적용 가능  
* 표현이 다르더라도 의미가 유사한 정보를 찾을 수 있음  
  
###### Prompted 검색  
  
* LLM이 검색 과정을 단계적으로 수행  
* 최초 검색 결과를 바탕으로 검색어와 검색 범위를 반복 조정  
* 복합 질문이나 여러 기억을 결합해야 하는 질문에 적합  
* LLM 호출이 추가되므로 비용과 응답 시간이 증가할 수 있음  
  
###### Hybrid 검색  
  
* 벡터 기반 의미 검색과 BM25·키워드 검색을 결합  
* 의미적 유사성과 정확한 단어 일치를 함께 활용  
* 고유명사, 제품명, 코드, 날짜 등의 검색 누락을 줄이는 데 유리  
  
###### GRPO 검색  
  
* 강화학습으로 훈련된 검색 정책을 사용  
* 질문에 필요한 메모리를 선택하는 방법 자체를 학습  
* LLM 기반 반복 검색을 로컬 미세조정 모델로 대체하는 것을 목표로 함  
* 현재 실험적 기능으로 분류됨  
  
##### 4. 답변 생성  
  
* 검색된 메모리를 정해진 형식으로 구성  
* 해당 내용을 LLM 프롬프트에 삽입  
* LLM은 질문과 검색된 기억을 함께 사용하여 응답 생성  
* 답변이 저장된 메모리에 근거하도록 유도  
  
---  
  
#### 메모리 품질을 유지하는 관리 기능  
  
* 메모리를 계속 추가하기만 하는 평면형 저장소와 달리 기존 메모리의 상태를 관리  
* 주요 관리 기능  
  
  * 중복 기억 제거  
  * 유사 기억 병합  
  * 변경된 사실 갱신  
  * 메모리 구조 재정리  
* Primary abstraction을 메모리 갱신과 통합의 기준으로 사용  
* 시간이 지나면서 메모리가 무제한으로 중복 축적되는 문제를 줄이는 것을 목표로 함  
  
#### 다양한 메모리 유형 지원  
  
* 메모리 값과 추상화 방식을 다르게 구성하여 여러 유형의 기억을 표현할 수 있음  
  
##### 사실적 기억  
  
* 인물, 장소, 속성, 설정 등 비교적 안정적인 정보  
* 예: 특정 사용자의 근무지, 선호 도구, 프로젝트 기술 스택  
  
##### 일화적 기억  
  
* 특정 시점에 발생한 사건이나 대화  
* 예: 과거 회의에서 결정된 내용, 특정 오류를 해결한 과정  
  
##### 절차적 기억  
  
* 작업 방법이나 반복 가능한 절차  
* 예: 서버 배포 절차, 오류 점검 순서, 문서 생성 규칙  
  
---  
  
#### 다중 에이전트의 기억 공유와 격리  
  
* 같은 환경에서 동작하는 여러 에이전트가 공통 메모리 공간을 사용할 수 있음  
* 한 에이전트가 저장한 정보를 다른 에이전트가 재사용할 수 있음  
* 에이전트 또는 역할별로 메모리 범위를 제한할 수도 있음  
* 기대 효과  
  
  * 에이전트 간 지식 중복 감소  
  * 작업 인수인계 개선  
  * 공통 프로젝트 정보의 일관성 유지  
* 접근 제어와 격리 기능을 통해 선택적 공유와 개인정보 보호를 지원하는 구조  
  
#### 저장 인프라와 표현 구조의 분리  
  
* 메모리 표현 방식이 특정 저장소에 강하게 종속되지 않도록 설계  
* 프로젝트 구조에는 다음 데이터베이스 연결 기능이 포함됨  
  
  * ChromaDB  
  * Redis  
* 로컬 또는 원격 저장 환경에 적용 가능  
* 저장 백엔드를 변경하더라도 메모리의 추상화·단서 구조는 유지할 수 있음  
  
---  
  
#### 기본 사용 방식  
  
* Python 3.10 이상 필요  
* GitHub 저장소를 복제한 뒤 패키지를 설치  
* `MemoraClient`를 생성하고 사용자 또는 에이전트 식별자를 지정  
* `add()`를 사용하여 대화나 문서를 메모리에 추가  
* `query()`를 사용하여 의미 기반 검색 수행  
* `advance_query()`를 사용하여 Prompted 또는 GRPO 방식의 고급 검색 수행  
  
#### 에이전트 연동 구조  
  
* 사용자 메시지를 받으면 관련 메모리를 먼저 검색  
* 검색 결과와 사용자 질문을 이용하여 답변 생성  
* 생성된 답변과 사용자 메시지를 하나의 대화 기록으로 구성  
* 해당 대화를 다시 Memora에 저장  
* 반복 과정  
  
  * 질문 수신  
  * 관련 기억 검색  
  * 응답 생성  
  * 대화 저장  
  * 이후 질문에서 재사용  
  
---  
  
#### 장기 메모리 성능 평가  
  
##### LoCoMo 벤치마크  
  
* 장기간 이어지는 대화에서 기억 검색 능력을 평가  
* 주요 평가 유형  
  
  * 단일 단계 질문  
  * 여러 정보를 결합하는 다단계 질문  
  * 시간 관계 질문  
  * 개방형 질문  
* Semantic, Prompted, Cue index 등의 조합을 실험할 수 있음  
  
##### LongMemEval 벤치마크  
  
* 장기 메모리 시스템의 다양한 질문 처리 능력을 평가  
* 에피소드 메모리와 의미 검색 설정을 적용할 수 있음  
* 실제 장기 대화 환경에서 정보 유지와 검색 성능을 검증하는 용도  
  
#### GRPO 기반 검색 정책 학습  
  
* 검색 절차를 강화학습 정책으로 학습시키는 실험 기능  
* 처리 단계  
  
  * 현재 정책으로 검색 경로 생성  
  * 검색 결과의 근거성·중복·비용 평가  
  * 그룹 상대적 이점을 계산  
  * GRPO 방식으로 검색 정책 학습  
* Qwen 3B 또는 7B 계열 모델과 LoRA 미세조정을 예시로 제시  
* 학습에는 GPU가 필요  
* 목표  
  
  * 매 검색마다 외부 LLM을 호출하는 비용 감소  
  * 특정 데이터와 업무에 최적화된 검색 전략 구축  
* 제한점  
  
  * 학습 데이터와 평가 기준이 필요  
  * 모델 훈련과 운영 관리가 추가됨  
  * 일반 사용자가 바로 적용하기에는 Semantic 검색보다 복잡함  
  
---  
  
#### 주요 장점  
  
* 원문 세부 정보를 압축하지 않고 보존 가능  
* 검색용 표현과 실제 정보가 분리되어 메모리 구조가 명확함  
* 메모리 중복 제거와 갱신을 체계적으로 처리할 수 있음  
* 의미 검색, 키워드 검색, LLM 검색, 강화학습 검색을 선택할 수 있음  
* 사실적·일화적·절차적 기억을 하나의 프레임워크에서 관리 가능  
* 여러 에이전트가 동일한 기억을 공유할 수 있음  
* 기존 에이전트 시스템에 비교적 적은 변경으로 연동하는 것을 목표로 함  
* 로컬 및 원격 저장 구조를 모두 지원할 수 있음  
  
#### 구조적 한계와 주의점  
  
* Primary abstraction과 Cue anchors의 품질이 검색 성능에 직접 영향을 줌  
* 자동 생성된 추상화가 부정확하면 원문이 정확하더라도 검색에서 누락될 수 있음  
* 원문을 직접 인덱싱하지 않는 구조는 세부 문구나 희소 정보 검색에 불리할 가능성이 있음  
* 중복 제거와 병합 과정에서 서로 다른 사건이 하나의 기억으로 잘못 통합될 수 있음  
* Prompted 검색은 여러 번의 LLM 호출로 비용과 지연 시간이 증가할 수 있음  
* GRPO 방식은 GPU, 학습 데이터, 평가 체계가 필요하여 운영 복잡도가 높음  
* 다중 에이전트 공유 메모리는 접근 권한과 정보 격리를 명확히 설계해야 함  
* 개인정보나 민감한 대화를 저장할 경우 별도의 암호화·삭제·보존 정책이 필요함  
* 공개 저장소에는 릴리스가 없고 참여자와 이용 지표가 적어, 대규모 운영 안정성이 충분히 검증되었다고 보기 어려움  
  
---  
  
### 결론  
  
#### 구조화된 접근 계층을 추가한 장기 메모리 방식  
  
* Memora는 원문 전체를 단순히 벡터화하는 방식에서 벗어나 다음 구조를 제안함  
  
  * 세부 내용은 Memory value에 보존  
  * 대표 의미는 Primary abstraction으로 표현  
  * 다양한 검색 경로는 Cue anchors로 구성  
* 핵심 가치는 정보 보존과 검색 효율 사이의 균형에 있음  
* 단순한 문서 검색보다 다음 환경에서 활용 가능성이 높음  
  
  * 장기간 사용자와 상호작용하는 개인화 에이전트  
  * 다수의 개발·업무 문서를 지속적으로 축적하는 시스템  
  * 여러 역할의 에이전트가 지식을 공유하는 환경  
  * 과거 결정과 작업 절차를 재사용해야 하는 프로젝트  
  
#### 도입 전 검증 필요  
  
* 실제 적용 시에는 다음 요소를 우선 검증해야 함  
  
  * 한국어 문서의 추상화와 Cue 생성 품질  
  * 기존 RAG와 비교한 검색 정확도  
  * 메모리 병합 과정의 오류율  
  * 장기간 운영 시 데이터 증가량과 검색 속도  
  * LLM 및 임베딩 API 비용  
  * 개인정보 저장과 접근 제어 방식  
* 초기 단계에서는 핵심 문서 일부를 대상으로 소규모 PoC를 수행하고, 일반 RAG 및 하이브리드 검색 방식과 성능을 비교하는 접근이 적절함

## Comments



_No public comments on this page._
