项目结构

本页介绍 SparkX 的整体目录组织,以及核心子系统 knowledge 的二级目录详解,帮助你快速建立代码地图。

一、顶层结构

SparkX 采用前后端分离架构,仓库根目录下分三大块:

spark-x/
├── admin/      # Vue3 + Naive UI 管理后台(智能体/知识库/AI配置/编排/对话调试)
├── server/     # Spring Boot 3.4 后端(包根 sparkx.sparkshop)
└── docker/     # 一键编排(backend + frontend + PgSQL + Redis + MinIO)
目录 技术栈 职责
admin/ Vue 3 + TypeScript + Vite + Naive UI + AntV X6 可视化管理后台,覆盖智能体开发全生命周期
server/ Java 17 + Spring Boot 3.4 + MyBatis-Plus + LangChain4j 后端服务,RAG/Agent/MCP/编排核心能力
docker/ Docker Compose 一键拉起前后端 + PostgreSQL + Redis + MinIO

二、后端核心模块

后端按职责划分模块,各模块相互独立、职责清晰:

模块 职责
knowledge/ 知识库 / RAG / 智能体子系统(自包含,最大模块)
workflow/ 工作流编排引擎(可视化节点图执行)
evaluation/ 评测(意图分类评估面板)
system/ 系统模块(用户 / 鉴权 / 通用)
common/ 通用基础设施(config / exception / utils)

💡 knowledge 子系统内部进一步按 pipeline / retrieval / ingest / infra / mcp / intent / graph 分包 —— 换模型供应商不用改业务代码,加检索通道不用动生成逻辑。

三、knowledge 模块二级目录详解

knowledge 是后端最大的子系统,RAG / 智能体 / 意图 / 图谱 / MCP 全部自包含于此。完整目录结构如下:

knowledge/
├── pipeline/           # RAG 流水线引擎(按 @Order 自动装配)
│   └── stages/         # 11 个具体阶段(样例/改写/意图/检索/重排/生成…)
├── retrieval/          # 检索通道 + 后处理链(混合 / 去重 / MMR / RRF 融合)
├── ingest/             # 文档入库流水线(解析 / 分块 / 嵌入 / 索引)
│   ├── block/          # 基于版面的结构化分块(段落 / 标题 / 表格 / 代码…)
│   └── mineru/         # MinerU 复杂版面解析客户端封装
├── intent/             # 意图树 + 规则快路径 + LLM 分类 + 引导澄清
├── graph/              # 知识图谱(Neo4j 存储 + 抽取 + 检索通道)
├── infra/              # LLM / 嵌入 / 重排 基础设施
│   ├── chat/           # 模型客户端(路由 + 三态熔断 + 首包探测 + 流式)
│   └── model/          # 模型健康 / 路由选择 / 路由执行
├── mcp/                # MCP 工具注册中心 + 执行器
├── memory/             # 对话记忆(历史加载 + 摘要压缩)
├── agent/              # 智能体对话编排入口 + 评测
├── prompt/             # 提示词编排(场景路由 + 模板管理)
├── query/              # 查询改写 / 扩展 / 多子问题拆分
├── fallback/           # 模型兜底 / 降级策略
├── config/             # Spring Bean 装配与配置绑定
├── controller/         # REST 入口(各领域 HTTP 接口)
├── service/ + impl/    # 业务逻辑层(接口 + 实现)
├── mapper/             # MyBatis Mapper(各表 CRUD)
├── entity/             # 持久化实体(对应 26 张业务表)
├── vo/                 # 出入参 DTO
├── validate/           # 入参校验(每场景一个 Validate 类)
└── common/             # 异常 + 全链路 Trace AOP
    ├── exception/      # RAG 统一异常
    └── trace/          # @RagTraceNode 链路追踪切面

按职能分为六大组,逐一说明。

3.1 流水线核心

  • pipeline/RagPipeline@Order 自动装配所有 stage;PipelineStage 定义 CONTINUE / FALLBACK / COMPLETE 契约;PipelineContext 贯穿各阶段共享上下文。
  • pipeline/stages/ — 11 个阶段:样例命中(5) → 改写拆分(10) → 意图分类(20/30) → 歧义澄清(40) → 引导(50) → 检索(60) → 重排(70) → 合并(80) → 生成(90);任一步可短路 COMPLETE 直返,异常走 FallbackStage 兜底。

3.2 检索(retrieval)

  • retrieval/ConditionalRetrievalChannel 接口 + VectorKeywordHybridChannel(向量+关键词)、IntentDirectedChannel(意图驱动);HybridContentRetriever 编排多通道;后处理链 DeduplicationPostProcessor / MmrReranker / ParentExpansionPostProcessor / FusionPostProcessor(RRF 融合)。

3.3 入库(ingest)

  • ingest/DocumentIngestService 入库总服务;AdaptiveDocumentSplitter / ParentChildSplitter / SpreadsheetRowSplitter 分块策略;MultimodalDocumentParser / ImageOcrService 多模态解析;KgEntityIndexer / SampleQueryIndexer / QuestionIndexer 实体 / 样例 / 问答索引。
  • ingest/block/ — 基于版面的结构化切片:Block 抽象 + 段落 / 标题 / 列表 / 表格 / 图片 / 代码块,BlockAwareChunker 按结构分块并保留 Provenance 溯源。
  • ingest/mineru/ — MinerU 复杂 PDF 版面解析客户端封装(MinerUClient / MinerUDocumentParser / MinerUImageDescriber 等)。

