179 lines
5.0 KiB
Markdown
179 lines
5.0 KiB
Markdown
|
|
# 知识库问答助手测试总结
|
|||
|
|
|
|||
|
|
## 测试时间
|
|||
|
|
2026-01-23 00:00
|
|||
|
|
|
|||
|
|
## Agent信息
|
|||
|
|
- **名称**: 知识库问答助手
|
|||
|
|
- **ID**: `45c56398-ad1d-4533-89e0-ba02f9c47932`
|
|||
|
|
- **状态**: published(已发布)
|
|||
|
|
- **节点数量**: 10个
|
|||
|
|
- **连接数量**: 9条
|
|||
|
|
|
|||
|
|
## 工作流结构
|
|||
|
|
|
|||
|
|
1. **开始节点** - 接收用户问题
|
|||
|
|
2. **问题预处理** - 整理输入数据
|
|||
|
|
3. **文本向量化** - HTTP节点调用DeepSeek embedding API
|
|||
|
|
4. **提取向量** - JSON节点提取embedding向量
|
|||
|
|
5. **准备搜索数据** - 合并向量和查询文本
|
|||
|
|
6. **知识库检索** - 向量数据库节点进行语义搜索
|
|||
|
|
7. **整理检索结果** - 合并搜索结果和查询
|
|||
|
|
8. **生成答案** - LLM节点基于检索结果生成答案
|
|||
|
|
9. **提取最终答案** - JSON节点提取最终文本
|
|||
|
|
10. **结束节点** - 返回答案
|
|||
|
|
|
|||
|
|
## 测试结果
|
|||
|
|
|
|||
|
|
### 测试输入
|
|||
|
|
```
|
|||
|
|
问题: 什么是人工智能?
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 执行状态
|
|||
|
|
- **状态**: failed(执行失败)
|
|||
|
|
- **执行时间**: 2240ms
|
|||
|
|
- **执行ID**: `e775395c-a306-4544-abaf-357c9245f56e`
|
|||
|
|
|
|||
|
|
### 错误分析
|
|||
|
|
|
|||
|
|
#### 1. HTTP节点调用embedding API失败
|
|||
|
|
- **错误信息**: "Not Found. Please check the configuration."
|
|||
|
|
- **节点**: `http-embedding`
|
|||
|
|
- **API URL**: `https://api.deepseek.com/v1/embeddings`
|
|||
|
|
- **模型**: `deepseek-embedding`
|
|||
|
|
- **问题**: DeepSeek可能不支持embedding API,或者URL/模型名称不正确
|
|||
|
|
|
|||
|
|
#### 2. 向量数据库节点无法获取查询向量
|
|||
|
|
- **错误信息**: "节点 vector-search 执行失败: 向量数据库操作失败: 无法获取查询向量"
|
|||
|
|
- **节点**: `vector-search`
|
|||
|
|
- **原因**: 由于embedding API调用失败,没有获取到向量数据
|
|||
|
|
|
|||
|
|
### 执行日志关键信息
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[3] 2026-01-22 16:00:25 [INFO]
|
|||
|
|
节点: http-embedding (http)
|
|||
|
|
消息: 节点 http-embedding (http) 开始执行
|
|||
|
|
|
|||
|
|
[10] 2026-01-22 16:00:26 [ERROR]
|
|||
|
|
节点: http-embedding (http)
|
|||
|
|
消息: HTTP请求失败: 404
|
|||
|
|
数据: {
|
|||
|
|
"error_msg": "Not Found. Please check the configuration."
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
[11] 2026-01-22 16:00:26 [INFO]
|
|||
|
|
节点: vector-search (vector_db)
|
|||
|
|
消息: 节点 vector-search (vector_db) 开始执行
|
|||
|
|
|
|||
|
|
[13] 2026-01-22 16:00:26 [ERROR]
|
|||
|
|
节点: (无) ((无))
|
|||
|
|
消息: 工作流任务执行失败
|
|||
|
|
错误: 节点 vector-search 执行失败: 向量数据库操作失败: 无法获取查询向量
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 问题根因
|
|||
|
|
|
|||
|
|
1. **DeepSeek Embedding API不支持或配置错误**
|
|||
|
|
- DeepSeek可能不提供embedding API
|
|||
|
|
- 或者需要使用不同的API端点/模型名称
|
|||
|
|
- 需要验证DeepSeek是否支持embedding功能
|
|||
|
|
|
|||
|
|
2. **缺少备选方案**
|
|||
|
|
- 当前工作流完全依赖embedding API
|
|||
|
|
- 没有fallback机制处理API调用失败的情况
|
|||
|
|
|
|||
|
|
## 解决方案
|
|||
|
|
|
|||
|
|
### 方案1: 使用其他embedding服务
|
|||
|
|
1. **使用OpenAI Embedding API**
|
|||
|
|
- URL: `https://api.openai.com/v1/embeddings`
|
|||
|
|
- 模型: `text-embedding-ada-002` 或 `text-embedding-3-small`
|
|||
|
|
- 需要配置OpenAI API Key
|
|||
|
|
|
|||
|
|
2. **使用本地embedding模型**
|
|||
|
|
- 使用sentence-transformers等库
|
|||
|
|
- 在服务器端运行embedding模型
|
|||
|
|
- 通过HTTP节点调用本地服务
|
|||
|
|
|
|||
|
|
### 方案2: 简化工作流(用于测试)
|
|||
|
|
1. **跳过embedding步骤**
|
|||
|
|
- 直接使用文本关键词匹配
|
|||
|
|
- 或者使用LLM节点进行语义理解
|
|||
|
|
- 简化向量数据库的使用
|
|||
|
|
|
|||
|
|
2. **使用预计算的向量**
|
|||
|
|
- 预先将知识库文档向量化
|
|||
|
|
- 存储向量数据
|
|||
|
|
- 查询时只需要搜索,不需要实时向量化
|
|||
|
|
|
|||
|
|
### 方案3: 修复DeepSeek配置
|
|||
|
|
1. **验证DeepSeek API文档**
|
|||
|
|
- 确认是否支持embedding
|
|||
|
|
- 确认正确的API端点和模型名称
|
|||
|
|
- 更新HTTP节点配置
|
|||
|
|
|
|||
|
|
## 下一步行动
|
|||
|
|
|
|||
|
|
1. **验证DeepSeek Embedding API**
|
|||
|
|
- 查阅DeepSeek官方文档
|
|||
|
|
- 测试API端点是否可用
|
|||
|
|
- 确认模型名称是否正确
|
|||
|
|
|
|||
|
|
2. **准备测试数据**
|
|||
|
|
- 创建知识库文档
|
|||
|
|
- 将文档向量化并存储到向量数据库
|
|||
|
|
- 使用`knowledge_base`集合
|
|||
|
|
|
|||
|
|
3. **修复或替换embedding节点**
|
|||
|
|
- 根据验证结果修复DeepSeek配置
|
|||
|
|
- 或替换为其他embedding服务
|
|||
|
|
- 或使用简化方案
|
|||
|
|
|
|||
|
|
4. **重新测试**
|
|||
|
|
- 修复后重新执行测试
|
|||
|
|
- 验证完整工作流是否正常
|
|||
|
|
- 测试知识库检索和答案生成
|
|||
|
|
|
|||
|
|
## 测试命令
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 发布Agent
|
|||
|
|
python3 publish_agent.py "知识库问答助手"
|
|||
|
|
|
|||
|
|
# 测试Agent
|
|||
|
|
python3 test_workflow_tool.py -a "知识库问答助手" -i "什么是人工智能?"
|
|||
|
|
|
|||
|
|
# 查看执行日志
|
|||
|
|
python3 check_execution_logs.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 相关文件
|
|||
|
|
|
|||
|
|
- **Agent生成脚本**: `backend/scripts/generate_knowledge_base_qa_agent.py`
|
|||
|
|
- **测试工具**: `test_workflow_tool.py`
|
|||
|
|
- **日志查看工具**: `check_execution_logs.py`
|
|||
|
|
- **发布脚本**: `publish_agent.py`
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **知识库数据准备**
|
|||
|
|
- 需要先准备知识库文档
|
|||
|
|
- 文档需要向量化并存储
|
|||
|
|
- 集合名称必须是`knowledge_base`
|
|||
|
|
|
|||
|
|
2. **API配置**
|
|||
|
|
- 确保embedding API可用
|
|||
|
|
- 配置正确的API Key
|
|||
|
|
- 验证API端点和模型名称
|
|||
|
|
|
|||
|
|
3. **向量数据库**
|
|||
|
|
- 当前使用内存存储(简化实现)
|
|||
|
|
- 生产环境应使用ChromaDB、Pinecone等
|
|||
|
|
- 数据在服务重启后会丢失
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
测试完成时间: 2026-01-23 00:02
|
|||
|
|
测试人员: AI Assistant
|