RAG · 2025年7月8日 0

Ragflow:一站式智能RAG平台的架构揭秘

“代码如诗,架构如画。今天我们来聊聊 ragflow-main 这幅‘清明上河图’。”

一、项目概览

ragflow-main 是一个集成了 RAG(Retrieval-Augmented Generation,检索增强生成)、多智能体、知识库、插件、沙箱执行、SDK、Web 前端等一系列功能的 AI 平台。它不仅能让大模型“有脑有记性”,还能让你像搭积木一样扩展功能。

项目结构大致如下:

ragflow-main/
  ├── agent/                # 智能体核心与组件
  ├── agentic_reasoning/    # 多智能体推理
  ├── api/                  # 后端API服务
  ├── web/                  # 前端React应用
  ├── plugin/               # 插件机制
  ├── rag/                  # RAG核心与NLP
  ├── deepdoc/              # 文档解析与OCR
  ├── graphrag/             # 图谱RAG
  ├── sandbox/              # 沙箱代码执行
  ├── sdk/                  # Python SDK
  ├── conf/、docker/、docs/ # 配置、部署、文档
  └── test/                 # 测试

二、技术选型

  • 后端:Python 3.x,FastAPI(api/),SQLAlchemy,依赖丰富的 NLP/AI 生态
  • 前端:React + TypeScript(web/),Ant Design,UmiJS
  • RAG/NLP:自研 RAG pipeline,支持多种 LLM,分词、NER、知识库
  • 插件:Python 动态加载,支持 LLM 工具链
  • 沙箱:支持 Python/Nodejs 代码安全执行
  • SDK:Python 封装,方便二次开发
  • 部署:Docker、Helm、Shell 脚本
  • 文档:多语言 README,详细开发者文档

三、模块详解

1. agent/ —— 智能体大本营

这里是“AI小分队”的总部。每个 component/ 下的 py 文件就是一个“特工”,比如 akshare.py(财经数据)、answer.py(问答)、search.py(搜索)等。你可以像拼乐高一样组合这些组件,组装出自己的超级智能体。

  • canvas.py:画布式智能体编排,支持 DSL(domain-specific language)定义 agent 流程。
  • templates/:预设的 agent 流程模板,开箱即用。
  • test/:agent 相关的测试和 DSL 示例。

代码片段:agent/component/answer.py

class AnswerComponent(BaseComponent):
    def run(self, query):
        # 这里可以接 LLM,也可以接自定义逻辑
        return self.llm.generate(query)

“每个智能体组件都像是一个乐高积木,随时可以拼装出新玩法。”

2. agentic_reasoning/ —— 多智能体推理

这里是“群体智慧”的体现。deep_research.py 里实现了多智能体协作推理,比如让多个 agent 分工合作,互相辩论,最后给出更靠谱的答案。

代码片段:agentic_reasoning/deep_research.py

def deep_research(query):
    # 多智能体分工协作
    results = [agent.run(query) for agent in agents]
    return aggregate(results)

“一个人是智慧,团队是力量。”

3. api/ —— 后端API服务

这里是整个系统的“中枢神经”。采用 FastAPI,负责对外提供 HTTP API,管理用户、知识库、数据集、会话、权限等。

  • apps/:每个子模块一个 app,比如 auth(认证)、canvas_app(画布)、sdk(SDK API)等。
  • db/:数据库模型与服务,SQLAlchemy ORM。
  • utils/:通用工具函数。
  • ragflow_server.py:FastAPI 启动入口。

代码片段:api/apps/api_app.py

app = FastAPI()
@app.get("/api/agent/run")
def run_agent(agent_id: str, input: dict):
    # 调用 agent 执行
    return agent_manager.run(agent_id, input)

“API 就像是大脑的神经元,负责信息的输入输出。”

4. web/ —— 前端 React 应用

UI 采用 React + TypeScript,Ant Design 组件库,UmiJS 路由。支持画布式 agent 流程编排、知识库管理、聊天、团队协作等功能。

  • src/components/:UI 组件,画布、聊天、知识库等。
  • src/pages/:页面路由。
  • src/services/:前端 API 封装。
  • src/hooks/:自定义 hooks,状态管理。

代码片段:web/src/components/AgentCanvas.tsx

