RAGFlow是一种融合了数据检索与生成式模型的新型系统架构,其核心思想在于将大规模检索系统与先进的生成式模型(如Transformer、GPT系列)相结合,从而在回答查询时既能利用海量数据的知识库,又能生成符合上下文语义的自然语言回复。该系统主要包含两个关键模块:数据检索模块和生成模块。数据检索模块负责在海量数据中快速定位相关信息,而生成模块则基于检索结果生成高质量的回答或文本内容。
在实际应用中,RAGFlow能够在客户服务、问答系统、智能搜索、内容推荐等领域发挥重要作用,通过检索与生成的双重保障,显著提升系统的响应速度和准确性。
RAGFlow安装
项目地址:https://github.com/infiniflow/ragflow
wsl安装
安装 WSL文档: https://learn.microsoft.com/zh-cn/windows/wsl/install
WSL基本命令:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands
1、管理员权限打开powershell命令
#启动wsl子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux
/all /norestart
#启用虚拟机平台支持
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all
/norestart
#设置wsl2
wsl --set-default-version 2
也可以手动选择:

RAGFlow最终完成版安装步骤
采用docker安装,没有的需要安装下:https://blog.csdn.net/YXWik/article/details/128254108
ragflow项目地址:https://github.com/infiniflow/ragflow
下载项目

解压

修改修改镜像为国内镜像 F:\ragflow-main\docker 文件夹下的 .env文件中的RAGFLOW_IMAGE
RAGFLOW_IMAGE=docker-0.unsee.tech/infiniflow/ragflow:v0.17.0

在.env文件中,使用镜像地址就行:HF_ENDPOINT=https://hf-mirror.com

docker-compose-base.yml 配置更改如下
redis:image: valkey/valkey:8container_name: ragflow-redisentrypoint: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--maxmemory", "128mb", "--maxmemory-policy", "allkeys-lru"]env_file: .envports:- ${REDIS_PORT}:6379volumes:- redis_data:/datanetworks:- ragflowrestart: on-failure

更换镜像:
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"debug": true,"experimental": true,"insecure-registries": [],"registry-mirrors": ["https://docker-0.unsee.tech","https://docker-cf.registry.cyou","https://docker.1panel.live"]
}

在 F:\ragflow-main\docker 目录下打开cmd命令窗口

docker compose -f docker-compose.yml up -d
RAGFlow安装(每一步的踩坑记录)
采用docker安装,没有的需要安装下:https://blog.csdn.net/YXWik/article/details/128254108
ragflow项目地址:https://github.com/infiniflow/ragflow
下载项目

解压

修改修改镜像为国内镜像 F:\ragflow-main\docker 文件夹下的 .env文件中的RAGFLOW_IMAGE
RAGFLOW_IMAGE=docker-0.unsee.tech/infiniflow/ragflow:v0.17.0

在 F:\ragflow-main\docker 目录下打开cmd命令窗口

下载项目的依赖镜像和环境
docker compose -f docker-compose.yml up -d
遇到如下报错

更换镜像:
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"debug": true,"experimental": true,"insecure-registries": [],"registry-mirrors": ["https://docker-0.unsee.tech","https://docker-cf.registry.cyou","https://docker.1panel.live"]
}

重新下载项目的依赖镜像和环境
docker compose -f docker-compose.yml up -d

安装并启动成功后查看 RAGFlow 访问路径

按照提示注册登录即可

注册报错network abnormal或 网络异常 ,因为 RAGFlow 可能并未完全启动成功。
docker中卸载了重新安装
再次启动发现报错WARNING:root:RedisDB.queue_info rag_flow_svr_queue got exception: no such key

我们看上面的日志 发现 redis连接的库是 1 库,一会直连redis,查看1库的中 rag_flow_svr_queue key的情况

先在.env中找到redis的密码

infini_rag_flow

查看docker中运行的服务
docker ps

进入redis容器
docker exec -it ragflow-redis bash
检查是否存在rag_flow_svr_queue的key,infini_rag_flow 为上面查到的redis密码
redis-cli -h redis -p 6379 -n 1 -a infini_rag_flow EXISTS rag_flow_svr_queue

这里的 -n 1 代表的 1 库
不存在,咱们创建 rag_flow_svr_queue 的key,默认给个空字符串(先别着急执行后续的这些命令,问题不在redis初始化的key上,往下面看)
redis-cli -h redis -p 6379 -n 1 -a infini_rag_flow RPUSH rag_flow_svr_queue ""


exit退出

再次查看日志
docker logs -f ragflow-server

报错变成了:
WARNING:root:RedisDB.queue_info rag_flow_svr_queue got exception: WRONGTYPE Operation against a key holding the wrong kind of value
这意思是说 我们 rag_flow_svr_queue 对应的value的类型不正确,我们当时设置的是字符串类型

