3P by baeba | ★ favorite | 댓글과 토론

요약 개요

  • 목적

    • AI 에이전트가 대화·문서에서 필요한 정보를 자동으로 추출하고 장기적으로 저장·검색할 수 있도록 지원하는 메모리 프레임워크
  • 핵심 설계

    • 전체 원문인 Memory value는 그대로 보존하고, 검색에는 Primary abstractionCue 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 및 하이브리드 검색 방식과 성능을 비교하는 접근이 적절함

댓글과 토론