问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

RAGFlow工作流程详解:从文档上传到智能检索

创作时间:
作者:
@小白创作中心

RAGFlow工作流程详解:从文档上传到智能检索

引用
1
来源
1.
https://juejin.cn/post/7385005775439380516

RAGFlow是一个用于处理和检索文档的系统,它能够解析多种文档格式,包括PDF、DOCX、EXCEL、PPT、IMAGE、TXT等。整个系统的工作流程可以分为以下几个步骤:

1. 文档解析

RAGFlow能够识别不同类型的文档,并针对每种文档类型进行相应的处理:

  • PDF:利用PDF解析库提取文本和图片信息,并识别PDF中的章节和段落结构。
  • DOCX:使用docx库解析,提取文本、图片、表格和其他嵌入对象。
  • EXCEL:利用pandas等库读取表格数据,并转化为文本和表格结构。
  • PPT:提取幻灯片中的文本内容、图片和图表。
  • IMAGE:使用OCR技术(如Tesseract)提取图片中的文本信息。
  • TXT:直接读取文本内容。

此外,系统还能够处理文档中的图片,并通过OCR技术将图片中的文字信息提取出来。开启布局识别功能时,系统能够识别文档中的章节、段落、表格、图片等布局结构。

2. 分块

解析后的文档内容会按照自然段落、章节、页面等逻辑结构进行分块。对于表格和图片,每个表格和图片单独作为一个块。系统会根据配置中设置的Token数进行分块,确保每块内容大小适中,不超过设定的Token数(如2048)。

3. 向量化

分块后的文档内容会通过Embedding模型转化为向量。根据配置,可以选择不同的Embedding模型(如BAAI/bge-large-zh-v1.5)。向量化的数据存储在向量数据库中(如Milvus、FAISS等),原始文档和分块后的文本内容可以存储在关系型数据库或文档数据库中。在分块过程中同时记录分块的元信息(如文档ID、块序号、块位置等),以便后续检索和复原完整文档。

4. 检索

用户提出检索请求(问题或关键词)后,API Server通过查询分析模块解析用户请求,提取关键词和生成查询Embedding。然后从向量数据库中检索与查询Embedding相似的文档块,使用多路召回和重排序机制,提高检索准确性。最后将检索到的相关文档块返回给用户。

5. 结合大模型回答

从检索到的文档块中提取答案,通过API Server中的大模型接口,生成回答。利用大模型(如GPT系列、BERT系列等)对答案进行优化和增强,提高答案的准确性和流畅度。最后将最终生成的答案通过Web Nginx返回给用户。

细化步骤示意

  1. 文档上传:用户上传文档至Web Nginx,Web Nginx将文档传递至API Server的任务分发模块。
  2. 文档解析与分块:API Server调用文档解析模块(包含OCR、文档布局分析、表格结构识别等)。文档解析模块将解析后的内容按设定的Token数分块,并存储至数据库。
  3. 向量化与存储:分块后的内容通过Embedding模型生成向量。向量化的数据存储至向量数据库,原始分块数据存储至关系型或文档数据库。
  4. 检索与回答生成:用户通过Web Nginx提交检索请求。API Server解析检索请求,生成查询Embedding并在向量数据库中进行检索。检索到的文档块通过大模型生成答案并返回给用户。

这些步骤展示了RAGFlow如何从文档上传到最终回答生成的完整流程。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号