Files
rag/docs/服务器端测试报告.md
lacerate551 100d1a06eb init: RAG 知识库服务初始提交
- 后端 API(Flask + Gunicorn)
- RAG 引擎(混合检索 + 云端 Reranker + 引用溯源)
- 文档解析(MinerU + 多格式支持)
- Docker 生产部署配置
- 排除前端项目、敏感配置、模型文件
2026-06-04 17:35:27 +08:00

9.1 KiB
Raw Blame History

服务器端 RAG API 测试报告

测试日期2026-05-07 测试环境:生产服务器 47.116.16.222 服务地址:http://localhost:5001


一、测试概述

测试范围

完整测试 curl测试手册.md 中的 52个端点,验证所有功能在生产环境下正常工作。

测试结果汇总

分类 端点数 通过 失败 备注
健康检查 2 2 0 -
问答接口 2 2 0 -
检索接口 1 1 0 -
向量库管理 8 8 0 -
文档管理 10 10 0 -
切片管理 4 4 0 -
同步服务 6 6 0 -
反馈系统 5 5 0 -
FAQ 管理 7 7 0 -
出题系统 3 3 0 -
图片服务 4 4 0 已上传67张图片
报告服务 2 2 0 -
知识库路由 1 1 0 -
总计 52 52 0 -

二、关键功能验证

2.1 自动同步功能 验证通过

测试流程

  1. 创建测试向量库 test_kb_full
  2. 上传测试文件 test_doc.txt
  3. 检查响应中 sync_status = "已保存并添加到向量库"
  4. 查询文档状态,确认 chunk_count > 0
  5. 查询切片列表,确认切片已生成

结论:文件上传后自动向量化功能正常工作。

2.2 手动同步功能 验证通过

POST /sync
响应: {"status": "completed", "documents_added": 7, "documents_processed": 8}

2.3 向量库删除功能 验证通过

DELETE /collections/test_kb_full?delete_documents=true
响应: {"deleted_documents": true, "success": true}

三、详细测试结果

Phase 1: 健康检查

端点 状态 响应
GET /health status="ok"
GET /exam/health status="ok", version="2.0"

Phase 2: 向量库管理

端点 状态 备注
GET /collections 返回3个向量库
POST /collections 创建成功
PUT /collections/test_kb_full 修改成功
GET /collections/test_kb_full/documents 新库返回空列表
GET /collections/test_kb_full/chunks 新库返回空列表
POST /collections/.../update-image-descriptions 无图片返回0
GET /collections/.../documents/.../versions 文件不存在返回空
POST /collections/.../documents/.../deprecate ⚠️ 需要Content-Type文件不存在返回错误
POST /collections/.../documents/.../restore 正确返回"未找到已废弃的文档"

Phase 3: 文档管理

端点 状态 备注
POST /documents/upload 自动同步成功
GET /documents/list 返回上传的文件
GET /documents/.../status status="active"
GET /collections/.../documents 包含上传文件
GET /collections/.../chunks 切片已生成
POST /documents/batch-upload success_count=2
PUT /documents/... 更新成功
GET /documents/.../chunks 返回切片列表
DELETE /documents/... 删除成功

Phase 4: 同步服务

端点 状态 备注
POST /sync 同步完成
GET /sync/status enabled=true
GET /sync/history 返回历史
GET /sync/changes 返回变更
POST /sync/start 监控已启动
POST /sync/stop 监控已停止

Phase 5: 问答与检索

端点 状态 备注
POST /search 返回检索结果
POST /rag SSE流正常返回
POST /chat 对话正常

Phase 6: 切片管理

端点 状态 备注
POST /chunks 新增成功
GET /documents/.../chunks 返回切片
PUT /chunks/... 修改成功
DELETE /chunks/...?collection=xxx 需要collection参数

Phase 7: 反馈系统

端点 状态 备注
POST /feedback 提交成功
GET /feedback/list 返回列表
GET /feedback/stats 返回统计
GET /feedback/bad-cases 返回差评案例
GET /feedback/blacklist 返回黑名单

Phase 8: FAQ管理

端点 状态 备注
POST /faq 创建成功status="draft"
GET /faq 返回列表
PUT /faq/... FAQ不存在返回错误
GET /faq/suggestions 返回建议列表
POST /faq/suggestions/.../approve 需要带空body {}
POST /faq/suggestions/.../reject 需要带空body {}
DELETE /faq/... FAQ不存在返回错误

