Files
YG-Datasets/项目架构.md

8.6 KiB
Raw Permalink Blame History

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

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