当前位置: 首页 > news >正文

在macOS上从源码部署RAGFlow-0.14.1

 一、macOS配置


1. macOS配置

我使用MacBook Pro,chip 是 Apple M3 Pro,Memory是18GB,macOS是 Sonoma 14.6.1。

2.安装Docker和Docker compose

官方要求 Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1,我的版本如下:

docker -v
Docker version 27.0.3, build 7d4bcd8
docker-compose --version
Docker Compose version v2.28.1-desktop.1

  

二、安装和配置RAGFlow的前后端


1. 下载项目

进入想要安装ragflow的目录下,克隆项目,目前最新的版本是0.14.1。

git clone https://github.com/infiniflow/ragflow.git
cd ragflow/

2.安装 Python 依赖项

2.1安装 Poetry:
curl -sSL https://install.python-poetry.org | python3 -
poetry --version
Poetry (version 1.8.4)

出现 zsh: command not found: poetry , 错误是因为 Poetry 的安装目录未添加到环境变量 PATH 中。编辑~/.zshrc文件,将下面这行代码添加到文末(需要修改用户名)。添加完后运行source ~/.zshrc命令使更改生效。

export PATH="/Users/kuangfh/.local/bin:$PATH"
2.2  配置Poetry:
export POETRY_VIRTUALENVS_CREATE=true POETRY_VIRTUALENVS_IN_PROJECT=true
2.3 安装 Python 依赖项:

将创建一个名为 .venv 的虚拟环境,并将所有 Python 依赖项安装到新环境中。

~/.local/bin/poetry install --sync --no-root

三百多个依赖,大部份正常安装了,有一个错误:

at ~/Library/Application Support/pypoetry/venv/lib/python3.11/site-packages/poetry/installation/chef.py:164 in _prepare160│161│                 error = ChefBuildError("\n\n".join(message_parts))162│163│             if error is not None:→ 164│                 raise error from None165│166│             return path167│168│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:Note: This error originates from the build backend, and is likely not a problem with poetry but with xgboost (1.5.0) not supporting PEP 517 builds. You can verify this by running 'pip wheel --no-cache-dir --use-pep517 "xgboost (==1.5.0)"'.

这个问题的核心是 xgboost 包的版本 1.5.0 不支持 PEP 517 构建标准,而 Poetry 默认使用 PEP 517 来处理依赖包的安装。

使用VS Code编辑 pyproject.toml 文件,在 [tool.poetry.dependencies] 部分,调整 xgboost 的版本范围,xgboost = "^1.6.0", 然后保存修改。

使用以下命令重新生成 poetry.lock 文件:

~/.local/bin/poetry lock

这将根据 pyproject.toml 文件的依赖定义,更新或重新生成 poetry.lock 文件。

完成后再次~/.local/bin/poetry install --sync --no-root尝试安装依赖,安装顺利完成。

2.4 启动第三方服务:

以下命令使用 Docker Compose 启动“基本”服务(MinIO、Elasticsearch、Redis 和 MySQL):

docker compose -f docker/docker-compose-base.yml up -d
2.5 更新第三方服务的主机端口设置

在 /etc/hosts 中添加以下行,将 docker/service_conf.yaml.template 中指定的所有主机解析为 127.0.0.1

127.0.0.1       es01 infinity mysql minio redis

在 docker/service_conf.yaml.template 中,将 mysql 端口更新为 5455,将 es 端口更新为 1200,如 docker/.env 中指定。

ragflow:host: ${RAGFLOW_HOST:-0.0.0.0}http_port: 9380
mysql:name: '${MYSQL_DBNAME:-rag_flow}'user: '${MYSQL_USER:-root}'password: '${MYSQL_PASSWORD:-infini_rag_flow}'host: '${MYSQL_HOST:-mysql}'port: 5455max_connections: 100stale_timeout: 30
minio:user: '${MINIO_USER:-rag_flow}'password: '${MINIO_PASSWORD:-infini_rag_flow}'host: '${MINIO_HOST:-minio}:9000'
es:hosts: 'http://${ES_HOST:-es01}:1200'username: '${ES_USER:-elastic}'password: '${ELASTIC_PASSWORD:-infini_rag_flow}'