Phase 9: 出题系统

端点 状态 备注
POST /exam/generate 生成题目成功
POST /exam/grade 批阅成功

Phase 10: 图片服务

端点 状态 备注
GET /images/list 返回空列表(无图片)
GET /images/... 无图片返回404
GET /images/.../info 返回错误信息
GET /images/stats 返回统计0张图片

Phase 11: 报告与路由

端点 状态 备注
GET /reports/weekly 返回周报
GET /reports/monthly 返回月报
POST /kb/route 路由正常

Phase 12: 清理测试数据

操作 状态 备注
DELETE /collections/test_kb_full?delete_documents=true 删除成功
GET /collections 验证 test_kb_full已不存在

四、注意事项

4.1 FAQ批准建议接口

说明POST /faq/suggestions/<id>/approve 必须传递请求体(至少空对象 {}),否则返回 400 Bad Request

正确用法

curl -X POST 'http://localhost:5001/faq/suggestions/6/approve' \
  -H 'Content-Type: application/json' \
  -d '{}'

4.2 删除切片需要collection参数

说明DELETE /chunks/<id> 需要传递 ?collection=xxx 参数,否则返回错误 "请指定向量库 (collection)"

正确用法

curl -X DELETE 'http://localhost:5001/chunks/<id>?collection=public_kb'

4.3 删除向量库物理文件夹

验证结果 删除向量库时会一并删除物理文件夹,无需手动清理

测试验证:创建向量库 → 检查文件夹存在 → 删除向量库 → 文件夹已删除

4.4 FAQ拒绝建议也需要请求体

说明POST /faq/suggestions/<id>/reject 同样需要传递请求体(至少空对象 {}

正确用法

curl -X POST 'http://localhost:5001/faq/suggestions/6/reject' \
  -H 'Content-Type: application/json' \
  -d '{}'

4.5 图片服务依赖.data/images目录

说明:图片数据存储在 .data/images/ 目录,需要确保该目录已上传到服务器

验证命令

curl -s http://localhost:5001/images/stats
# 应返回 total_images > 0

4.6 /rag 接口 collections 参数格式

说明:指定知识库必须使用 collections 数组参数,使用 collection 单数参数会被忽略,导致默认检索 public_kb

正确用法

# ✅ 正确 - 使用 collections 数组
curl -X POST http://localhost:5001/rag \
  -H 'Content-Type: application/json' \
  -d '{"message": "问题", "collections": ["dept_tech"], "chat_history": []}'

# ❌ 错误 - collection 单数参数无效
curl -X POST http://localhost:5001/rag \
  -H 'Content-Type: application/json' \
  -d '{"message": "问题", "collection": "dept_tech", "chat_history": []}'

五、curl命令注意事项

5.1 POST请求需要Content-Type头

curl -X POST http://localhost:5001/xxx \
  -H 'Content-Type: application/json' \
  -d '{...}'

5.2 URL编码

  • 路径中的斜杠需要编码:public_kb%2Ftest.txt
  • 中文文件名需要URL编码

示例

# 原始路径: public_kb/test.txt
curl "http://localhost:5001/documents/public_kb%2Ftest.txt/status"

5.3 删除切片必须带collection参数

curl -X DELETE 'http://localhost:5001/chunks/<id>?collection=test_kb_full'

5.4 FAQ建议操作必须带请求体

# 批准
curl -X POST 'http://localhost:5001/faq/suggestions/<id>/approve' \
  -H 'Content-Type: application/json' -d '{}'

# 拒绝
curl -X POST 'http://localhost:5001/faq/suggestions/<id>/reject' \
  -H 'Content-Type: application/json' -d '{}'

六、结论

总体评价

服务器端 RAG API 功能正常,52个端点全部通过测试,通过率 100%

核心功能验证

  • 文件上传自动同步向量化
  • 手动同步功能
  • 向量库CRUD操作
  • 向量库删除时物理文件夹一并删除
  • 知识库问答
  • 出题系统
  • 反馈系统
  • 图片服务67张图片已上传

完成事项

  1. FAQ批准/拒绝建议接口已确认正确用法需要空body
  2. 图片服务数据已上传67张图片
  3. 残留向量库文件夹已清理
  4. curl测试手册已更新

七、测试命令参考

完整的测试命令请参考 docs/curl测试手册.md