RAGFlow安装+本地知识库+踩坑记录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android liveData observeForever 与 observe对比

LiveData 是一个非常有用的组件,用于在数据变化时通知观察者。LiveData 提供了两种主要的观察方法:observe 和 observeForever。这两种方法在使用场景、生命周期感知以及内存管理等方面有所不同。 一、observe 方法​​ ​​1. 基本介绍​​ ​​生命周期感知​​:observe…

web-ssrfme

一、题目源码 <?php highlight_file(__file__); function curl($url){ $ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);echo curl_exec($ch);curl_close($ch); }if(isset($_GET[url])){$url $_GET[url];if(preg_match(/file…

企业AI应用模式解析:从本地部署到混合架构

在人工智能快速发展的今天&#xff0c;企业如何选择合适的大模型应用方式成为了一个关键问题。本文将详细介绍六种主流的企业AI应用模式&#xff0c;帮助您根据自身需求做出最优选择。 1. 本地部署&#xff08;On-Premise Deployment&#xff09; 特点&#xff1a;将模型下载…

OpenCV 图形API(49)颜色空间转换-----将 NV12 格式的图像数据转换为 BGR 颜色空间函数NV12toBGR()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将图像从NV12&#xff08;YUV420p&#xff09;颜色空间转换为BGR。 该函数将输入图像从NV12颜色空间转换为RGB。Y、U和V通道值的常规范围是0到25…

【java实现+4种变体完整例子】排序算法中【桶排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格

以下是桶排序的详细解析&#xff0c;包含基础实现、常见变体的完整代码示例&#xff0c;以及各变体的对比表格&#xff1a; 一、桶排序基础实现 原理 将数据分到有限数量的桶中&#xff0c;每个桶内部使用其他排序算法&#xff08;如插入排序或快速排序&#xff09;&#xf…

Linux[基本指令]

Linux[基本指令] pwd 查看当前所处的工作目录 斜杠在Linux中作为路径分割符 路径存在的价值为了确定文件的唯一性 cd指令 更改路径 cd 你要去的路径(直接进入) cd . 当前目录 cd . . 上级目录(路径回退) 最后的’/为根目录(根节点) Linux还是window的目录结构都是树状…

git -- 对远程仓库的操作 -- 查看,添加(与clone对比),抓取和拉取,推送(注意点,抓取更新+合并的三种方法,解决冲突,对比),移除

目录 对远程仓库的操作 介绍 查看 (git remote) 介绍 查看详细信息 添加(git remote add) 介绍 与 git clone对比 从远程仓库中抓取与拉取 抓取(git fetch) 拉取(git pull) 推送(git push) 介绍 注意 抓取更新合并的方法 git fetch git merge 解决冲突 git …

vue3 excel文件导入

文章目录 前言使用在vue文件中的使用 前言 最近写小组官网涉及到了excel文件导入的功能 场景是导入小组成员年级 班级 邮箱 组别 姓名等基本信息的excel表格用于展示各组信息 使用 先下载js库 npm install xlsx为了提高代码的复用性 我将它写成了一个通用的函数 import ap…

Docker环境下SpringBoot程序内存溢出(OOM)问题深度解析与实战调优

文章目录 一、问题背景与现象还原**1. 业务背景****2. 故障特征****3. 核心痛点****4. 解决目标** 二、核心矛盾点分析**1. JVM 与容器内存协同失效****2. 非堆内存泄漏****3. 容器内存分配策略缺陷** 三、系统性解决方案**1. Docker 容器配置**2. JVM参数优化&#xff08;容器…

【PGCCC】Postgres MVCC 内部:更新与插入的隐性成本

为什么 Postgres 中的更新操作有时感觉比插入操作慢&#xff1f;答案在于 Postgres 如何在后台管理数据版本。 Postgres 高效处理并发事务能力的核心是多版本并发控制&#xff08;MVCC&#xff09;。 在本文中&#xff0c;我将探讨 MVCC 在 Postgres 中的工作原理以及它如何影响…

Docker使用、容器迁移

Docker 简介 Docker 是一个开源的容器化平台&#xff0c;用于打包、部署和运行应用程序及其依赖环境。Docker 容器是轻量级的虚拟化单元&#xff0c;运行在宿主机操作系统上&#xff0c;通过隔离机制&#xff08;如命名空间和控制组&#xff09;确保应用运行环境的一致性和可移…

c#清理释放内存

虽然c#具有内存管理和垃圾回收机制&#xff0c;但是在arcobjects二次开发嵌入到arcgis data reviewet还会报内存错误。需要强制清理某变量内存方法如下: 1设置静态函数ReleaseCom函数 public static void ReleaseCom(object o) { try{System.Runtime.InteropServices.Marsh…

Linux:进程:进程控制

进程创建 在Linux中我们使用fork函数创建新进程&#xff1a; fork函数 fork函数是Linux中的一个系统调用&#xff0c;用于创建一个新的进程&#xff0c;创建的新进程是原来进程的子进程 返回值&#xff1a;如果子进程创建失败&#xff0c;返回值是-1。如果子进程创建成功&a…

day1-小白学习JAVA---JDK安装和环境变量配置(mac版)

JDK安装和环境变量配置 我的电脑系统一、下载JDK1、oracle官网下载适合的JDK安装包&#xff0c;选择Mac OS对应的版本。 二、安装三、配置环境变量1、终端输入/usr/libexec/java_home -V查询所在的路径&#xff0c;复制备用2、输入ls -a3、检查文件目录中是否有.bash_profile文…

Python项目--基于机器学习的股票预测分析系统

1. 项目介绍 在当今数字化时代&#xff0c;金融市场的数据分析和预测已经成为投资决策的重要依据。本文将详细介绍一个基于Python的股票预测分析系统&#xff0c;该系统利用机器学习算法对历史股票数据进行分析&#xff0c;并预测未来股票价格走势&#xff0c;为投资者提供决策…

计算机视觉与深度学习 | 基于YOLOv8与光流法的目标检测与跟踪(Python代码)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 目标检测与跟踪 关键实现逻辑检测-跟踪协作机制‌特征点选择策略‌运动…

Java集合及面试题学习

知识来源沉默王二、小林coding、javaguide 1、ArrayList list.add("66") list.get(2) list.remove(1) list.set(1,"55") List<String> listnew ArrayList<>(); 底层是动态数组 添加元素流程&#xff1a;判断是否扩容&#xf…

OSPF --- LSA

文章目录 一、OSPF LSA&#xff08;链路状态通告&#xff09;详解1. LSA通用头部2. OSPFv2 主要LSA类型a. Type 1 - Router LSAb. Type 2 - Network LSAc. Type 3 - Summary LSAd. Type 4 - ASBR Summary LSAe. Type 5 - AS External LSAf. Type 7 - NSSA External LSA 3. LSA泛…

Spring Boot 框架介绍及 Spring Boot 与 Spring 实现对比

在日常 Java Web 开发中&#xff0c;Spring 框架几乎是绕不开的技术体系。传统的 Spring 项目因其灵活强大而被广泛应用&#xff0c;但随着项目规模扩大与业务复杂度提升&#xff0c;XML 配置繁琐、部署复杂等问题逐渐显现。为此&#xff0c;Spring Boot 应运而生。 Spring Boo…

基于CNN卷积神经网络和GEI步态能量提取的视频人物步态识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 GEI步态能量提取 4.2 CNN卷积神经网络原理 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2024b/matlab2022a 3.部分核心程序 &…