RAGFlow是一个基于深度文档理解的开源 RAG(检索增强生成)引擎。当与大型语言模型(LLMs)结合时,它能够提供可靠的问答能力,并且可以引用各种复杂格式数据中的内容作为依据。现目前也算是主流的开源知识库管理应用之一,安装过程中需要一堆依赖,好在有docker让步骤变得容易。

1.硬件需求

这个安装必须使用docker了,手动部署安装过于折磨。官方提供了详细的安装教程,Quick start | RAGFlow

提到了硬件要求:

  • CPU ≥ 4 cores (x86);
  • RAM ≥ 16 GB;
  • Disk ≥ 50 GB;
  • Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1.

需要修改当前系统的最大虚拟内存区域数量限制:

image-20250224170026853.webp

Linux直接使用sudo sysctl -w vm.max_map_count=262144,配置即可。重启后会失效,持久化修改,需要修改配置文件/etc/sysctl.conf

2.克隆仓库并选择镜像源

# 拉取镜像
git clone https://github.com/infiniflow/ragflow.git

# 进入配置文件
cyqsd@cyqsd-MS-7D90:~/Project/ragflow/docker$ ls -a
.                        docker-compose-CN-oc9.yml      docker-compose-macos.yml                                     entrypoint-parser.sh  infinity_conf.toml         nginx         service_conf.yaml.template
..                       docker-compose-gpu-CN-oc9.yml  entrypoint.sh         init.sql                   ragflow-logs
docker-compose-base.yml  docker-compose-gpu.yml         docker-compose.yml                                           .env                  launch_backend_service.sh  README.md

编辑.env文件:

image-20250224173014223.webp

# If you cannot download the RAGFlow Docker image:
#
# - For the `nightly-slim` edition, uncomment either of the following:
# RAGFLOW_IMAGE=swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow:nightly-slim
RAGFLOW_IMAGE=registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly-slim

我是用的阿里云的源。

3.选择要拉取的镜像

写本文时,版本号为:v0.16.0,官方有如下版本可选:

RAGFlow image tagImage size (GB)Has embedding models and Python packages?Stable?
v0.16.0≈9✔️Stable release
v0.16.0-slim≈2Stable release
nightly≈9✔️Unstable nightly build
nightly-slim≈2Unstable nightly build

每夜版nightly就不安装了。slim是不带嵌入式模型的,要小一点,镜像大约2G,因为后面要使用ollama连接,选不选都无所谓。

然后使用下面的命令进行安装, docker-compose-CN-oc9.yml, docker-compose-gpu-CN-oc9.yml, or docker-compose-gpu.yml是不积极维护的配置文件,具体版本差异,见官方文档:Configurations | RAGFlow

docker compose -f docker-compose.yml up -d

如果运行出错可以使用docker logs -f ragflow-server,查看运行日志。如果还没有安装docker/compose,可以上官网先安装:docker/compose: Define and run multi-container applications with Docker

2025-02-11 011622.webp

2025-02-11 011359.webp

完成后,会创建下面的一堆容器:

CONTAINER ID   IMAGE                                                               COMMAND                  CREATED       STATUS                 PORTS                                                                                                                       NAMES
994e8d245364   registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow:nightly-slim   "./entrypoint.sh"        13 days ago   Up 13 days             0.0.0.0:9380->9380/tcp, :::9380->9380/tcp, 0.0.0.0:8000->80/tcp, :::8000->80/tcp, 0.0.0.0:4433->443/tcp, :::4433->443/tcp   ragflow-server
412e90c800d8   quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z                    "/usr/bin/docker-ent…"   13 days ago   Up 13 days             0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp                                                               ragflow-minio
3f4567c0cd56   valkey/valkey:8                                                     "docker-entrypoint.s…"   13 days ago   Up 13 days             0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                                                                   ragflow-redis
122001b65974   docker.elastic.co/elasticsearch/elasticsearch:8.11.3                "/bin/tini -- /usr/l…"   13 days ago   Up 13 days (healthy)   9300/tcp, 0.0.0.0:1200->9200/tcp, :::1200->9200/tcp                                                                         ragflow-es-01
ceb04c461711   mysql:8.0.39                                                        "docker-entrypoint.s…"   13 days ago   Up 13 days (healthy)   33060/tcp, 0.0.0.0:5455->3306/tcp, :::5455->3306/tcp                                                                        ragflow-mysql

配置ollama

注册账号后登录,选择模型提供商

image-20250224164745931.webp

选择ollama添加模型

  • key并未使用,可以不填
  • 最大token数,根据模型情况填写
  • 如需其他模型提供商可以查看:Supported models | RAGFlow

image-20250224165636260.webp

需要手动填写连接信息。然后等待添加完成。

image-20250224165736415.webp

此处测试的模型依旧是:

  • 嵌入模型:bge-m3:latest
  • 推理模型:deepseek-r1:32b 和 14b

使用体验

image-20250224164609817.webp

image-20250224164622361.webp

API接口列表直接就在本页面,或者在官方文档中查看:HTTP API | RAGFlow

image-20250224174245029.webp

image-20250224174255136.webp

自带的数据集解析功能支持的文件格式:DOCX,EXCEL、PPT、IMAGE、PDF、TXT、MD、JSON、EML、HTML可以。相比MaxKB这种支持压缩包的就稍差一点,但是也算覆盖全面了。

image-20250224174306712.webp

image-20250224174352349.webp

解析方法可手动调整。

image-20250224174321233.webp

可使用文本对知识库的内容进行预测,并返回准确率。

image-20250224174418890.webp

image-20250224174426601.webp

创建智能体

image-20250224174503930.webp

Agent是RAGFlow的一大功能亮点之一,具有完善的图形化、流程化处理步骤,不比商用平台差多少。截图中的例子是文本转SQL语句。

image-20250224174517506.webp

image-20250224174617137.webp

捣鼓到这里,本文就结束了。从各项依赖中就可以看出,RAGFlow确实是一个功能完善,偏向商业应用的知识库框架,中文的本地化、大模型的提供商、API接口都很全面。