SPC/README.md

236 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧠 智能知识库问答系统
一个基于 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. **文档格式**目前支持 PDFWordTXT 格式
3. **问题长度**建议问题长度在 3-500 字之间
4. **数据库**对话历史保存在本地 SQLite 数据库中
5. **浏览器兼容**建议使用 ChromeFirefoxEdge 等现代浏览器
## 🚧 未来规划
- [ ] 集成 LangChain 进行更强大的文档处理
- [ ] 使用 ChromaDB 建立向量数据库
- [ ] 支持更多文档格式ExcelPPT
- [ ] 添加文档预览功能
- [ ] 实现对话导出功能
- [ ] 添加用户认证和权限管理
- [ ] 支持多语言问答
## 📄 许可证
MIT License
## 🤝 贡献
欢迎提交 Issue Pull Request
## 📧 联系方式
如有问题或建议请通过以下方式联系
- 提交 Issue
- 发送邮件至your-email@example.com
---
**享受智能问答带来的便利!** 🎉