This commit is contained in:
2026-03-06 20:52:16 +08:00
commit 763372851e
10 changed files with 1249 additions and 0 deletions

284
TECH_STACK.md Normal file
View File

@@ -0,0 +1,284 @@
# 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 事务保证数据一致性
### OllamaAI 服务)
-**本地运行**:数据隐私和安全
-**模型丰富**:支持多种开源模型
-**易于使用**:简单的 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) - 环境变量详解
---
这个简洁的技术架构专注于核心功能,避免了不必要的复杂性,同时保持了强大的扩展能力!🎉