一、RAGFlow 是什么?
RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。
二、RAGFlow架构设计
检索流程
- 首先Questions提出问题,由查询分析器进行Keyword & Embedding,到AI 原生数据库(Infinity)进行相似性检索,返回Chunk数据
- 然后基于多路召回、融合重排序处理,得到更精确、准确答案
- 最后调用LLMs进行内容生成,返回答案给用户
知识加载
- Documents加载进行Task Dispatch分发,进行Task Exector
- 基于深度文档理解(DeepDoc)处理,如:OCR、文档解析、文档分层分析、表结构识别
- 最后基于可控可解释的模板文本切片,形成Chunk存入AI 原生数据库
三、RAGFlow主要功能
Quality in, quality out
- 基于深度文档理解,能够从各类复杂格式的非结构化数据中提取真知灼见。
- 真正在无限上下文(token)的场景下快速完成大海捞针测试。
基于模板的文本切片
- 不仅仅是智能,更重要的是可控可解释。
- 多种文本模板可供选择
有理有据、最大程度降低幻觉(hallucination)
- 文本切片过程可视化,支持手动调整。
- 有理有据:答案提供关键引用的快照并支持追根溯源。
兼容各类异构数据源
- 支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据, 网页等。
全程无忧、自动化的 RAG 工作流
- 全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
- 大语言模型 LLM 以及向量模型均支持配置。
- 基于多路召回、融合重排序。
- 多路召回:策略是指采用不同的策略、特征或简单模型,根据相关任务的特点,合适的召回规则,分别召回一部分候选集。在“计算速度”和“召回率”之间进行了权衡,可以使用多线程并发技术,从而提高效率。
- 融合重排序:则是对多路召回得到的候选集进行进一步的优化排序。它结合了多个排序算法的优点,形成了一种全新的排序算法,旨在提高排序的准确性和速度。
- 多路召回和融合重排序的推荐系统能够充分利用各种策略和算法的优点,提高推荐的准确性和效率,从而提升用户体验
- 提供易用的 API,可以轻松集成到各类企业系统。
四、源码启动服务
4.1 环境安装
4.1.1 更新系统软件包
1.到手一个全新的Ubuntu系统,从零开始搭建,使用MobaXterm来远程Ubuntu系统进行操作。
2.更新本地包列表:apt-get update
;升级已安装的软件包到最新版本:apt-get upgrade
4.1.2 安装conda、python3、git、pip3
在Ubuntu系统上安装conda、Python、git和pip的详细步骤如下:
4.1.2.1 安装conda
Conda是一个开源的包、依赖和环境管理器,用于安装多个版本的软件包及其依赖,并在它们之间轻松切换。以下是安装conda的步骤:
- 下载Anaconda:
- 使用wget命令从清华大学开源软件镜像站下载Anaconda安装包(以最新版本为例,请根据实际情况替换URL中的版本号)。
# 下载最新镜像源
wget https://mirrors.tuna.tsinghua