ragflow源码解析系列一之Pycharm启动项目进行debug
2025-7-8
| 2025-7-9
Words 1028Read Time 3 min
type
Post
status
Published
date
Jul 8, 2025
slug
summary
通过pycharm的方式启动ragflow进行debug
tags
ragflow
category
rag
icon
password
环境说明:
macbook air m3
pycharm 2025.1.2

Pycharm Debug项目启动

官方启动debug教程:Launch service from source | RAGFlow
💡
想要吃透ragflow的原理,尤其是各种文件的切分方式,是肯定要自己debug很多遍源码的。本文也是在官方启动教程的基础上将项目启动起来的,所以大家还是要懂得多看官方教程。
 
  1. clone仓库
仓库克隆下来之后使用pycharm打开,并切换到当前最新的0.19.1:
notion image
  1. 环境依赖
我采用一种pycharm的方式,因为我的源码都是下载到本地电脑了。pycharm内置了uv工具,可以自动识别项目目录下的pyproject.toml进行环境安装
notion image
安装好之后出现一个.venv的目录,存放了所有安装的依赖包:
notion image
或许你将源码clone在了有gpu的远程服务器上,你也可以通过官方给的安装uv工具的教程,官网采用的pipx,可以在conda环境中通过pip安装pipx,但要注意如果直接pipx install uv发现uv不在环境变量中,请记得在之前加一步pipx ensurepath。最后采用pycharm配置远程解释器的方式引入
 
  1. 依赖的三方服务启动
有mysql、es、minio 等,官方也很贴心的给出了docker的yaml文件
我是在mac上直接安装的docker desktop,启动好的容器如下:
notion image
 
备注:如果源码和docker容器都在一个机器下,那么不需要额外修改配置文件。如果源码和容器不在一个机器下,大多数可能源码在本地,mysql等容器在服务器上,就需要修改源码的配置文件去访问这些容器了。
那么问题来了,在哪里修改
官方文档里有这样一个步骤:
notion image
因为.env里面配置的HOST都不是127.0.0.1,而是mysql, minio等方式,由此需要在/etc/host中设置127.0.0.1与host的对应关系。由此更改ip的时候很有可能在.env中。其实不是的,我们这种启动方式读取的是conf下的service_conf.yaml文件中。因此如果需要配置mysql、es等服务的ip,在这里修改。
notion image
 
  1. 服务启动
notion image
ragflow_server.py 与前端交互的后端服务
notion image
task_executor.py 专门处理文件切分、存向量数据库的任务
notion image
 

Tips 如何Debug

  1. sdk目录下提供了一些请求接口的代码,也可以用,但是这样的话乍一看其实不知道请求的接口的作用是什么。不如直接从前端来的直观。
  1. 举个例子,以创建知识库为例
创建知识库
前端点击创建知识库,可以在pycharm控制台看,调用了4个接口
notion image
 
以接口1: /v1/user/info 为例
在pycharm中双击shift,考虑到接口前缀拼接的问题,我们搜索/info
notion image
瞄一眼,可以看到这个接口内容,是在api/apps/user_app.py下,然后点击进去,就可以看到这个接口内容,然后打一个断点。前端点击创建知识库之后,会在这个断点停下,然后在debug的控制台就可以愉快的玩耍了。
notion image
这个接口使用flask_login获取当前用户登陆信息,不重要,以此为例告诉大家如何debug项目
 
给自己一些时间和耐心,吃透ragflow的原理,横扫面试,做回自我。
 
Done!
 
  • ragflow
  • Nano Code: 250行 Python 代码实现的极简 Claude Code异步与多线程分别实现批量调用大模型接口
    Loading...