知識庫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
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容