- 参考官网链接
https://ragflow.io/docs/dev/launch_ragflow_from_source
- 虚拟环境
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
# if not pipx, please install it at first
pip3 install pipx
pipx install uv
uv sync --python 3.10 --all-extras
- 安装 elk, redis, mysql等docker
docker compose -f docker/docker-compose-base.yml up -d
- .env配置
将 .env中主机指向docker host主机的IP
去掉macos=1的注释
- service_conf.yaml.template配置
将5个资源节点的host指向docker host主机的IP,直接写IP地址
如:
mysql:
name: ' M Y S Q L D B N A M E : − r a g f l o w ′ u s e r : ′ {MYSQL_DBNAME:-rag_flow}' user: ' MYSQLDBNAME:−ragflow′user:′{MYSQL_USER:-root}'
password: '${MYSQL_PASSWORD:-infini_rag_flow}'
host: '101.15.113.113'
port: 5455
- pyprojct.toml修改
因为macos下 torch包与linux要求不同。
"xgboost==1.6.0", # 原始1.5.0
"debugpy>=1.8.13",
"threadpoolctl>=3.6.0", //增加
[project.optional-dependencies]
full = [
"bcembedding==0.1.5",
"fastembed>=0.3.6,<0.4.0; sys_platform == 'darwin' or platform_machine != 'x86_64'",
"fastembed-gpu>=0.3.6,<0.4.0; sys_platform != 'darwin' and platform_machine == 'x86_64'",
"flagembedding==1.2.10",
"torch>=2.0.0,<2.2.2; sys_platform == 'darwin' or platform_machine != 'x86_64'",
"torch>=2.4.0,<2.5.1; sys_platform != 'darwin' and platform_machine == 'x86_64'",
"transformers>=4.35.0,<5.0.0"
]
- 安装其它包,避免报错 Fatal Python error: Segmentation fault
source .venv/bin/activate
brew install libjemalloc
pip3 install aiohttp==3.11.13
pip3 install google-cloud-aiplatform==1.64.0
pip3 install akracer==0.0.13
- 修改 docker/entrypoint.sh
因为macos下不是.so动态库
function task_exe() {
local consumer_id="$1"
local host_id="$2"
JEMALLOC_PATH="$(pkg-config --variable=libdir jemalloc)/libjemalloc.2.dylib"
#JEMALLOC_PATH="$(pkg-config --variable=libdir jemalloc)/libjemalloc.so"
while true; do
#LD_PRELOAD="$JEMALLOC_PATH" \
DYLD_INSERT_LIBRARIES "$JEMALLOC_PATH" \
"$PY" rag/svr/task_executor.py "${host_id}_${consumer_id}"
done
}
- vscode 修改 lanuch.json
新增 .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: ragflow_server",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/api/ragflow_server.py",
"justMyCode": true,
"cwd": "${workspaceFolder}", // 设置工作目录为项目根目录
"console": "integratedTerminal",
"env": {
"HF_ENDPOINT": "https://hf-mirror.com",
"PYTHONPATH": "${workspaceFolder}",
"VIRTUAL_ENV": "${workspaceFolder}/.venv", // 设定虚拟环境路径
"PATH": "${workspaceFolder}/.venv/bin:${env:PATH}", // 将虚拟环境的 bin 目录添加到 PATH
},
"envFile": "${workspaceFolder}/docker/.env",
"args": []
},
{
"name": "Python: task_executor",
"type": "debugpy",
"request": "launch",
"program": "${workspaceFolder}/rag/svr/task_executor.py",
"justMyCode": true,
"cwd": "${workspaceFolder}", // 设置工作目录为项目根目录
"console": "integratedTerminal",
"env": {
"HF_ENDPOINT": "https://hf-mirror.com",
"PYTHONPATH": "${workspaceFolder}",
"VIRTUAL_ENV": "${workspaceFolder}/.venv", // 设定虚拟环境路径
"PATH": "${workspaceFolder}/.venv/bin:${env:PATH}", // 将虚拟环境的 bin 目录添加到 PATH
//"LD_PRELOAD": "$(pkg-config --variable=libdir jemalloc)/libjemalloc.so", // linux
"DYLD_INSERT_LIBRARIES": "/usr/local/Cellar/jemalloc/5.3.0/lib/libjemalloc.2.dylib", // macos
},
"envFile": "${workspaceFolder}/docker/.env",
"args": []
}
]}
- 其它参考官网