【大模子实战篇】Mac当地摆设RAGFlow的踩坑史 [复制链接]
发表于 2025-11-16 07:27:17 | 显示全部楼层 |阅读模式
1. 题外话

        近来一篇文章照旧在11月30日写的,好长时间没有打卡了。近来工作上的事变特殊多,重要聚焦在大模子的预训练、微调和RAG两个方面。重要用到的框架是Megatron-DeepSpeed,后续会带来一些分享。本日的文章重要聚焦在RAG。
        近期调研了一系列开源的RAG框架(约20多个开源项目),相对来说,RAGFlow【1】更贴合我的需求,因此就花了一些时间去研究,本文分享下在Mac体系当地化摆设的实践。通过当地化摆设和使用,可以或许更好的资助你分析此中的一些本领以及明白代码。不外话说返来,固然RAGFlow的demo使用照旧挺可以的,但开源项目标代码质量和文档质量不得不令人吐槽,渴望该项目标作者可以或许器重起来。
2. Mac体系摆设   

       我们接纳从源码摆设的模式【2】。由于0.15.1好像对mac的支持不敷,因此回退到0.14.1版本。后续的安装是基于0.14.1版本举行,这个必要阐明一下。
        这里说一下我当地的mac体系信息:
   芯片:Apple M2 Pro
  内存:16G
  macOS: Ventura 13.4
  2.1 资源要求

   

  • CPU ≥ 4 cores
  • RAM ≥ 16 GB
  • Disk ≥ 50 GB
  • Docker ≥ 24.0.0 & Docker Compose ≥ v2.26.1
Mac查察cpu信息
   > sysctl -a | grep machdep.cpu
    machdep.cpu.cores_per_package: 10
  machdep.cpu.core_count: 10
  machdep.cpu.logical_per_package: 10
  machdep.cpu.thread_count: 10
  machdep.cpu.brand_string: Apple M2 Pro
  2.2 安装pipx

   > python -m pip install --user pipx
  设置启动:
   > python -m site --user-base
  > nano ~/.zshrc
  添加以下指令到.zshrc:
   export PATH="/path/to/user_base/binPATH"
  收效:
   > source ~/.zshrc
  接下来可以使用pipx:
   > pipx
  
  usage: pipx [-h] [--quiet] [--verbose] [--global] [--version]
              {install,install-all,uninject,inject,pin,unpin,upgrade,upgrade-all,upgrade-shared,uninstall,uninstall-all,reinstall,reinstall-all,list,interpreter,run,runpip,ensurepath,environment,completions}
              ...
  
  Install and execute apps from Python packages.
  
  Binaries can either be installed globally into isolated Virtual Environments
  or run directly in a temporary Virtual Environment.
  2.3 安装poetry

   pipx install poetry 
  设置:
   export POETRY_VIRTUALENVS_CREATE=true POETRY_VIRTUALENVS_IN_PROJECT=true
  2.4 安装依靠包

瘦身版:
   ~/.local/bin/poetry install --sync --no-root
  完备版:
   ~/.local/bin/poetry install --sync --no-root --with full
  注意:此时安装会报xgboost的安装错误,缘故原由是xgboost 包的版本 1.5.0 不支持 PEP 517 构建尺度,而 Poetry 默认使用 PEP 517 来处理处罚依靠包的安装【3】。

办理方案为编辑 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.5 启动第三方服务 

使用 Docker Compose 启动 ‘base’ 服务(MinIO、Elasticsearch、Redis 和 MySQL)
   docker compose -f docker/docker-compose-base.yml up -d
  


这里也遇到docker compose的题目,大概必要涉及到重新安装,看你的版本,假如是高版本,则必要安装一个docker-compose的extension包,否则安装docker-compose。确保你的docker-compose版本在v2.26.1及以上。

别的,可以添加docker的国内加速镜像,可以或许顺遂一些。

2.6 启动 RAGFlow 后端服务 

在 docker/entrypoint.sh 文件中解释掉 nginx 这一行。
   # /usr/sbin/nginx
  回退路径到ragflow目次,激活 Python 捏造环境:
   > source .venv/bin/activate
  > export PYTHONPATH=$(pwd)
  假如无法访问 HuggingFace,可以设置 HF_ENDPOINT 环境变量以使用镜像站点:
保举一个 huggingface 的镜像站:https://hf-mirror.com/
   export HF_ENDPOINT=https://hf-mirror.com
  在ragflow路径下运行 entrypoint.sh 脚原来启动后端服务:
   bash docker/entrypoint.sh
  这里直接使用源码,大概会报错路径题目, /ragflow/docker/service_conf.yaml.template: No such file or directory。 必要调解一下路径【3】。详细如下:
  1. #!/bin/bash
  2. # replace env variables in the service_conf.yaml file
  3. rm -rf ./conf/service_conf.yaml
  4. while IFS= read -r line || [[ -n "$line" ]]; do
  5.     # Use eval to interpret the variable with default values
  6.     eval "echo "$line"" >> ./conf/service_conf.yaml
  7. done < ./docker/service_conf.yaml.template
  8. # unset http proxy which maybe set by docker daemon
  9. export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY=""
  10. #/usr/sbin/nginx
  11. export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
  12. PY=python3
  13. if [[ -z "$WS" || $WS -lt 1 ]]; then
  14.   WS=1
  15. fi
  16. function task_exe(){
  17.     while [ 1 -eq 1 ];do
  18.       $PY rag/svr/task_executor.py $1;
  19.     done
  20. }
  21. for ((i=0;i<WS;i++))
  22. do
  23.   task_exe  $i &
  24. done
  25. while [ 1 -eq 1 ];do
  26.     $PY api/ragflow_server.py
  27. done
  28. wait;
复制代码
别的启动过程中,大概会报一些module not found的错误,python依靠包摆列如下:
   beartype, pycryptodomex, pdfplumber, polars, datrie, hanziconv, roman_numbers, cn2an strenum, tiktoken, xxhash, elasticsearch_dsl, valkey, flask_login, word2number, infinity
  假如启动乐成,可以对待下述的信息:

2.6 启动 RAGFlow 前端服务 

安装前端依靠项:
注:必要安装node
   > cd web
  > npm install --force
   安装依靠的过程又有点贫困,出现很多次timeout

设置一下镜像:
   npm config set registry https://registry.npmmirror.com/
  

  在 .umirc.ts 中将 proxy.target 更新为 http://127.0.0.1:9380   vim .umirc.ts
  启动 RAGFlow 前端服务:
   npm run dev
  


3. 体系界面展示




4. 服务关闭

开发完成后克制 RAGFlow 服务 
克制 RAGFlow 前端服务:
   pkill npm 
  克制 RAGFlow 后端服务:
   pkill -f “docker/entrypoint.sh”
  5. 参考质料

【1】https://github.com/infiniflow/ragflow
【2】Launch the RAGFlow Service from Source
【3】源码摆设RAGFlow-0.14.1

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表