chore: project initialization - Day 4 environment setup
This commit is contained in:
416
优化方案总结.md
Normal file
416
优化方案总结.md
Normal 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
|
||||
- Prisma(ORM)+ PostgreSQL
|
||||
- Redis(缓存)
|
||||
|
||||
**RAG:**
|
||||
- Dify(Docker部署,内置Qdrant)⭐
|
||||
|
||||
**LLM:**
|
||||
- DeepSeek-V3(主力)⭐
|
||||
- Qwen3-72B(备用)⭐
|
||||
|
||||
**配置管理:**
|
||||
- agents.yaml(智能体配置)⭐
|
||||
- models.yaml(模型配置)⭐
|
||||
- prompts/*.txt(Prompt文件)⭐
|
||||
|
||||
### 开发计划
|
||||
|
||||
| 阶段 | 内容 | 时间 |
|
||||
|------|------|------|
|
||||
| 阶段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(测试):¥50(DeepSeek-V3极便宜)
|
||||
- **总计:¥49,300** ⭐
|
||||
|
||||
**月度运营成本(1000用户):**
|
||||
- 基础设施:¥1,200
|
||||
- LLM API:¥180(主要用DeepSeek-V3)
|
||||
- 对象存储(知识库文件):¥140(750GB存储 + 流量)⭐
|
||||
- 人力(运维):¥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,300(vs ¥77,000)
|
||||
|
||||
### 4. LLM成本最优
|
||||
- ✅ DeepSeek-V3:¥1/百万tokens
|
||||
- ✅ 月度LLM成本:¥180(vs 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周:**
|
||||
- [ ] 搭建前后端框架
|
||||
- [ ] 部署Dify(Docker)
|
||||
- [ ] 克隆LobeChat,提取聊天组件
|
||||
|
||||
**第2-4周:**
|
||||
- [ ] 实现3个核心智能体
|
||||
- [ ] 集成DeepSeek-V3
|
||||
- [ ] 完成基础对话功能
|
||||
|
||||
**第5-7周:**
|
||||
- [ ] 完善12个智能体
|
||||
- [ ] 集成Dify RAG
|
||||
- [ ] 项目管理功能
|
||||
|
||||
**第8-10周:**
|
||||
- [ ] 简化运营后台
|
||||
- [ ] 测试优化
|
||||
- [ ] 上线MVP
|
||||
|
||||
---
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
**优化后的方案:**
|
||||
- ✅ 聊天功能:参考LobeChat,稳定可靠
|
||||
- ✅ 向量数据库:Dify内置,无需关心
|
||||
- ✅ 运营后台:配置化,大幅简化
|
||||
- ✅ 大模型:DeepSeek-V3优先,成本最优
|
||||
- ✅ 开发周期:2.5个月
|
||||
- ✅ 开发成本:¥49,300
|
||||
- ✅ 月度成本:¥16,400(1000用户)
|
||||
|
||||
**这是最适合您项目的技术方案!** 🚀
|
||||
|
||||
---
|
||||
|
||||
**文档版本:v2.0(优化版)**
|
||||
**更新时间:2025-10-10**
|
||||
**作者:AI技术顾问**
|
||||
|
||||
Reference in New Issue
Block a user