菜单

文档处理流程

相关源文件

本文档描述了 RAGFlow 中的文档处理流程,涵盖了文档如何被摄取、解析、分块、嵌入并索引以便检索。该流程支持多种文档格式,并提供针对不同文档类型和用例优化的灵活解析策略。

有关具体分块方法和解析策略的信息,请参阅分块方法。有关知识库管理操作的信息,请参阅知识库管理。有关整体 RAG 检索工作流的信息,请参阅RAG 流程

流水线概览

文档处理流程由 TaskExecutor 系统编排,并遵循从文档上传到可搜索分块的多阶段方法。

核心处理流程

来源:rag/svr/task_executor.py69-86 api/db/services/document_service.py447-518

文档摄取

文档摄取始于文件通过 API 上传并存储在 MinIO 对象存储中,然后排队等待处理。

上传和存储流程

系统支持多种文件类型,并根据文件扩展名自动选择解析器。文档元数据存储在 Document 模型中,而二进制内容存储在 MinIO 中。

来源:api/apps/document_app.py50-77 api/db/services/file_service.py159-186 api/db/services/document_service.py137-144

解析策略

RAGFlow 实现了多种针对不同文档类型优化的解析策略。解析器的选择由知识库配置中的 parser_id 字段决定。

解析器工厂模式

每个解析器都实现了文档特定的逻辑,以实现最佳的文本提取和结构保留。

来源:rag/svr/task_executor.py69-86 rag/app/naive.py349-541

文档格式处理

naive.chunk() 函数作为文档处理的主要入口点,具有格式特定的处理功能。

文件类型解析器类主要功能
PDFPdfOCR、布局分析、表格检测
DOCXDocx图像提取、表格解析、样式保留
ExcelExcel工作表处理、数据结构保留
MarkdownMarkdown图片下载、表格提取
HTMLHtmlParser标签处理、内容提取
文本TxtParser简单文本分块

来源:rag/app/naive.py407-541 deepdoc/parser/pdf_parser.py246-288

分块和嵌入

解析后,文档被分割成块并转换为向量嵌入,用于语义搜索。

分块流程

来源:rag/app/naive.py514-541 rag/nlp/__init__.py248-421

嵌入生成

系统支持多种嵌入模型,并结合了标题和内容的嵌入,权重可配置。

来源:rag/svr/task_executor.py406-449 api/db/services/llm_service.py

高级处理功能

关键词和问题生成

来源:rag/svr/task_executor.py313-396 rag/prompts.py

RAPTOR 和 GraphRAG 集成

来源:rag/svr/task_executor.py535-553 rag/raptor.py graphrag/general/index.py

索引和存储

处理后的分块被索引到文档存储中,以实现高效检索。

文档存储集成

来源:rag/svr/task_executor.py594-616 rag/nlp/search.py401-403

任务管理和进度跟踪

处理流程使用先进的任务管理系统,具有进度跟踪和错误处理功能。

任务执行架构

来源:rag/svr/task_executor.py100-108 rag/svr/task_executor.py155-184 api/db/services/task_service.py465-518

错误处理和重试逻辑

系统实现了全面的错误处理和自动重试机制

错误类型处理策略重试行为
文件未找到跳过处理不重试
MinIO 超时指数退避最多重试 3 次
嵌入失败模型回退立即重试
索引错误回滚分块手动干预
任务取消清理资源不重试

来源:rag/svr/task_executor.py243-267 api/db/services/task_service.py110-150

性能优化

并发处理

该流程采用多种优化策略

  • 异步处理:使用 trio 进行并发 I/O 操作
  • 批量操作:对分块进行分组以实现高效索引
  • 资源限制:通过容量限制器控制内存使用
  • 缓存:LLM 响应缓存,用于重复操作

内存管理

来源:rag/svr/task_executor.py67 rag/svr/task_executor.py277-311

文档处理流程为将原始文档转换为可搜索的知识库提供了强大且可扩展的基础,支持多种文档格式、高级处理技术和全面的错误处理。