Go to file
2026-01-08 16:10:25 +08:00
__pycache__ http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
static http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
templates http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
uploads http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
app.py http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
check_db.py http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
cleanup_db.py http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
knowledge_base.db http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
Project_Design.md http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
README.md http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
requirements.txt http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
test_document_read.py http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
test_output.txt http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00
test_read.py http://hblu.top:3000/Python2025-CourseDesign/SPC.git 2026-01-08 16:10:25 +08:00

🧠 智能知识库问答系统

一个基于 Flask 的企业/课程智能问答系统,支持上传自有文档并进行精准问答,减少人工答疑成本。

核心功能

  • 📚 文档上传与管理:支持上传 PDF、Word、TXT 等格式的文档,自动进行智能解析
  • 🤖 智能问答:基于上传的文档内容,提供精准的问答服务
  • 💾 对话历史:自动保存所有问答记录,方便回顾和查看
  • 📱 响应式设计:完美支持桌面端和移动端访问
  • 🎨 美观界面:现代化的 UI 设计,提供良好的用户体验

🚀 快速开始

环境要求

  • Python 3.8+
  • pip

安装步骤

  1. 克隆项目
git clone <repository-url>
cd 12
  1. 安装依赖
pip install -r requirements.txt
  1. 配置环境变量

创建 .env 文件并配置以下变量:

OPENAI_API_KEY=your_openai_api_key_here
FLASK_SECRET_KEY=your_secret_key_here
  1. 初始化数据库
python app.py

数据库会自动创建在项目根目录下的 knowledge_base.db 文件中。

  1. 启动应用
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

享受智能问答带来的便利! 🎉