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