# Mem0 Server 技术架构 ## 📋 技术栈 Mem0 Server 采用简洁高效的技术架构,所有组件均通过环境变量配置。 ### 核心组件 | 组件 | 技术 | 用途 | 存储方式 | |------|------|------|----------| | **Vector Store** | ChromaDB | 向量存储,用于语义搜索 | 文件系统 | | **Graph Store** | SQLite | 图存储,管理实体关系 | 文件系统 | | **LLM** | Ollama | 大语言模型,文本生成 | 外部服务 | | **Embedder** | Ollama | 嵌入模型,向量化文本 | 外部服务 | --- ## 🏗️ 架构图 ``` ┌─────────────┐ │ Mem0 App │ (FastAPI, port: 8888) │ main.py │ └──────┬──────┘ │ ├──→ ┌─────────────┐ │ │ ChromaDB │ (Embedded) │ │ Vectors │ │ └─────────────┘ │ ├──→ ┌─────────────┐ │ │ SQLite │ (Embedded) │ │ Graph │ │ └─────────────┘ │ └──→ ┌─────────────┐ │ Ollama │ (External Service) │ LLM + AI │ └─────────────┘ ``` --- ## 🔧 技术选型理由 ### ChromaDB(向量存储) - ✅ **轻量级**:无需独立数据库服务 - ✅ **易部署**:嵌入式设计,开箱即用 - ✅ **高性能**:专为向量相似度搜索优化 - ✅ **持久化**:数据直接存储到文件系统 ### SQLite(图存储) - ✅ **零配置**:无需安装和配置 - ✅ **单文件**:数据存储在单个文件中 - ✅ **成熟稳定**:经过广泛验证的数据库 - ✅ **事务支持**:ACID 事务保证数据一致性 ### Ollama(AI 服务) - ✅ **本地运行**:数据隐私和安全 - ✅ **模型丰富**:支持多种开源模型 - ✅ **易于使用**:简单的 API 接口 - ✅ **性能优秀**:优化的推理引擎 --- ## 📊 环境变量配置 所有配置通过环境变量传入,实现配置与代码分离。 ### 必需的环境变量 ```bash # ChromaDB 配置 CHROMA_DB_PATH=/app/chroma_db CHROMA_COLLECTION_NAME=memories # SQLite 配置 SQLITE_DB_PATH=/app/graph_store.db # Ollama 配置 OLLAMA_HOST=http://host.docker.internal:11434 OLLAMA_LLM_MODEL=llama3.2 OLLAMA_EMBEDDER_MODEL=nomic-embed-text # 历史数据库配置 HISTORY_DB_PATH=/app/history/history.db ``` ### 环境变量说明 | 变量名 | 说明 | 默认值 | 示例 | |--------|------|--------|------| | `CHROMA_DB_PATH` | ChromaDB 数据存储路径 | `/app/chroma_db` | `/data/chroma` | | `CHROMA_COLLECTION_NAME` | ChromaDB 集合名称 | `memories` | `my_memories` | | `SQLITE_DB_PATH` | SQLite 数据库路径 | `/app/graph_store.db` | `/data/graph.db` | | `OLLAMA_HOST` | Ollama 服务地址 | `http://localhost:11434` | `http://ollama:11434` | | `OLLAMA_LLM_MODEL` | LLM 模型名称 | `llama3.2` | `mistral`, `llama3.1` | | `OLLAMA_EMBEDDER_MODEL` | Embedder 模型名称 | `nomic-embed-text` | `mxbai-embed-large` | | `HISTORY_DB_PATH` | 历史数据库路径 | `/app/history/history.db` | `/data/history.db` | --- ## 🚀 部署方式 ### Docker Compose(推荐) ```yaml services: mem0: build: . ports: - "8888:8000" volumes: - ./chroma_db:/app/chroma_db - ./history:/app/history environment: - CHROMA_DB_PATH=/app/chroma_db - CHROMA_COLLECTION_NAME=memories - SQLITE_DB_PATH=/app/graph_store.db - OLLAMA_HOST=http://host.docker.internal:11434 - OLLAMA_LLM_MODEL=llama3.2 - OLLAMA_EMBEDDER_MODEL=nomic-embed-text ``` 启动命令: ```bash docker-compose up -d ``` ### Docker 命令 ```bash docker run -d \ --name mem0-server \ -p 8888:8000 \ -v $(pwd)/chroma_db:/app/chroma_db \ -v $(pwd)/history:/app/history \ -e CHROMA_DB_PATH=/app/chroma_db \ -e CHROMA_COLLECTION_NAME=memories \ -e SQLITE_DB_PATH=/app/graph_store.db \ -e OLLAMA_HOST=http://host.docker.internal:11434 \ -e OLLAMA_LLM_MODEL=llama3.2 \ -e OLLAMA_EMBEDDER_MODEL=nomic-embed-text \ mem0-server ``` --- ## 💾 数据持久化 ### ChromaDB 数据 - **位置**:`./chroma_db/` - **内容**:向量数据、集合元数据 - **格式**:ChromaDB 内部格式 ### SQLite 数据 - **位置**:`./graph_store.db`(或自定义路径) - **内容**:图结构数据、实体关系 - **格式**:SQLite 数据库文件 ### 历史数据 - **位置**:`./history/history.db` - **内容**:记忆变更历史记录 - **格式**:SQLite 数据库文件 --- ## 🔍 工作流程 ### 1. 创建记忆 ``` 用户消息 → FastAPI → Memory.add() ↓ Ollama Embedder → 生成向量 ↓ ChromaDB → 存储向量 ↓ SQLite → 存储实体关系 ↓ 返回结果 ``` ### 2. 搜索记忆 ``` 搜索查询 → FastAPI → Memory.search() ↓ Ollama Embedder → 查询向量化 ↓ ChromaDB → 向量相似度搜索 ↓ 返回匹配的记忆 ``` ### 3. 获取记忆 ``` 用户 ID → FastAPI → Memory.get_all() ↓ SQLite → 查询图关系 ↓ ChromaDB → 获取相关向量 ↓ 返回结构化记忆 ``` --- ## 🎯 优势特点 ### 简洁性 - ✅ 无外部数据库依赖 - ✅ 配置文件少 - ✅ 易于理解和维护 ### 灵活性 - ✅ 所有配置通过环境变量 - ✅ 支持自定义模型 - ✅ 可切换不同组件 ### 可扩展性 - ✅ ChromaDB 支持集群部署 - ✅ SQLite 可替换为 PostgreSQL - ✅ Ollama 可替换为其他 LLM 服务 ### 数据隐私 - ✅ 本地运行 AI 模型 - ✅ 数据不上传第三方 - ✅ 完全可控的数据流 --- ## 📈 性能特性 ### ChromaDB - 毫秒级向量相似度搜索 - 支持百万级向量规模 - 内存映射加速查询 ### SQLite - 微秒级简单查询 - 事务安全保证 - 自动索引优化 ### Ollama - GPU 加速推理(如可用) - 批量处理优化 - 模型缓存机制 --- ## 🛠️ 开发建议 ### 本地开发 ```bash # 使用开发模式运行 docker-compose -f docker-compose.yaml up --build # 查看日志 docker-compose logs -f mem0 ``` ### 生产部署 - 使用固定版本镜像 - 配置数据卷备份 - 监控资源使用 - 设置健康检查 ### 性能优化 - 调整 ChromaDB 批次大小 - 优化 SQLite 索引 - 使用更快的存储介质(SSD) - 增加 Ollama 并发配置 --- ## 📚 相关文档 - [README.md](./README.md) - 项目主文档 - [DEPLOYMENT.md](./DEPLOYMENT.md) - 详细部署指南 - [QUICK_START.md](./QUICK_START.md) - 快速入门 - [ENV_VARIABLES.md](./ENV_VARIABLES.md) - 环境变量详解 --- 这个简洁的技术架构专注于核心功能,避免了不必要的复杂性,同时保持了强大的扩展能力!🎉