【RAGFlow代码详解-2】系统架构

【Ragflow】7. Ragflow-plus和Ragflow有什么关系?主流问题Q&A Ragflow 是主流 RAG 结合大模型问答的框架之一,然而其开源版本存在诸多问题,例如,团队使用时,成员间知识库共享操作繁琐,缺乏有效的用户管理后台。因此,我对其进行二次开发,解决了部分问题。解决方案开源共享出来,起名为仓库地址:https://github.com/zstar1003/ragflow-plus。 阅读详情

系统概述

RAGFlow 遵循微服务架构,在文档处理、对话式 AI、搜索和检索以及 LLM 集成方面具有明显的关注点。该系统旨在大规模处理文档摄取、智能分块、矢量嵌入和对话界面。

高级架构

在这里插入图片描述

核心架构原则

该系统实现了几个关键的体系结构模式:

元件模式实现
任务处理Actor 模型task_executor.py 具有三重奏并发功能
文档存储多后端DocStoreConnection 抽象 ES/Infinity/OpenSearch
LLM 集成工厂模式LLMBundle 特定于提供程序的实现
API 层烧瓶蓝图针对不同功能领域的单独应用程序
缓存基于 Redis任务队列和 LLM 缓存的 REDIS_CONN

文档处理管道

文档处理管道代表了 RAGFlow 的核心工作流程,将原始文档转换为可搜索的、语义上有意义的块。

处理流架构

在这里插入图片描述

任务执行系统

该 task_executor.py 使用 trio 库实现了一个复杂的并发处理系统:

Core concurrency limiters

# Core concurrency limiters
task_limiter = trio.Semaphore(MAX_CONCURRENT_TASKS)
chunk_limiter = trio.CapacityLimiter(MAX_CONCURRENT_CHUNK_BUILDERS)
embed_limiter = trio.CapacityLimiter(MAX_CONCURRENT_CHUNK_BUILDERS)
minio_limiter = trio.CapacityLimiter(MAX_CONCURRENT_MINIO)

系统通过几个阶段处理单据:

  • 文档分块 - build_chunks() 函数使用特定于解析器的逻辑处理文档
  • 嵌入生成 - embedding() 函数使用配置的模型创建矢量表示
  • 存储作 - 并发上传到文档存储和对象存储
  • 进度跟踪 - set_progress() 通过 TaskService 提供实时更新

搜索和检索体系结构

搜索系统实现了混合检索,通过搜索将全文搜索与向量相似性相结合 。经销商类。

搜索引擎组件

在这里插入图片描述

混合搜索实现

Dealer.search() 方法实现了复杂的混合搜索,具有以下主要功能:

  • 多字段匹配 :跨 content_ltks、title_tks、important_kwd 和其他字段进行搜索
  • 加权融合 :使用 FusionExpr 为文本与向量相似性配置权重
  • 回退逻辑 :如果未找到结果,则以较低的相似性阈值自动重试
  • 排名功能 :通过 _rank_feature_scores() 结合 PageRank 和基于标签的评分

API 层架构

API 层由 Flask 蓝图应用程序组成,这些应用程序为不同的功能区域提供 REST 端点。

API 应用程序结构

应用目的关键端点主要服务依赖项
document_app.py文档管理/upload、/list、/run文档服务 、 任务服务
conversation_app.py聊天界面/完成、/列表DialogService、ConversationService
api_app.py外部 API/datasets、/chat/completions通过统一接口提供各种服务
chunk_app.py块作/set、/get、/retrieval_test搜索系统, 嵌入模型

请求处理流程

API 层在所有应用程序中实现一致的模式:

  • 身份验证 :Flask-Login 与 @login_required 装饰器集成
  • 验证 :用于输入验证的自定义 @validate_request 装饰器
  • 错误处理 :通过 get_json_result() 和 server_error_response() 标准化错误响应
  • 服务集成 :直接调用服务层类,如 DocumentService、DialogService

服务层架构

服务层通过专门的服务类实现核心业务逻辑,这些服务类抽象了数据库作并在不同系统组件之间进行协调。

服务类层次结构

在这里插入图片描述

数据库集成模式

服务层使用 Peewee ORM,模式如下:

  • 连接上下文 :用于事务管理的 @DB.connection_context() 装饰器
  • 模型关系 : 文档 、 知识库 、 任务模型之间的外键关系
  • 批量作 :bulk_insert_into_db() 用于高效的大规模作
  • 迁移支持 :MySQLMigrator 和 PostgresqlMigrator 用于模式演进

配置和部署体系结构

RAGFlow 使用分层配置方法,支持基于 Docker 的部署和特定于环境的自定义。

配置系统

配置层文件路径目的
环境变量docker/.envDocker 容器配置
服务配置docker/service_conf.yaml.template后台服务设置
Docker Composedocker/docker-compose.yml服务编排
Python 配置api/settings.py运行时应用程序设置