3.4 意图(intent)

  • intent/IntentNode + IntentTreeCacheManager 意图树;RuleBasedIntentRouter 规则快路径(问候 / 闲聊零成本);IntentClassifier / LlmIntentClassifier 低温 LLM 分类;AmbiguityChecker / VagueQueryClarifier / IntentGuidanceService 歧义检测与引导澄清;IntentSeedService / IntentEvalService 种子生成与评测。

3.5 知识图谱(graph)

  • graph/GraphRepository 接口 + Neo4jGraphRepository / NoopGraphRepository(未配 Neo4j 兜底);KnowledgeGraphChannel 图谱检索通道并入 RAG;GraphExtractionService 实体关系抽取;CommunityService 社区检测(global 模式前置);EntityDisambiguator 实体消歧。

3.6 模型基础设施(infra)

  • infra/LLMService LLM 统一门面、EmbeddingModelProvider 嵌入模型解析、TsVectorGenerator 关键词检索向量生成。
  • infra/chat/ — 模型客户端:RoutingLLMService 路由入口 + ModelSelector 选模型 + ModelHealthStore 三态熔断 + LlmFirstPacketProbe 首包探测 + StreamCallback 流式回调;OpenAICompatibleChatClient / OllamaChatClient 具体实现。
  • infra/model/ModelHealthStore 健康状态(CLOSED / OPEN / HALF_OPEN)、ModelSelector 策略选模型、ModelRoutingExecutor 路由执行。

3.7 工具与记忆

  • mcp/McpToolRegistry 注册中心 + McpToolService 执行器 + McpClientManager 客户端管理;远程 MCP 工具经 mcp_server / mcp_tool 表接入。
  • memory/ConversationMemoryService / ConversationMemoryStore 历史加载 + ConversationMemorySummaryService 摘要压缩,长对话不超 Token。

3.8 智能体与提示词

  • agent/AgentChatService 智能体对话总入口(驱动 RagPipeline)、AgentEvalService 评测、AgentRerankClient 重排客户端。
  • prompt/PromptPlanner 提示词编排(KB_ONLY / MCP_ONLY / MIXED / EMPTY 场景路由)+ PromptTemplateLoader / PromptTemplateManager 模板管理。
  • query/MultiQuestionRewriteService 多子问题改写、QueryExpansionTransformer 查询扩展、QueryTermMappingService 词映射。

3.9 兜底与配置

  • fallback/FallbackProvider 接口 + ModelFallbackProvider / FixedFallbackProvider 模型降级兜底。
  • config/ — Spring Bean 装配与配置绑定:RagProperties / AiModelProperties / AsyncConfig / LangChain4jConfig / McpBeansConfig / MinerUConfig / MinioConfig / KnowledgeGraphConfig 等。

3.10 支撑层(通用)

  • controller/ — 各领域 REST 入口(知识库 / 文档 / 智能体 / 意图 / 图谱 / MCP / 样例 / 会话 / 模型 / 管线)。
  • service/ + service/impl/ — 业务逻辑接口与实现。
  • mapper/ — MyBatis Mapper(22 张表 CRUD)。
  • entity/ — 持久化实体(对应 KnowledgeBase / Chunk / IntentNode / KgEntity / SampleQuery / McpTool / AiModel / Conversation… 等表)。
  • vo/ — 出入参 DTO(29 个)。
  • validate/ — 入参校验(38 个 Validate 类,每场景一个)。
  • common/exception/RagException RAG 统一异常。
  • common/trace/RagTraceAspect / RagTraceNode 全链路 Trace AOP 切面(每个环节耗时 / 输入输出记录)。

四、模块协作关系

一张图理解各子目录如何串联成完整的 RAG 链路:

用户提问
   │
   ▼
agent/  ────────────►  pipeline/  (RagPipeline 按 @Order 装配)
   │                       │
   │                       ▼
   │                  intent/  (意图路由:规则快路径 → LLM 分类)
   │                       │
   │                       ▼
   │   query/ (改写/拆分) ──►  retrieval/  (多通道检索 + 后处理)
   │                              │
   │                              ▼
   │   graph/ (图谱检索) ──►  后处理链(去重/MMR/RRF 融合)
   │                              │
   │                              ▼
   │   prompt/ (场景路由) ──►  infra/chat/  (模型路由 + 熔断 + 流式生成)
   │                              │
   │                              ▼
   │                         fallback/  (兜底降级)
   │                              │
   ▼                              ▼
memory/ (历史/摘要)         common/trace/ (全链路追踪)
  • mcp/ 在 MIXED 场景下被 prompt/ 调用,让模型调用外部工具
  • ingest/ 独立于问答链路,负责文档入库(解析 → 分块 → 嵌入 → 索引),产物供 retrieval/ 使用

五、如何阅读源码

建议按以下顺序浏览,从核心到外围:

  1. agent/AgentChatService —— 智能体对话总入口,理解整体调用链
  2. pipeline/RagPipeline —— RAG 流水线骨架,理解 11 个 stage 如何串联
  3. retrieval/ —— 检索通道与后处理,理解混合检索与融合
  4. infra/chat/ —— 模型路由与熔断,理解生产级容错
  5. ingest/ —— 文档入库流水线,理解数据如何变成可检索的知识
  6. 其余模块(intent / graph / mcp / memory / prompt)按需深入

掌握以上结构后,可继续阅读 设计以及实现 了解架构思想。

知识星球
🌟 加入知识星球
解锁源码与设计详解
知识星球二维码 了解详情