RAGFlow是一款基于检索增强生成(RAG)技术的智能工作流平台,通过整合多源数据检索与生成式AI模型,优化企业知识管理、智能问答及自动化报告生成,核心功能包括:
-
多源数据融合:支持数据库、文档库、API接口的实时检索,兼容文本、图像、音视频等多模态数据;
-
动态知识增强:生成内容时自动关联最新业务数据,避免模型“幻觉”,支持自定义规则链(如财务报告合规校验);
-
低代码流程编排:可视化设计工作流(如“客户咨询→知识库检索→生成回复”),无缝集成钉钉、企业微信等平台。
RAGFlow的适用场景包括企业智能客服、行业研报生成、内部知识管理等。
接下来就为大家奉上详细的 RAGFlow 本地部署教程,手把手教你如何将模型部署到你的项目中,轻松享受高性能AI带来的便利。
RAGFlow本地部署教程(非docker)
部署需要的环境:
环境 | 版本号 |
---|---|
python | >=3.10 |
pytorch | >=2.0 |
mysql | =8.0 |
elasticsearch | >=8.17.1 |
ubtuntu | 22.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
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
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
结果:
若不能访问9200端口,或者需要密码登录可根据下面的配置文件修改你的文件
文件路径:/elastic/elasticsearch-8.17.4/config/elasticsearch.yml
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
3.4MinIO使用
1.(可选)访问 MinIO 控制台: 打开浏览器并访问 http://<your-server-ip>
:9000(默认端口为 9000)。
2.进入MinIO的的web页面 使用minioadmin登录,注意:账号和密码都是minioadmin
3.然后点击身份,再点击用户
4.创建用户 user:rag_flow password:123456(密码可以设置成自己的,要记住密码后面会用)
点击创建用户:
然后填写自己的账号密码以及给权限(如图所示)
4.安装redis
4.1更新软件列表
sudo apt update
sudo apt upgrade
4.2使用 apt 安装 Redis
sudo apt install redis-server
4.3启动redis
redis-server
出现下面的内容即为启动成功
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
根据自己的信息修图中的内容
运行/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
**成功启动结果如图
**
注意下面为本人运行过程中所出现的错误,希望对你有所帮助
1.在用批量安装依赖后需要再安装infinity-sdk,因为批量下载时会冲突所以需要单独安装
pip install infinity-sdk==0.6.0.dev3
2.若出现下面的图片中的错误可以进入下面的网址中下载相应的包,并放进相应的位置
https://github.com/nltk/nltk_data/blob/gh-pages/packages
/root/nltk_data/tokenizers/
/root/nltk_data/corpora/
3.#出现此错误
将/root/miniconda3/envs/ragflow/lib/python3.12/site-packages/azure/storage/filedatalake/文件夹下的_models.py中的18行修改为如图所示
4.#出现图片中的错误,运行下面的命令
pip install google-search-results
5.#若出现下面图片中的错误,可运行下面的命令
sudo apt update && sudo apt install -y unixodbc unixodbc-dev
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
安装成功的样式
6.2启动web
#进入web文件
cd /ragflow/web
#安装前端依赖项
npm install
#启动前端服务
npm run dev
成功启动的截图
点击红框中的网址即可进入web端(由于网络原因可能进入网页的速度较慢)如图
注意在使用的时候需要进入/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