系统支持基于文档引擎选择的多个部署配置文件:

# Environment variable controls backend selection
DOC_ENGINE=${DOC_ENGINE:-elasticsearch}
COMPOSE_PROFILES=${DOC_ENGINE}

这使得仅通过配置即可在 Elasticsearch、Infinity 和 OpenSearch 后端之间切换。

RAGFlow安装,dify对接RAGFlow RAGFlow是一种融合了数据检索与生成式模型的新型系统架构,其核心思想在于将大规模检索系统与先进的生成式模型(如Transformer、GPT系列)相结合,从而在回答查询时既能利用海量数据的知识库,又能生成符合上下文语义的自然语言回复。该系统主要包含两个关键模块:数据检索模块和生成模块。数据检索模块负责在海量数据中快速定位相关信息,而生成模块则基于检索结果生成高质量的回答或文本内容。 阅读详情

相关推荐

爆改RagFlow

中完成的,此方法会根据文件创建一个或多个异步任务,方便异步执行。进行触发的,实际的处理是在。

weixin_43008312的博客 6244

【RAGFlow代码详解-1】概述

RAGFlow是一个生产级RAG引擎,结合LLM与文档理解技术,支持多格式文档处理(PDF/DOCX/Excel等)。其技术特点包括:深度文档解析、可配置分块策略、多后端存储支持(Elasticsearch/OpenSearch等)和可视化工作流构建器。系统采用分层架构,包含React前端、Flask后端和多种存储方案,通过API提供知识库管理、文档处理等功能。RAGFlow实现了从文档上传、解析到向量检索的完整处理流程,支持多语言和容器化部署,适用于企业级知识管理场景。

df007df的博客 1266

DeepSeek部署及ragflow知识库问题汇总

普通的AI大模型:基于训练好的数据回答,知识库+AI:基于知识库和训练数据回答,网络Tools+知识库+AI:再加上网络数据回答,涉及到agent等知识,后续如果需求的朋友多会考虑出一期。A:仍然是镜像源的问题,设置镜像源后建议重启docker,截至视频发布,视频内镜像源仍可访问,如果还是不行,可以增加镜像源,配置如下。,如果不太熟悉git,一键安装包中已经下载好了,ragflow文件夹中就是,跳过下载,按照步骤操作即可。4.启动模型:也可以启动快捷图标ollama 即可在CMD模式下 使用交互窗口交互。

qq_40358970的博客 8878

RAGFlow入门到实战(一)RAGFlow是什么?RAGFlow 系统架构

RAGFlow 是一个开源的检索增强生成(RAG)引擎,其核心价值定位旨在高效地连接用户查询与知识库,通过检索相关文档片段,并结合大语言模型(LLM)生成精准、上下文相关的回答。

star_nwe的博客 1443

WINDOWS安装RAGFLOW完整流程

2:上面的命令大概需要2个小时完成,docker的命令大概有11G左右,命令执行完成后RAGFLOW就启动成功了。关键点2:硬盘容量一定不能小于50G,否则RAGFLOW的ES组件不能正常工作,最好定义为100G以上。关键点3:帖子中第5点切ROOT不是必选操作,如果不切ROOT,输入命令的时候前面加sudo。1:上面的命令的第三步RAGFLOW_VERSION,可以不修改,默认会使用dev版本。虚拟机开机完成后,开始安装Docker,首先需要修改ubuntu的docker源。即可安装docker。

wuhoufatian的博客 6075

macOS 上部署 RAGFlow

还在为在 macOS 上部署 RAGFlow 0.14.1 发愁?别慌!本文为你呈上详细部署指南。先检查系统配置,再安装指定版本的 Docker 和 Docker Compose。在安装 RAGFlow 前后端时,教你解决 Python 依赖项安装中 xgboost 包版本不兼容等问题。对于后端服务启动报错、前端服务配置与启动、访问服务时遇到的模块缺失等难题,都给出了具体解决办法。哪怕是新手小白,跟着这份指南一步步操作,也能顺利完成部署。想快速上手 RAGFlow 0.14.1?快收藏这篇文章!

小白巨白的博客 7241

一文读懂RAGFlow:从 0 到 1教你搭建RAG知识库

RAGFlow是一种融合了数据检索与生成式模型的新型系统架构,其核心思想在于将大规模检索系统与先进的生成式模型(如Transformer、GPT系列)相结合,从而在回答查询时既能利用海量数据的知识库,又能生成符合上下文语义的自然语言回复。该系统主要包含两个关键模块:数据检索模块和生成模块。数据检索模块负责在海量数据中快速定位相关信息,而生成模块则基于检索结果生成高质量的回答或文本内容。

python12345_的博客 8024

【RAGFlow代码详解-26】Python SDK

