RAGFlow本地部署教程 :多模态检索+动态生成,用AI重构企业知识生产力

RAGFlow是一款基于检索增强生成(RAG)技术的智能工作流平台,通过整合多源数据检索与生成式AI模型,优化企业知识管理、智能问答及自动化报告生成,核心功能包括:

  • 多源数据融合:支持数据库、文档库、API接口的实时检索,兼容文本、图像、音视频等多模态数据;

  • 动态知识增强:生成内容时自动关联最新业务数据,避免模型“幻觉”,支持自定义规则链(如财务报告合规校验);

  • 低代码流程编排:可视化设计工作流(如“客户咨询→知识库检索→生成回复”),无缝集成钉钉、企业微信等平台。

RAGFlow的适用场景包括企业智能客服、行业研报生成、内部知识管理等。

接下来就为大家奉上详细的 RAGFlow 本地部署教程,手把手教你如何将模型部署到你的项目中,轻松享受高性能AI带来的便利。

RAGFlow本地部署教程(非docker)

部署需要的环境:

环境版本号
python>=3.10
pytorch>=2.0
mysql=8.0
elasticsearch>=8.17.1
ubtuntu22.4.0

1.MySQL安装

1.1更新软件包列表

sudo apt update

1.2安装 MySQL 服务器

# 查看可使用的安装包
sudo apt search mysql-server
# 安装指定版本8.0
sudo apt install -y mysql-server-8.0

1.3启动 MySQL 服务

#启动MySQL
sudo service mysql start
#设置开机自启动
sudo service  mysql enable
#检查MySQL状态
sudo service  mysql status

启动MySQL时若出现图片中最后一行的内容可以运行以下命令

sudo usermod -d /var/lib/mysql mysql

image.png

1.4设置密码和权限

# 登录mysql,在默认安装时如果没有让我们设置密码,则直接回车就能登录成功。
sudo mysql -uroot -p
# 设置密码 mysql8.0
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
# 设置密码 mysql5.7
set password=password('新密码');
# 配置IP 5.7
grant all pri

1.5创建RAGFlow数据库

#创建数据库
create database rag_flow;
#查看数据库是否创建成功
show databases;

下面的可以不执行

注意:配置8.0版本参考:我这里通过这种方式没有实现所有IP都能访问;我是通过直接修改配置文件才实现的,MySQL8.0版本把配置文件 my.cnf 拆分成mysql.cnf 和mysqld.cnf,我们需要修改的是mysqld.cnf文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

修改 bind-address,保存后重启MySQL即可。

bind-address= 0.0.0.0

重启MySQL重新加载一下配置:

sudo systemctl restart mysql

2安装elasticsearch

2.1安装前的准备

#创建文件夹
mkdir elastic
#创建普通用户
useradd elastic
#设置用户密码
passwd elastic
#将文件指定给elastic用户
chown -R elastic /elastic

2.2安装

进入网址Install Elasticsearch from archive on Linux or MacOS | Elasticsearch Guide [8.17] | Elastic,根据图片中的内容安装elasticsearch

image.png

2.3启动elasticsearch

#进入bin目录
cd /elastic/elasticsearch-8.17.4/bin
#给java执行权限
chmod +x /elastic/elasticsearch-8.17.4/jdk/bin/java
#进入普通用户
su elastic
#启动elasticsearch
./elasticsearch

注意初次启动过程中可能会出现没有权限的错误,只需要给具体的文件夹权限即可

sudo chmod +x /elastic
sudo chmod +x /elastic/elasticsearch-8.17.4
sudo chmod +x /elastic/elasticsearch-8.17.4/jdk
sudo chmod +x /elastic/elasticsearch-8.17.4/jdk/lib

启动成功之后再浏览器输入下面的网址并出现于图片内容相似的结果即为成功

网址:http://localhost:9200

结果:

image.png

若不能访问9200端口,或者需要密码登录可根据下面的配置文件修改你的文件

文件路径:/elastic/elasticsearch-8.17.4/config/elasticsearch.yml

image.png

3.安装minio

3.1下载 MinIO 可执行文件:

wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio

3.2创建存储目录:

mkdir /data

3.3启动 MinIO 服务器:

./minio server /data

1.png

3.4MinIO使用

1.(可选)访问 MinIO 控制台: 打开浏览器并访问 http://<your-server-ip>:9000(默认端口为 9000)。

2.进入MinIO的的web页面 使用minioadmin登录,注意:账号和密码都是minioadmin

3.然后点击身份,再点击用户

image.png

4.创建用户 user:rag_flow password:123456(密码可以设置成自己的,要记住密码后面会用)

