SPC/README.md

236 lines
5.8 KiB
Markdown
Raw Normal View History

# 🧠 智能知识库问答系统
一个基于 Flask 的企业/课程智能问答系统,支持上传自有文档并进行精准问答,减少人工答疑成本。
## ✨ 核心功能
- 📚 **文档上传与管理**:支持上传 PDF、Word、TXT 等格式的文档,自动进行智能解析
- 🤖 **智能问答**:基于上传的文档内容,提供精准的问答服务
- 💾 **对话历史**:自动保存所有问答记录,方便回顾和查看
- 📱 **响应式设计**:完美支持桌面端和移动端访问
- 🎨 **美观界面**:现代化的 UI 设计,提供良好的用户体验
## 🚀 快速开始
### 环境要求
- Python 3.8+
- pip
### 安装步骤
1. **克隆项目**
```bash
git clone <repository-url>
cd 12
```
2. **安装依赖**
```bash
pip install -r requirements.txt
```
3. **配置环境变量**
创建 `.env` 文件并配置以下变量:
```env
OPENAI_API_KEY=your_openai_api_key_here
FLASK_SECRET_KEY=your_secret_key_here
```
4. **初始化数据库**
```bash
python app.py
```
数据库会自动创建在项目根目录下的 `knowledge_base.db` 文件中。
5. **启动应用**
```bash
python app.py
```
应用将在 `http://localhost:5000` 启动。
## 📖 使用指南
### 1. 上传文档
- 点击左侧知识库面板的"📤 点击或拖拽上传文档"区域
- 选择要上传的文档(支持 PDF、Word、TXT 格式)
- 系统会自动解析文档内容并建立知识库索引
### 2. 提问
- 在右侧聊天输入框中输入问题
- 点击"发送"按钮或按 Enter 键提交问题
- 系统会基于上传的文档内容提供精准答案
- 答案会显示参考来源,包括文档名称和页码
### 3. 管理文档
- 在知识库面板中查看所有已上传的文档
- 点击"🗑️ 删除"按钮可以删除不需要的文档
- 文档状态会显示处理进度(处理中/已完成)
### 4. 查看历史
- 所有问答记录会自动保存
- 刷新页面后会自动加载历史对话
- 可以随时查看之前的问答内容
## 🎬 演示流程
### 场景 1课程答疑
1. **准备阶段**
- 上传课程讲义 PDF 文件
- 等待系统完成文档解析(约 2-3 秒)
2. **提问演示**
- 输入:"这门课程的主要学习目标是什么?"
- 系统返回基于讲义的答案,并标注参考页码
- 继续提问:"如何完成期末作业?"
- 系统提供详细的作业要求说明
3. **效果展示**
- 展示答案的准确性和参考来源
- 展示对话历史的保存和加载
### 场景 2企业文档查询
1. **准备阶段**
- 上传公司规章制度文档
- 上传产品说明书文档
2. **提问演示**
- 输入:"公司的请假流程是怎样的?"
- 系统从规章制度中提取相关内容
- 输入:"产品 A 的保修期是多久?"
- 系统从产品说明书中找到答案
3. **效果展示**
- 展示多文档知识库的整合能力
- 展示移动端的响应式设计
## 🛠️ 技术架构
### 后端技术栈
- **Flask**:轻量级 Web 框架
- **SQLite**:本地数据库,用于存储对话历史和文档信息
- **OpenAI API**:提供智能问答能力
- **LangChain**:文档处理和向量检索(计划中)
- **ChromaDB**:向量数据库(计划中)
### 前端技术栈
- **HTML5**:页面结构
- **CSS3**:样式设计,包含响应式布局
- **JavaScript**:交互逻辑和 API 调用
### 项目结构
```
12/
├── app.py # Flask 应用主文件
├── requirements.txt # Python 依赖
├── Project_Design.md # 项目设计文档
├── README.md # 项目说明文档
├── knowledge_base.db # SQLite 数据库(自动生成)
├── templates/
│ └── index.html # 前端页面模板
└── static/
├── style.css # 样式文件
└── script.js # JavaScript 脚本
```
## 🔧 API 接口
### 上传文档
```
POST /api/upload
Content-Type: multipart/form-data
Body: file (文件)
Response: { id, name, status }
```
### 获取文档列表
```
GET /api/documents
Response: [{ id, name, status, chunks, created_at }]
```
### 删除文档
```
DELETE /api/documents/{doc_id}
Response: { success: true }
```
### 提问
```
POST /api/ask
Content-Type: application/json
Body: { question: "问题内容" }
Response: { answer, sources: [{ name, page }] }
```
### 获取对话历史
```
GET /api/conversations
Response: [{ id, question, answer, sources, created_at }]
```
## 🎨 界面特性
### 响应式设计
- **桌面端**>1024px双栏布局左侧知识库右侧聊天
- **平板端**768px-1024px单栏布局优化间距
- **移动端**<768px全屏显示垂直堆叠大按钮设计
### 交互反馈
- Toast 通知系统,实时显示操作状态
- 字符计数器,提示输入长度
- 加载状态指示,提升用户体验
- Emoji 图标,增强视觉识别
## 📝 注意事项
1. **API 密钥**:确保正确配置 OpenAI API 密钥
2. **文档格式**:目前支持 PDF、Word、TXT 格式
3. **问题长度**:建议问题长度在 3-500 字之间
4. **数据库**:对话历史保存在本地 SQLite 数据库中
5. **浏览器兼容**:建议使用 Chrome、Firefox、Edge 等现代浏览器
## 🚧 未来规划
- [ ] 集成 LangChain 进行更强大的文档处理
- [ ] 使用 ChromaDB 建立向量数据库
- [ ] 支持更多文档格式Excel、PPT 等)
- [ ] 添加文档预览功能
- [ ] 实现对话导出功能
- [ ] 添加用户认证和权限管理
- [ ] 支持多语言问答
## 📄 许可证
MIT License
## 🤝 贡献
欢迎提交 Issue 和 Pull Request
## 📧 联系方式
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件至your-email@example.com
---
**享受智能问答带来的便利!** 🎉