项目架构
一、BladeX AI 项目架构
项目概述
BladeX AI 是一个基于Java生态的企业级AI应用平台,提供了大模型接入、智能体工作流、知识库管理、RAG检索等完整的AI解决方案。该平台支持多种大模型提供商,具有良好的扩展性和可定制性,是企业构建AI应用的理想选择。
架构说明
BladeX AI平台
底层基于BladeX架构体系(开源版本)
开发,运行方式两者基本一致,在此之前推荐先查阅框架相关资料。若购买了BladeX企业版
,支持无缝升级至企业版底层架构。
运行环境要求
- Java: 17
- NodeJs: 18
- Maven: 3.8+
- MySql: 5.7+
- Redis: 5.0+
- 向量数据库: Milvus / PgVector / Redis Stack
- 大模型: OpenAI GPT / Claude / DeepSeek / 国产大模型等
Java17与NodeJs18的说明
- 由于采用Java17,Java 模块化系统(Java Module System)的安全限制导致的针对反射等场景有可能会出现如下错误:
Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.reflect.InvocationHandler java.lang.reflect.Proxy.h accessible: module java.base does not "opens java.lang.reflect" to unnamed module @223aa2f7
- 解决方案:在启动参数中添加
--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED
- 如:
java --add-opens java.base/java.lang=ALL-UNNAMED -jar your-application.jar
- 如:
- 由于采用NodeJs18,OpenSSL3.0对算法和秘钥大小增加了更为严格的限制,可能会导致安装失败或打包失败出现如下错误:
Error: error:0308010C:digital envelope routines::unsupported
- 解决方案:在ide的终端执行如下命令
- Linux & Mac OS:
export NODE_OPTIONS=--openssl-legacy-provider
- Windows:
set NODE_OPTIONS=--openssl-legacy-provider
- Linux & Mac OS:
项目目录结构
BladeX-AI
├── modules -- 核心业务模块
│ ├── config -- 系统配置模块
│ │ └── DataConfiguration.java -- 数据源配置
│ └── aigc -- AI生成内容核心模块
│ ├── api -- API接口层
│ │ ├── endpoint -- RESTful API端点
│ │ │ ├── ChatEndpoint.java -- 大模型对话API
│ │ │ ├── ModelEndpoint.java -- 模型管理API
│ │ │ ├── FlowEndpoint.java -- 工作流API
│ │ │ ├── RagEndpoint.java -- RAG检索API
│ │ │ └── McpEndpoint.java -- MCP工具API
│ │ ├── auth -- API认证授权
│ │ └── exception -- API异常处理
│ ├── llm -- 大语言模型模块
│ │ ├── engine -- LLM引擎核心
│ │ │ ├── provider -- 模型提供商适配
│ │ │ │ ├── openai -- OpenAI模型适配
│ │ │ │ ├── anthropic -- Claude模型适配
│ │ │ │ ├── deepseek -- DeepSeek模型适配
│ │ │ │ ├── ollama -- Ollama本地模型适配
│ │ │ │ ├── volcengine -- 火山引擎适配
│ │ │ │ └── siliconflow -- 硅流适配
│ │ │ ├── service -- LLM服务接口
│ │ │ ├── model -- 数据模型定义
│ │ │ ├── config -- 模型配置管理
│ │ │ └── process -- 消息处理流程
│ │ └── business -- LLM业务逻辑
│ │ ├── controller -- 控制器
│ │ ├── service -- 业务服务
│ │ ├── mapper -- 数据访问层
│ │ ├── pojo -- 业务对象
│ │ ├── wrapper -- 包装器
│ │ └── cache -- 缓存管理
│ ├── flow -- 智能体工作流模块
│ │ ├── engine -- 工作流引擎核心
│ │ │ ├── provider -- 工作流执行提供者
│ │ │ │ ├── node -- 节点执行器实现
│ │ │ │ │ ├── StartNodeExecutor.java -- 开始节点
│ │ │ │ │ ├── EndNodeExecutor.java -- 结束节点
│ │ │ │ │ ├── LLMNodeExecutor.java -- LLM对话节点
│ │ │ │ │ ├── RagNodeExecutor.java -- RAG检索节点
│ │ │ │ │ ├── SwitchNodeExecutor.java -- 条件分支节点
│ │ │ │ │ ├── HttpNodeExecutor.java -- HTTP请求节点
│ │ │ │ │ ├── DbNodeExecutor.java -- 数据库节点
│ │ │ │ │ ├── CodeNodeExecutor.java -- 代码执行节点
│ │ │ │ │ ├── TextNodeExecutor.java -- 文本处理节点
│ │ │ │ │ ├── UpdateVarNodeExecutor.java -- 变量更新节点
│ │ │ │ │ ├── QuestionNodeExecutor.java -- 问题分类节点
│ │ │ │ │ ├── ExtractNodeExecutor.java -- 信息提取节点
│ │ │ │ │ ├── OptimizeNodeExecutor.java -- 内容优化节点
│ │ │ │ │ ├── McpNodeExecutor.java -- MCP工具节点
│ │ │ │ │ └── NoticeNodeExecutor.java -- 通知节点
│ │ │ │ ├── model -- 工作流模型
│ │ │ │ ├── BladeFlowExecutor.java -- 工作流执行器
│ │ │ │ └── NodeExecutorFactory.java -- 节点执行器工厂
│ │ │ ├── context -- 执行上下文
│ │ │ ├── tool -- 工具类
│ │ │ ├── config -- 配置管理
│ │ │ ├── enums -- 枚举定义
│ │ │ ├── constant -- 常量定义
│ │ │ └── exception -- 异常处理
│ │ └── business -- 工作流业务逻辑
│ ├── rag -- 检索增强生成模块
│ │ ├── engine -- RAG引擎核心
│ │ │ ├── provider -- RAG提供者
│ │ │ ├── service -- RAG服务接口
│ │ │ ├── process -- 检索处理流程
│ │ │ ├── config -- RAG配置
│ │ │ ├── constant -- 常量定义
│ │ │ └── exception -- 异常处理
│ │ └── business -- RAG业务逻辑
│ ├── kb -- 知识库管理模块
│ │ ├── engine -- 知识库引擎核心
│ │ │ ├── handler -- 文档处理器
│ │ │ ├── segment -- 文档分割引擎
│ │ │ ├── service -- 知识库服务
│ │ │ ├── tool -- 工具类
│ │ │ ├── support -- 支持组件
│ │ │ ├── progress -- 处理进度管理
│ │ │ ├── config -- 配置管理
│ │ │ ├── constant -- 常量定义
│ │ │ └── exception -- 异常处理
│ │ └── business -- 知识库业务逻辑
│ └── tool -- AI工具模块
│ ├── engine -- 工具引擎核心
│ └── business -- 工具业务逻辑
└── resources -- 资源文件
├── application.yml -- 应用配置
├── sql -- SQL脚本
└── static -- 静态资源
项目技术栈说明
基础框架
- Java版本: Java 17
- 核心框架: Spring Boot 3.x
- 平台框架: BladeX 4.x
- 构建工具: Maven 3.x
AI能力集成
- 大模型接入:
- OpenAI GPT-3.5/GPT-4
- Anthropic Claude
- DeepSeek系列模型
- 火山引擎大模型
- 硅流AI平台
- Ollama本地模型
- 向量数据库:
- Milvus 2.x
- Qdrant
- ElasticSearch
- 嵌入模型:
- OpenAI Embeddings
- 本地嵌入模型
数据存储与处理
- 关系型数据库:
- MySQL 5.7+
- 缓存:
- Redis 5.0+
- 文档处理:
- Apache POI (Office文档)
- PDFBox (PDF文档)
- Apache Tika (多格式文档)
- ORM框架:
- MyBatis-Plus
工作流引擎
- 执行引擎:
- Spring Boot异步执行
- 节点化架构设计
- 脚本引擎:
- JavaScript (Nashorn)
- Aviator表达式引擎
容器化与部署
- 容器化:
- Docker
- 部署脚本:
- Shell脚本
二、核心模块架构
架构设计理念
BladeX AI采用分层模块化架构,每个模块都有清晰的职责边界和统一的接口规范。引擎层提供核心能力,业务层实现具体功能,API层对外提供服务。
API接口层 (aigc/api)
接口说明
API接口层提供统一的RESTful API服务,支持多种认证方式,提供完整的API文档和异常处理机制。
endpoint: RESTful API端点实现
ChatEndpoint
: 大模型对话API,支持流式和同步对话ModelEndpoint
: 模型管理API,支持模型配置和状态管理FlowEndpoint
: 工作流API,支持工作流执行和管理RagEndpoint
: RAG检索API,支持知识库检索和问答McpEndpoint
: MCP工具API,支持外部工具调用
auth: API认证授权机制
exception: 统一异常处理
大语言模型模块 (aigc/llm)
LLM模块功能
大语言模型模块是AI平台的核心,提供多模型适配、统一调用接口、消息处理等功能。支持主流的大模型提供商,具有良好的扩展性。
引擎核心 (llm/engine)
provider: 模型提供商适配器
openai
: OpenAI GPT系列模型适配anthropic
: Anthropic Claude系列模型适配deepseek
: DeepSeek系列模型适配ollama
: Ollama本地模型适配volcengine
: 火山引擎模型适配siliconflow
: 硅流AI平台适配
service: LLM服务接口定义
model: 数据模型和请求响应对象
config: 模型配置管理
process: 消息处理流程
业务逻辑 (llm/business)
- controller: 控制器层,处理HTTP请求
- service: 业务服务层,实现业务逻辑
- mapper: 数据访问层,数据库操作
- pojo: 业务对象定义
- wrapper: 包装器,数据转换
- cache: 缓存管理
智能体工作流模块 (aigc/flow)
Flow模块功能
工作流模块提供可视化的智能体构建能力,通过节点化架构实现复杂AI应用的编排。支持14种核心节点类型,可以灵活组合构建各种AI应用场景。
引擎核心 (flow/engine)
provider: 工作流执行提供者
BladeFlowExecutor
: 工作流执行器,支持异步执行NodeExecutorFactory
: 节点执行器工厂,管理所有节点类型node
: 节点执行器实现,包含15种节点类型
context: 执行上下文管理
tool: 工具类和辅助功能
config: 配置管理
enums: 枚举定义
constant: 常量定义
exception: 异常处理
RAG检索模块 (aigc/rag)
RAG模块功能
RAG模块实现检索增强生成功能,结合知识库为大模型提供专业领域知识支持。支持向量检索、混合检索等多种检索策略。
引擎核心 (rag/engine)
- provider: RAG提供者实现
- service: RAG服务接口
- process: 检索处理流程
- config: RAG配置管理
- constant: 常量定义
- exception: 异常处理
知识库管理模块 (aigc/kb)
KB模块功能
知识库模块提供文档处理、向量化、存储管理等功能。支持多种文档格式,提供6种智能分割策略,确保知识的完整性和检索精度。
引擎核心 (kb/engine)
- handler: 文档处理器,支持PDF、Word、Excel等格式
- segment: 文档分割引擎,提供多种分割策略
- service: 知识库服务接口
- tool: 工具类和辅助功能
- support: 支持组件
- progress: 处理进度管理
- config: 配置管理
- constant: 常量定义
- exception: 异常处理
AI工具模块 (aigc/tool)
Tool模块功能
工具模块提供MCP(Model Context Protocol)工具集成能力,支持各种外部工具的调用,扩展AI应用的能力边界。
引擎核心 (tool/engine)
- 工具引擎核心实现
- 工具调用管理
- 工具配置和注册
三、节点执行器体系
节点设计理念
BladeX AI工作流采用节点化架构,每个节点都是一个独立的执行单元。通过统一的接口规范和工厂模式,实现了良好的扩展性和可维护性。
流程控制节点
- StartNodeExecutor: 工作流开始节点,初始化执行上下文
- EndNodeExecutor: 工作流结束节点,收集执行结果
- SwitchNodeExecutor: 条件分支节点,支持JavaScript条件判断
AI推理节点
- LLMNodeExecutor: 大语言模型对话节点,支持多模型调用
- RagNodeExecutor: RAG检索节点,基于知识库的增强生成
- QuestionNodeExecutor: 问题分类节点,智能意图识别
- ExtractNodeExecutor: 信息提取节点,结构化信息提取
- OptimizeNodeExecutor: 内容优化节点,AI驱动的内容改进
数据处理节点
- DbNodeExecutor: 数据库节点,支持数据库查询和操作
- CodeNodeExecutor: 代码执行节点,支持JavaScript代码执行
- TextNodeExecutor: 文本处理节点,文本格式化和模板渲染
- UpdateVarNodeExecutor: 变量更新节点,流程变量管理
外部集成节点
- HttpNodeExecutor: HTTP请求节点,外部API调用
- McpNodeExecutor: MCP工具节点,工具协议集成
- NoticeNodeExecutor: 通知节点,多渠道消息推送
四、部署架构
部署模式
BladeX AI支持多种部署模式,可以根据实际需求选择合适的部署方式。平台具有良好的扩展性,支持水平扩展和负载均衡。
- 单机模式: 所有组件部署在同一台服务器上,适合开发和测试环境
- 分布式模式: 各组件分布在不同服务器上,支持高可用和水平扩展
- 容器化部署: 支持使用Docker容器进行部署,提供Dockerfile
- 云端部署: 支持在各大云平台部署,提供云端适配
推荐部署方式
对于生产环境,推荐使用分布式模式或容器化部署,以提高系统的可用性和可扩展性。对于开发和测试环境,可以使用单机模式简化部署过程。
五、扩展性设计
扩展能力
BladeX AI采用模块化设计,具有良好的扩展性,可以根据实际需求进行定制和扩展。
- 模型扩展: 通过实现LLM提供商接口,可以支持更多大模型
- 节点扩展: 通过实现节点执行器接口,可以添加自定义节点类型
- 存储扩展: 通过适配器模式,可以支持更多向量数据库
- 工具扩展: 通过MCP协议,可以集成更多外部工具
扩展注意事项
在进行扩展开发时,需要遵循平台的接口规范和设计原则,确保扩展模块与现有系统的兼容性和稳定性。建议在开发前先阅读相关文档和示例代码。
六、技术优势
核心优势
- 模块化架构: 清晰的模块划分,便于维护和扩展
- 多模型支持: 支持主流大模型提供商,具有良好的兼容性
- 节点化设计: 通过节点组合构建复杂AI应用,提高开发效率
- 企业级特性: 完整的认证授权、监控告警、异常处理机制
- 高可扩展性: 支持自定义模型、节点、工具的扩展
- 容器化支持: 支持Docker部署,便于运维管理
BladeX AI通过其创新的架构设计和丰富的功能模块,为企业提供了构建AI应用的完整解决方案,是企业数字化转型和AI落地的重要平台。