点击创建用户:

image.png

然后填写自己的账号密码以及给权限(如图所示)

2.png

4.安装redis

4.1更新软件列表

sudo apt update
sudo apt upgrade

4.2使用 apt 安装 Redis

sudo apt install redis-server

4.3启动redis

redis-server

出现下面的内容即为启动成功

image.png

4.4测试 Redis 是否正常工作

redis-cli --version

5.ragflow部署

5.1创建虚拟环境

#创建虚拟环境
conda create -n ragflow python==3.12
#激活虚拟环境
conda activate ragflow
#更换匹配下载源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple

5.2安装pytorch

pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu124

5.3克隆ragflow仓库

#github
git clone https://github.com/infiniflow/ragflow.git

5.4下载相应的依赖

由于不使用docker启动且官方文档没有requirements.txt文件不能批量下载,本人已经制作了文档,可在下方的网盘中免费下载

「ragflow包」来自UC网盘分享
https://drive.uc.cn/s/dd7e7e3639884?public=1

 pip install -r requirements.txt

5.5启动ragflow-server(后端)

注意在启动ragflow-server时要先启动MySQL,elasticsearch,redis

修改配置文件

#用vim修改配置文件
vim /ragflow/conf/service_conf.yaml

根据自己的信息修图中的内容

image.png

运行/ragflow/api/ragflow_server.py时最好将其复制到/ragflow下,因为有极大概率会报错

#进入ragflow
cd /ragflow
#将/ragflow/api/ragflow_server.py复制到ragflow中
cp -r /ragflow/api/ragflow_server.py /ragflow
#运行ragflow_server.py
python ragflow_server.py

**成功启动结果如图

image.png

image.png


**

注意下面为本人运行过程中所出现的错误,希望对你有所帮助

1.在用批量安装依赖后需要再安装infinity-sdk,因为批量下载时会冲突所以需要单独安装

pip install infinity-sdk==0.6.0.dev3

2.若出现下面的图片中的错误可以进入下面的网址中下载相应的包,并放进相应的位置

image.png

https://github.com/nltk/nltk_data/blob/gh-pages/packages

/root/nltk_data/tokenizers/

/root/nltk_data/corpora/

3.#出现此错误

image.png

将/root/miniconda3/envs/ragflow/lib/python3.12/site-packages/azure/storage/filedatalake/文件夹下的_models.py中的18行修改为如图所示

image.png

4.#出现图片中的错误,运行下面的命令

pip install google-search-results

image.png

5.#若出现下面图片中的错误,可运行下面的命令

sudo apt update && sudo apt install -y unixodbc unixodbc-dev

image.png

6.ragflow的web启动(源启动)

6.1nodejs的安装

#更新软件包的索引
sudo apt update
#运行将为 Node.js 20 包配置 APT 存储库的脚本。
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
#运行run后面的命令
apt-get install nsolid -y
#验证安装是否成功
node -v
npm -v

image.png

安装成功的样式

image.png

6.2启动web

#进入web文件
cd /ragflow/web
#安装前端依赖项
npm install
#启动前端服务
npm run dev

成功启动的截图

image.png

点击红框中的网址即可进入web端(由于网络原因可能进入网页的速度较慢)如图

image.png

注意在使用的时候需要进入/ragflow中运行task_executor.py,这和解析文件有关

#为防止出现路径错误,将它放在ragflow下面运行
cp -r /ragflow/rag/svr/task_executor.py /ragflow/
#运行task_executor.py
python task_executor.py

7.使用nginx静态网页+api模式(推荐)

7.1 安装nginx

  • 检查是否存在apt命令
apt –version

说明:出现版本号就说明当前环境存在apt

  • 更新apt命令
apt update
  • 安装nginx
apt-get install nginx
  • 查看nginx版本
nginx -v

出现nginx版本号,即安装成功。

  • 启动nginx
systemctl start nginx
  • 查看nginx的状态
systemctl status nginx
  • 安装nginx后的文件位置

/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志

7.2 构建静态网页

注意:一般使用npm run build 构建的静态网页dist文件一般在当前目录

#进入web文件下
cd /ragflow/web
#运行命令构建静态网页
npm run build
#查看是否有dist文件
ls

7.3 配置nginx+api

1.配置nginx.conf

路径:/etc/nginx/

vim /etc/nginx/nginx.conf

内容:

user  root;
worker_processes  auto;error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;client_max_body_size 1024M;include /etc/nginx/conf.d/ragflow.conf;
}

2.配置ragflow.conf

路径:/etc/nginx/conf.d/

vim /etc/nginx/conf.d/ragflow.conf

