knowledge-base-skill
# Knowledge Base Skill - 多业务知识库管理(支持图片 + OCR)
## 📖 功能概述
支持按业务类型分隔的问答知识库系统,每个业务独立存储、独立查询,自动分页,**支持图片附件 + OCR 文字提取**。
### 核心特性
| 特性 | 说明 |
|------|------|
| 🏢 **多业务支持** | 客服、产品、技术等独立数据库 |
| 📄 **自动分页** | 单文件达 500MB 自动创建新页 |
| 📸 **图片附件** | 保存截图,自动 OCR 提取文字 |
| 🔍 **智能搜索** | 匹配问题文本 + 图片 OCR 文字 |
| ⏳ **待回答管理** | 记录未回答问题,定期提醒 |
| 📊 **统计分析** | 业务统计、图片统计 |
| 📤 **导出功能** | 一键导出 Markdown 文档 |
---
## 🎯 触发词
当用户提到以下关键词时,进入知识库操作模式:
- `我想操作知识库`
- `我想操作业务知识库`
- `知识库`
- `knowledge base`
- `KB`
- `添加一个问题`
- `查询知识库`
---
## 🚀 交互流程
### 方式一:快捷命令(强烈推荐 ⭐)
用户直接使用快捷格式,无需多轮对话:
```
KB:<业务名> Q:<问题> A:<答案> # 纯文字问答
KB:<业务名> Q:<问题> A:<答案> IMG:<路径> # 带图片问答
KB:<业务名> <问题> # 查询问题
KB:<业务名> list # 查看统计
KB:list # 列出所有业务
KB:img list [业务名] # 列出图片
KB:img stats # 图片统计
```
**示例:**
```
KB:客服 Q:如何退款 A:7 天内无理由退款
KB:技术 Q:登录报 502 错误 A: 检查 Nginx 配置 IMG:/tmp/error.png
KB:客服 退款流程是什么
KB:技术 list
KB:list
```
### 方式二:对话模式
#### 步骤 1:触发知识库操作
**用户**: `我想操作知识库` 或 `我想操作业务知识库`
**助理**:
```
📚 已进入知识库操作模式
当前业务:
1. 客服 (120 问答)
2. 产品 (85 问答)
3. 技术 (200 问答)
请告诉我业务类型,或:
- 输入业务名称(如"客服")
- 说"list"查看所有
- 说"new 业务名"创建新业务
- 或直接用快捷格式:KB:业务 Q:问题 A:答案
```
#### 步骤 2:选择业务
**用户**: `技术` 或 `切换到技术知识库`
**助理**:
```
✅ 已选择:技术知识库
当前操作模式:
- 添加问答:Q: 问题 A: 答案 [IMG:图片路径]
- 查询问题:直接发送问题
- 查看状态:list
- 图片管理:img list / img stats
- 切换业务:switch
- 退出:exit
当前业务:技术 | 已回答:200 条 | 待回答:5 条 | 图片:15 张
```
#### 步骤 3:执行操作
**添加问答(纯文字)**:
```
用户:Q: API 地址是什么 A: https://api.example.com
助理:✅ 问答已添加 (技术知识库)
```
**添加问答(带图片)**:
```
用户:Q: 登录报 502 错误 A: 检查 Nginx 配置 IMG:/tmp/error.png
助理:
📸 保存图片... ✅ 已保存:error.png (256 KB)
🔍 提取 OCR 文字:502 Bad Gateway nginx/1.18.0
✅ 问答已添加 (技术知识库)
📎 附件:1 张图片
```
**查询问题**:
```
用户:502 错误怎么办
助理:
🔍 找到匹配答案(相似度 0.95):
Q: 登录报 502 错误
A: 检查 Nginx 配置
📎 相关图片:error.png
📝 图片文字:502 Bad Gateway nginx/1.18.0
```
---
## 📋 命令格式详解
### 快捷命令(推荐)
| 命令 | 说明 | 示例 |
|------|------|------|
| `KB:业务 Q:问题 A:答案` | 添加问答 | `KB:客服 Q:如何退款 A:7 天内可退款` |
| `KB:业务 Q:问题 A:答案 IMG:路径` | 添加带图片问答 | `KB:技术 Q:502 错误 A: 检查 Nginx IMG:/tmp/error.png` |
| `KB:业务 问题` | 查询问题 | `KB:客服 退款流程` |
| `KB:业务 list` | 查看业务统计 | `KB:技术 list` |
| `KB:list` | 列出所有业务 | `KB:list` |
| `KB:new 业务名` | 创建新业务 | `KB:new 财务` |
| `KB:export 业务名` | 导出文档 | `KB:export 客服` |
| `KB:img list [业务]` | 列出图片 | `KB:img list 技术` |
| `KB:img stats` | 图片统计 | `KB:img stats` |
### 自然语言命令
| 用户输入 | 助理行为 |
|---------|---------|
| `我想在客服知识库添加一个问题` | 提示用户提供问题和答案 |
| `Q: 如何退款 A: 7 天内可退款` | 添加到当前业务知识库 |
| `查询产品知识库中关于价格的问题` | 在产品知识库中搜索 |
| `帮我创建一个 HR 知识库` | 创建新业务 |
| `切换到技术知识库` | 切换当前业务 |
| `导出客服知识库` | 导出 Markdown 文档 |
---
## 🗂️ 目录结构
```
knowledge-base/
├── kb-manager.py # 知识库核心管理器
├── image-manager.py # 图片管理器 + OCR
├── kb-image.sh # 图片命令行工具
├── businesses.json # 业务索引
├── attachments/ # 图片附件目录
│ ├── 客服/
│ │ ├── a3f8b2c1.png
│ │ └── d9e4f5a6.jpg
│ ├── 产品/
│ └── 技术/
├── 客服/ # 业务数据库目录
│ ├── qa-database.json
│ └── qa-database-page2.json
├── 产品/
└── 技术/
```
---
## 📸 图片处理流程
### 1. 保存图片
```python
# 自动保存到 attachments/业务名/
# 生成唯一文件名:{hash}.{ext}
# 返回文件信息:路径、大小、扩展名
```
### 2. OCR 提取文字
```python
# 自动尝试 OCR 引擎:
# 1. pytesseract (Python 库)
# 2. tesseract 命令行
# 3. 其他 OCR 服务
# 返回提取的文字内容
```
### 3. 存储到数据库
```json
{
"question": "登录报 502 错误",
"answer": "检查 Nginx 配置",
"attachments": [
{
"filename": "a3f8b2c1.png",
"type": "image",
"path": "attachments/技术/a3f8b2c1.png",
"ocr_text": "502 Bad Gateway nginx/1.18.0"
}
]
}
```
### 4. 搜索时匹配
```python
# 同时搜索:
# 1. 问题文本相似度
# 2. 图片 OCR 文字相似度
# 返回最佳匹配 + 图片附件
```
---
## 🔍 搜索策略
### 优先级
1. **当前业务搜索** - 默认只在当前业务搜索
2. **跨业务搜索** - 如果当前业务无匹配,询问是否跨业务搜索
3. **图片 OCR 搜索** - 同时匹配图片中的文字
### 相似度阈值
| 相似度 | 行为 |
|--------|------|
| ≥ 0.9 | 直接返回,高置信度 |
| 0.7-0.9 | 返回并提示相似度 |
| 0.6-0.7 | 返回并建议确认 |
| < 0.6 | 视为无匹配,建议添加新问答 |
### 搜索结果格式
```json
{
"question": "登录报 502 错误",
"answer": "检查 Nginx 配置",
"similarity": 0.95,
"business": "技术",
"page": 1,
"attachments": [
{
"filename": "a3f8b2c1.png",
"ocr_text": "502 Bad Gateway"
}
]
}
```
---
## ⚙️ 配置选项
### 分页大小
```python
MAX_FILE_SIZE = 500 * 1024 * 1024 # 500MB
```
### 相似度阈值
```python
DEFAULT_THRESHOLD = 0.6 # 默认匹配阈值
```
### OCR 语言
```python
# 支持的语言包
lang='chi_sim+eng' # 简体中文 + 英文
```
---
## 🛠️ 命令行工具
### 知识库管理
```bash
cd knowledge-base
# 业务管理
python3 kb-manager.py business list # 列出所有业务
python3 kb-manager.py business new 客服 # 创建新业务
python3 kb-manager.py business delete 客服 # 删除业务
# 问答操作
python3 kb-manager.py add 客服 "如何退款" "7 天内可退款"
python3 kb-manager.py search 客服 "退款流程"
python3 kb-manager.py stats 客服 # 详细统计
python3 kb-manager.py export 客服 # 导出文档
```
### 图片管理
```bash
# 保存图片并添加问答
./kb-image.sh add 技术 "502 错误" "检查 Nginx" "/tmp/error.png"
# OCR 提取
./kb-image.sh ocr "/tmp/screenshot.png"
# 列出图片
./kb-image.sh list 技术
# 图片统计
./kb-image.sh stats
```
---
## 📊 统计信息
### 业务统计
```bash
KB:技术 list
```
输出:
```
业务:技术
已回答:200 条
待回答:5 条
页数:1 页
```
### 图片统计
```bash
KB:img stats
```
输出:
```json
{
"total_images": 25,
"total_size_mb": 12.5,
"businesses": {
"客服": {"images": 10, "size_kb": 5120},
"技术": {"images": 8, "size_kb": 4096},
"产品": {"images": 5, "size_kb": 2560}
}
}
```
---
## 💡 最佳实践
### 1. 业务命名
- ✅ 简洁:2-4 个字(客服、产品、技术)
- ❌ 过长:客户服务知识库、产品信息知识库
### 2. 问题标准化
- ✅ 包含关键词:`502 错误`、`退款流程`、`API 地址`
- ❌ 模糊表述:`这个怎么办`、`那个问题`
### 3. 图片处理
- ✅ 清晰截图,文字可读
- ✅ 有意义文件名:`login-502-error.png`
- ✅ 大小 < 5MB
- ❌ 敏感信息未脱敏
### 4. 定期维护
- 每周导出备份:`KB:export 业务名`
- 清理待回答问题
- 检查图片统计
---
## ⚠️ 依赖安装
### 必需
- Python 3.x
- 基础 Python 库(json, os, hashlib 等)
### 可选(推荐)
**OCR 引擎 - 用于自动提取图片文字:**
```bash
# Python 库
pip install pytesseract pillow
# 系统包(Ubuntu/Debian)
apt install tesseract-ocr tesseract-ocr-chi-sim tesseract-ocr-eng
# macOS
brew install tesseract tesseract-lang
```
**检查 OCR 状态:**
```bash
./kb-image.sh ocr /path/to/test.png
```
---
## 🎯 使用场景
### 场景 1:客服 FAQ
**问题**:新客服不知道如何处理各种客户咨询
**解决**:
1. 创建 `客服` 业务
2. 添加常见问题:`KB:客服 Q:如何退款 A:7 天内可退款`
3. 新客服查询时自动回答
### 场景 2:技术支持(带截图)
**问题**:用户发送错误截图咨询,同样问题重复出现
**解决**:
1. 保存错误截图:`KB:技术 Q:502 错误 A: 检查 Nginx IMG:/tmp/error.png`
2. OCR 自动提取文字
3. 下次查询时返回答案 + 截图
### 场景 3:产品文档
**问题**:产品规格经常变更,文档更新不及时
**解决**:
1. 创建 `产品` 业务
2. 每次更新后添加:`KB:产品 Q:iPhone 15 规格 A:...IMG:specs.png`
3. 查询时自动匹配最新规格
---
## 📖 相关文档
- [README.md](../../knowledge-base/README.md) - 完整文档
- [QUICKSTART.md](../../knowledge-base/QUICKSTART.md) - 快速开始
- [IMAGE_GUIDE.md](../../knowledge-base/IMAGE_GUIDE.md) - 图片支持详解
- [EXAMPLES.md](../../knowledge-base/EXAMPLES.md) - 使用示例
- [SUMMARY.md](../../knowledge-base/SUMMARY.md) - 功能总结
---
## 📝 版本历史
- **v2.1** (2026-03-15) - 图片附件支持、OCR 文字提取、图片搜索
- **v2.0** (2026-03-15) - 多业务支持、快捷命令格式
- **v1.0** (2026-03-15) - 初始版本
---
**Skill 位置**: `skills/knowledge-base-skill/`
**数据位置**: `knowledge-base/`
标签
skill
ai