Files
YG-Datasets/项目架构.md

226 lines
8.6 KiB
Markdown
Raw 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.
# YG-Dataset 架构设计文档
## 一、项目概述
YG-Dataset 是一个**数据生成平台**用于将各类文档PDF、DOCX、Excel、CSV等转换为可用于训练大语言模型的高质量数据集。
### 1.1 核心能力
- 多格式文档解析与处理
- 智能文本分割(多种算法)
- 基于 LLM 的问题自动生成
- 数据集管理与多格式导出
- 模型评估与盲测系统
### 1.2 技术架构
```
┌─────────────────────────────────────────────────────────────┐
│ Vue 3 Frontend │
│ (Element Plus + Pinia + Vue Router) │
└─────────────────────────┬───────────────────────────────────┘
│ HTTP/WebSocket
┌─────────────────────────▼───────────────────────────────────┐
│ FastAPI Backend │
│ (REST API + WebSocket) │
├─────────────────────────────────────────────────────────────┤
│ Services Layer │
│ ├── FileProcessor (PDF/DOCX/Excel/CSV解析) │
│ ├── TextSplitter (6种分割算法) │
│ ├── LLMService (问题生成/评估) │
│ └── ExportService (多格式导出) │
├─────────────────────────────────────────────────────────────┤
│ Data Access Layer (SQLAlchemy 2.0) │
└─────────────────────────┬───────────────────────────────────┘
┌─────────────────────────▼───────────────────────────────────┐
│ PostgreSQL + Redis │
│ (主数据库 + 缓存/任务队列) │
└─────────────────────────────────────────────────────────────┘
```
---
## 二、系统架构
### 2.1 分层架构
```
┌────────────────────────────────────────────────────────┐
│ Presentation Layer │
│ Vue 3 + Element Plus + Pinia + Vue Router │
├────────────────────────────────────────────────────────┤
│ API Layer │
│ FastAPI + Pydantic + CORS Middleware │
├────────────────────────────────────────────────────────┤
│ Service Layer │
│ FileProcessor / TextSplitter / LLM / Export │
├────────────────────────────────────────────────────────┤
│ Repository Layer │
│ SQLAlchemy Models + Async Session │
├────────────────────────────────────────────────────────┤
│ Infrastructure │
│ PostgreSQL / Redis / File System │
└────────────────────────────────────────────────────────┘
```
### 2.2 数据流架构
```
文件上传 → 文档解析 → 文本提取 → 分割处理 → 问题生成 → 数据集构建 → 导出
评估/盲测
```
---
## 三、模块设计
### 3.1 后端模块
| 模块 | 职责 | 关键类/函数 |
|------|------|-------------|
| `app/api/v1/` | REST API 路由 | Router 配置 |
| `app/models/` | SQLAlchemy ORM 模型 | Project, File, Chunk, Question 等 |
| `app/schemas/` | Pydantic 数据验证 | Request/Response 模型 |
| `app/services/` | 业务逻辑 | FileProcessor, TextSplitter, LLMWrapper |
| `app/core/` | 核心配置 | Config, Database, Security |
### 3.2 前端模块
| 目录 | 职责 |
|------|------|
| `views/` | 页面组件 (Home, Project, Playground, DataSquare) |
| `components/` | 可复用组件 |
| `stores/` | Pinia 状态管理 |
| `api/` | API 封装 |
| `router/` | 路由配置 |
---
## 四、API 设计
### 4.1 API 路由结构
```
/api/v1/
├── /projects/ # 项目管理
│ ├── GET / # 列表
│ ├── POST / # 创建
│ ├── GET /{id} # 详情
│ └── DELETE /{id} # 删除
├── /files/ # 文件处理
│ ├── POST /upload # 上传
│ ├── POST /process # 处理
│ └── GET /{id} # 状态
├── /chunks/ # 文本分割
│ ├── POST /split # 执行分割
│ └── GET / # 列表
├── /questions/ # 问题管理
│ ├── POST /generate # 生成
│ └── GET / # 列表
├── /datasets/ # 数据集
│ ├── GET / # 列表
│ ├── POST / # 创建
│ └── POST /export # 导出
└── /eval/ # 评估系统
├── POST /generate # 生成评估题
└── POST /run # 运行评估
```
---
## 五、数据库设计
### 5.1 核心表
| 表名 | 说明 |
|------|------|
| `projects` | 项目表 |
| `files` | 文件表(上传的文件) |
| `chunks` | 文本块表(分割后的片段) |
| `tags` | 标签/领域树 |
| `questions` | 问题表 |
| `datasets` | 数据集表 |
| `eval_datasets` | 评估数据集表 |
| `model_configs` | 模型配置表 |
| `tasks` | 任务表 |
### 5.2 ER 关系
```
Project 1──∞ File
Project 1──∞ Chunk
Project 1──∞ Question
Project 1──∞ Dataset
File 1──∞ Chunk
Chunk 1──∞ Question
Chunk *──* Tag
Dataset *──* Question
```
---
## 六、部署架构
### 6.1 Docker Compose
```yaml
services:
postgres: # 主数据库
redis: # 缓存/队列
backend: # FastAPI 服务
frontend: # Vue 3 服务
```
### 6.2 目录结构
```
YG-Datasets/
├── backend/ # FastAPI 后端
│ ├── app/
│ │ ├── api/ # API 路由
│ │ ├── models/ # ORM 模型
│ │ ├── schemas/ # Pydantic 模型
│ │ ├── services/ # 业务逻辑
│ │ └── core/ # 核心配置
│ ├── alembic/ # 数据库迁移
│ └── requirements.txt
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── views/ # 页面
│ │ ├── components/
│ │ ├── stores/ # Pinia
│ │ └── api/
│ └── package.json
├── docker-compose.yml
└── README.md
```
---
## 七、技术选型理由
| 技术 | 选型理由 |
|------|----------|
| FastAPI | 高性能、异步支持、自动 API 文档 |
| SQLAlchemy 2.0 | 异步 ORM、类型安全 |
| PostgreSQL | 可靠的关系型数据库 |
| Redis | 缓存、任务队列 |
| Vue 3 | Composition API、更好的 TypeScript 支持 |
| Element Plus | 成熟的 Vue 3 UI 组件库 |
| Pinia | 轻量级、TypeScript 友好 |
| Docker Compose | 简化开发/部署 |
---
## 八、安全考虑
- CORS 配置(生产环境需限制域名)
- 文件上传大小限制
- API 请求验证
- 数据库连接池管理
---
*文档版本: v1.0*
*更新日期: 2026-03-17*