226 lines
8.6 KiB
Markdown
226 lines
8.6 KiB
Markdown
|
|
# 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*
|