内容:(将配置文件中的中文注释去掉)

server {listen 8080; #自己的端口server_name _; #自己想用的域名root /ragflow/web/dist; #通过npm run build建立的静态网页问价dist的存储路径gzip on;gzip_min_length 1k;gzip_comp_level 9;gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_vary on;gzip_disable "MSIE [1-6]\.";location ~ ^/(v1|api) {proxy_pass http://127.0.0.1:9380; #后端的api接口的ip和端口include proxy.conf;}location / {index index.html;try_files $uri $uri/ /index.html;}# Cache-Control: max-age~@~AExpireslocation ~ ^/static/(css|js|media)/ {expires 10y;access_log off;}
}

3.配置proxy.conf

路径:/etc/nginx/

vim /etc/nginx/proxy.conf

内容:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;

4.使用命令检查配置文件语法是否有错

nginx -t

5.重启nginx服务

sudo service nginx restart

7.4进入web页面

确保后端服务已经启动成功

#输入在ragflow.conf中自己的ip和端口
http://localhost:8080

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C/C++】深入理解指针(二)

文章目录 深入理解指针(二)1.const修饰指针1.1 const修饰变量1.2 const修饰指针变量 2.野指针2.1 野指针成因1.指针未初始化2. 指针越界访问3.指针指向的空间释放 2.2 如何规避野指针2.2.1 指针初始化2.2.2 小心指针越界2.2.3 指针变量不再使⽤时&#xff0c;及时置NULL&#x…

【verilog】在同一个 always 块中写了多个“看起来独立”的 if / if-else,到底谁先谁后,怎么执行?会不会冲突?

&#x1f50d; 问题本质 在一个 always (posedge clk) 块中&#xff0c;所有的代码都是顺序执行的。但这不意味着它就像软件一样“一条一条执行”&#xff0c;因为最终是电路&#xff01;电路是并行存在的&#xff01; Verilog 是硬件描述语言&#xff08;HDL&#xff09;&am…

【React】什么是 Hook

useStateuseEffectuseRef 什么是hook&#xff1f;16.8版本出现的新特性。可以在不编写class组件的情况下使用state以及其它的React特性 为什么有hook&#xff1f;class组件很难提取公共的重用的代码&#xff0c;然后反复使用&#xff1b;不编写类组件也可以使用类组件的状态st…

如何查看自己抖音的IP属地?详细教程及如何修改

在当今互联网时代&#xff0c;IP属地信息已成为各大社交平台&#xff08;如抖音、微博、快手等&#xff09;展示用户真实网络位置的重要功能。以下是关于如何查看抖音IP属地的详细教程及常见问题解答&#xff0c;帮助您快速了解相关信息&#xff1a; 一、如何查看抖音账号的IP属…

深度学习算力革新:AI服务器在运维工作中的智能化实践

【导语】作为IT基础设施服务领域的从业者&#xff0c;我们在日常工作中发现&#xff0c;AI服务器的智能化运维能力正在重塑传统IDC的管理模式。本文将以DeepSeek系列服务器为例&#xff0c;分享智能算力设备在真实运维场景中的创新应用。 一、传统服务器集群的运维痛点 在数据…

安装部署RabbitMQ

一、RabbitMQ安装部署 1、下载epel源 2、安装RabbitMQ 3、启动RabbitMQ web管理界面 启用插件 rabbitmq数据目录 创建rabbitmq用户 设置为管理员角色 给用户赋予权限 4、访问rabbitmq

中间件--ClickHouse-4--向量化执行(什么是向量?为什么向量化执行的更快?)

1、向量&#xff08;Vector&#xff09;的概念 &#xff08;1&#xff09;、向量的定义 向量&#xff1a;在计算机科学中&#xff0c;向量是一组同类型数据的有序集合&#xff0c;例如一个包含多个数值的数组。在数据库中&#xff0c;向量通常指批量数据&#xff08;如一列数…

Python PDF 转 Markdown 工具库对比与推荐

根据最新评测及开源社区实践&#xff0c;以下为综合性能与适用场景的推荐方案&#xff1a; 1. ‌Marker‌ ‌特点‌&#xff1a; 转换速度快&#xff0c;支持表格、公式&#xff08;转为 LaTeX&#xff09;、图片提取&#xff0c;适配复杂排版文档‌。依赖 PyTorch&#xff0c…

Vue 和 Spring boot 和 Bean 不同生命周期

一、Vue 组件生命周期 父子组件生命周期顺序&#xff1a; 创建时&#xff1a; 父 beforeCreate → 父 created → 父 beforeMount → 子组件生命周期 → 父 mounted 更新时&#xff1a; 父 beforeUpdate → 子组件更新 → 父 updated。 销毁时&#xff1a; 父 beforeDestroy…

