图_3文档入库流程
原生 Excalidraw 可编辑画布,基于 SuperMew-0.1.0。请使用 Obsidian 的 Excalidraw 视图打开。
视图归属: 跨模块业务流程(M6 → M7 → M8)。
组成
- M6 负责上传接口、原文保存、job 和同名清理;M7 负责解析、分块、向量化与写入。
流程
- 异步上传先保存新文件,再在后台清理同名旧索引。
- 解析后按页/章节切成 L1/L2/L3。先写父块,再处理叶子块。
- L3 本地生成 dense,BM25 sparse 由 Milvus 服务端生成。
边界
- 任务只在内存;失败不自动跨库回滚。
- 同步上传先清旧索引再写文件,没有 job。
源码对应
backend/api/routes/documents.py:upload_document_async()backend/api/routes/documents.py:_process_upload_job()backend/api/routes/documents.py:upload_document()backend/indexing/document_loader.py:DocumentLoader()backend/indexing/html_processor.pybackend/indexing/milvus_writer.py:write_documents()backend/indexing/parent_chunk_store.py:upsert_documents()
Excalidraw Data
Text Elements
03 文档入库流程 ^8947be10
异步上传是前端主路径;把文件、后台索引和存储结果分开阅读。 ^2e85b699
跨模块入库流程 · M6 → M7 → M8 · 返回 [[图_1项目设计|图1]] ^23133035
管理员 / HTTP ^a223c613
后台索引 / Python ^3d031ed9
存储与状态 ^71da8406
POST /documents/upload/async require_admin / 文件名与后缀校验 ^08fd125d
创建 upload job 保存新文件到 data/documents ^b1f08c4f
返回 job_id 由 BackgroundTasks 执行 ^14a13911
先清理同名旧索引 Milvus L3 → PG 父块 → Redis ^6dada7a3
按格式解析为 Document PDF / Word / Excel HTML:去噪 → 正文 → 虚拟章节 ^57cded1f
清洗 → 每页/章节三级分块 L1 2400/400 → L2 1600/200 → L3 800/100 生成 chunk_id / parent_id / root_id ^4422ba97
先写 L1/L2 父块 ParentChunkStore.upsert_documents ^af5ca6af
再处理 L3 · 默认每批 50 条 本地 BGE-M3 → Dense Embedding MilvusWriter.write_documents ^286bfd83
完成 job 或记录 failed_step / error ^c8863b14
本地原文 data/documents/filename ^c3b01f57
PostgreSQL parent_chunks 保存 L1/L2 文本与来源 Redis 发布父块缓存 ^04b68610
Milvus · 仅 L3 text / dense / 元数据 服务端 BM25 Function 生成 sparse ^4e2c9176
内存 JobManager 五阶段进度;重启后丢失 pending / running / completed / failed ^8c75bf30
前端轮询 upload/jobs/id 成功后停止轮询并刷新文档列表 失败时展示阶段和错误 ^13eeba0f
同名清理在新解析前:失败没有跨库回滚。同步上传顺序为“先清旧索引,再写文件”,且不创建 job。 ^81d1c281
读图说明 · M7 文档索引 ^4d8763ad
组成 ^b21b7f9c
• M6 负责上传接口、原文保存、job 和同名清理 ;M7 负责解析、分块、向量化与写入。 ^ad2e5e37
流程 ^33922cba
• 异步上传先保存新文件,再在后台清理同名旧索 引。 ^2fe8b7e2
• 解析后按页/章节切成 L1/L2/L3。先写父块,再 处理叶子块。 ^fcad14c7
• L3 本地生成 dense,BM25 sparse 由 Milvus 服务端生成。 ^ede30622
边界 ^72dacf5a
• 任务只在内存;失败不自动跨库回滚。 ^5ab63662
• 同步上传先清旧索引再写文件,没有 job。 ^dcee28d7
Element Links
23133035: [[图_1项目设计]]
%%
Drawing
1 | N4IgLgngDgpiBcIYA8DGBDANgSwCYCd0B3EAGhADcZ8BnbAewDsEAmcm+gV31TkQAswYKDXgB6MSgw4CxAHSp6AWzJJMMJTEZgaCANqg8CEOgBG5lqZbpVkWMfwxUYdIwDm61cgQAWAKzkEAgAjP7kRHhg/Ah+AMwADOT8MNhugiGxAJyJJu6e8Dk0YPj0ANYwAML0mPT4xgDEqKa4fjDBqqboqKVuJZyMuFU1dYj1AGYAHGPoY6iqY9iYmADKkP |
%%