在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,chip 是 Apple M3 Pro,Memory是18GB,macOS是 Sonoma 14.6.1。 2.安装Docker和Docker compose 官方要求 Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1,我的版本如下&#x…...
2-2-18-9 QNX系统架构之文件系统(二)
阅读前言 本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个…...
【经管数据】上市公司企业审计报告时滞数据、 年报披露时滞数据(2001-2022年)
测算方式:参考C刊《审计研究》窦笑晨(2022)老师的研究,从审计报告约定披露日期到审计报告实际披露日期之间的时间间隔。有关审计报告时滞的度量,现有研究大多采用资产负债表日与审计报告实际披露日期之间的间隔天数进行…...
debian ubuntu armbian部署asp.net core 项目 开机自启动
我本地的环境是 rk3399机器,安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库,但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…...
无人机地面遥控遥测技术与算法概述!
一、地面系统遥控检测核心技术 卫星遥测技术: 定义:卫星遥测技术是实现卫星与地面之间遥测数据传输的关键环节。 功能:传输卫星的状态信息、传感器采集的环境参数等。 关键技术: 调制解调技术:用于将数字遥测数据…...
游戏引擎学习第30天
仓库: https://gitee.com/mrxiao_com/2d_game 回顾 在这段讨论中,重点是对开发过程中出现的游戏代码进行梳理和进一步优化的过程。 工作回顾:在第30天,回顾了前一天的工作,并提到今天的任务是继续从第29天的代码开始,…...
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. 什么是机器学习? 机器学习(Machine Learning, ML)是一种通过数据训练模型,使计算机能够自动从经验中学习的技术。它旨在让计算机在没有显式编程的情况下,能够从数据中提取模式、进行预测或决策。…...
【SCT71401】3V-40V Vin, 150mA, 2.5uA IQ,低压稳压器,替代SGM2203
SCT71401 3V-40V Vin, 150mA, 2.5uA IQ,低压稳压器,替代SGM2203 描述 SCT71401系列产品是一款低压差线性稳压器,设计用于3 V至40 V (45V瞬态输入电压)的宽输入电压范围和150mA输出电流。SCT71401系列产品使用3.3uF…...
2024.12.3总结
继周一把PPT初稿弄出来后,今晚进行了转正预答辩,主管,导师,团队里能来听答辩的人都来了,讲完后,自己都觉得自己讲得不好,基本上是照着PPT念的。 写PPT,改PPT,不停的预演答辩的过程&…...
Redis探秘Sentinel(哨兵模式)
概述 Redis的高可用机制有持久化、复制、哨兵和集群。其主要的作用和解决的问题分别是: 持久化:持久化是最简单的高可用方法(有时甚至不被归为高可用的手段),主要作用是数据备份,即将数据存储在硬盘,保证数据不会因进…...
Linux C/C++编程之静态库
【图书推荐】《Linux C与C一线开发实践(第2版)》_linux c与c一线开发实践pdf-CSDN博客《Linux C与C一线开发实践(第2版)(Linux技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 (jd.com…...
strlen函数用法,模拟实现
一、strlen 函数用法 用来求字符串长度,从我们给的地址开始,往后数,直到遇到 \0 停止,返回数的个数,不包括 \0 返回值类型是无符号整形 char arr[ ]"bvcxz"; printf("%u ",strlen(arr)); …...
云原生后端:解锁高效可扩展应用的魔法世界
目录 一、云原生后端的崛起:时代的必然选择 二、云原生后端的基石:容器化与 Docker (一)容器化的概念与优势 (二)Docker:容器化的明星工具 三、微服务架构:云原生后端的灵魂 &…...
大数据新视界 -- Hive 数据湖架构中的角色与应用(上)(25 / 30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
React高阶面试题目(六)
React的formik库 定义: Formik是一个用于在React应用程序中构建和处理表单数据的流行开源库。它提供了许多实用的组件和函数,使在React应用程序中处理表单数据变得更加轻松。 优点: 自动处理表单状态管理,无需手动编写大量的状态…...
容器运行应用及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,为什么它可以做到线程安全 Go 的设计思想就是:不要通过共享内存来通信,而是通过通信来共享内存。 前者就是传统的加锁,后者就是 channel。也即,channel 的主要目的就是在多任务间传递…...
windows10更新后system磁盘占用100%
windows10更新后system磁盘占用100% 现象: 解决办法: 打开服务禁用:Connected User Experiences and Telemetry 我现在已经把该服务禁用了,已经没有再出现不停写入的情况。 服务描述:“已连接的用户体验和遥测服务所…...
无人设备遥控器之防水性能篇
无人设备遥控器的防水性能是评估其耐用性和适应不同环境能力的重要指标。随着无人设备技术的不断发展,越来越多的遥控器在设计时融入了防水元素,以满足用户在不同天气条件下的使用需求。 一、防水等级与标准 无人设备遥控器的防水性能通常通过防水等级来…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