三、启动 RAGFlow 后端服务

1. 注释掉 docker/entrypoint.sh 中的 nginx 行。

# /usr/sbin/nginx

2. 激活 Python 虚拟环境:

source .venv/bin/activate
export PYTHONPATH=$(pwd)

3. 如无法访问 HuggingFace,请将 HF_ENDPOINT 环境变量设置为使用镜像站点:

export HF_ENDPOINT=https://hf-mirror.com

4. 运行 entrypoint.sh 脚本以启动后端服务:

bash docker/entrypoint.sh

运行 entrypoint.sh 脚本以启动后端服务:

bash docker/entrypoint.sh

报错: NLTK 库无法找到 punkt_tab 资源,它是用于分词和标记化文本的模型。

运行python:

import nltk
nltk.download('punkt_tab')

报错:NLTK 在尝试加载 wordnet 资源时没有找到它。wordnet 是一个词汇数据库,通常用于自然语言处理任务,如词性标注和同义词查找。

import nltk
nltk.download('wordnet')

报错:% bash docker/entrypoint.sh docker/entrypoint.sh: line 8: /ragflow/docker/service_conf.yaml.template: No such file or directory,这个错误说明在执行 entrypoint.sh 脚本时,它尝试访问 /ragflow/docker/service_conf.yaml.template 文件,但该文件没有找到。

entrypoint.sh 中的路径修改为相对路径:

# replace env variables in the service_conf.yaml file
rm -rf ./conf/service_conf.yaml  # 使用相对路径
while IFS= read -r line || [[ -n "$line" ]]; do# Use eval to interpret the variable with default valueseval "echo \"$line\"" >> ./conf/service_conf.yaml  # 使用相对路径
done < ./docker/service_conf.yaml.template  # 使用相对路径

四、启动 RAGFlow 前端服务

1. 导航到 Web 目录并安装前端依赖项:

cd web
npm install --force

2. 将 .umirc.ts 中的 proxy.target 更新为 http://127.0.0.1:9380

3. 启动前端服务:

npm run dev 

此时将显示以下消息,其中显示前端服务的 IP 地址和端口号,运行结果如下:

% npm run dev> dev
> cross-env UMI_DEV_SERVER_COMPRESS=none umi devinfo  - [你知道吗?] 请求加载态、数据管理、避免竟态问题,用 react-query 帮你全部解决,详见 https://umijs.org/docs/max/react-query
info  - Umi v4.2.3
info  - Preparing...
info  - [icons] generate icons local:google, local:github
info  - [icons] generate icons local:google, local:github
info  - [plugin: ./node_modules/@umijs/plugins/dist/tailwindcss] tailwindcss service started
info  - [icons] generate icons local:google, local:github
Browserslist: caniuse-lite is outdated. Please run:npx update-browserslist-db@latestWhy you should do it regularly: https://github.com/browserslist/update-db#readmeRebuilding...Done in 370ms.
info  - MFSU eager strategy enabled
info  - [MFSU][eager] restored cache
Browserslist: caniuse-lite is outdated. Please run:npx update-browserslist-db@latestWhy you should do it regularly: https://github.com/browserslist/update-db#readme
[HPM] Proxy created: /api,/v1  -> http://127.0.0.1:9380/
event - [MFSU][eager] start build deps
info  - [MFSU] skip buildDeps╔════════════════════════════════════════════════════╗║ App listening at:                                  ║║  >   Local: http://localhost:9222                  ║
ready - ║  > Network: http://10.192.197.77:9222              ║║                                                    ║║ Now you can open browser with the above addresses↑ ║╚════════════════════════════════════════════════════╝
Browserslist: caniuse-lite is outdated. Please run:npx update-browserslist-db@latestWhy you should do it regularly: https://github.com/browserslist/update-db#readme
info  - [MFSU][eager] worker init, takes 667ms
event - [Webpack] Compiled in 2161 ms (1218 modules)
wait  - [Webpack] Compiling...
event - [MFSU][eager] start build deps
info  - [MFSU] skip buildDeps
event - [Webpack] Compiled in 196 ms (1189 modules)

