Files
aiagent/知识库问答助手测试总结.md

179 lines
5.0 KiB
Markdown
Raw Normal View History

2026-01-23 09:49:45 +08:00
# 知识库问答助手测试总结
## 测试时间
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