在 Ubuntu 24.04 LTS 一台机子上同时部署Dify 1.3.1 和 RAGflow 0.18.0
一、RAGflow 0.18.0 简介
有关 Dify 的简介,可以查看我之前分享的 《在 Ubuntu24.04 LTS 上 Docker Compose 部署 Dify 社区版 1.0.1》文章。RAGFlow是一款基于深度文档理解(deepdoc)构建的开源 RAG引擎。其中,深度文档理解,是 RAGFlow 对文档解析的一个解决方案,它包含两个组成部分:视觉处理和解析器。其中视觉处理是通过OCR,布局识别,表结构识别来完成图像,PDF,表格的识别的。针对PDF、DOCX、EXCEL和PPT四种文档格式,都有相应的解析器。能够从各类复杂格式的非结构化数据中提取信息,文本切片过程可视化,还支持手动调整。支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据、网页等。更重要的是,他还集成了各种嵌入模型,rerank模型,提供易用的 API,可以轻松集成到各类企业系统。
RAGflow 官网地址:https://ragflow.io/
RAGflow 0.18.0 官方文档地址:https://ragflow.io/docs/v0.18.0/
RAGflow 系统架构:
RAGflow 主要功能:
(1) "Quality in, quality out"
基于深度文档理解,能够从各类复杂格式的非结构化数据中提取真知灼见。
真正在无限下文(token)的场景下快速完成大海捞针测试。
(2)基于模板的文本切片
不仅仅是智能,更重要的是可控可解释。
多种文本模板可供选择
(3)有理有据、最大程度降低幻觉(hallucination)
文本切片过程可视化,支持手动调整。
有理有据:答案提供关键引用的快照并支持追根溯源。
(4)兼容各类异构数据源
支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据、网页等。
(5)全程无忧、自动化的 RAG 工作流
全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
大语言模型 LLM 以及向量模型均支持配置。
基于多路召回、融合重排序。
提供易用的 API,可以轻松集成到各类企业系统。
RAGflow 0.18.0 升级内容说明:
新功能
MCP服务器: 允许通过MCP访问RAGFlow的知识库。
DeepDoc支持在文档布局识别过程中采用VLM模型作为处理管道,从而可以对pdf中的图像进行深入分析。
代理版本控制: 所有更新都将持续记录,并且可以通过导出回滚到以前的版本。
团队协作: 可以与团队成员共享座席。
与OpenAI兼容的api: 可以通过与OpenAI兼容的api调用代理。
用户注册控制: 管理员可以通过环境变量启用或禁用用户注册。
改进
增强的答案引用: 提高了生成的响应中的引用准确性。
增强的问答体验: 用户现在可以在对话期间手动停止流式输出。
其他详见RAGflow的release的tag说明( https://github.com/infiniflow/ragflow/releases/tag/v0.18.0 ),如下:
二、RAGflow 安装软硬件条件检查
(1)官方支持x86 CPU和Nvidia GPU 硬件,其他 ARM 等硬件官方截至目前尚未暂不作为正式支持硬件。
(2)Linux 操作系统内核不建议低于6.0 的 LTS 版本;Windows 操作系统不建议低于 Win10 专业版 22H2 或 Window Server 2025 最新稳定版。
(3)CPU 大于等于 8核(x86);一会有杠精要抬杠说官方是不少于4核,亲咱们是Dify和RAGflow安装同一台机子。
(4)RAM 大于等于 32 GB 。
(5)磁盘 大于等于 512 GB 。
(6)Docker 大于等于 28.1.1 ,并且 Docker Compose 大于等于 2.35.1 。
(7)Git 大于等于 2.43.0 。
三、在 Ubuntu 24.04 LTS 部署 RAGflow 0.18.0
3.1 控制进程可以拥有的内存映射区域(Memory Mapped Regions)的最大数优化
vm.max_map_count。该值设置进程可能具有的存储器映射区域的最大数量。其默认值为65530。虽然大多数应用程序需要少于一千个映射,但减少此值可能会导致异常行为,并且当进程达到限制时,系统将抛出内存不足错误。RAGFlow v0.18.0使用Elasticsearch或无穷大多次召回。设置vm.max_map_count的值为正确地对Elasticsearch组件的正常运行至关重要。以下命令操作需要高级权限(root或sudo等):
# 检查的值vm.max_map_count
sysctl vm.max_map_count# 重置vm.max_map_count设置为大于等于262144的值 (如果不是);本机(八张A100的8U机架人工智能一体机)内存2TB , 所以设置100万负载
sysctl -w vm.max_map_count=1048576在 /etc/sysctl.conf 文件里把 vm.max_map_count 的值再相应更新一遍:vm.max_map_count=1048576sysctl -p# 验证限制是否生效
cat /proc/sys/vm/max_map_count
3.2 下载 RAGflow 社区版源代码
git clone https://github.com/infiniflow/ragflow.gitcd ragflow/dockergit checkout -f v0.18.0
3.3 修改 .env 配置文件里 RAGFlow 版本
把 docker/.env 配置文件里,RAGFLOW_IMAGE=infiniflow/ragflow:v0.18.0-slim 修改为 RAGFLOW_IMAGE=infiniflow/ragflow:v0.18.0 ;然后保存。
3.4 修改 RAGflow 对外暴露映射端口(80端口已经分配给 Dify 使用)
(1)修改 docker-compose.yml 默认的端口 80 和 443
(2)修改 docker-compose-gpu.yml 默认端口 80 和 443
3.5 进行构建
# 进入docker目录
cd ragflow/docker# 使用CPU执行嵌入和DeepDoc任务使用下面命令
docker compose -f docker-compose.yml -p ragflow up -d# 使用GPU加速嵌入和DeepDoc任务 (这个命令和上面的命令二选一,或者,把docker-compose-gpu.yml里配置英伟达GPU加速的复制到docker-compose.yml 里也可以)
docker compose -f docker-compose-gpu.yml -p ragflow up -d
3.6 docker-compose.yml 和 docker-compose-gpu.yml 的主要区别
deploy:resources:reservations:devices:- driver: nvidiacount: allcapabilities: [gpu]
3.7 打开浏览器访问 RAGflow 配置账号
由于前面,我们把web端口设置为了38080端口,docker镜像拉取后,等待容器启动完成,在浏览器输入: http://127.0.0.1:38080 即可访问。
四、在 Ubuntu 24.04 LTS 部署 Dify 1.3.1
4.1 克隆 Dify 源代码至本地环境
git clone https://github.com/langgenius/dify.git --branch 1.3.1
4.2 启动 Dify
# 进入 Dify 源代码的 Docker 目录
cd dify/docker# 复制环境配置文件
cp .env.example .env# 修改 .env 配置文件配置,规避插件安装异常将 FORCE_VERIFYING_SIGNATURE=true 修改为 FORCE_VERIFYING_SIGNATURE=false # 启动 Docker 容器
cd dify/docker
docker compose -f docker-compose.yaml -p dify down
git pull origin main
docker compose pull
docker compose -f docker-compose.yaml -p dify up -d

4.3 前往管理员初始化页面设置设置管理员账户
# 本地环境(Dify使用的是默认的80端口,所以访问地址可以省略)
http://localhost/install# 服务器环境
http://your_server_ip/install

4.4 访问 Dify 主页面
# 本地环境(Dify使用的是默认的80端口,所以访问地址可以省略)
http://localhost# 服务器环境
http://your_server_ip
五、Dify 外部知识库对接 RAGflow
为什么要 RAGflow 和 Dify 结合呢?是因为 RAGflow 可以解决 Dify 在RAG 和 知识库解析和检索短板。
5.1 创建 RAGflow 知识库
输入网址:http://localhost:38080 打开ragflow界面,填入注册的账号和密码登录。然后创建供Dify调用的知识库。
5.2 Dify与ragflow联通
同样的我们在浏览器地址栏输入:http://localhost:80 即可打开Dify 。
点击知识库,配置外部知识库。
图中Name填写对应RAGflow即将被调用的知识库名字。
图中API Endpoint填写RAGflow地址,http://RAGflow的IP:38080/api/v1/dify
图中API Key填写RAGflow 的 api key 密钥。
然后,连接外部知识库。
在Dify里进行召回测试,看是否查询RAGflow知识库内容。
--------------------------------------
没有自由的秩序和没有秩序的自由,同样具有破坏性。