group-wbl/README.md
2026-01-08 14:41:03 +08:00

128 lines
7.5 KiB
Markdown
Raw Permalink 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.

# 智能知识库问答系统
## 项目简介
智能知识库问答系统是一个面向企业和课程的智能问答平台主要功能是基于自有文档进行精准应答减少人工答疑工作量。系统采用端到端的RAG检索增强生成架构结合向量数据库和稀疏索引技术实现高效准确的知识检索和智能问答。
## 核心功能
- **多格式文档上传**支持PDF、Word、TXT等多种文档格式
- **智能知识管理**:自动解析、分词、向量化存储文档内容
- **混合检索**:结合向量相似度和关键词匹配的混合检索策略
- **智能问答**:基于检索结果生成准确的回答,支持多轮对话
- **文档管理**:支持查看和删除已上传的文档
## 技术栈
- **后端**Python 3.9+, Flask
- **向量数据库**ChromaDB
- **稀疏索引**Whoosh自定义中文分词器
- **文本处理**LangChain
- **前端**HTML5, CSS3, JavaScript
- **开发环境**macOS
## 团队成员与贡献
| 成员 | 学号 | 主要分工 |
|------|------|----------|
| 文彬龙 | 2411020224 | 核心逻辑开发、Prompt 编写 |
| 冯俊锋 | 2411020222 | 文档撰写、测试与 Bug 修复 |
| 赵珂皓 | 2411020217 | 前端界面设计、PPT 制作,成品汇报 |
## 安装和使用说明
### 1. 环境搭建
```bash
# 克隆仓库
git clone http://hblu.top:3000/Python2025-CourseDesign/group-wbl.git
# 进入项目目录
cd group-wbl
# 创建虚拟环境
python3 -m venv .venv
# 激活虚拟环境
source .venv/bin/activate # macOS/Linux
# 安装依赖
pip install -e .
```
### 2. 启动服务器
```bash
# 确保虚拟环境已激活
source .venv/bin/activate # 如果尚未激活
# 启动Flask服务器
python app.py
```
### 3. 访问系统
打开浏览器,访问 `http://localhost:5000` 即可使用系统。
## 项目结构
```
├── intelligent_knowledge_base.egg-info/ # 包信息
├── knowledge_base/ # 知识库存储目录
│ ├── chroma.sqlite3 # ChromaDB 数据库
│ ├── sparse_index/ # Whoosh 索引
├── templates/ # 前端模板
│ └── index.html # 主页面
├── .gitignore # Git 忽略文件
├── README.md # 项目说明
├── app.py # Flask 应用入口
├── knowledge_base.py # 知识库核心模块
├── pyproject.toml # 项目配置
└── uv.lock # 依赖锁文件
```
## 注意事项
- 首次启动系统时,会自动初始化知识库目录
- 上传大文件时可能需要较长时间处理
- 系统会自动为文档创建分块和索引,确保检索效率
- 建议使用Chrome或Safari浏览器以获得最佳体验
## 开发心得
### 选题思考:为什么做这个?解决了谁的痛苦?
在确定项目方向时,我们观察到企业和教育机构面临一个普遍问题:大量的文档资料难以有效管理和利用,用户需要花费大量时间查找信息,而客服和教师则需要重复回答类似问题。基于此,我们决定开发智能知识库问答系统,旨在通过自动化和智能化手段解决这一痛点。
这个系统主要解决了三类用户的痛苦:首先是企业员工和学生,他们可以通过自然语言提问快速获取准确信息,无需在海量文档中手动检索;其次是客服人员和教师,系统可以自动处理常见问题,减轻他们的工作负担,让他们能够专注于更复杂的任务;最后是企业管理者和教育机构,系统可以帮助他们更好地管理和利用组织知识,提高整体运营效率。
### AI 协作体验:
#### 第一次用 AI 写代码的感觉
第一次使用AI辅助写代码时我们既兴奋又紧张。兴奋的是终于可以体验AI带来的效率提升紧张的是担心AI生成的代码质量和可靠性。当我们输入第一个Prompt后AI迅速返回了完整的代码片段这让我们感到非常惊讶。虽然代码需要一些调整和优化但整体结构和逻辑已经相当完善大大减少了我们的编码时间。
随着使用的深入我们发现AI不仅可以生成代码还可以解释代码逻辑、提供最佳实践建议甚至帮助调试错误。这种交互式的开发体验让我们对AI辅助编程的潜力有了全新的认识。
#### 哪个 Prompt 让你直呼"牛逼"
最让我们印象深刻的Prompt是用于实现混合检索功能的指令。我们只需描述系统需要结合向量相似度和关键词匹配并说明具体的权重计算方法AI就生成了完整的实现代码包括ChromaDB查询、Whoosh索引搜索以及结果融合的逻辑。更令人惊讶的是AI还考虑到了性能优化建议我们使用批处理方式减少数据库查询次数这与我们后来的优化思路完全一致。
另一个让我们直呼"牛逼"的Prompt是用于修复Whoosh中文分词器的问题。当我们遇到"Token object has no attribute 'pos'"错误时AI不仅准确诊断了问题所在还提供了完整的解决方案包括修改ChineseTokenizer类的实现添加pos属性的追踪和赋值。
#### 哪个 Prompt 让你想砸键盘?
然而AI并不是万能的。有一次我们尝试让AI生成前端界面的CSS代码。但AI生成的代码存在多个问题布局错乱、响应式设计失效、颜色方案不符合要求。我们多次调整Prompt尝试提供更详细的设计规范但效果仍然不理想。最终我们不得不手动编写CSS代码这让我们一度想要砸键盘。
还有一次我们让AI帮助优化文档上传和处理的性能AI建议使用多线程处理但没有考虑到我们的向量数据库和稀疏索引不支持并发写入。这导致系统在测试时出现了数据不一致的问题我们花了大量时间才找到并修复这个问题。
### 自我反思AI 时代,我作为程序员的核心竞争力到底是什么?
通过这次项目开发我们对AI时代程序员的核心竞争力有了更深刻的认识
1. **问题分析与抽象能力**AI可以生成代码但无法替代人类对复杂问题的分析和抽象能力。程序员需要能够将业务需求转化为清晰的技术方案这是AI难以做到的。
2. **系统架构设计能力**构建一个可扩展、可维护的系统架构需要丰富的经验和全局视野这是AI目前无法超越人类的领域。
3. **调试与问题定位能力**当系统出现问题时程序员需要通过逻辑推理和经验积累快速定位问题根源而AI往往只能提供基于表面症状的解决方案。
4. **创造力与创新思维**AI基于现有知识生成内容而真正的创新需要超越现有边界的思维能力这是人类独有的优势。
5. **领域专业知识**对特定行业和业务领域的深入理解是AI无法快速获取的这使得程序员在开发垂直领域应用时具有独特优势。
6. **AI工具的有效利用能力**未来的程序员需要掌握如何与AI协作包括如何编写有效的Prompt、如何评估和优化AI生成的代码以及如何将AI工具融入开发流程。
总之AI时代的程序员应该将AI视为强大的助手而不是竞争对手。通过与AI的有效协作我们可以专注于更有创造性和挑战性的任务提升自身的核心竞争力。