Skip to content

知识库文档全链路存在多处失败(上传 / 解析 / 向量化 / 删除 / 图谱生成) #9

Description

@hxxxi-malog

现状

使用一份约 9.81 MB、26 页的 PDF 测试知识库文档流程时,上传、处理、删除和图谱生成链路先后出现以下问题:

  1. 文档上传被 Nginx 拒绝

    Nginx 请求体大小限制未与后端保持一致,请求未到达 Go 服务就返回 413。

    client intended to send too large body: 10283530 bytes
    Request failed with status code 413
    
  2. 文档处理无法连接 Python gRPC

    Python gRPC 仅监听 127.0.0.1:50051,Docker 中的 Go 服务无法跨容器访问。

    rpc error: code = Unavailable
    dial tcp 192.168.147.7:50051: connect: connection refused
    
  3. Python 文档解析运行时依赖不完整

    Python 镜像未完整安装 PDF、Word、Excel 等文档解析依赖;PDF 解析还存在文件提前关闭导致延迟读取失败的问题。

  4. Embedding 请求超过供应商批次限制

    文档生成 38 个分块后,系统一次性提交全部分块。供应商单次最多接受 10 条,导致请求返回 400。

  5. Milvus collection 缺失导致删除失败

    删除文档时直接操作统一的 link collection;collection 尚未创建时,删除接口重试后仍返回 500。

    Failed to get collection id:
    collection not found[database=default][collection=link]
    
    Request failed with status code 500
    
  6. 图谱生成返回不完整 JSON

    图谱重建将 38 个分块、约 2.68 万字符拼接到一次 LLM 请求中,但输出上限只有 4096 tokens。模型响应 JSON 不完整,连续两次生成失败。

    Starting graph extraction for 38 chunks
    
    parse graph extraction failed:
    failed to parse JSON: unexpected end of JSON input
    
    total=1 processed=0 skipped=0 failed=1 nodes=0 relations=0
    

    此时接口仍返回 HTTP 200,只在响应数据中记录失败文档数,容易被误判为请求成功。

  7. 页面缺少具体失败原因

    页面原本只显示“失败”,没有展示解析、Embedding、Milvus 或图谱生成的实际错误,必须查看容器日志才能定位。

    另外,日志中的 GORM record not found 是文件哈希去重预检未命中,属于正常结果,不是上传失败的根因。

期望

  • Nginx 上传上限统一设置为 10 MiB,前端同步校验文件大小并给出明确提示。
  • Python gRPC 能被 Docker 网络中的 Go 服务正常访问。
  • 生产镜像完整安装文档解析依赖,并正确管理解析文件生命周期。
  • Embedding 按供应商限制分批调用,例如 38 个分块拆分为 10/10/10/8,并保持结果顺序。
  • Milvus collection 不存在时自动初始化;删除不存在的投影应幂等成功。
  • 图谱生成按单个分块或小批次调用 LLM,再合并、去重结果。
  • 图谱链路检查 FinishReason,记录 token 使用情况;JSON 截断时缩小批次重试。
  • 新图谱生成成功后再替换旧图谱,避免重建失败后知识库图谱为空。
  • API 和页面能够返回并展示真实失败原因。
  • 图谱任务存在业务失败时,不应仅依赖 HTTP 200 表达结果。

备注

本地已经完成上传、解析、Embedding、Milvus 初始化及幂等删除等修复,并使用同一份 PDF 验证:

  • 文档解析成功:26 页
  • 文档处理状态:completed
  • 分块数:38
  • Milvus link collection:LoadStateLoaded
  • 原失败文档删除接口:HTTP 200

所有问题我本地均完成复现,询问是否需要修复上述问题

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions