知识库RAG应用-Dify&RagFlow文档处理整理

Dify

默认只解析文档中的文本,对于表格、图表类不做处理

  • 文档加载流程
    a.) 入口 api\core\indexing_runner.py
    b.) 路由 api\core\rag\index_processor\index_processor_factory.py
    text_model: api\core\rag\index_processor\processor\paragraph_index_processor.py
    qa_model: api\core\rag\index_processor\processor\qa_index_processor.py
    hierarchical_model:api\core\rag\index_processor\processor\parent_child_index_processor.py
    c.) 解析行为(text_model为例)
    【extract操作】api\core\rag\index_processor\processor\paragraph_index_processor.py -> api\core\rag\extractor\extract_processor.py
    不同文档类型的实现(api\core\rag\extractor):
    extractor

    【transform操作】api\core\rag\index_processor\processor\paragraph_index_processor.py
    文档清理: api\core\rag\cleaner\clean_processor.py
    分nodes:
    nodes

RagFlow

文本、复杂表格,图表都可以支持,结合DeepDoc进行文档处理

  • 上传文档
    【api接口】v1/document/upload(api\apps\document_app.py)
    上传文件到服务器,并保存上传文件的相关信息,并进行知识库文档的基本初始化处理
  • 文档解析
    【api接口】v1/document/run (api\apps\document_app.py)
    更新文档状态,供后台任务解析、分块该文档
  • 文档解析分块
    【后台任务】rag\svr\task_executor.py
    根据不同的类型使用不同的实现进行处理


    build_chunks

    Factory:

FACTORY = {
    "general": naive,
    ParserType.NAIVE.value: naive,
    ParserType.PAPER.value: paper,
    ParserType.BOOK.value: book,
    ParserType.PRESENTATION.value: presentation,
    ParserType.MANUAL.value: manual,
    ParserType.LAWS.value: laws,
    ParserType.QA.value: qa,
    ParserType.TABLE.value: table,
    ParserType.RESUME.value: resume,
    ParserType.PICTURE.value: picture,
    ParserType.ONE.value: one,
    ParserType.AUDIO.value: audio,
    ParserType.EMAIL.value: email,
    ParserType.KG.value: naive,
    ParserType.TAG.value: tag
}

对应代码(rag\app):


文档处理

deepdoc对应代码(deepdoc):


deepdoc
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容