【LLM】RAGFlow 本地安装&部署
GitHub 链接: ragflow
1. RAGFlow 简介
1.1 RAGFlow 是什么?
RAGFlow 是一款基于深度文档理解构建的开源 RAG(Retrieval-Augumented Generation)引擎。RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。
1.2 主要功能
- “Quality in, quality out”
- 基于深度文档理解,能够从各类复杂格式的非结构化数据中提取真知灼见。
- 真正在无限上下文(token)的场景下快速完成大海捞针测试。
- 基于模板的文本切片
- 不仅仅是智能,更重要的是可控可解释。
- 多种文本模板可供选择。
- 有理有据、最大程度降低幻觉(hallucination)
- 文本切片过程可视化,支持手动调整。
- 有理有据:答案提供关键引用的快照并支持追根溯源。
- 兼容各类异构数据源
- 支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据、网页等。
- 全程无忧、自动化的 RAG 工作流
- 全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
- 大语言模型 LLM 以及向量模型均支持配置。
- 基于多路召回、融合重排序。
- 提供易用的 API,可以轻松集成到各类企业系统。
1.3 系统架构
2. RAGFlow 本地安装及部署
2.1 前提条件
CPU ≥ 4核
RAM ≥ 16GB
Disk ≥ 50GB
Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1
注:若尚未安装 docker,则可参考博客【Docker 安装】手把手教你安装&配置 Docker
2.2 启动服务器
确保
vm.max_map_count
不小于 262144:如需确认
vm.max_map_count
的大小:sysctl vm.max_map_count
如果
vm.max_map_count
的值小于 262144,可以进行重置:# 设为 262144 sudo sysctl -w vm.max_map_count=262144
本次改动会在下次系统重启时被重置。如果希望做永久改动,还需要在
/etc/sysctl.conf
文件里更新vm.max_map_count
的值:# 编辑 sysctl.conf 文件 sudo vim /etc/sysctl.conf # sysctl.conf 中追加设置 vm.max_map_count=262144
克隆仓库:
git clone https://github.com/infiniflow/ragflow.git
注意事项:
如果需要下载不同于v0.18.0-slim
的 Docker 镜像,请在运行docker compose
启动服务前先更新 docker/.env 文件内的RAGFLOW_IMAGE
变量。比如可以通过设置RAGFLOW_IMAGE=infiniflow/ragflow:v0.18.0
来下载 RAGFLOW 镜像的v0.18.0
完整发行版。RAGFlow image tag Image size (GB) Has embedding models? Stable? v0.18.0 ≈9 √ Stable release v0.18.0-slim ≈2 × Stable release nightly ≈9 √ Unstable nightly build nightly-slim ≈2 × Unstable nightly build 注:如果遇到 Docker 镜像拉取不下来的问题,可以在 docker/.env 文件内根据变量
RAGFLOW_IMAGE
的注意提示选择华为云或者阿里云的相应镜像。- 华为云镜像名:
swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow
- 阿里云镜像名:
registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow
- 华为云镜像名:
进入 docker 文件夹修改
.env
文件- 这里修改RAGFlow Images 为自带 Embedding Model 的 v0.18.0
- 注意:若之前安装过 redis,则还需修改 redis 端口号
- 这里修改RAGFlow Images 为自带 Embedding Model 的 v0.18.0
利用提前编译好的 Docker 镜像启动服务器:
# 运行以下命令会自动下载 RAGFlow slim Docker 镜像 v0.18.0-slim。 cd ragflow/docker # 修改文件权限,否则会报错,详情见【踩坑记录】 chmod +x entrypoint.sh # Use CPU for embedding and DeepDoc tasks: docker compose -f docker-compose.yml up -d # To use GPU to accelerate embedding and DeepDoc tasks: # docker compose -f docker-compose-gpu.yml up -d
服务器启动成功后再次确认服务器状态:
docker logs -f ragflow-server
出现以下界面提示说明则服务器启动成功:
在浏览器中输入你的服务器对应的 IP 地址并登录 RAGFlow。
- 登录页面如下:
- 注册账号并登录之后即可开始 RAGFlow 之旅。
- 登录页面如下:
3. 踩坑记录
3.1 Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error durings container init: exec: “./entrypoint.sh”: permission denied: unknown.
- 报错页面如下:
- 问题分析及解决:
- 该问题为权限问题,修改对应权限即可解决
- 解决方法:
chmod +x entrypoint.sh