macOS 上部署 RAGFlow

在 macOS 上从源码部署 RAGFlow-0.14.1:详细指南

一、引言

RAGFlow 作为一款强大的工具,在人工智能领域应用广泛。本文将详细介绍如何在 macOS 系统上从源码部署 RAGFlow 0.14.1 版本,无论是开发人员进行项目实践,还是技术爱好者探索新工具,都能从这篇指南中获取清晰、实用的部署步骤。

二、部署前准备

(一)系统配置检查
本次部署以配备 Apple M3 Pro 芯片、18GB 内存且运行 Sonoma 14.6.1 系统的 MacBook Pro 为例。在部署前,需确认你的设备配置与之相当或更优,以确保部署过程顺利及后续使用体验。
(二)安装 Docker 和 Docker Compose
版本要求:RAGFlow 官方明确规定,部署所需的 Docker 版本需大于等于 24.0.0,Docker Compose 版本需大于等于 v2.26.1。
安装与检查:若尚未安装,前往 Docker 官方网站下载并安装对应版本。安装完成后,在终端分别输入以下命令检查版本:

docker -v
docker-compose --version

若已安装但版本不满足要求,需及时更新到指定版本。若显示的版本符合要求,则可继续后续步骤。
三、安装和配置 RAGFlow 的前后端
(一)下载项目
打开终端,进入你期望安装 RAGFlow 的目录,执行以下命令克隆项目仓库:

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

这一步将把 RAGFlow 项目的源代码下载到本地指定目录,并进入该项目目录,为后续安装和配置做准备。
(二)安装 Python 依赖项
安装 Poetry:Poetry 是 Python 项目依赖管理的重要工具,在终端执行以下命令进行安装:

curl -sSL https://install.python-poetry.org | python3 -

安装完成后,使用poetry --version检查版本。若出现zsh: command not found: poetry错误,这是因为 Poetry 的安装目录未被添加到系统环境变量PATH中。此时,需编辑~/.zshrc文件,在文件末尾添加(注意将kuangfh替换为你的用户名):

export PATH="/Users/kuangfh/.local/bin:$PATH"

添加完成后,运行source ~/.zshrc使更改生效,确保系统能够识别 Poetry 命令。
2. 配置 Poetry:在终端中设置 Poetry 的相关环境变量,以确保虚拟环境能按预期创建和使用:

export POETRY_VIRTUALENVS_CREATE=true 

安装依赖项:执行以下命令安装 Python 依赖项,这会创建一个名为.venv的虚拟环境,并将项目所需的所有 Python 依赖项安装到该环境中:

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

在安装过程中,若出现错误提示与xgboost包有关,这是因为xgboost 1.5.0 版本不支持 PEP 517 构建标准,而 Poetry 默认使用该标准处理依赖包安装。此时,使用 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,直至依赖安装成功。
4. 启动第三方服务:使用 Docker Compose 启动 “基本” 服务,其中包括 MinIO、Elasticsearch、Redis 和 MySQL,在终端输入以下命令:

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

这将在后台启动这些服务,为 RAGFlow 的运行提供必要的支持。
在这里插入图片描述

  1. 更新第三方服务的主机和端口设置:首先,在/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文件,按照docker/.env中的指定,将mysql端口更新为5455,将es端口更新为1200 。修改后的内容大致如下:

yamlragflow:
  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: 5455
  max_connections: 100
  stale_timeout: 30m
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 后端服务
注释 nginx 行:使用文本编辑器打开docker/entrypoint.sh文件,找到/usr/sbin/nginx这一行,在其开头添加#符号,将其注释掉,修改后的内容如下:

# /usr/sbin/nginx

激活虚拟环境:在终端执行以下命令,激活之前创建的 Python 虚拟环境,并设置PYTHONPATH环境变量:

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

设置 HuggingFace 镜像站点(可选):若在部署过程中无法访问 HuggingFace,可在终端设置HF_ENDPOINT环境变量为镜像站点地址,例如:

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

启动后端服务:在终端执行以下命令启动后端服务:

bash docker/entrypoint.sh

在这里插入图片描述

若启动过程中遇到 NLTK 库相关报错,提示找不到punkt_tab资源或wordnet资源,分别运行以下命令进行下载:

python import nltk
nltk.download('punkt_tab')
nltk.download('wordnet')

若出现docker/entrypoint.sh: line 8: /ragflow/docker/service_conf.yaml.template: No such file or directory错误,需将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 values
    eval "echo \"$line\"" >> ./conf/service_conf.yaml  # 使用相对路径
done < ./docker/service_conf.yaml.template  # 使用相对路径

修改完成后,重新执行bash docker/entrypoint.sh启动后端服务。
五、启动 RAGFlow 前端服务
安装前端依赖项:在终端进入web目录,执行以下命令安装前端依赖项:

