RAG 框架中,RAGFlow、ChatFlow 在 RAG 方面更有优势,RAGFlow 的 Agent 模块(workflow)也比较强大,并且支持原生 GraphRAG(General 模式),可选自带一些本地模型,但相比 coze、dify 等开发框架和平台,RAGFlow 上手门槛略高。本文将说明在 WSL 中从源码部署 RAGFlow 的步骤和过程,降低新手配置、应用 RAGFlow 的学习门槛,因此诸如 docker 启动等操作在非 WSL 中是不必要的。很多小伙伴宁可使用 VMWare 也使用 WSL 的原因在于 WSL 默认会安装到系统盘,关于如何将 WSL 安装到非系统盘,以及 systemd 支持,将通过另一篇文章说明。
环境准备
--Windows 11 下的 Linux 子系统(debian 12+)
--安装 pipx、uv、nodejs/npm
apt update -y apt upgrade -y apt install pipx pkg-config python3-icu libjemalloc-dev -y pipx install uv export UV_INDEX=https://mirrors.aliyun.com/pypi/simple . ~/.bashrc #前后端分离部署可忽略 curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs npm install npm -g #reboot
安装完成后,重新加载配置以使 uv 路径配置全局生效。
-- Debian 11 升级至 12:WSL Debian 版本为 11,应升级至 12+,避免因默认 python 版本、jemalloc 等必要组件缺失或依赖版本问题导致部署失败。
-- 修改内核 vm.max_map_count 参数值由默认的 65530 为 262144。
sysctl -w vm.max_map_count=262144 #或者直接编辑文件以避免重启后被重置 #echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -p
部署
部署前应确保配置好代理环境或修改为国内源(docker、pip、npm、huggingface等)。
1.源码下载和 python 依赖安装
git clone https://github.com/infiniflow/ragflow.git cd ragflow/ uv sync --python 3.10 --all-extras
2.通过 Docker Compose 启动依赖的服务(可使用与官方兼容的自定义镜像)
在拉取镜像之前,可自行决定是否使用本地嵌入模型。打开 RAGFlow 项目目录下的 docker/.env 文件,默认 slim 镜像不包含嵌入模型,注释该行,取消注释完整版本镜像的注释,就会拉取、加载包括 embedding 模型的镜像,大约增加 2G 的空间要求,支持 CPU。
#WSL应确保 docker 已启动,应添加配置 /etc/wsl.conf #systemctl enable docker #service docker start docker compose -f docker/docker-compose-base.yml up -d
3.添加 /etc/hosts 添加解析
修改 hosts 文件,旨在将 conf/service_conf.yaml 文件中的所有 host 地址都解析为 localhost/127.0.0.1,也可以直接修改 service_conf.yaml 文件。
echo "127.0.0.1 es01 infinity mysql minio redis" >> /etc/hosts
4.启动后端服务
-- 配置 nltk 依赖
可以使用 pip3 安装 nltk_data,如果是在启动过程中因 nltk 数据加载出现问题,也可参考下文手动配置 punkt_tab、averaged_perceptron_tagger 和 wordnet。
python3 -m nltk.downloader punkt_tab python3 -m nltk.downloader averaged_perceptron_tagger python3 -m nltk.downloader wordnet
Debian 下需要在 RAGFlow 项目目录下虚拟环境的 .venv 中创建 nltk_data 目录及corpora、taggers、tockenizers 子目录,分别放置 RAGFlow 所必须的 nltk 工具依赖数据,包括 punkt_tab、averaged_perceptron_tagger 和 wordnet 数据。数据文件可通过 https://www.nltk.org/nltk_data/ 下载,或者直接点击「这里」下载作者压缩打包的 nltk_data 数据文件,解压至任意搜索目录即可。(备注:默认应解压至 .venv 虚拟环境目录下)
-- 启动后端服务
source .venv/bin/activate export PYTHONPATH=$(pwd) bash docker/launch_backend_service.sh
经过一段时间的初始化,RAGFlow 即可成功启动。打开浏览器,访问后端 URL ,显示 {"code":100,"data":null,"message":"<NotFound '404: Not Found'>"} 说明后端启动成功。
5.安装前端依赖
RAGFlow 前端采用 react+tailwind,分离部署,不需要的话可以忽略。
cd web npm install
6.启动前端
npm run dev
Windows 下,打开浏览器访问 localhost:9222 即可登录 ragflow 进行配置和知识库、agent等的建立。
至此就完成了从源码部署 RAGFlow,相比 docker 部署,自由度大为提高,相比 windows 下部署,通过 WSL 是最快、最简单搭建 RAGFlow 开发环境的方法。更多精彩,敬请关注「老E的博客」!
文章评论