초기 커밋

This commit is contained in:
mskim 2025-12-10 09:40:06 +09:00
parent ebb043e937
commit be2e24ecbc
1 changed files with 166 additions and 2 deletions

168
README.md
View File

@ -1,3 +1,167 @@
# Dewey
# AI 장기기억 시스템 프로젝트 (Dewey)
로컬 AI 장기기억 MCP 프로젝트
본 프로젝트는 **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(Memory Manager)
├── Redis (단기 메모리 + 캐시 + 벡터 검색)
└── PostgreSQL (정제된 장기기억 영구 저장)
```
---
# ⭐ 시스템 구성 요소
## 1. Spring Boot (Memory Manager 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 또는 Cron**
---
# 🎯 목표 효과
* 방송 중 딜레이 없이 자유로운 기억 저장
* 불필요한 정보와 스팸 제거
* AI가 활용 가능한 고품질 장기기억 생성
* DB 폭주 방지 및 효율적인 데이터 관리
* 방송 시간대에 최적화된 빠른 검색 속도
---