Update project files: pyproject.toml, uv.lock, and knowledge base
This commit is contained in:
parent
7336f57a07
commit
c9b6fd3345
149
intelligent_knowledge_base.egg-info/PKG-INFO
Normal file
149
intelligent_knowledge_base.egg-info/PKG-INFO
Normal file
@ -0,0 +1,149 @@
|
||||
Metadata-Version: 2.4
|
||||
Name: intelligent-knowledge-base
|
||||
Version: 0.1.0
|
||||
Summary: 智能知识库问答系统 - 端到端RAG解决方案
|
||||
Requires-Python: >=3.13
|
||||
Description-Content-Type: text/markdown
|
||||
Requires-Dist: flask>=3.1.2
|
||||
Requires-Dist: openai>=2.14.0
|
||||
Requires-Dist: pydantic>=2.12.5
|
||||
Requires-Dist: python-dotenv>=1.2.1
|
||||
Requires-Dist: chromadb>=0.5.0
|
||||
Requires-Dist: langchain>=0.2.0
|
||||
Requires-Dist: langchain-community>=0.2.0
|
||||
Requires-Dist: langchain-openai>=0.1.0
|
||||
Requires-Dist: pypdf>=4.0.0
|
||||
Requires-Dist: docx2txt>=0.8
|
||||
Requires-Dist: numpy>=1.26.0
|
||||
Requires-Dist: tqdm>=4.66.0
|
||||
Requires-Dist: scikit-learn>=1.4.0
|
||||
Requires-Dist: jieba>=0.42.1
|
||||
Requires-Dist: whoosh>=2.7.4
|
||||
|
||||
# 智能知识库问答系统
|
||||
|
||||
## 项目简介
|
||||
智能知识库问答系统是一个面向企业和课程的智能问答平台,主要功能是基于自有文档进行精准应答,减少人工答疑工作量。系统采用端到端的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的有效协作,我们可以专注于更有创造性和挑战性的任务,提升自身的核心竞争力。
|
||||
@ -1 +1 @@
|
||||
templates
|
||||
|
||||
|
||||
Binary file not shown.
@ -22,5 +22,11 @@ dependencies = [
|
||||
"whoosh>=2.7.4",
|
||||
]
|
||||
|
||||
[tool.uv]
|
||||
package = true
|
||||
|
||||
[tool.setuptools]
|
||||
packages = []
|
||||
|
||||
[project.scripts]
|
||||
run = "app:main"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user