Microsoft Azure 基础知识简介

Microsoft Azure 基础知识简介 已完成100 XP 2 分钟 Microsoft Azure 是一个云计算平台&#xff0c;提供一系列不断扩展的服务&#xff0c;可帮助你构建解决方案来满足业务目标。 Azure 服务支持从简单到复杂的一切内容。 Azure 具有简单的 Web 服务&#xff0c;用于在云中托…

C语言链接数据库

目录 使用 yum 配置 mysqld 环境 查看 mysqld 服务的版本 创建 mysql 句柄 链接数据库 使用数据库 增加数据 修改数据 查询数据 获取查询结果的行数 获取查询结果的列数 获取查询结果的列名 获取查询结果所有数据 断开链接 C语言访问mysql数据库整体源码 通过…

【Maven】手动安装依赖到本地仓库

【Maven】手动安装依赖到本地仓库 【一】下载依赖【二】安装 JAR 文件到本地仓库【三】验证安装【四】在项目中使用该依赖【1】注意事项【2】额外提示 【一】下载依赖 登录到中央仓库下载依赖&#xff0c;中央仓库地址&#xff1a;https://mvnrepository.com/ 搜搜你的依赖的a…

腾讯云golang一面

go垃圾回收机制 参考自&#xff1a;https://zhuanlan.zhihu.com/p/334999060 go 1.3 标记清除法 缺点 go 1.5 三色标记法 屏障机制 插入屏障 但是如果栈不添加,当全部三色标记扫描之后,栈上有可能依然存在白色对象被引用的情况(如上图的对象9). 所以要对栈重新进行三色标记扫…

跨平台嵌入式音视频开发指南:EasyRTC音视频通话的多场景适配与AI扩展能力

在数字化通信技术飞速发展的今天&#xff0c;实时音视频通信已成为众多智能设备和应用的核心功能。从智能家居到远程办公&#xff0c;从在线教育到智能安防&#xff0c;音视频通信技术的应用场景不断拓展&#xff0c;对低延迟、高稳定性和跨平台兼容性的需求也在持续增长。在这…

Android 11 去掉性能受到影响通知

源码位置: frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java final void finishBooting() {TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG + "Timing",Trace.TRACE_TAG_ACTIVITY_MANAGER);t.traceBegin("Finis…

Mac idea WordExcel等文件git modify 一直提示修改状态

CRLF LF CR 换行符自动转换问题 查看状态&#xff1a;git config --global --list Mac需要开启&#xff0c;window下需要关闭 关闭命令&#xff1a;git config --global core.autocrlf false 命令解释&#xff1a; autocrlf true 表示要求git在提交时将crlf转换为lf&a…

Apache Commons CLI 入门教程:轻松解析命令行参数

文章目录 Apache Commons CLI 入门教程&#xff1a;轻松解析命令行参数一、什么是 Commons CLI&#xff1f;二、为什么选择 Commons CLI&#xff1f;三、快速开始1. 添加依赖2. 基础示例3. 运行示例1. 在Idea中运行2. 命令行中运行3. 使用 Maven/Gradle 运行&#xff08;推荐&a…

VS2022调试嵌入式linux C# 程序 高效的开发方案

1.目标板子配置好ssh,确保PC可以连上 2.目标板子上传VSDBG程序&#xff0c;详见我的上一个文章 3.PC安装winfsp&#xff0c; sshfs,SSHFS-Win Manager.傻瓜式安装&#xff0c;将目标板子映射到PC的某个盘 4.VS2022中&#xff0c;你的工程的exe生成目录到上面盘中某个路径 5…

Python中如何加密/解密敏感信息(如用户密码、token)

敏感信息,如用户密码、API密钥、访问令牌(token)、信用卡号以及其他个人身份信息(PII),构成了现代应用程序和系统中最为关键的部分。这些信息一旦被未经授权的第三方获取,可能引发灾难性的后果,从个人隐私泄露到企业经济损失,甚至是大规模的社会安全问题。保护这些敏感…

智能体开发的范式革命:Cangjie Magic全景解读与实践思考

引言&#xff1a;当智能体开发遇见仓颉魔法 在人工智能技术日新月异的今天&#xff0c;智能体(Agent)开发正从实验室走向产业应用的核心舞台。2025年3月&#xff0c;仓颉社区推出的Cangjie Magic开源平台&#xff0c;以其创新的设计理念和技术架构&#xff0c;为这一领域带来了…