refactor: 重构目录结构

- 顶级目录改为 AI/
- 次级目录为具体技术(如 mem0)
- 仓库定位为综合知识库
This commit is contained in:
hermes-bot
2026-05-29 16:05:57 +00:00
parent a6755089ab
commit 9fd51e7556
6 changed files with 13 additions and 11 deletions

100
AI/mem0/02-architecture.md Normal file
View 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跑起来后再按需扩展。**