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/bin PATH"
收效:
> 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】。详细如下:
- #!/bin/bash
- # 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
- # unset http proxy which maybe set by docker daemon
- export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY=""
- #/usr/sbin/nginx
- export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
- PY=python3
- if [[ -z "$WS" || $WS -lt 1 ]]; then
- WS=1
- fi
- function task_exe(){
- while [ 1 -eq 1 ];do
- $PY rag/svr/task_executor.py $1;
- done
- }
- for ((i=0;i<WS;i++))
- do
- task_exe $i &
- done
- while [ 1 -eq 1 ];do
- $PY api/ragflow_server.py
- done
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |