当前位置: 首页 > news >正文

RagFlow 源码部署启动指南

一、环境准备

1. 安装 uvpre-commit

如果已安装,可跳过。推荐使用官方方式安装,避免报错:

pipx install uv pre-commit
export UV_INDEX=https://mirrors.aliyun.com/pypi/simple

安装报错

使用清华源安装:

pipx install uv --pip-args="--index-url https://pypi.tuna.tsinghua.edu.cn/simple"
pipx install pre-commit --pip-args="--index-url https://pypi.tuna.tsinghua.edu.cn/simple"

设置环境变量:

pipx ensurepath

执行后请开启新终端


二、下载项目源码并安装依赖

2. 下载代码并同步依赖

git clone https://github.com/infiniflow/ragflow.git
cd ragflow/
uv sync --python 3.10 --all-extras  # 安装依赖模块

设置 HuggingFace 镜像地址:

export HF_ENDPOINT=https://hf-mirror.com
uv run download_deps.py
# 如果要使用镜像请执行:uv run download_deps.py --china-mirrors
pre-commit install

⚠️ 注意事项:

  • download_deps文件中只有部分下载可以有镜像源,nltk部分的镜像源是没有的
  • 安装中可能失败,因为墙的原因,需要想办法去下载nltk部分的内容,笔者这边wsl子系统,可以使用代理,手动执行以下命令下载:uv run download_nltk.py
  • download_nltk.py其实就是download_deps.py的部分代码, 我拷贝出来了,因为我其他的部分都安装成功了
#!/usr/bin/env python3# PEP 723 metadata
# /// script
# requires-python = ">=3.10"
# dependencies = [
#   "huggingface-hub",
#   "nltk",
#   "argparse",
# ]
# ///
import nltk
import os
import argparseif __name__ == "__main__":parser = argparse.ArgumentParser(description='Download dependencies with optional China mirror support')parser.add_argument('--china-mirrors', action='store_true', help='Use China-accessible mirrors for downloads')args = parser.parse_args()local_dir = os.path.abspath('nltk_data')for data in ['wordnet', 'punkt', 'punkt_tab']:print(f"Downloading nltk {data}...")nltk.download(data, download_dir=local_dir)

3. 处理 pyicu 安装失败问题

uv syncpyicu 报错的解决方案:

官方仓库:https://gitlab.pyicu.org/main/pyicu

推荐执行以下步骤后重新安装依赖:

# EITHER - from apt directly https://packages.debian.org/source/stable/pyicu
apt-get install python3-icu
# OR - from source
apt-get install pkg-config libicu-dev
# pip install --no-binary=:pyicu: pyicu

三、启动依赖服务

4. 启动基础服务(MinIO、Elasticsearch、Redis、MySQL)

docker compose -f docker/docker-compose-base.yml up -d

5. 修改 /etc/hosts

添加以下内容,确保 conf/service_conf.yaml 中的 host 地址解析成功:

127.0.0.1       es01 infinity mysql minio redis sandbox-executor-manager

四、其他环境依赖

6. 安装 jemalloc(如系统未安装)

# ubuntu
sudo apt-get install libjemalloc-dev# centos
sudo yum install jemalloc

五、启动后端服务

7. 启动后端脚本

source .venv/bin/activate
export PYTHONPATH=$(pwd)
bash docker/launch_backend_service.sh

如果 .sh 无执行权限,执行:

chmod 744 docker/launch_backend_service.sh

8. 常见报错处理

报错内容:

import pyodbc ImportError: libodbc.so.2: cannot open shared object file: No such file or directory

解决方法:

sudo apt install libodbc2

六、启动前端服务

9. 安装依赖

cd web
npm install

10. 启动开发服务器

npm run dev

七、调试模式说明(Debug)

阅读源码发现其实就是启动 task_executor.py 和 ragflow_server.py 两个服务,但是还有相关的环境变量不知道怎么设置

调试相关截图:

在pycharm的debug配置中配置环境变量

可能报错

#redis_port 无法解析

不知道原因:后面新建了个环境变量文件,把所有的注释都去掉,就能用了


环境变量配置(Debug用)

配置文件示例(建议放入 .env 或手动 export):

DOC_ENGINE=elasticsearch
STACK_VERSION=8.11.3
ES_HOST=es01
ES_PORT=1200
ELASTIC_PASSWORD=infini_rag_flow
OS_PORT=1201
OS_HOST=opensearch01
OPENSEARCH_PASSWORD=infini_rag_flow_OS_01
KIBANA_PORT=6601
KIBANA_USER=rag_flow
KIBANA_PASSWORD=infini_rag_flow
MEM_LIMIT=8073741824
INFINITY_HOST=infinity
INFINITY_THRIFT_PORT=23817
INFINITY_HTTP_PORT=23820
INFINITY_PSQL_PORT=5432
MYSQL_PASSWORD=infini_rag_flow
MYSQL_HOST=mysql
MYSQL_DBNAME=rag_flow
MYSQL_PORT=5455
MINIO_HOST=minio
MINIO_CONSOLE_PORT=9001
MINIO_PORT=9000
MINIO_USER=rag_flow
MINIO_PASSWORD=infini_rag_flow
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=infini_rag_flow
SVR_HTTP_PORT=9380
RAGFLOW_IMAGE=infiniflow/ragflow:v0.19.0-slim
TIMEZONE='Asia/Shanghai'
DOC_BULK_SIZE=4
EMBEDDING_BATCH_SIZE=16
REGISTER_ENABLED=1
NLTK_DATA=/home/ubuntu/data/code/ragflow/nltk_data
http://www.lryc.cn/news/578675.html

相关文章:

  • 【文件读取】open | with | as
  • js filter()
  • 从docker-compose快速入门Docker
  • Linux安装JDK和Maven
  • Day 3:Python模块化、异常处理与包管理实战案例
  • 基于GD32 MCU的IAP差分升级方案
  • Vue基础(19)_Vue内置指令
  • STM32——代码开发顺序
  • 模型部署与推理--利用python版本onnxruntime模型部署与推理
  • (25.07)解决——ubuntu20.04系统开机黑屏,左上角光标闪烁
  • 杭州来未来科技 Java 实习面经
  • linux 用户态|内核态打印函数调用进程的pid
  • Navicat Premium x TiDB 社区体验活动 | 赢 Navicat 正版授权+限量周边+TiDB 社区积分
  • AI赋能智慧餐饮:Spring Boot+大模型实战指南
  • ChatGPT + GitHub Copilot + Cursor 实战提升编程效率
  • Y-Combinator推导的Golang描述
  • Anthropic 开源 LLM“电路追踪器”:首次可视化语言模型的“推理路径”!
  • WebSocket技术全面解析:从历史到实践
  • 博途多重背景、参数实例
  • 基于Spring Cloud微服务架构的API网关方案对比分析
  • 微信小程序使用秋云ucharts echarts
  • 跨境证券交易系统合规升级白皮书:全链路微秒风控+开源替代,护航7月程序化交易新规落地
  • 【前端】vue工程环境配置
  • nosql项目:基于 Redis 哨兵模式的鲜花预订配送系统
  • Bilibili多语言字幕翻译扩展:基于上下文的实时翻译方案设计
  • Qt 实现Opencv功能模块切换界面功能
  • QT笔记---环境和编译出现的问题
  • 洛谷P1379 八数码难题【A-star】
  • kubernetes pod 调度基础
  • 分布式 ID 生成方案对比:Snowflake、UUID、KSUID 该怎么选?