RAGFlow Python SDK 为开发者提供了与RAGFlow HTTP API交互的编程接口,支持知识库管理、文档处理和对话式AI功能集成。该SDK采用模块化设计,包含知识库、聊天和代理等核心客户端类,支持API密钥、会话登录和OAuth等多种认证方式。提供同步/异步操作模式,具有结构化错误处理机制,适用于Web应用、批处理系统等场景。开发者可通过PyPI安装,SDK架构与HTTP API保持一致,简化了REST API调用过程。

df007df的博客 1390

RAGFlow是什么?一文读懂RAGFlow,入门到精通,看这一篇就够了

RAGFlow是一种融合了数据检索与生成式模型的新型系统架构,其核心思想在于将大规模检索系统与先进的生成式模型(如Transformer、GPT系列)相结合,从而在回答查询时既能利用海量数据的知识库,又能生成符合上下文语义的自然语言回复。该系统主要包含两个关键模块:数据检索模块和生成模块。数据检索模块负责在海量数据中快速定位相关信息,而生成模块则基于检索结果生成高质量的回答或文本内容。

jennycisp的博客 8936

【RAGFlow】全由国内镜像源搭建docker版

RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。:这里使用的是4核i5 6500的CPU,32G内存,500G硬盘,Docker version 26.1.3, build 26.1.3-0ubuntu1~24.04.1。平台搭建好之后,会默认提供Tongyi-Qianwen的模型,但此时的模型是不可用的,你需要输入可用的API-Key,才能正常使用。– ragflow:主服务,前后端;

kewaqi618的博客 1万+

Android-S无线模块前瞻

WiFi - mainlane非强制 S 采用反射的方法直接加载wifiservice,直接hook在systemserver上,无编译依赖。gms可以动态替换wifi服务。 R 采用直接启动service的方式,wifiservice仍然map在systemserver上。 WiFi - 11ad接口支持 11ad被wifi联盟商业化为WIGIG,提供短距的60GHZ载波,理论速度为当前5G 11ac的6倍。市面上基本没有手机支持,需要独立的芯片支撑此功能。 传输距离为3m以内,外界d.

头铁的伦的博客 1044

RAGFlow是什么?一文读懂RAGFlow,从 0 到 1教你搭建RAG知识库

最近随着Deepseek的火爆,如何高效地整合海量数据与生成式模型成为了技术领域内的一大热点。传统的生成模型在回答复杂问题时常常依赖于预训练数据的广度与深度,而检索增强生成(Retrieval-Augmented Generation,简称RAG)则有效结合了检索与生成的优势,为各类应用场景提供了更为灵活、高效的解决方案。

kaka0722ww的博客 3456

Python | 集合(set)运算之intersection()

简介 在做力扣题的时候,有一个思路是要求解两个字符串的交集。 一般来说,求解交集的思路是遍历两个字符串,判断有无相等,有相等则添加到交集中,直到循环结束。 但是这样做,会增加很多的不必要的遍历:比如说,当一个字符串中有多个相同的元素时,该元素会被遍历多次。 因此,在求解时,我们可以先将字符串转换为set集合类型。集合中存储的元素没有顺序,且互异(即元素不可重复)。 算例 求字符串m“abcdaaa” 与 字符串n“bcddses”是否存在交集 首先将字符串转换为set类型: m = set(m) n

lovetaozibaby的博客 1万+

RAGFlow安装教程 | 带你一步步搭建RAGFlow【干货分享】

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

star_nwe的博客 2万+

VIL-SLAM论文翻译:Stereo Visual Inertial LiDAR Simultaneous Localization and Mapping

文章目录写在前面摘要1.引言2.相关工作3.系统概述4.视觉前端5.双目视觉惯性里程计A. IMU预积分因子B. 非结构化视觉因子C. 优化和边缘化6. 激光建图A. LiDAR扫描去畸变B. 帧到地图配准7. LiDAR增强的闭环A. 回环检测B. 回环约束C. 全局位姿图优化D. 重定位8. 实验结果A.平台和软件B.测试和结果C. EuRoCMAV数据集测试9.结论 写在前面 写作参考: robot L 开源代码: 开源代码链接 论文原文: 原文链接 摘要 SLAM是移动和空中机器人的一项基本任务

JaydenQ的博客 2321

卫星图像检测,分割,跟踪,超分辨率,数据集调研,以及论文笔记

目标检测,针对物体有很多类如桥,烟囱,罐子等,有静态图像下的检测,也就是图像源头多来自谷歌地图,但是前后帧没有任何联系,并且谷歌地图相对来说比较清楚,难度小一点,也有粗粒度以及较细粒度的检测,然后卫星视频的数据集较少,则可以通过前后帧的联系来辅助检测,并且卫星帧基本上只对车,船,飞机,火车进行检测,没有进行细粒度的检测即将车辆分类为卡车,皮卡,小轿车,但是关船,则可以分类为货船以及军舰,因为目前的卫星视频中小车实在太少了,难以进行更细粒度的检测。luojia 三号卫星。

