로컬 AI 장기기억 MCP 프로젝트
Go to file
mskim d01de88078 테스트용 임베딩 모델 추가 2025-12-15 09:57:37 +09:00
.mvn/wrapper 초기 커밋 2025-12-10 09:16:59 +09:00
src 테스트용 임베딩 모델 추가 2025-12-15 09:57:37 +09:00
.gitattributes 초기 커밋 2025-12-10 09:16:59 +09:00
.gitignore 필요없는 내역 제거 2025-12-10 13:46:03 +09:00
API명세서.md Redis 연동 완료 2025-12-12 14:08:37 +09:00
LICENSE Initial commit 2025-12-10 00:10:39 +00:00
README.md Recent Memories(resources/read) 호출 error수정 2025-12-11 10:40:58 +09:00
mvnw 초기 커밋 2025-12-10 09:16:59 +09:00
mvnw.cmd 초기 커밋 2025-12-10 09:16:59 +09:00
pom.xml 초기 커밋 2025-12-10 09:16:59 +09:00
prompt.md 대화 저장 MCP작성완료 2025-12-12 13:53:57 +09:00

README.md

AI 장기기억 시스템 프로젝트 (Dewey)

  • 본 프로젝트는 Open-LLM-VTuber 방송중 발생하는 대화 및 상호작용 데이터를 효율적으로 수집·정제·저장하기 위한 장기기억(Long-Term Memory, LTM) 관리 시스템을 구축하는 것을 목표로 한다. 시스템은 Spring Boot·Redis·PostgreSQL을 기반으로 구성된다. 추후 더 나아가 다양한 콘텐츠에서도 사용할 수 있도록 범용성 있는 MCP를 구성

📌 프로젝트 목표

  • 발생하는 방대한 텍스트 데이터를 실시간으로 수집
  • 저장 후보 데이터를 Redis에 임시 저장 및 정제
  • 매일 00시 배치 작업을 통해 Redis 데이터를 AI가 자동 요약·중요도 판단
  • 최종 정제된 "장기 기억 데이터"만 PostgreSQL에 영구 저장
  • AI가 필요할 때 PostgreSQL 또는 Redis에서 기억을 조회·검색할 수 있는 구조 제공

💻 테스트 환경

  • 4코어 8쓰레드 CPU
  • 10TB 저장공간
  • 64GB의 메모리
  • 추후 쌓이는 데이터량을 확인후 최소한의 저장용량으로 수정할 예정.

📐 전체 아키텍처

AI ↔ Spring Boot(Dewey)
          ├── Redis (단기 메모리 + 캐시 + 벡터 검색)
          └── PostgreSQL (정제된 장기기억 영구 저장)

폴더구조

/src
 └── main
     ├── java
     │    └── com.pandol365.dewey
     │          ├── api                     <-- 외부로 노출되는 REST API 계층
     │          │     ├── controller        <-- 요청을 받아 Service 호출하는 곳 (Endpoint)
     │          │     └── dto               <-- Controller에서 사용하는 DTO
     │          │           ├── request     <-- 요청 DTO
     │          │           └── response    <-- 응답 DTO
     │          │
     │          ├── config                  <-- Spring 설정, Bean 등록, CORS, Filter, ModelConfig 등
     │          │
     │          ├── domain                  <-- 핵심 비즈니스 도메인 계층
     │          │     ├── memory            <-- Memory Store 엔티티, MemoryService 등
     │          │     └── embedding         <-- 로컬 임베딩 모델 로딩 및 처리 로직
     │          │                             (ONNX 모델 실행, 텍스트→벡터 변환)
     │          │
     │          ├── vector                  <-- 벡터 저장·검색 기능 (FAISS, HNSW, Lucene 등)
     │          │                             Embedding 결과를 인덱싱, 탐색하는 모듈
     │          │
     │          ├── exception               <-- 글로벌 예외 처리, 커스텀 예외 클래스
     │          │
     │          └── DeweyApplication.java   <-- Spring Boot 메인 실행 파일
     │
     └── resources
           ├── application.yml              <-- Spring 설정 파일
           ├── model/                       <-- 로컬 ONNX 임베딩 모델 저장 위치
           └── other configs...             <-- (logback.xml 등)

