在苹果 M 芯片上部署 RagFlow 的坑与放弃之路

详细记录了在 Mac 上M芯片尝试构建 RagFlow Docker 镜像过程中遇到的各种问题,包括依赖安装失败、镜像体积过大、HTTPS 与 SSH 拉取内容不一致等。最终决定放弃在本地部署,转向使用阿里云服务器成功运行 RagFlow,并推荐作为稳定可行的替代方案。

阅读时长: 3 分钟
共 1270字
作者: eimoon.com

1. 前提

今天在本地部署 ragflow的时候,因为是苹果M芯片,ragflow并不维护docker镜像,所以需要自己构建镜像. 这个是ragflow 的官网说明:

alt text

git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
uv run download_deps.py
docker build -f Dockerfile.deps -t infiniflow/ragflow_deps .
docker build --build-arg LIGHTEN=1 -f Dockerfile -t infiniflow/ragflow:nightly-slim .

2.下载依赖时遇到的问题

根据官网的说明,先clone 仓库。然后安装一些依赖。

首先遇到一个一个大坑

uv run download_deps.py

提示

╰─ uv run download_deps.py
 Resolving dependencies...                                                                                                                                                      error: Failed to fetch: https://mirrors.aliyun.com/pypi/simple/nltk/
  Caused by: Request failed after 3 retries
  Caused by: error sending request for url (https://mirrors.aliyun.com/pypi/simple/nltk/)

这里总是遇到网络错误,但是我访问 https://mirrors.aliyun.com/pypi/ 确实能正常访问的。 检查uv 的配置,也是使用的阿里云的源(这里我没有怀疑过这个镜像有问题)。浪费了好长时间。

[[tool.uv.index]]
url = "https://mirrors.aliyun.com/pypi/simple"

后来尝试更换一下镜像,不知道阿里源是什么问题, 把这个镜像修改为清华源才正常下载。

[[tool.uv.index]]
url = "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"

3.构建依赖镜像

安装依赖后。然后创建依赖的镜像

docker build -f Dockerfile.deps -t infiniflow/ragflow_deps .

alt text

这里到没有什么问题,但是这个镜像有11.3GB,太大了!我的磁盘空间还有70多G,暂时先试一下吧。

4.创建自定义的ragflow镜像

然后再创建另外一个镜像

docker build --build-arg LIGHTEN=1 -f Dockerfile -t infiniflow/ragflow:nightly-slim .

提示这个错误 alt text

没有这个文件夹,查看本地的目录,确实没有rag 这个文件夹, 但是我是直接从github clone下来的。没有删除过什么,也没有做什么修改。

查看github 仓库确实有rag 这个文件夹。

查看git remote -v 和分支 branch,也都是一样的。

这里我写的比较简单,这期间我多次尝试删除仓库,又git clone && git pull 重复了多次,还是没有获取到rag文件夹。

最后才发现,因为我配置了ssh,所以我从github clone 项目时候git clone 一般习惯使用ssh但是就是这里出了问题

git clone [email protected]:infiniflow/ragflow.git

而说明使用的是 https

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

正常来说使用 [email protected]:infiniflow/ragflow.git(SSH 协议)和 git clone https://github.com/infiniflow/ragflow.git(HTTPS 协议)拉取的内容应该是一致的,不应该不同。不知道仓库什么原因,但是这里拉取的内容就是不一样

最后使用 https clone 下来,修改dockerfile 中的 ARG NEED_MIRROR=1 使用国内镜像,运行

docker build --build-arg LIGHTEN=1 -f Dockerfile -t infiniflow/ragflow:nightly-slim .

现在又卡到这里了 alt text

可能也是网络问题,也可能是磁盘空间问题,因为折腾了一番,mac电脑只剩余了不到10G的空间,但是我不想再去源码折腾了,还是放弃吧~

总结

由于问题较多,而且占用空间太大,暂时放弃在mac上部署ragflow。若后续尝试,建议:

  • 使用 HTTPS 克隆仓库,避免 SSH 拉取不全的问题;
  • 配置国内镜像源(如清华源)以加快依赖下载,对于这个项目不要使用阿里镜像源;
  • 如果有非ARM核心,建议使用非ARM核心部署ragflow,否则建议选择其他rag知识库(如 anytingllm )来替代,没有这么多问题。

后记

折腾许久后,决定不在本地继续尝试。购买了一台按量计费的阿里云服务器,最终在阿里云服务器(x86 架构,4 核 16G)上成功构建并运行了 RagFlow,包括完整依赖安装、镜像构建与运行服务一切顺利。

整个流程几乎无任何阻碍,网络连接顺畅、磁盘空间充足,验证了云部署方案的可行性与高效性。如果你也在被本地部署问题困扰,可以考虑直接将 RagFlow 部署在云服务器上。

关注我获取更多资讯

公众号
📢 公众号
个人号
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计