查找源码,找到rag_flow_svr_queue ,发现需要的是list类型

连接redis 删除rag_flow_svr_queue
docker exec -it ragflow-redis bash

删除
redis-cli -h redis -p 6379 -n 1 -a infini_rag_flow DEL rag_flow_svr_queue

新增 rag_flow_svr_queue 的key,将 value设置为空list
redis-cli -h 127.0.0.1 -p 6379 -a infini_rag_flow -n 1 RPUSH rag_flow_svr_queue ""

退出:exit

查看日志 docker logs -f ragflow-server
报错: WARNING:root:RedisDB.queue_info rag_flow_svr_queue got exception: WRONGTYPE Operation against a key holding the wrong kind of value

去官网看看有啥解决方案:https://github.com/infiniflow/ragflow
看了好几个 issues 发现都有这个key不存在报错

这个评论说不带端口运行

再次访问http://localhost/ 进行注册发现成功了 ,盲猜一波最初注册报错是不是因为项目启动加载过慢导致了,稍微等等就可以了,还是因为我初始化了redis的key解决了,虽然出现了另一个报错,但是看起来并不影响


建立知识库

我这边本地使用的ollama,配置的千问模型:https://blog.csdn.net/YXWik/article/details/143871588

默认的ollama是这个端口
http://127.0.0.1:11434
ollama是windows的docker启动,则使用
http://host.docker.internal:11434/
查看ollama安装的模型
ollama list

添加模型

报错:Fail to access model(qwen2.5:7b).**ERROR**: [Errno 111] Connection refused
RAG访问容器内的11434端口造成的访问失败
更改为以下:
http://host.docker.internal:11434/


点击系统模型设置配置聊天模型

创建知识库

上传知识库文件

设置解析规则


这里在解析状态后面有个绿色的开始键点击开始解析

虽有redis的报错,但是稍等一下会开始解析,并没有什么影响

如果解析进度一直不动,是因为部署环境因为网络无法访问 huggingface.co ,导致本地模型无法下载

解决方案要么开启科学上网,要么设置代理
设置代理:在.env文件中,使用镜像地址就行:HF_ENDPOINT=https://hf-mirror.com

然后删除任务重启Docker


重启Docker后ragflow卡住了,将ragflow进行一个重启

重启之后开始重新解析我发现它还卡在这个位置,我就去redis中查找相关的key,发现redis中一个key也没有,但是redis的状态是启动的

查看日志我发现ragflow一直连接不上redis

我发现一个问题,我用redis客户端工具连接redis时发现不输入密码可以连接成功,但是ragflow配置文件中设置的redis密码是infini_rag_flow
Docker 容器的服务的配置中设置是有相关初始化配置的,但很显然这个配置没有生效

连接redis,查看器配置文件
docker ps
docker exec -it ragflow-redis /bin/bash

检查 Redis 是否正在运行:
pidof redis-server

查看 Redis 启动参数:
cat /proc/1/cmdline | tr '\0' ' '

以上截图表明 Redis 是以默认方式启动的,并未包含 --requirepass 参数。因此,Redis 没有启用密码验证,但我们查看启动配置文件时发现时有配置密码的。
命令查看,或者在Docker中查看
docker inspect ragflow-redis


既然配置文件没有问题,那下一步我们排查它的启动脚本 docker-entrypoint.sh

在redis的Docker容器中查看entrypoint.sh
cat /usr/local/bin/docker-entrypoint.sh

从 docker-entrypoint.sh 脚本的内容来看,问题的根本原因已经明确:脚本默认启动的是 valkey-server,而不是 redis-server。因此,即使在启动容器时传递了 redis-server 和相关参数(如 --requirepass),这些参数也被脚本忽略了。

怎么处理呢,找到 docker-compose-base.yml配置文件,覆盖入口脚本来强制使用 redis-server,而不是 valkey-server,在配置文件中找到redis的启动命令和参数配置进行更改
redis:image: valkey/valkey:8container_name: ragflow-redisentrypoint: ["redis-server", "--requirepass", "${REDIS_PASSWORD}", "--maxmemory", "128mb", "--maxmemory-policy", "allkeys-lru"]env_file: .envports:- ${REDIS_PORT}:6379volumes:- redis_data:/datanetworks:- ragflowrestart: on-failure

改完之后删除
docker stop ragflow-redis
docker rm ragflow-redis
docker volume rm docker_redis_data

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

重启之后再进入redis 进行查看
docker exec -it ragflow-redis redis-cli
AUTH infini_rag_flow
SELECT 1
keys *

如果存在key将其删除
del task_consumer_0

回到页面将原数据集删除后,重新添加并点击解析,发现报错没了

稍等一会儿解析成功

配置助理

选择知识库

测试

ragflow官网的给出一些常见问题的解决方案:https://ragflow.io/docs/dev/faq#issues-with-ragflow-backend-services