在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 _prepare
      160│
      161│                 error = ChefBuildError("\n\n".join(message_parts))
      162│
      163│             if error is not None:
    → 164│                 raise error from None
      165│
      166│             return path
      167│
      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: 5455
  max_connections: 100
  stale_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:

python 复制代码
import nltk
nltk.download('punkt_tab')

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

python 复制代码
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 中的路径修改为相对路径:

python 复制代码
# 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  # 使用相对路径

四、启动 RAGFlow 前端服务

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

python 复制代码
cd web
npm install --force

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

3. 启动前端服务:

python 复制代码
npm run dev 

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

bash 复制代码
% npm run dev

> dev
> cross-env UMI_DEV_SERVER_COMPRESS=none umi dev

info  - [你知道吗?] 请求加载态、数据管理、避免竟态问题,用 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@latest
  Why you should do it regularly: https://github.com/browserslist/update-db#readme

Rebuilding...

Done in 370ms.
info  - MFSU eager strategy enabled
info  - [MFSU][eager] restored cache
Browserslist: caniuse-lite is outdated. Please run:
  npx update-browserslist-db@latest
  Why 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@latest
  Why 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命令直接安装:

python 复制代码
pip install FlagEmbedding==1.2.10
pip show FlagEmbedding

六、关闭前后端服务

bash 复制代码
pkill npm
pkill -f "docker/entrypoint.sh"
相关推荐
iBaoxing23 分钟前
mac 使用 launchctl 实现每次登录系统时 frpc 就会自动启动
macos
湫ccc1 小时前
《Opencv》基础操作详解(3)
人工智能·opencv·计算机视觉
鹏阿鹏1 小时前
【Mac】终端改色-让用户名和主机名有颜色
macos
Jack_pirate1 小时前
深度学习中的特征到底是什么?
人工智能·深度学习
微凉的衣柜1 小时前
微软在AI时代的战略布局和挑战
人工智能·深度学习·microsoft
GocNeverGiveUp1 小时前
机器学习1-简单神经网络
人工智能·机器学习
Schwertlilien1 小时前
图像处理-Ch2-空间域的图像增强
人工智能
智慧化智能化数字化方案2 小时前
深入解读数据资产化实践指南(2024年)
大数据·人工智能·数据资产管理·数据资产入表·数据资产化实践指南
哦哦~9212 小时前
深度学习驱动的油气开发技术与应用
大数据·人工智能·深度学习·学习
智慧化智能化数字化方案2 小时前
120页PPT讲解ChatGPT如何与财务数字化转型的业财融合
人工智能·chatgpt