From e37fc2092093ac714bf79834ecb6836078137deb Mon Sep 17 00:00:00 2001 From: kappa Date: Sat, 14 Mar 2026 12:43:36 +0900 Subject: [PATCH] Add OpenMemory (Mem0) service documentation --- services/openmemory.md | 190 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 services/openmemory.md diff --git a/services/openmemory.md b/services/openmemory.md new file mode 100644 index 0000000..a98f165 --- /dev/null +++ b/services/openmemory.md @@ -0,0 +1,190 @@ +--- +title: OpenMemory (Mem0) +updated: 2026-03-14 +tags: + - service + - ai + - memory + - mcp +--- + +## 개요 + +OpenMemory는 [[Mem0]]에서 개발한 **오픈소스 AI 메모리 레이어**. LLM 기반 앱들이 공유 가능한 영속적 메모리를 로컬에서 사용할 수 있게 해주는 시스템. + +- **로컬 우선**: 모든 데이터가 사용자 머신에 저장, 클라우드 동기화 없음 +- **크로스 클라이언트**: MCP 호환 도구 간 컨텍스트 공유 +- **프라이버시 우선**: "Nothing goes to the cloud" +- GitHub: https://github.com/mem0ai/mem0 (`openmemory/` 디렉토리) +- 공식 문서: https://docs.mem0.ai/openmemory + +## 현재 운영 환경 + +| 항목 | 값 | +|------|-----| +| 호스트 | `100.115.154.78:8765` | +| Workers | 1 | +| Infer | False | +| MCP 연결 | SSE 방식, Claude Code에 등록 | + +## 아키텍처 + +| 컴포넌트 | 기술 스택 | 포트 | 역할 | +|----------|-----------|------|------| +| `mem0_store` | Qdrant (벡터 DB) | 6333 | 메모리 벡터 저장소 | +| `openmemory-mcp` | FastAPI + Uvicorn | 8765 | API 서버 + MCP 서버 | +| `openmemory-ui` | Next.js (React) | 3000 | 웹 대시보드 | + +DB: SQLite(`openmemory.db`) + Qdrant 벡터 스토어 이중 구조. Alembic으로 마이그레이션 관리. + +## 설치 + +```bash +# 원클릭 설치 +export OPENAI_API_KEY=sk-xxx +curl -sL https://raw.githubusercontent.com/mem0ai/mem0/main/openmemory/run.sh | bash + +# 수동 설치 +git clone https://github.com/mem0ai/mem0.git +cd mem0/openmemory +make env # .env 템플릿 복사 +make build # Docker 이미지 빌드 +make up # 서비스 시작 +``` + +**지원 벡터 스토어** (`--vector-store=` 플래그): +Qdrant(기본), Weaviate, Redis, PostgreSQL(pgvector), Chroma, Milvus, Elasticsearch, FAISS + +## Makefile 명령어 + +| 명령 | 설명 | +|------|------| +| `make build` | Docker 이미지 빌드 | +| `make up` | 서비스 시작 | +| `make down` | 서비스 중지 + 볼륨 삭제 | +| `make logs` | 로그 확인 | +| `make shell` | API 컨테이너 셸 접속 | +| `make migrate` | DB 마이그레이션 실행 | +| `make env` | .env 템플릿 복사 | +| `make ui-dev` | UI 개발 서버 실행 | + +## MCP 서버 통합 + +### 엔드포인트 + +``` +GET /mcp/{client_name}/sse/{user_id} # SSE 연결 +POST /mcp/{client_name}/sse/{user_id}/messages/ # 메시지 전송 +POST /mcp/messages/ # 범용 메시지 +``` + +### MCP 도구 (4개) + +| 도구 | 설명 | +|------|------| +| `add_memories` | 텍스트를 메모리로 저장 (벡터 임베딩 + DB 기록) | +| `search_memory` | 시맨틱 검색으로 관련 메모리 조회 | +| `list_memories` | 사용자의 모든 메모리 목록 조회 | +| `delete_all_memories` | 전체 메모리 삭제 | + +### 클라이언트 등록 + +```bash +npx @openmemory/install local http://localhost:8765/mcp//sse/ --client +``` + +지원 클라이언트: Claude Desktop, Cursor, Windsurf, Cline 등 MCP 호환 도구 전체 + +## API 엔드포인트 + +기본 URL: `http://localhost:8765` | API 문서: `/docs` (Swagger), `/redoc` (ReDoc) + +### 메모리 API (`/api/v1/memories/`) + +| 메서드 | 경로 | 설명 | +|--------|------|------| +| GET | `/api/v1/memories/` | 메모리 목록 (페이지네이션, 필터, 검색) | +| POST | `/api/v1/memories/` | 메모리 생성 | +| GET | `/api/v1/memories/{id}` | 메모리 상세 조회 | +| PUT | `/api/v1/memories/{id}` | 메모리 수정 | +| DELETE | `/api/v1/memories/` | 메모리 삭제 (배치) | +| POST | `/api/v1/memories/actions/archive` | 메모리 아카이브 | +| POST | `/api/v1/memories/actions/pause` | 메모리 일시정지 | +| GET | `/api/v1/memories/{id}/access-log` | 접근 로그 조회 | +| POST | `/api/v1/memories/filter` | 고급 필터 검색 | +| GET | `/api/v1/memories/{id}/related` | 관련 메모리 조회 | +| GET | `/api/v1/memories/categories` | 카테고리 목록 | + +### 설정 API (`/api/v1/config/`) + +| 메서드 | 경로 | 설명 | +|--------|------|------| +| GET/PUT | `/api/v1/config/` | 전체 설정 조회/수정 | +| POST | `/api/v1/config/reset` | 설정 초기화 | +| GET/PUT | `/api/v1/config/mem0/llm` | LLM 설정 | +| GET/PUT | `/api/v1/config/mem0/embedder` | 임베딩 모델 설정 | +| GET/PUT | `/api/v1/config/mem0/vector_store` | 벡터 스토어 설정 | + +### 기타 API + +| 경로 | 설명 | +|------|------| +| `/api/v1/stats/` | 통계 (메모리 수, 앱 수) | +| `/api/v1/apps/` | 앱 관리 | +| `/api/v1/backup/` | 백업 관리 | + +## 설정 + +### config.json + +```json +{ + "mem0": { + "llm": { + "provider": "openai", + "config": { + "model": "gpt-4o-mini", + "temperature": 0.1, + "max_tokens": 2000, + "api_key": "env:OPENAI_API_KEY" + } + }, + "embedder": { + "provider": "openai", + "config": { + "model": "text-embedding-3-small", + "api_key": "env:OPENAI_API_KEY" + } + } + } +} +``` + +### 환경 변수 + +**api/.env:** +``` +OPENAI_API_KEY=sk-xxx +USER=kaffa +``` + +**ui/.env:** +``` +NEXT_PUBLIC_API_URL=http://localhost:8765 +NEXT_PUBLIC_USER_ID=kaffa +``` + +LLM/임베딩 모델은 API를 통해 런타임에 변경 가능. 벡터 스토어도 REST API로 동적 전환 가능. + +## 주요 기능 + +- **시맨틱 메모리 검색**: 벡터 임베딩 기반 의미적 유사 메모리 검색 +- **크로스 앱 메모리 공유**: Claude, Cursor 등 여러 MCP 클라이언트 간 공유 +- **메모리 상태 관리**: active, paused, archived, deleted 4단계 +- **접근 감사 로그**: 어떤 앱이 언제 어떤 메모리에 접근했는지 기록 +- **카테고리 자동 분류**: 메모리에 자동 카테고리 태깅 +- **관련 메모리 탐색**: 같은 카테고리 관련 메모리 자동 추천 +- **앱별 권한 제어**: 앱 단위 메모리 접근 일시정지 +- **웹 대시보드(UI)**: 메모리 관리, 통계, 설정 GUI +- **백업/복원**: 데이터 백업 내장 +- **다중 벡터 스토어**: Qdrant, pgvector, Redis, Milvus 등 8개 백엔드