zhangzhao147的博客 4707

Ragflow 源码:ragflow_server.py

是 RAGFlow 项目的主服务器程序,负责启动和管理 RAGFlow 的核心服务。

The cure for boredom is curiosity. This is the log of its adventures. 1170

如何在离线的电脑上部署一个本地Deepseek(使用ollama)

例如,如果您的显卡显存为 16GB,官方推荐使用 32b 大小的 DeepSeek 模型。请根据您的硬件配置选择适合的模型版本,以获得最佳性能。首先我们需要将ollama和chatbox的安装包,Deepseek模型文件通过U盘或者光盘的形式导入到这台不能联网的电脑上。按照时间排序,找到最大的那个文件,就是gguf格式的模型,复制出来,改名为qwen2.5-coder0.5b.gguf。:基于开源模型(如 QWEN 和 LLAMA)微调,参数量从 1.5B 到 70B 不等,适合本地硬件部署。

qq_41854911的博客 1万+

RAGFlow Docker 部署配置详解

本文详细介绍了RAGFlow的Docker部署配置,重点解析了4个核心文件的分工: docker-compose.yml作为入口文件定义主服务 docker-compose-base.yml管理基础依赖服务 .env文件控制环境变量和功能开关 service_conf.yaml.template用于服务配置 部署通过Docker Compose Profile机制灵活控制服务启动,支持对接企业现有中间件,并提供了Agent代码沙箱的安全执行方案。文章还详细说明了各配置文件的协同关系、变量设置方法以及不同部署

小单的博客专栏 1095

2025华为od机试真题B卷【字符串计数匹配】Java&Go 实现

给你一个字符串str和整数k,返回满足以下条件的所有子字符串个数: 1.恰好包含k个字母。 2.数字0-9各出现至少一次。

MISAYAONE的博客 639

Python 爬虫实战:攻克小红书种草笔记,抓取美妆好物推荐数据

通过本次 Python 爬虫实战,我们成功地从小红书爬取了美妆种草笔记的数据,并进行了存储、处理、分析和可视化展示。在这个过程中,我们不仅掌握了爬虫技术的基本应用,还学会了如何对动态加载的数据进行处理和分析。然而,本次爬虫任务也存在一些局限性,例如仅爬取了部分笔记的数据,且未对笔记中的图片和视频内容进行分析。在未来的工作中,我们可以进一步优化爬虫程序,爬取更多笔记的数据,并深入分析笔记中的多媒体内容、用户行为模式等,为美妆品牌和消费者提供更有价值的数据支持。

u014481728的博客 3272

【万字详解】手把手带你一步步搭建RAGFlow(超干货)

本篇给大家介绍一下RAGFlow的本地搭建,以下过程基于Ubuntu24,其它Linux系统的搭建方法也基本相同。先来温补一下,RAGFlow是一个基于对文档深入理解的开源 RAG(检索增强生成)引擎。它的作用是可以让用户创建自有知识库,根据设定的参数对知识库中的文件进行切块处理,用户向大模型提问时,RAGFlow先查找自有知识库中的切块内容,接着把查找到的知识库数据输入到对话大模型中再生成答案输出。它能凭借引用知识库中各种复杂格式的数据为后盾,为用户提供真实可信,少幻觉的答案。

qingkahui24689的博客 5万+

1 四种防反接电路——multisim仿真

摘要:防反接电路可防止电源反接损坏器件,主要有四种方案:1)二极管串联(低成本,适用小电流);2)整流桥(无极性输入,但效率低);3)保险丝+稳压管(低损耗但需更换);4)MOS管方案(大电流、高效率,主流选择)。选型需考虑电流、压降和成本,MOS管因其低导通电阻(毫欧级)成为大电流应用的首选。口诀:"小电流二极管,大电流用MOS"可快速指导设计。

XU157303764的博客 1572

【RAGFlow代码详解-5】配置系统

RAGFlow采用多层配置架构,支持灵活的部署场景。核心配置通过service_conf.yaml定义,包含数据库连接、对象存储、搜索引擎等关键服务设置。全局配置系统通过api/settings.py集中管理运行时参数,支持环境变量覆盖。系统采用工厂模式支持多种存储后端(MinIO、AWS S3等)和认证提供商(OAuth2/OIDC)。LLM配置支持分层覆盖,从模型级到系统级默认值。初始化过程会验证各服务连接,严重错误将阻止启动。该架构通过模块化设计实现了高度可配置性和扩展性。

df007df的博客 1151

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: 【RAGFlow代码详解-1】概述
下一篇: 【RAGFlow代码详解-3】核心服务
df007df
博客等级 码龄18年 833粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

df007df

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值