五、访问 RAGFlow 服务

在 Web 浏览器中,输入 http://127.0.0.1:9222,确保端口号与上面屏幕截图中显示的端口号匹配。

在解析文档时报错: ModuleNotFoundError: No module named 'FlagEmbedding'。在pyproject.toml中有这样的代码: flagembedding = "1.2.10"

使用pip命令直接安装:

pip install FlagEmbedding==1.2.10
pip show FlagEmbedding

 

六、关闭前后端服务

pkill npm
pkill -f "docker/entrypoint.sh"

相关文章:

在macOS上从源码部署RAGFlow-0.14.1

一、macOS配置 1. macOS配置 我使用MacBook Pro&#xff0c;chip 是 Apple M3 Pro&#xff0c;Memory是18GB&#xff0c;macOS是 Sonoma 14.6.1。 2.安装Docker和Docker compose 官方要求 Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1&#xff0c;我的版本如下&#x…...

2-2-18-9 QNX系统架构之文件系统(二)

阅读前言 本文以QNX系统官方的文档英文原版资料为参考&#xff0c;翻译和逐句校对后&#xff0c;对QNX操作系统的相关概念进行了深度整理&#xff0c;旨在帮助想要了解QNX的读者及开发者可以快速阅读&#xff0c;而不必查看晦涩难懂的英文原文&#xff0c;这些文章将会作为一个…...

【经管数据】上市公司企业审计报告时滞数据、 年报披露时滞数据(2001-2022年)

测算方式&#xff1a;参考C刊《审计研究》窦笑晨&#xff08;2022&#xff09;老师的研究&#xff0c;从审计报告约定披露日期到审计报告实际披露日期之间的时间间隔。有关审计报告时滞的度量&#xff0c;现有研究大多采用资产负债表日与审计报告实际披露日期之间的间隔天数进行…...

debian ubuntu armbian部署asp.net core 项目 开机自启动

我本地的环境是 rk3399机器&#xff0c;安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库&#xff0c;但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…...

无人机地面遥控遥测技术与算法概述!

一、地面系统遥控检测核心技术 卫星遥测技术&#xff1a; 定义&#xff1a;卫星遥测技术是实现卫星与地面之间遥测数据传输的关键环节。 功能&#xff1a;传输卫星的状态信息、传感器采集的环境参数等。 关键技术&#xff1a; 调制解调技术&#xff1a;用于将数字遥测数据…...

游戏引擎学习第30天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾 在这段讨论中&#xff0c;重点是对开发过程中出现的游戏代码进行梳理和进一步优化的过程。 工作回顾&#xff1a;在第30天&#xff0c;回顾了前一天的工作&#xff0c;并提到今天的任务是继续从第29天的代码开始&#xff0c…...

Django drf 快速使用

1. 安装: pip install djangorestframework 2. 添加rest_framework到您的INSTALLED_APPS设置。 settings.pyINSTALLED_APPS [...rest_framework, ] 3. 定义模型 models.pyfrom django.db import modelsclass BookModel(models.Model):name models.CharField(max_length64)…...

机器学习介绍与实战:案例解析与未来展望

一、机器学习概述 1. 什么是机器学习&#xff1f; 机器学习&#xff08;Machine Learning, ML&#xff09;是一种通过数据训练模型&#xff0c;使计算机能够自动从经验中学习的技术。它旨在让计算机在没有显式编程的情况下&#xff0c;能够从数据中提取模式、进行预测或决策。…...

【SCT71401】3V-40V Vin, 150mA, 2.5uA IQ,低压稳压器,替代SGM2203

