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











网友评论