시스템 구성 요소

1. Spring Boot (Dewey API)

Spring Boot는 전체 장기기억 처리의 중심 역할을 수행한다.

주요 기능

✔ 실시간 기억 수집 API

  • 방송 중 AI가 "기억 후보 데이터"를 전송하면 Redis에 저장
  • 전체 대화 중 약 30%(사용자 조정)만 자동 선별하여 Redis에 기록

✔ 장기기억 조회 API

  • AI가 특정 질문을 할 때, PostgreSQL 또는 Redis에서 관련 데이터를 검색 후 반환

✔ 배치 처리 (00시 자동 실행)

  • Redis에서 모든 raw memory 데이터를 수집
  • 특수문자/이모티콘 제거 및 정제
  • 정제된 데이터를 AI에게 전달
  • AI가 "최종 저장용 메모리"를 반환
  • PostgreSQL에 저장

2. Redis (단기 캐시 + 벡터 검색)

Redis는 빠른 처리용 메모리 DB로 사용된다.

역할

  • 방송 중 저장 요청되는 모든 메모리 후보를 임시 저장
  • TTL(예: 3일)을 기반으로 자동 관리
  • 불필요한 데이터(맞춤법 엉망, 이모지, 중복)도 임시 저장 후 배치에서 필터링
  • RediSearch를 이용한 벡터 검색 기능 확장 가능

장점

  • 초고속 읽기/쓰기
  • 대규모 텍스트도 부담 없음
  • 캐시 기반이므로 서버 리소스 절약

3. PostgreSQL (영구 장기기억 저장)

Redis에서 정제된 메모리를 AI가 선별하여 반환한 뒤 최종 저장하는 공간.

특징

  • 사용자의 핵심 정보, 특징, 취향, 약속, 반복적 패턴 등
  • 벡터 임베딩도 함께 저장 가능
  • 중요도/카테고리/태그 필드 지원

예시 필드

  • id
  • user_id
  • memory_text
  • importance (1~5)
  • tags (json)
  • created_at
  • embedding (vector)

🧠 장기기억 처리 흐름

1단계: 실시간 처리 (방송 중)

AI → 기억 후보 요청 → Spring Boot → Redis 저장
  • 전체 메시지 중 약 30% 자동 선택해 저장
  • TTL 기반으로 며칠간 보관

2단계: 일일 배치 처리 (00시)

  1. Redis 모든 key 스캔
  2. 특수문자/이모지 제거 → 데이터 정제
  3. 정제된 대화를 AI에게 전달
  4. AI가 "중요 기억만" 골라서 JSON으로 반환
  5. PostgreSQL에 최종 저장
  6. Redis는 비우거나 TTL로 자동 만료

3단계: 기억 조회 (검색)

AI가 메모리 조회 요청 시:

  1. 최근 기억 → Redis에서 빠르게 검색
  2. 장기 기억 → PostgreSQL에서 벡터 유사도 또는 키워드 검색
  3. 반환 후 AI가 응답 생성에 사용

🔍 추가 기능 (선택)

  • 중복 제거 로직
  • 대화 길이/이모지 비율 필터링
  • 벡터 기반 유사도 검색
  • 태그/카테고리 자동 분류
  • 메모리 업데이트(PATCH)
  • Garbage Collection (TTL 기반 자동 삭제)

📦 필요 기술 스택

  • Java 21+
  • Spring Boot
  • Redis 7+ / RediSearch 모듈(Optional)
  • PostgreSQL 16+
  • MyBatis
  • Spring Scheduler

🎯 목표 효과

  • 방송 중 딜레이 없이 자유로운 기억 저장
  • 불필요한 정보와 스팸 제거
  • AI가 활용 가능한 고품질 장기기억 생성
  • DB 폭주 방지 및 효율적인 데이터 관리
  • 방송 시간대에 최적화된 빠른 검색 속도