SCT71401 3V-40V Vin, 150mA, 2.5uA IQ&#xff0c;低压稳压器&#xff0c;替代SGM2203 描述 SCT71401系列产品是一款低压差线性稳压器&#xff0c;设计用于3 V至40 V &#xff08;45V瞬态输入电压&#xff09;的宽输入电压范围和150mA输出电流。SCT71401系列产品使用3.3uF…...

2024.12.3总结

继周一把PPT初稿弄出来后&#xff0c;今晚进行了转正预答辩&#xff0c;主管&#xff0c;导师&#xff0c;团队里能来听答辩的人都来了&#xff0c;讲完后&#xff0c;自己都觉得自己讲得不好&#xff0c;基本上是照着PPT念的。 写PPT&#xff0c;改PPT,不停的预演答辩的过程&…...

Redis探秘Sentinel(哨兵模式)

概述 Redis的高可用机制有持久化、复制、哨兵和集群。其主要的作用和解决的问题分别是&#xff1a; 持久化&#xff1a;持久化是最简单的高可用方法(有时甚至不被归为高可用的手段)&#xff0c;主要作用是数据备份&#xff0c;即将数据存储在硬盘&#xff0c;保证数据不会因进…...

Linux C/C++编程之静态库

【图书推荐】《Linux C与C一线开发实践&#xff08;第2版&#xff09;》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 (jd.com…...

strlen函数用法,模拟实现

一、strlen 函数用法 用来求字符串长度&#xff0c;从我们给的地址开始&#xff0c;往后数&#xff0c;直到遇到 \0 停止&#xff0c;返回数的个数&#xff0c;不包括 \0 返回值类型是无符号整形 char arr[ ]"bvcxz"; printf("%u ",strlen(arr)); …...

云原生后端:解锁高效可扩展应用的魔法世界

目录 一、云原生后端的崛起&#xff1a;时代的必然选择 二、云原生后端的基石&#xff1a;容器化与 Docker &#xff08;一&#xff09;容器化的概念与优势 &#xff08;二&#xff09;Docker&#xff1a;容器化的明星工具 三、微服务架构&#xff1a;云原生后端的灵魂 &…...

大数据新视界 -- Hive 数据湖架构中的角色与应用(上)(25 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

React高阶面试题目(六)

React的formik库 定义&#xff1a; Formik是一个用于在React应用程序中构建和处理表单数据的流行开源库。它提供了许多实用的组件和函数&#xff0c;使在React应用程序中处理表单数据变得更加轻松。 优点&#xff1a; 自动处理表单状态管理&#xff0c;无需手动编写大量的状态…...

容器运行应用及Docker命令

文章目录 一、使用容器运行Nginx应用1_使用docker run命令运行Nginx应用1 观察下载容器镜像过程2 观察容器运行情况 2_访问容器中运行的Nginx服务1 确认容器IP地址2 容器网络说明3 使用curl命令访问 二、Docker命令1_Docker命令获取帮助方法2_Docker官网提供的命令说明3_docker…...

【Go 基础】channel

Go 基础 channel 什么是channel&#xff0c;为什么它可以做到线程安全 Go 的设计思想就是&#xff1a;不要通过共享内存来通信&#xff0c;而是通过通信来共享内存。 前者就是传统的加锁&#xff0c;后者就是 channel。也即&#xff0c;channel 的主要目的就是在多任务间传递…...

windows10更新后system磁盘占用100%

windows10更新后system磁盘占用100% 现象&#xff1a; 解决办法&#xff1a; 打开服务禁用&#xff1a;Connected User Experiences and Telemetry 我现在已经把该服务禁用了&#xff0c;已经没有再出现不停写入的情况。 服务描述&#xff1a;“已连接的用户体验和遥测服务所…...

无人设备遥控器之防水性能篇

无人设备遥控器的防水性能是评估其耐用性和适应不同环境能力的重要指标。随着无人设备技术的不断发展&#xff0c;越来越多的遥控器在设计时融入了防水元素&#xff0c;以满足用户在不同天气条件下的使用需求。 一、防水等级与标准 无人设备遥控器的防水性能通常通过防水等级来…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...