老E的博客

  • 首页
  • 关于
  • 技术应用
    • VPS相关
    • AI相关
    • 盒子相关
    • 其他
  • 订阅Youtube频道
  • 网络加速
    • expressvpnNo.1 ExpressVPN
    • 最佳免费VPN-PrivadoVPN
    • NordVPN
    • 廉价王者-Surfshark
    • PrivateInternetAccess
    • 解锁一切-PrivateVPN
  • 公益资源
    • AI导航
    • 工具下载
    • Docker镜像加速
  • 友情链接
    • tickcloudTickcloud
老E的博客
专注记录并分享跨境技术应用及随想
  1. 首页
  2. 技术应用
  3. AI相关
  4. 正文

RAGFlow的源码目录结构

2025年4月13日 1116次阅读 0条评论
clawcloud
expressvpn best vpn
privado vpn
surfshark vpn
private vpn
pia vpn
nord vpn

Docker 便于快速部署,但不便于修改。因此作者多数情况下保持 SQL、Redis 等数据库组件容器化部署的同时,会选择从源码安装。对于开源的 RAGFlow,在 linux 中安装 tree 工具( apt install tree),可快速详细列出目录结构。

root@wsl:/opt/ragflow# tree -L 2
.
|-- 9b5ad71b2ce5302211f9c61530b329a4922fc6a4
|-- CONTRIBUTING.md
|-- Dockerfile
|-- Dockerfile.deps
|-- Dockerfile.scratch.oc9
|-- LICENSE
|-- README.md
|-- README_id.md
|-- README_ja.md
|-- README_ko.md
|-- README_pt_br.md
|-- README_tzh.md
|-- README_zh.md
|-- SECURITY.md
|-- agent
|   |-- README.md
|   |-- README_zh.md
|   |-- __init__.py
|   |-- __pycache__
|   |-- canvas.py
|   |-- component
|   |-- settings.py
|   |-- templates
|   `-- test
|-- agentic_reasoning
|   |-- __init__.py
|   |-- __pycache__
|   |-- deep_research.py
|   `-- prompts.py
|-- api
|   |-- __init__.py
|   |-- __pycache__
|   |-- apps
|   |-- constants.py
|   |-- db
|   |-- ragflow_server.py
|   |-- settings.py
|   |-- utils
|   |-- validation.py
|   `-- versions.py
|-- conf
|   |-- infinity_mapping.json
|   |-- llm_factories.json
|   |-- mapping.json
|   |-- private.pem
|   |-- public.pem
|   `-- service_conf.yaml
|-- deepdoc
|   |-- README.md
|   |-- README_zh.md
|   |-- __init__.py
|   |-- __pycache__
|   |-- parser
|   `-- vision
|-- docker
|   |-- README.md
|   |-- docker-compose-CN-oc9.yml
|   |-- docker-compose-base.yml
|   |-- docker-compose-gpu-CN-oc9.yml
|   |-- docker-compose-gpu.yml
|   |-- docker-compose-macos.yml
|   |-- docker-compose.yml
|   |-- entrypoint.sh
|   |-- infinity_conf.toml
|   |-- init.sql
|   |-- launch_backend_service.sh
|   |-- nginx
|   `-- service_conf.yaml.template
|-- docs
|   |-- _category_.json
|   |-- configurations.md
|   |-- develop
|   |-- faq.mdx
|   |-- guides
|   |-- quickstart.mdx
|   |-- references
|   `-- release_notes.md
|-- download_deps.py
|-- example
|   |-- http
|   `-- sdk
|-- flask_session
|   |-- 2029240f6d1128be89ddc32729463129
|   |-- 215011ed710e3e0007d07f418e1b826a
|   `-- 842b7795e070f3f127fd914bde1fa442
|-- graphrag
|   |-- __init__.py
|   |-- __pycache__
|   |-- entity_resolution.py
|   |-- entity_resolution_prompt.py
|   |-- general
|   |-- light
|   |-- query_analyze_prompt.py
|   |-- search.py
|   `-- utils.py
|-- helm
|   |-- Chart.yaml
|   |-- templates
|   `-- values.yaml
|-- intergrations
|   |-- chatgpt-on-wechat
|   `-- extension_chrome
|-- logs
|   |-- ragflow_server.log
|   |-- task_executor_0.log
|   |-- task_executor_0.log.1
|   |-- task_executor_0.log.2
|   |-- task_executor_0.log.3
|   |-- task_executor_0.log.4
|   `-- task_executor_0.log.5
|-- pyproject.toml
|-- rag
|   |-- __init__.py
|   |-- __pycache__
|   |-- app
|   |-- benchmark.py
|   |-- llm
|   |-- nlp
|   |-- prompts.py
|   |-- raptor.py
|   |-- res
|   |-- settings.py
|   |-- svr
|   `-- utils
|-- sdk
|   `-- python
|-- show_env.sh
|-- uv.lock
`-- web
    |-- externals.d.ts
    |-- jest-setup.ts
    |-- jest.config.ts
    |-- node_modules
    |-- package-lock.json
    |-- package.json
    |-- public
    |-- src
    |-- tailwind.config.js
    |-- tailwind.css
    |-- tsconfig.json
    `-- typings.d.ts

52 directories, 90 files

tree of ragflow

主要目录包括:

  • web:管理前端实现,react+tailwind 栈
  • docker:快速验证部署的 docker 配置
  • rag:rag 实现
  • deepdoc:文档解析实现(Todo 支持视觉模型)
  • agent:智能体相关实现
  • agentic_reasoning:0.17.2 版本更新的推理实现
  • graphrag:知识图谱实现
  • api:后端 api 实现
  • sdk:ragflow封装的python sdk
  • intergrations :RAGFlow 与 ChatGPT-on-WeChat 对接
  • conf:源码启动配置文件
  • .venv:python 虚拟环境目录,.venv/nltk_data 为下载的 nltk 数据,从源码部署需自行下载
  • helm:K8s配置

以下仅列举一二,基本原理相同,不做过多赘述。

api 目录

后端 api 在二次开发时可能最为常用,主要包括 apps、db、utils 目录和服务入口、初始化配置、常量、版本验证与 nltk 数据文件等程序。

  • apps:RAGFlow 对外暴露的接口,apps/__init__.py 定义了路由规则分别为 /api/{API_VERSION} 和 /{API_VERSION}/{page_name}
  • apps/sdk:对外提供的 api,操作知识库
  • db:数据库操作封装,db/db_models.py 封装了表单结构
  • utils:工具封装

api-tree

graphrag 目录

知识图谱目录,包括图谱抽取、实体映射、内部查询接口的文件和 light、general 两种方法的目录。

graphrag-tree

  • light、general:对应默认知识图谱抽取的两种模式,默认 light
  • general/index.py:图谱抽取入口
  • entity_resolution.py:实体多表述情况下的映射实现,是构建高质量知识图谱的核心组件,结合语义理解与图结构分析,提升图谱的准确性和一致性。
  • search.py:提供给内部的直接查询知识图谱的方法

agent 目录

RAGFlow 的 agent 实际是 workflow,功能上没有 dify 等框架丰富、友好,被很多人诟病。客观来看,agent 目录提供了非常低门槛地添加、修改自定义智能体的功能。agent 下包括了编排画板、编排设置程序文件和组件、模板目录。

agent-tree

  • component:agent 功能中所有列出的可拖拽内置节点(UI 导航栏),在 __init__.py 中注册,每个节点一个独立的 py 文件
  • templates:创建 agent(实为 workflow)可选的模板
... ...
def component_class(class_name):
    m = importlib.import_module("agent.component")
    c = getattr(m, class_name)
    return c


__all__ = [
    "Begin",
    "BeginParam",
    "Generate",
    "GenerateParam",
    "Retrieval",
    "RetrievalParam",
    "Answer",
    "AnswerParam",
    "Categorize",
    "CategorizeParam",
    "Switch",
    "SwitchParam",
    "Relevant",
    "RelevantParam",
    "Message",
    "MessageParam",
    "RewriteQuestion",
    "RewriteQuestionParam",
    "KeywordExtract",
... ...

可以添加自定义拖拽节点,或者修改 invoke 节点以实现更高级的远程调用功能,充当 MCP Client 也没有问题。

if self._param.headers:
    headers = json.loads(self._param.headers)
proxies = None
if re.sub(r"https?:?/?/?", "", self._param.proxy):
    proxies = {"http": self._param.proxy, "https": self._param.proxy}

if method == 'get':
    response = requests.get(url=url,
                            params=args,
                            headers=headers,
                            proxies=proxies,
                            timeout=self._param.timeout)
    if self._param.clean_html:
        sections = HtmlParser()(None, response.content)
        return Invoke.be_output("\n".join(sections))

    return Invoke.be_output(response.text)

deeploc 目录

deeploc 是 ragflow 用于文档识别、解析的核心模块,包括 parser、vision 两个子模块。

deeploc-tree

  • parser:文档格式支持与实现
  • vision:引入了 layout、table_structure,实现对版式识别、布局和结构化内容的支持

layout

其他目录如 rag 谨慎修改,已有的业务逻辑尽量避免改动,否则一不小心把小工程变成了大项目就不好了。

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可
标签: aigc dify RAG ragflow 知识库
最后更新:2025年4月13日

老E

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

站内搜索
归档
  • 2025 年 5 月
  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月
  • 2024 年 10 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2024 年 1 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 10 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 7 月
  • 2023 年 6 月

Copyright ©2023-2025 Appscross. All Rights Reserved.