跳到主要内容
MaxKB4j 开源 RAG 知识库平台技术架构解析 | 极客日志
Java AI java 算法
MaxKB4j 开源 RAG 知识库平台技术架构解析 MaxKB4j 是基于 Java Spring Boot 和 LangChain4j 构建的开源 RAG 知识库平台,支持多模型集成、可视化工作流编排及多模态能力。项目采用模块化设计,涵盖后端服务、核心 AI 逻辑及 Vue 3 前端,通过 PostgreSQL pgvector 实现向量检索。提供 Docker 快速部署方案,支持自定义模型提供商与工作流节点扩展,适用于企业级智能问答系统开发。
MaxKB4j 技术文档
项目概述
MaxKB4j (Max Knowledge Base for Java) 是一个基于 Java/Spring Boot 和 LangChain4j 构建的开源 RAG (检索增强生成)知识库与 LLM 工作流平台。它专为构建企业级智能问答系统而设计,支持多模型集成、可视化工作流编排、知识库问答以及语音、图像等多模态能力。
核心特性
开箱即用的知识库问答 : 支持上传本地文档或自动抓取网页内容,自动完成文本分块 → 向量化 → 向量数据库存储 → RAG 流程构建。
模型无关的灵活集成 : 支持多种主流大语言模型(OpenAI、Claude、Gemini、DeepSeek、Qwen、Ollama 等),方便切换。
可视化工作流编排 : 内置低代码 AI 工作流引擎,支持条件分支、函数调用、多轮对话记忆等复杂逻辑。
MCP 协议支持 : 实现 Model Context Protocol,使 AI 能够理解代码上下文和项目结构。
多模态能力 : 支持语音识别 (ASR)、语音合成 (TTS)、OCR、图像生成。
技术栈
类别 技术 后端框架 Java 21, Spring Boot 3.5.1 AI 框架 LangChain4j 1.12.1 数据库 PostgreSQL 15+ (pgvector 扩展) 全文搜索 MongoDB 6.0+ 缓存 Caffeine 认证授权 Sa-Token 1.39.0 ORM MyBatis-Plus 3.5.9 API 文档 Knife4j (OpenAPI 3) 前端 Vue 3.5, TypeScript, Element Plus, LogicFlow 构建工具 Maven, Vite
项目结构
MaxKB4j/
├── maxkb4j-common/ # 公共模块 - 通用工具、常量、异常处理
├── maxkb4j-core/ # 核心模块 - AI 助手、事件处理、LangChain4j 集成
├── maxkb4j-service-api/ # 服务 API 定义层 - 实体、DTO、Mapper 接口
│ ├── maxkb4j-application-api/ # 应用相关 API
│ ├── maxkb4j-knowledge-api/ # 知识库相关 API
│ ├── maxkb4j-model-api/ # 模型相关 API
│ ├── maxkb4j-user-api/ # 用户相关 API
│ ├── maxkb4j-workflow-api/ # 工作流相关 API
│ ├── maxkb4j-tool-api/ # 工具相关 API
│ ├── maxkb4j-chat-api/ # 聊天相关 API
│ ├── maxkb4j-folder-api/ # 文件夹相关 API
│ ├── maxkb4j-oss-api/ # 对象存储相关 API
│ ├── maxkb4j-system-api/ # 系统相关 API
│ └── maxkb4j-trigger-api/ # 触发器相关 API
├── maxkb4j-service/ # 服务实现层 - 业务逻辑实现
│ ├── maxkb4j-application/ # 应用服务实现
│ ├── maxkb4j-knowledge/ # 知识库服务实现
│ ├── maxkb4j-model/ # 模型服务实现
│ ├── maxkb4j-workflow/ # 工作流服务实现
│ ├── maxkb4j-tool/ # 工具服务实现
│ ├── maxkb4j-chat/ # 聊天服务实现
│ ├── maxkb4j-oss/ # 对象存储服务实现
│ ├── maxkb4j-system/ # 系统服务实现
│ └── maxkb4j-trigger/ # 触发器服务实现
├── maxkb4j-start/ # 启动模块 - 配置、监听器、入口
└── ui/ # 前端项目 - Vue 3 应用
核心模块详解
1. maxkb4j-common (公共模块) 路径 : maxkb4j-common/src/main/java/com/maxkb4j/common/
这一层是项目的基石,提供通用的基础设施。比如统一响应封装 R.java 和全局异常处理 GlobalExceptionHandler.java,确保整个系统的交互规范一致。Sa-Token 权限工具 StpKit.java 也在这里集中管理。
包名 功能 annotation自定义注解(如权限检查 @SaCheckPerm) api统一响应封装(R, ResultCode, IResultCode) aspectAOP 切面(权限检查切面) cache缓存实现(认证码缓存、聊天缓存、系统缓存) constant常量定义(应用常量、登录类型、权限、角色类型) domain领域对象(DTO、VO、表单对象) enums枚举类型 exception自定义异常 handler全局处理器(异常处理、字段填充) mpMyBatis-Plus 配置(实体基类、设置实体) props配置属性类 typehandler自定义类型处理器(JSONB、List、Set 等) util工具类集合
2. maxkb4j-core (核心模块) 路径 : maxkb4j-core/src/main/java/com/maxkb4j/core/
这里是 AI 能力的核心所在。我们定义了各种类型的助手接口,比如意图分类助手 IntentClassifyAssistant 或自然语言转 SQL 助手 NL2SqlAssistant。事件系统则负责处理文档索引、问题生成等异步操作。
Assistant (AI 助手接口) 类名 功能 Assistant基础聊天助手接口 CompressingQueryAssistant压缩查询助手 ExpandingQueryAssistant扩展查询助手 IntentClassifyAssistant意图分类助手 NL2SqlAssistant自然语言转 SQL 助手 ParameterExtractionAssistant参数提取助手 ProblemGenerateAssistant问题生成助手 RouterAssistant路由助手
Event (事件系统) 事件 触发时机 DocumentIndexEvent文档索引事件 GenerateProblemEvent问题生成事件 ParagraphIndexEvent段落索引事件
LangChain4j 集成
AppChatMemory - 应用聊天记忆管理
AssistantServices - 助手服务工厂
3. maxkb4j-service-api (服务 API 层) 定义服务接口、实体、DTO、VO 和 Mapper。这里主要关注数据模型的设计,比如知识库表 KnowledgeEntity、文档表 DocumentEntity 以及向量嵌入表 EmbeddingEntity。
主要实体 实体 所属模块 描述 ApplicationEntityapplication-api 应用配置 ApplicationChatEntityapplication-api 聊天会话 ApplicationChatRecordEntityapplication-api 聊天记录 KnowledgeEntityknowledge-api 知识库 DocumentEntityknowledge-api 文档 ParagraphEntityknowledge-api 段落 ProblemEntityknowledge-api 问题 EmbeddingEntityknowledge-api 向量嵌入 FolderEntityfolder-api 文件夹
数据库表结构
4. maxkb4j-service (服务实现层)
4.1 maxkb4j-application (应用服务) 核心功能 : 应用管理、聊天服务(简单聊天、工作流聊天)、访问令牌管理、API Key 管理及聊天记录管理。
关键类 : ApplicationService, ChatSimpleServiceImpl, ChatFlowServiceImpl, ChatServiceBuilder。
PipelineManage
├── GenerateHumanMessageStep # 生成用户消息
├── ResetProblemStep # 重置问题
├── SearchDatasetStep # 搜索知识库
└── ChatStep # 聊天步骤
4.2 maxkb4j-knowledge (知识库服务) 核心功能 : 知识库管理、文档解析(PDF、Word、TXT、Markdown、HTML、URL 等)、文档分块、向量索引及检索服务。
解析器 支持格式 PdfParserPDF DocParserWord (doc/docx) TxtParser纯文本 MDParserMarkdown HtmlParserHTML ExcelParserExcel PptParserPowerPoint CsvParserCSV UrlParser网页 URL
检索策略 : FullTextRetriever (全文检索), HybridRetriever (混合检索), PgVectorIndexService (PostgreSQL 向量索引)。
4.3 maxkb4j-model (模型服务) 核心功能 : 模型提供商管理、模型实例构建、多种模型类型支持。
提供商 类名 支持模型 OpenAI OpenAiModelProviderGPT 系列 Anthropic AnthropicProviderClaude 系列 Google GeminiModelProviderGemini 系列 DeepSeek DeepSeekModelProviderDeepSeek 系列 阿里云百炼 AliYunBaiLianModelProvider通义千问 腾讯 TencentModelProvider混元 字节跳动 VolcanicEngineModelProvider豆包 百度 WenXinModelProvider文心一言 智谱 ZhiPuModelProviderGLM 系列 Kimi KimiModelProviderMoonshot Ollama OLlamaModelProvider本地模型 Azure AzureModelProviderAzure OpenAI SiliconFlow SiliconFlowModelProviderSiliconFlow Xinference XInferenceModelProviderXinference
模型类型 : ChatModel, StreamingChatModel, EmbeddingModel, ImageModel, ScoringModel, STTModel, TTSModel。
4.4 maxkb4j-workflow (工作流服务) WorkFlowActuator (工作流执行器)
├── ChatWorkflowHandler (聊天工作流处理器)
└── KnowledgeWorkflowHandler (知识库工作流处理器)
节点类型 描述 处理器 START开始节点 StartNodeHandlerAI_CHATAI 聊天节点 LLMNodeHandlerSEARCH_KNOWLEDGE知识库搜索 SearchKnowledgeNodeHandlerCONDITION条件节点 ConditionNodeHandlerHTTP_CLIENTHTTP 请求 HttpNodeHandlerTOOL工具节点 ToolNodeHandlerMCPMCP 节点 McpNodeHandlerFORM表单节点 FormNodeHandlerQUESTION问题节点 QuestionNodeHandlerREPLY回复节点 DirectReplyNodeHandlerRERANKER重排序节点 RerankerNodeHandlerINTENT_CLASSIFY意图分类 IntentClassifyNodeHandlerPARAMETER_EXTRACTION参数提取 ParameterExtractionNodeHandlerNL2SQL自然语言转 SQL NL2SqlNodeHandlerIMAGE_GENERATE图像生成 ImageGenerateNodeHandlerIMAGE_UNDERSTAND图像理解 - TEXT_TO_SPEECH文字转语音 TextToSpeechNodeHandlerSPEECH_TO_TEXT语音转文字 SpeechToTextNodeHandlerDOCUMENT_EXTRACT文档提取 DocumentExtractNodeHandlerDOCUMENT_SPLIT文档分块 DocumentSpiltHandlerVARIABLE_ASSIGN变量赋值 VariableAssignNodeHandlerVARIABLE_AGGREGATE变量聚合 VariableAggregationNodeHandlerAPPLICATION应用节点 ApplicationNodeHandlerLOOP循环节点 LoopNodeHandlerLOOP_START循环开始 LoopStartNodeHandlerLOOP_BREAK循环跳出 LoopBreakNodeHandlerLOOP_CONTINUE循环继续 LoopContinueNodeHandlerKNOWLEDGE_WRITE知识库写入 KnowledgeWriteHandlerDATA_SOURCE_LOCAL本地数据源 DataSourceLocalHandlerDATA_SOURCE_WEBWeb 数据源 DataSourceWebHandlerUSER_SELECT用户选择 UserSelectNodeHandler
条件比较器 : EqualCompare, ContainCompare, GTCompare/GECompare, LTCompare/LECompare, IsNullCompare/IsNotNullCompare, IsTrueCompare/IsNotTrueCompare, LengthEqualCompare 等。
4.5 maxkb4j-tool (工具服务) 关键类 : ToolService, ToolProviderService, McpToolUtil, SkillsToolUtil。
5. maxkb4j-start (启动模块) 路径 : maxkb4j-start/src/main/java/com/maxkb4j/start/
配置类 配置类 功能 MybatisPlusConfigMyBatis-Plus 配置 SaTokenConfigureSa-Token 认证配置 WebConfigWeb MVC 配置 MongoConfigMongoDB 配置 ThreadPoolConfig线程池配置 Knife4jConfigurationAPI 文档配置 ThymeleafConfig模板引擎配置
监听器 监听器 功能 StartedListener应用启动监听器 DataIndexListener数据索引监听器 GenerateProblemListener问题生成监听器
数据库迁移
V1__init_tables.sql - 初始化表结构
V2__add_table.sql - 新增表
V3__add_trigger.sql - 触发器表
6. ui (前端项目)
技术栈
框架 : Vue 3.5 + TypeScript
UI 组件 : Element Plus 2.12
状态管理 : Pinia 3.0
路由 : Vue Router 4.5
工作流编辑器 : LogicFlow 1.2
图表 : ECharts 5.6
Markdown : md-editor-v3
构建工具 : Vite 6.2
目录结构 ui/src/
├── App.vue # 根组件
├── main.ts # 入口文件
├── components/ # 公共组件
│ ├── ai-chat/ # AI 聊天组件
│ ├── dynamics-form/ # 动态表单组件
│ ├── markdown/ # Markdown 组件
│ └── ...
├── layout/ # 布局组件
├── views/ # 页面视图
│ ├── application/ # 应用管理
│ ├── application-overview/ # 应用概览
│ ├── chat/ # 聊天页面
│ ├── chat-log/ # 聊天日志
│ ├── chat-user/ # 聊天用户
│ ├── document/ # 文档管理
│ ├── knowledge/ # 知识库管理
│ ├── login/ # 登录页面
│ ├── model/ # 模型管理
│ ├── paragraph/ # 段落管理
│ ├── problem/ # 问题管理
│ ├── system/ # 系统管理
│ ├── system-chat-user/ # 系统聊天用户
│ ├── system-setting/ # 系统设置
│ ├── tool/ # 工具管理
│ └── workflow/ # 工作流编辑
└── workflow/ # 工作流相关
├── nodes/ # 节点组件
├── icons/ # 节点图标
└── common/ # 公共组件
主要页面 页面 路径 功能 登录 /login用户登录 应用概览 /application应用列表和管理 聊天 /chat智能问答 知识库 /knowledge知识库管理 文档 /document文档管理 模型 /model模型配置 工具 /tool工具管理 系统设置 /system系统配置
API 接口
认证接口 POST /api/user/login
POST /api/user/logout
GET /api/user/info
应用接口 GET /api/application
POST /api/application
PUT /api/application/{id }
DELETE /api/application/{id }
GET /api/application/{id }
POST /api/application/chat
知识库接口 GET /api/knowledge
POST /api/knowledge
PUT /api/knowledge/{id }
DELETE /api/knowledge/{id }
GET /api/knowledge/{id }
文档接口 GET /api/document
POST /api/document
DELETE /api/document/{id }
POST /api/document/split
POST /api/document/index
模型接口 GET /api/model
POST /api/model
PUT /api/model/{id }
DELETE /api/model/{id }
GET /api/provider
部署指南
系统要求
Java 21+
Maven 3.8+
PostgreSQL 12+ (启用 pgvector 扩展)
MongoDB 6.0+ (可选,用于全文搜索)
Node.js 20+ (前端构建)
Docker 部署 docker run --name maxkb4j -d \
--restart always \
-p 8080:8080 \
-e SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/MaxKB4j \
-e SPRING_DATASOURCE_USERNAME=postgres \
-e SPRING_DATASOURCE_PASSWORD=123456 \
-e SPRING_DATA_MONGODB_URI=mongodb://admin:123456@localhost:27017/MaxKB4j?authSource=admin \
registry.cn-hangzhou.aliyuncs.com/tarzanx/maxkb4j
Docker Compose 部署 version: '3'
services:
maxkb4j:
image: registry.cn-hangzhou.aliyuncs.com/tarzanx/maxkb4j
ports:
- "8080:8080"
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/MaxKB4j
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=123456
- SPRING_DATA_MONGODB_URI=mongodb://admin:123456@mongo:27017/MaxKB4j?authSource=admin
depends_on:
- postgres
- mongo
postgres:
image: pgvector/pgvector:pg15
environment:
POSTGRES_DB: MaxKB4j
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 123456
volumes:
- postgres_data:/var/lib/postgresql/data
mongo:
image: mongo:6.0
environment:
MONGO_INITDB_ROOT_USERNAME: admin
MONGO_INITDB_ROOT_PASSWORD: 123456
volumes:
- mongo_data:/data/db
volumes:
postgres_data:
mongo_data:
本地开发
cd MaxKB4j
mvn spring-boot:run -pl maxkb4j-start
cd ui
npm install
npm run dev
配置说明
application.yml 主要配置 spring:
datasource:
url: jdbc:postgresql://localhost:5432/MaxKB4j
username: postgres
password: 123456
data:
mongodb:
uri: mongodb://admin:123456@localhost:27017/MaxKB4j?authSource=admin
sa-token:
token-name: Authorization
timeout: 2592000
active-timeout: -1
is-concurrent: true
is-share: true
token-style: uuid
is-log: false
扩展开发
添加新的模型提供商 如果你需要接入其他模型,只需继承 AbsModelProvider 类,然后实现必要的方法即可。比如 getModelList() 返回支持的模型列表,buildChatModel() 构建对话模型,最后记得注册为 Spring Bean。
添加新的工作流节点 在 NodeType 枚举中添加新类型,创建对应的节点数据类(继承 AbsNode),编写节点处理器(实现 INodeHandler),并加上 @NodeHandlerType 注解。这样前端就能识别并渲染这个新节点了。
添加新的文档解析器 实现 DocumentParser 接口,注册为 Spring Bean,系统就会自动识别并支持该格式的文档解析。
许可证 GNU General Public License v3.0 (GPLv3)
相关免费在线工具 Keycode 信息 查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
Escape 与 Native 编解码 JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
JavaScript / HTML 格式化 使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
JavaScript 压缩与混淆 Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online