init
This commit is contained in:
284
TECH_STACK.md
Normal file
284
TECH_STACK.md
Normal 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 事务保证数据一致性
|
||||
|
||||
### 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) - 环境变量详解
|
||||
|
||||
---
|
||||
|
||||
这个简洁的技术架构专注于核心功能,避免了不必要的复杂性,同时保持了强大的扩展能力!🎉
|
||||
Reference in New Issue
Block a user