feat: 添加 mem0 知识库
- 01-basics.md: 基础概念、self-host 介绍 - 02-architecture.md: TEI/Qdrant/PostgreSQL/LLM 架构详解 - 03-deployment.md: K8s 部署方案、环境变量 - 04-your-infra.md: 你的基础设施(tei namespace) - 05-faq.md: 常见问题
This commit is contained in:
100
mem0/02-architecture.md
Normal file
100
mem0/02-architecture.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Mem0 架构详解
|
||||
|
||||
## 整体架构
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Mem0 Server │
|
||||
│ (总控,协调所有组件) │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
│ │ │ │
|
||||
▼ ▼ ▼ ▼
|
||||
┌────────┐ ┌─────────┐ ┌──────────┐ ┌────────┐
|
||||
│ TEI │ │ Qdrant │ │PostgreSQL│ │ LLM │
|
||||
│(向量) │ │(向量库) │ │ (关系数据)│ │(回答) │
|
||||
└────────┘ └─────────┘ └──────────┘ └────────┘
|
||||
生成向量 存/搜向量 存元数据/关系 生成自然语言
|
||||
```
|
||||
|
||||
## 各组件职责
|
||||
|
||||
| 组件 | 类型 | 职责 | 你的环境 |
|
||||
|------|------|------|----------|
|
||||
| **TEI** | Text Embeddings Inference | 把文本转换成向量(embeddings) | BGE-M3 模型 |
|
||||
| **Qdrant** | 向量数据库 | 存储向量 + 原始文本,搜索相似向量 | tei namespace |
|
||||
| **PostgreSQL** | 关系数据库 | 存储用户数据、记忆元数据、关系链 | tei namespace |
|
||||
| **LLM** | 大语言模型 | 把向量检索结果组织成自然语言回答 | 待确认 |
|
||||
| **Neo4j** | 图数据库 | 存储记忆之间的关联关系(可选) | 可选,暂不需要 |
|
||||
|
||||
## 读写流程
|
||||
|
||||
### 写入记忆(2次请求)
|
||||
|
||||
```
|
||||
用户 → Mem0: "今天吃了火锅"
|
||||
│
|
||||
├→ TEI: 生成向量 [0.123, -0.456, ...]
|
||||
│ │
|
||||
├→ Qdrant: 存储向量 + 原始文本
|
||||
│ │
|
||||
└→ PostgreSQL: 存储元数据/关系
|
||||
```
|
||||
|
||||
### 搜索记忆(3次请求)
|
||||
|
||||
```
|
||||
用户 → Mem0: "最近吃了什么"
|
||||
│
|
||||
├→ TEI: 生成查询向量 [0.456, ...]
|
||||
│ │
|
||||
├→ Qdrant: 搜索相似向量 → 返回 "今天吃了火锅"
|
||||
│ │
|
||||
├→ PostgreSQL: 查询关联元数据
|
||||
│ │
|
||||
└→ LLM: 组织自然语言回答
|
||||
│
|
||||
▼
|
||||
用户得到回答
|
||||
```
|
||||
|
||||
## TEI 和 Qdrant 的关系
|
||||
|
||||
**TEI 和 Qdrant 完全独立,不知道对方存在**,全靠 Mem0 Server 在中间协调。
|
||||
|
||||
| 比喻 | 说明 |
|
||||
|------|------|
|
||||
| **TEI** | 翻译软件,把中文翻译成密码(向量) |
|
||||
| **Qdrant** | 图书馆,把密码对应的书存起来、搜出来 |
|
||||
|
||||
### 数据流
|
||||
|
||||
```
|
||||
Mem0 Server
|
||||
│
|
||||
├── 调用 TEI ────────→ TEI(只吐向量)
|
||||
│
|
||||
└── 调用 Qdrant ──── → Qdrant(只存/搜向量)
|
||||
```
|
||||
|
||||
## 为什么需要两者
|
||||
|
||||
- **TEI**:把文字变成数字,才能做语义计算
|
||||
- **Qdrant**:高效存储和搜索海量向量
|
||||
|
||||
两者缺一不可,分工不同。
|
||||
|
||||
## Neo4j(可选)
|
||||
|
||||
Neo4j 是图数据库,存储**记忆之间的关系**,用于复杂推理。
|
||||
|
||||
### 何时需要
|
||||
- 多跳问答("我老婆的表哥的同事")
|
||||
- 知识图谱构建
|
||||
- 社交网络分析
|
||||
|
||||
### 何时不需要
|
||||
- 普通语义搜索
|
||||
- 个人记忆库
|
||||
- RAG 增强
|
||||
|
||||
**建议:先不加 Neo4j,只用 Qdrant + PostgreSQL,跑起来后再按需扩展。**
|
||||
Reference in New Issue
Block a user