cd web
npm install --force

更新代理配置:使用文本编辑器打开.umirc.ts文件,将proxy.target更新为http://127.0.0.1:9380 。
启动前端服务:在终端执行以下命令启动前端服务:

npm run dev

启动成功后,终端会显示前端服务的 IP 地址和端口号,根据提示信息可在浏览器中访问 RAGFlow 服务。
在这里插入图片描述

六、访问 RAGFlow 服务

打开 Web 浏览器,在地址栏输入前端服务显示的 IP 地址和端口号(例如http://127.0.0.1:9222 ,注意确保端口号与实际显示一致),即可访问 RAGFlow 服务。
在这里插入图片描述
在这里插入图片描述

若在解析文档时出现ModuleNotFoundError: No module named 'FlagEmbedding’错误,在终端使用pip命令安装该模块:

pip install FlagEmbedding==1.2.10
pip show FlagEmbedding

七、关闭前后端服务
当不再需要使用 RAGFlow 服务时,可在终端执行以下命令关闭前后端服务:

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

八、总结
通过以上详细的步骤,我们完成了在 macOS 上从源码部署 RAGFlow 0.14.1 的全过程。在部署过程中,每一步都至关重要,需仔细操作,尤其是环境变量的设置、依赖项的安装以及路径的配置等环节。若在部署过程中遇到问题,可参考文中的解决方案或进一步查阅相关资料。希望本文能帮助大家顺利部署 RAGFlow,开启人工智能应用开发之旅。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Core WebSocket、SignalR

目录 WebSocket SignalR SignalR的基本使用 WebSocket WebSocket基于TCP协议&#xff0c;支持二进制通信&#xff0c;双工通信。性能和并发能力更强。WebSocket独立于HTTP协议&#xff0c;不过我们一般仍然把WebSocket服务器端部署到Web服务器上&#xff0c;因为可以借助HT…

【蓝桥杯嵌入式】4_key:单击+长按+双击

全部代码网盘自取 链接&#xff1a;https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码&#xff1a;3ii2 1、电路图 将4个按键的引脚设置为input&#xff0c;并将初始状态设置为Pull-up&#xff08;上拉输入&#xff09; 为解决按键抖动的问题&#xff0c;我们…

五、AIGC大模型_01大模型基础知识

1、基本概念 1.1 定义 目前&#xff0c;谈到大模型&#xff0c;通常都指的是大语言模型&#xff08;LLMs&#xff0c;即&#xff1a;Large Language Models) 大语言模型是具有大规模参数和复杂计算结构的深度学习模型&#xff0c;通常由深度神经网络构建而成&#xff0c;参数…

微服务与网关

什么是网关 背景 单体项目中&#xff0c;前端只用访问指定的一个端口8080&#xff0c;就可以得到任何想要的数据 微服务项目中&#xff0c;ip是不断变化的&#xff0c;端口是多个的 解决方案&#xff1a;网关 网关&#xff1a;就是网络的关口&#xff0c;负责请求的路由、转发…

Spring Cloud工程完善

目录 完善订单服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 完成商品服务 启动类 配置文件 实体类 Controller Service Mapper 测试运行 远程调用 需求 实现 1.定义RestTemplate 2.修改order-service中的OrderService 测试运行 Rest…

网络安全网格架构(CSMA) 网络安全框架csf

CSRF:Cross Site Request Forgy&#xff08;跨站请求伪造&#xff09; 用户打开另外一个网站&#xff0c;可以对本网站进行操作或攻击。容易产生传播蠕虫。 CSRF攻击原理&#xff1a; 1、用户先登录A网站 2、A网站确认身份返回用户信息 3、B网站冒充用户信息而不是直接获取用…

数据库系统课设——教务管理系统

目录 前言 一、总体设计 1、知识背景 2、模块介绍&#xff08;需求分析&#xff09; 3、设计步骤 3.1 页面原型设计 3.2 前端页面开发 3.3 后端接口开发 3.4 数据库设计 二、详细设计 1、 系统功能模块划分 2、 数据流程图 3、数据库概念结构设计 4、 数据库逻辑…

论文概览 |《Cities》2024.12 Vol.155(上)

本次给大家整理的是《Cities》杂志2024年12月第152期的论文的题目和摘要&#xff0c;一共包括73篇SCI论文&#xff01;由于论文过多&#xff0c;我们将通过两篇文章进行介绍&#xff0c;本篇文章介绍第1--第30篇论文! 论文1 Digital economy and risk response: How the digita…

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息?

FANUC机器人示教器中如何显示或关闭寄存器或IO的注释信息? 如下图所示,我们打开一个子程序,可以看到程序中的寄存器和IO是显示注释信息的, 如果想关闭注释显示的话,怎么设置? 如下图所示,按下下一页的箭头(NEXT键), 如下图所示,点击“编辑”,在弹出的窗口中,选择“…

[QMT量化交易小白入门]-二十二、deepseek+cline+vscode,让小白使用miniQMT量化交易成为可能

本专栏主要是介绍QMT的基础用法&#xff0c;常见函数&#xff0c;写策略的方法&#xff0c;也会分享一些量化交易的思路&#xff0c;大概会写100篇左右。 QMT的相关资料较少&#xff0c;在使用过程中不断的摸索&#xff0c;遇到了一些问题&#xff0c;记录下来和大家一起沟通&a…

快速集成DeepSeek到项目

DeepSeek API-KEY 获取 登录DeekSeek 官网&#xff0c;进入API 开放平台 2. 创建API-KEY 复制API-KEY进行保存&#xff0c;后期API调用使用 项目中集成DeepSeek 这里只展示部分核心代码&#xff0c;具体请查看源码orange-ai-deepseek-biz-starter Slf4j AllArgsConstructo…

关于浏览器缓存的思考

问题情境 开发中要实现一个非原生pdf预览功能&#xff0c;pdf链接放在一个固定的后台地址&#xff0c;当重新上传pdf后&#xff0c;预览pdf仍然是上一次的pdf内容&#xff0c;没有更新为最新的内容。 查看接口返回状态码为 200 OK(from disk cache)&#xff0c; 表示此次pdf返回…

MAAS | Ollama 搭建本地 AI 大模型 deepseekWeb 界面调用

目录 一、环境准备二、安装 Ollama三、下载并部署 DeepSeek 模型四、简单交互五、通过 Web 界面调用大模型 在当今人工智能快速发展的时代&#xff0c;本地部署大语言模型赋予了用户更高的灵活性和个性化服务体验。本文介绍了如何准备环境、安装Ollama框架、下载并部署DeepSeek…

C++ ——从C到C++

1、C的学习方法 &#xff08;1&#xff09;C知识点概念内容比较多&#xff0c;需要反复复习 &#xff08;2&#xff09;偏理论&#xff0c;有的内容不理解&#xff0c;可以先背下来&#xff0c;后续可能会理解更深 &#xff08;3&#xff09;学好编程要多练习&#xff0c;简…

Baklib助力内容中台实施最佳实践的关键要素与成功案例

内容概要 内容中台的实施对于现代企业在数字化转型过程中具有重要的战略意义。内容中台不仅提升内容管理的效率&#xff0c;还能为企业提供更灵活的内容运营能力。在实施过程中&#xff0c;关键在于了解如何构建有效的架构设计、选择适合的技术、以及促进团队协作。尤其是像Ba…

选择 JxBrowser 还是 SWT Browser

当您需要在 SWT 应用程序中显示网页内容时&#xff0c;通常有两种选择&#xff1a;内置的 Browser 小部件或像 JxBrowser 这样的商业选项。 本文将详细剖析两者之间的差异&#xff0c;帮助您根据自身需求做出正确选择。 简而言之 内置的 Browser 是一个简单但功能可靠的小部…

RoboGrasp:一种用于稳健机器人控制的通用抓取策略

25年1月来自北京大学和哈佛大学的论文“RoboGrasp: A Universal Grasping Policy for Robust Robotic Control”。 模仿学习和世界模型在推进通用机器人学习方面显示出巨大的潜力&#xff0c;而机器人抓取仍然是实现精确操控的关键挑战。现有方法通常严重依赖机械臂状态数据和…

金仓数据库-KingbaseES-学习-01-单机部署(非图形化安装)

目录 一、环境信息 二、介绍 三、下载地址 四、安装步骤 1、配置内核参数 &#xff08;1&#xff09;文件系统相关 &#xff08;2&#xff09;共享内存与信号量&#xff08;IPC&#xff09; &#xff08;3&#xff09;网络与端口配置 &#xff08;4&#xff09;关键场…

双周报Vol.65:新增is表达式、字符串构造和数组模式匹配增强、IDE模式匹配补全增强...多项技术更新!

MoonBit更新 新增 is 表达式 这个表达式的语法形式为 expr is pat&#xff0c;这个表达式为 Bool 类型&#xff0c;当 expr 符合 pat 这个模式的时候返回 true&#xff0c;比如&#xff1a; fn use_is_expr(x: Int?) -> Unit {if x is Some(i) && i > 10 { .…

【Apache Paimon】-- 作为一名小白,如何系统地学习 Apache paimon?

目录 一、整体规划 1. 了解基本概念与背景 2. 学习资料的选择 3. 学习路径与规划 4. 学习建议 5. 注意事项 6. 参考学习资料 二、详细计划 阶段 1&#xff1a;了解基础&#xff08;1-2 周&#xff09; 阶段 2&#xff1a;深入掌握核心功能&#xff08;3-4 周&#xf…