chore: project initialization - Day 4 environment setup

This commit is contained in:
AI Clinical Dev Team
2025-10-10 15:14:54 +08:00
commit bdc7de8043
22 changed files with 12276 additions and 0 deletions

416
优化方案总结.md Normal file
View File

@@ -0,0 +1,416 @@
# AI科研助手 - 优化方案总结
## 📋 需求澄清与方案调整
### 🔄 重要需求变更:知识库规模
**原PRD描述**
> "后期考虑增加基于大规模1000篇以内文献的读取、识别、内容提取的工作"
**实际需求(已明确):**
- ✅ 每个用户最多创建 **3个知识库**
- ✅ 每个知识库最多上传 **50个文件**
- ✅ 主要格式:**PDF、DOCX**
- ✅ 单用户最大文档量:**150个文件**
**影响:**
- 🎉 技术难度从 ⭐⭐⭐⭐⭐ 降至 ⭐⭐⭐
- 🎉 **Dify完全满足需求**无需自建RAG系统
- 🎉 开发成本进一步降低
- 🎉 性能优化需求降低
---
## 📋 您提出的问题与解决方案
### 问题1聊天功能如何实现
**您的担忧:** 不用LobeChat整体如何保证聊天功能稳定
**我的方案:****参考LobeChat开源实现复用核心聊天组件**
```
策略:
├── ❌ 不采用LobeChat整体缺少项目管理、知识库功能
├── ❌ 不采用Dify + LobeChat组合集成复杂定制成本高
├── ✅ 采用提取LobeChat的聊天UI组件到我们的React项目
└── ✅ 采用参考其流式输出、Markdown渲染的实现逻辑
```
**具体实施:**
1. 克隆LobeChat源码MIT开源许可可自由使用
2. 提取核心组件ChatMessage、ChatInput、StreamRenderer、MarkdownContent
3. 移植到我们的React+Vite项目中
4. 自研业务逻辑:项目管理、智能体编排、知识库集成
**优势:**
- 聊天体验有保障LobeChat已被4万+用户验证)
- 节省开发时间9.5天 → 见详细方案)
- 保持架构灵活性(不被整体框架绑定)
---
### 问题2向量数据库还需要考虑吗
**回答:****完全不需要考虑**
**原因:**
- Dify内置了Qdrant向量数据库
- 文档解析、向量化、检索全由Dify处理
- 我们只需调用Dify的REST API即可
**实际需求下更加确定:**
```
知识库规模:
- 3个知识库/用户
- 50个文件/知识库
- 150个文件/用户最大
Dify的能力
- 单个知识库支持上万个文档片段
- 我们只需150个文件远低于上限
- Dify内置Qdrant完全够用
```
**我们需要做的:**
```javascript
// 只需调用Dify API
const results = await difyClient.queryKnowledgeBase({
datasetId: 'kb-xxx',
query: '骨质疏松的治疗方案',
topK: 5
});
// Dify自动处理
// 1. 向量检索Qdrant
// 2. 混合检索(关键词+语义)
// 3. 重排序Reranking
// 4. 返回结果
```
**数据库设计(业务层):**
```sql
-- 我们只需要管理知识库的元数据
CREATE TABLE knowledge_bases (
id VARCHAR(50) PRIMARY KEY,
user_id VARCHAR(50) NOT NULL,
name VARCHAR(100) NOT NULL,
dify_dataset_id VARCHAR(100) NOT NULL, -- Dify知识库ID
file_count INT DEFAULT 0,
-- 限制每个用户最多3个
CONSTRAINT check_kb_limit CHECK (
(SELECT COUNT(*) FROM knowledge_bases WHERE user_id = user_id) <= 3
)
);
-- 文档表
CREATE TABLE documents (
id VARCHAR(50) PRIMARY KEY,
kb_id VARCHAR(50) NOT NULL,
filename VARCHAR(255) NOT NULL,
file_size_bytes BIGINT NOT NULL,
status VARCHAR(20) DEFAULT 'processing', -- processing, completed, failed
dify_document_id VARCHAR(100) NOT NULL,
-- 限制每个知识库最多50个
CONSTRAINT check_doc_limit CHECK (
(SELECT COUNT(*) FROM documents WHERE kb_id = kb_id) <= 50
)
);
```
---
### 问题3删除运营端功能后的方案
**已删除功能:** ✅ 降低开发成本
| 功能 | 状态 | 替代方案 |
|------|------|---------|
| 模型管理 | ❌ 删除 | 配置文件:`config/models.yaml` |
| 智能体管理 | ❌ 删除 | 配置文件:`config/agents.yaml` |
| 智能体配置 | ❌ 删除 | Prompt文件`prompts/*.txt` |
| Prompt版本管理 | ❌ 删除 | Git版本控制 |
| 用户管理 | ✅ 保留 | 简化版(列表、禁用、查看) |
| 数据统计 | ✅ 保留 | 简化版(基础仪表盘) |
| 对话查看 | ✅ 保留 | 仅管理员可查看 |
**配置文件示例:**
```yaml
# config/agents.yaml
agents:
- id: agent-picos
name: PICOS构建
system_prompt_file: prompts/picos_system.txt
models:
deepseek-v3:
temperature: 0.3
max_tokens: 2500
rag_enabled: true
status: active
```
**优势:**
- 开发时间节省约3周
- 开发成本降低¥77,000 → ¥49,300节省36%
- 维护更简单:直接修改配置文件,无需后台界面
- 版本控制所有配置由Git管理
---
### 问题4大模型优先级
**您的要求:** 优先DeepSeek-V3和Qwen3
**已更新方案:**
**模型配置:**
```yaml
# config/models.yaml
models:
primary:
- name: deepseek-v3
provider: deepseek
api_key: ${DEEPSEEK_API_KEY}
base_url: https://api.deepseek.com/v1
pricing:
input: 1 # ¥1/百万tokens
output: 2 # ¥2/百万tokens
features:
- reasoning # 推理能力强
- long_context # 支持128k上下文
secondary:
- name: qwen3-72b
provider: aliyun
api_key: ${DASHSCOPE_API_KEY}
base_url: https://dashscope.aliyuncs.com/api/v1
pricing:
input: 4 # ¥4/百万tokens
output: 4
features:
- chinese # 中文理解好
- stable # 国内稳定
optional:
- name: gemini-2.0-flash
provider: google
api_key: ${GEMINI_API_KEY}
# 可选,国际用户使用
```
**成本对比1000用户/月):**
| 模型 | 月度成本 | 年度成本 | 性价比 |
|------|---------|---------|--------|
| **DeepSeek-V3** ⭐ | **¥150** | **¥1,800** | **最高** |
| Qwen3-72B | ¥600 | ¥7,200 | 高 |
| Gemini Pro | ¥300 | ¥3,600 | 中 |
| GPT-4 | ¥2,500 | ¥30,000 | 低 |
**建议:**
- 90%的请求使用DeepSeek-V3极具性价比
- 10%的请求使用Qwen3需要更强中文理解时
- 年度可节省LLM成本¥1,200-1,500
---
## 🎯 最终优化方案总结
### 核心架构
```
┌─────────────────────────────────────────┐
│ 自定义前端React + Vite
│ - 项目管理(自研) │
│ - 智能体选择(自研) │
│ - 聊天界面参考LobeChat⭐ │
│ - 知识库管理(自研) │
└─────────────────────────────────────────┘
↓ REST API
┌─────────────────────────────────────────┐
│ 业务层 (Node.js/TypeScript) │
│ - 智能体路由(配置化)⭐ │
│ - 上下文组装 │
│ - 用户认证 │
│ - 简化运营后台⭐ │
└─────────────────────────────────────────┘
↓ ↓
┌──────────────────┐ ┌─────────────────┐
│ Dify (RAG) │ │ LLM API │
│ - 知识库 │ │ - DeepSeek-V3⭐│
│ - 文档解析 │ │ - Qwen3 ⭐ │
│ - Qdrant(内置)⭐│ │ - Gemini(可选) │
└──────────────────┘ └─────────────────┘
```
### 技术栈
**前端:**
- React 18 + TypeScript + Vite
- TailwindCSS + HeadlessUI
- Zustand状态管理
- **LobeChat聊天组件复用** ⭐
**后端:**
- Node.js + Fastify + TypeScript
- PrismaORM+ PostgreSQL
- Redis缓存
**RAG**
- DifyDocker部署内置Qdrant
**LLM**
- DeepSeek-V3主力
- Qwen3-72B备用
**配置管理:**
- agents.yaml智能体配置
- models.yaml模型配置
- prompts/*.txtPrompt文件
### 开发计划
| 阶段 | 内容 | 时间 |
|------|------|------|
| 阶段1 | 基础搭建 + 复用LobeChat组件 | 1.5周 |
| 阶段2 | 核心功能12个智能体 | 3.5周 |
| 阶段3 | 高级功能RAG、文档生成 | 2周 |
| 阶段4 | 简化运营后台 | 1周 |
| 阶段5 | 测试优化 | 2周 |
| **总计** | **10周2.5个月)** | ⭐ |
### 成本估算
**开发成本(知识库需求明确后):**
- 人力4人月 × ¥12k = ¥48,000
- 服务器开发¥1,250
- LLM API测试¥50DeepSeek-V3极便宜
- **总计¥49,300** ⭐
**月度运营成本1000用户**
- 基础设施¥1,200
- LLM API¥180主要用DeepSeek-V3
- 对象存储知识库文件¥140750GB存储 + 流量)⭐
- 人力运维¥15,000
- **总计¥16,520/月**
**成本节省:**
- vs 原方案(大规模文献):节省约 ¥500/月
- vs 纯手写:节省 ¥30,700+38%+
**知识库成本明细:**
```
单用户150个文件 × 5MB = 750MB
1000用户750GB总存储
对象存储阿里云OSS
- 存储费750GB × ¥0.12/GB = ¥90/月
- 流量费100GB × ¥0.5/GB = ¥50/月
- 总计¥140/月
注:比原估算的"大规模文献处理"节省60%成本
```
---
## ✅ 优势总结
### 1. 聊天功能有保障
- ✅ 参考LobeChat成熟实现
- ✅ 流式输出、Markdown渲染开箱即用
- ✅ 节省9.5天开发时间
### 2. 向量数据库无需关心(知识库需求明确后更加确定)
- ✅ Dify内置Qdrant自动处理
- ✅ 只需调用API降低技术难度
- ✅ 150个文件/用户远低于Dify上限
- ✅ 无需考虑性能优化
### 3. 开发成本大幅降低
- ✅ 删除复杂后台功能节省3周
- ✅ 配置文件管理,易于维护
- ✅ 总成本¥49,300vs ¥77,000
### 4. LLM成本最优
- ✅ DeepSeek-V3¥1/百万tokens
- ✅ 月度LLM成本¥180vs GPT-4的¥2,500
- ✅ 年度节省¥27,840
### 5. 开发周期短
- ✅ 2.5个月可上线MVP
- ✅ 复用成熟组件,降低风险
---
## 📝 下一步行动
### 立即可做:
**1. 确认技术方案**
- 是否采用优化后的混合架构?
- 是否同意删除后台管理功能?
**2. 准备环境**
```bash
# 申请LLM API Key
- DeepSeek API Key (https://platform.deepseek.com)
- 阿里云DashScope Key (https://dashscope.aliyun.com)
# 准备服务器
- 云服务器 4核8G开发环境
- PostgreSQL 数据库
- Redis 缓存
# 准备代码仓库
- GitHub/GitLab 仓库
```
**3. 组建团队**
- 1名全栈开发Node.js + React
- 1名前端开发React + TailwindCSS
- 预计2.5个月完成
**4. 启动开发**
**第1周**
- [ ] 搭建前后端框架
- [ ] 部署DifyDocker
- [ ] 克隆LobeChat提取聊天组件
**第2-4周**
- [ ] 实现3个核心智能体
- [ ] 集成DeepSeek-V3
- [ ] 完成基础对话功能
**第5-7周**
- [ ] 完善12个智能体
- [ ] 集成Dify RAG
- [ ] 项目管理功能
**第8-10周**
- [ ] 简化运营后台
- [ ] 测试优化
- [ ] 上线MVP
---
## 🎉 总结
**优化后的方案:**
- ✅ 聊天功能参考LobeChat稳定可靠
- ✅ 向量数据库Dify内置无需关心
- ✅ 运营后台:配置化,大幅简化
- ✅ 大模型DeepSeek-V3优先成本最优
- ✅ 开发周期2.5个月
- ✅ 开发成本¥49,300
- ✅ 月度成本¥16,4001000用户
**这是最适合您项目的技术方案!** 🚀
---
**文档版本v2.0(优化版)**
**更新时间2025-10-10**
**作者AI技术顾问**