12 KiB
12 KiB
AI科研助手 - 优化方案总结
📋 需求澄清与方案调整
🔄 重要需求变更:知识库规模
原PRD描述:
"后期考虑,增加基于大规模(1000篇以内)文献的读取、识别、内容提取的工作"
实际需求(已明确):
- ✅ 每个用户最多创建 3个知识库
- ✅ 每个知识库最多上传 50个文件
- ✅ 主要格式:PDF、DOCX
- ✅ 单用户最大文档量:150个文件
影响:
- 🎉 技术难度从 ⭐⭐⭐⭐⭐ 降至 ⭐⭐⭐
- 🎉 Dify完全满足需求,无需自建RAG系统
- 🎉 开发成本进一步降低
- 🎉 性能优化需求降低
📋 您提出的问题与解决方案
问题1:聊天功能如何实现?
您的担忧: 不用LobeChat整体,如何保证聊天功能稳定?
我的方案: ✅ 参考LobeChat开源实现,复用核心聊天组件
策略:
├── ❌ 不采用:LobeChat整体(缺少项目管理、知识库功能)
├── ❌ 不采用:Dify + LobeChat组合(集成复杂,定制成本高)
├── ✅ 采用:提取LobeChat的聊天UI组件到我们的React项目
└── ✅ 采用:参考其流式输出、Markdown渲染的实现逻辑
具体实施:
- 克隆LobeChat源码(MIT开源许可,可自由使用)
- 提取核心组件:ChatMessage、ChatInput、StreamRenderer、MarkdownContent
- 移植到我们的React+Vite项目中
- 自研业务逻辑:项目管理、智能体编排、知识库集成
优势:
- 聊天体验有保障(LobeChat已被4万+用户验证)
- 节省开发时间(9.5天 → 见详细方案)
- 保持架构灵活性(不被整体框架绑定)
问题2:向量数据库还需要考虑吗?
回答: ❌ 完全不需要考虑
原因:
- Dify内置了Qdrant向量数据库
- 文档解析、向量化、检索全由Dify处理
- 我们只需调用Dify的REST API即可
实际需求下更加确定:
知识库规模:
- 3个知识库/用户
- 50个文件/知识库
- 150个文件/用户最大
Dify的能力:
- 单个知识库支持上万个文档片段
- 我们只需150个文件,远低于上限
- Dify内置Qdrant完全够用!✅
我们需要做的:
// 只需调用Dify API
const results = await difyClient.queryKnowledgeBase({
datasetId: 'kb-xxx',
query: '骨质疏松的治疗方案',
topK: 5
});
// Dify自动处理:
// 1. 向量检索(Qdrant)
// 2. 混合检索(关键词+语义)
// 3. 重排序(Reranking)
// 4. 返回结果
数据库设计(业务层):
-- 我们只需要管理知识库的元数据
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版本控制 |
| 用户管理 | ✅ 保留 | 简化版(列表、禁用、查看) |
| 数据统计 | ✅ 保留 | 简化版(基础仪表盘) |
| 对话查看 | ✅ 保留 | 仅管理员可查看 |
配置文件示例:
# 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
已更新方案: ✅
模型配置:
# 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. 准备环境
# 申请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技术顾问