const AgentCanvas = () => {
  // 画布式拖拽编排
  return <Canvas nodes={nodes} edges={edges} />;
};

“前端是颜值担当,负责把复杂的 AI 能力变成人人可用的工具。”

5. rag/ —— RAG 核心与 NLP

这里是“知识增强”的发动机。实现了 RAG pipeline、分词、NER、知识库检索、LLM 调用等。

  • llm/:大模型适配层,支持多种 LLM。
  • nlp/:分词、NER、tokenizer。
  • app/:RAG 应用场景,如音频、图书、PDF。
  • utils/:NLP 工具函数。

代码片段:rag/nlp/query.py

def split_query(query):
    # 分词+NER
    tokens = tokenizer.tokenize(query)
    entities = ner.extract(query)
    return tokens, entities

“RAG 让大模型不再‘健忘’,知识库随查随用。”

6. plugin/ —— 插件机制

支持 LLM 工具链扩展,比如内置的 bad_calculator.py(一个“算错题”的计算器,专治大模型幻觉),也可以自定义插件。

  • embedded_plugins/:内置插件。
  • llm_tool_plugin.py:插件加载与注册。

代码片段:plugin/llm_tool_plugin.py

def load_plugins():
    # 动态加载插件
    for plugin in plugin_dir:
        register(plugin)

“插件机制让系统像 iPhone 一样,永远有新玩法。”

7. sandbox/ —— 沙箱代码执行

安全地执行用户代码,支持 Python/Nodejs。采用容器隔离,防止“熊孩子”把服务器玩坏。

  • executor_manager/:核心服务,API、容器管理、限流。
  • sandbox_base_image/:基础镜像,支持多语言。
  • scripts/:启动/重启脚本。

代码片段:sandbox/executor_manager/services/execution.py

def execute_code(code, lang):
    # 容器隔离执行
    container = create_container(lang)
    result = container.run(code)
    return result

“沙箱是‘游乐场’,但有护栏,安全第一。”

8. sdk/ —— Python SDK

方便开发者二次开发,快速集成 ragflow 能力。支持数据集、知识库、agent 等 API 封装。

  • ragflow_sdk/:SDK 核心代码。
  • test/:SDK 测试用例。

代码片段:sdk/python/ragflow_sdk/ragflow.py

class RagflowClient:
    def run_agent(self, agent_id, input):
        # 调用后端 API
        return requests.post(f"{self.base_url}/api/agent/run", json=input)

“SDK 就像是‘遥控器’,让你轻松操控 ragflow。”

9. deepdoc/ —— 文档解析与 OCR

支持 docx、excel、图片等文档解析,内置 OCR 能力,方便知识库构建。

  • parser/:各类文档解析器。
  • vision/:OCR、版面分析。

代码片段:deepdoc/parser/docx_parser.py

def parse_docx(file_path):
    # 解析 docx 文档
    doc = Document(file_path)
    return extract_text(doc)

“deepdoc 让知识库‘吃’下各种文档,消化成知识。”

10. graphrag/ —— 图谱RAG

支持知识图谱抽取、实体消歧、图谱增强 RAG。

  • entity_resolution.py:实体消歧。
  • general/light/:不同图谱抽取策略。

代码片段:graphrag/entity_resolution.py

def resolve_entity(entity, context):
    # 图谱消歧
    candidates = search_graph(entity)
    return best_match(candidates, context)

“graphrag 让 RAG 不止于文本,知识图谱加持,推理更强。”


四、部署与运维

  • Dockerfile/Helm:一键部署,支持云原生。
  • conf/:多环境配置,支持 LLM、插件、知识库等灵活切换。
  • start_backend.sh/start_frontend.sh:本地开发一键启动。

五、总结

ragflow-main 就像是“AI 乐高积木”,每个模块都是一个功能块,既能单独玩,也能拼成超级系统。无论你是想做智能问答、知识库、RAG、还是多智能体协作,这里都能找到现成的“积木”。

“架构要优雅,代码要有趣,AI 要聪明,平台要开放。”

如果你想深入体验 ragflow,不妨 clone 下来,跑一跑,拼一拼,说不定下一个“AI 爆款”就出自你手!


如需更深入的代码分析或某个模块的详细解读,欢迎留言“点菜”!