Files
mem0-server/TECH_STACK.md
2026-03-06 20:52:16 +08:00

285 lines
6.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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) - 环境变量详解
---
这个简洁的技术架构专注于核心功能,避免了不必要的复杂性,同时保持了强大的扩展能力!🎉