跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaAIjava

MaxKB4j 开源 RAG 知识库与工作流平台技术解析

MaxKB4j 基于 Java Spring Boot 和 LangChain4j 构建,是开源 RAG 知识库与 LLM 工作流平台。支持多模型集成、可视化编排、MCP 协议及多模态能力。技术栈涵盖 Java 21、Vue 3、PostgreSQL 及 MongoDB。提供 Docker 部署方案,适用于企业级智能问答系统开发。

GopherDev发布于 2026/3/24更新于 2026/8/1852 浏览
MaxKB4j 开源 RAG 知识库与工作流平台技术解析

MaxKB4j 技术架构详解

项目概述

MaxKB4j (Max Knowledge Base for Java) 是一款专为构建企业级智能问答系统设计的开源平台。它基于 Java 21、Spring Boot 3.5.1 和 LangChain4j 构建,支持多模型集成、可视化工作流编排、知识库问答以及多模态能力。

核心特性

  • 开箱即用的知识库问答: 支持上传本地文档或自动抓取网页内容,自动完成文本分块 → 向量化 → 向量数据库存储 → 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
ORMMyBatis-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/

提供项目通用的基础设施:

包名功能
annotation自定义注解(如权限检查 @SaCheckPerm)
api统一响应封装(R, ResultCode, IResultCode)
aspectAOP 切面(权限检查切面)
cache缓存实现(认证码缓存、聊天缓存、系统缓存)
constant常量定义(应用常量、登录类型、权限、角色类型)
domain领域对象(DTO、VO、表单对象)
enums枚举类型
exception自定义异常
handler全局处理器(异常处理、字段填充)
mpMyBatis-Plus 配置(实体基类、设置实体)
props配置属性类
typehandler自定义类型处理器(JSONB、List、Set 等)
util工具类集合

关键类:

  • R.java - 统一 API 响应封装
  • GlobalExceptionHandler.java - 全局异常处理
  • StpKit.java - Sa-Token 权限工具

2. maxkb4j-core (核心模块)

路径: maxkb4j-core/src/main/java/com/maxkb4j/core/

核心 AI 能力实现:

Assistant (AI 助手接口)
类名功能
Assistant基础聊天助手接口
CompressingQueryAssistant压缩查询助手
ExpandingQueryAssistant扩展查询助手
IntentClassifyAssistant意图分类助手
NL2SqlAssistant自然语言转 SQL 助手
ParameterExtractionAssistant参数提取助手
ProblemGenerateAssistant问题生成助手
RouterAssistant路由助手
Event (事件系统)
事件触发时机
DocumentIndexEvent文档索引事件
GenerateProblemEvent问题生成事件
ParagraphIndexEvent段落索引事件
LangChain4j 集成
  • AppChatMemory - 应用聊天记忆管理
  • AssistantServices - 助手服务工厂

3. maxkb4j-service-api (服务 API 层)

路径: maxkb4j-service-api/

定义服务接口、实体、DTO、VO 和 Mapper:

主要实体
实体所属模块描述
ApplicationEntityapplication-api应用配置
ApplicationChatEntityapplication-api聊天会话
ApplicationChatRecordEntityapplication-api聊天记录
KnowledgeEntityknowledge-api知识库
DocumentEntityknowledge-api文档
ParagraphEntityknowledge-api段落
ProblemEntityknowledge-api问题
EmbeddingEntityknowledge-api向量嵌入
FolderEntityfolder-api文件夹
数据库表结构

主要数据表:

-- 用户表 user(id, email, phone, nickname, username, password, role, is_active)
-- 知识库表 knowledge (id, name,type, source_type, embedding_model_id,...)
-- 文档表 document (id, knowledge_id, name,type, content,...)
-- 段落表 paragraph (id, document_id, content, title,...)
-- 向量嵌入表 embedding (id, paragraph_id, embedding vector(1536),...)
-- 应用表 application (id, name,type, model_id, workflow,...)
-- 聊天记录表 application_chat_record (id, application_id, chat_id, problem_text, answer_text,...)

4. maxkb4j-service (服务实现层)

路径: maxkb4j-service/

4.1 maxkb4j-application (应用服务)

核心功能:

  • 应用管理(创建、更新、删除、查询)
  • 聊天服务(简单聊天、工作流聊天)
  • 访问令牌管理
  • API Key 管理
  • 聊天记录管理

关键类:

  • ApplicationService - 应用管理服务
  • ChatSimpleServiceImpl - 简单聊天实现
  • ChatFlowServiceImpl - 工作流聊天实现
  • ChatServiceBuilder - 聊天服务构建器

Pipeline 架构:

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 (模型服务)

核心功能:

  • 模型提供商管理
  • 模型实例构建
  • 多种模型类型支持

支持的模型提供商:

提供商类名支持模型
OpenAIOpenAiModelProviderGPT 系列
AnthropicAnthropicProviderClaude 系列
GoogleGeminiModelProviderGemini 系列
DeepSeekDeepSeekModelProviderDeepSeek 系列
阿里云百炼AliYunBaiLianModelProvider通义千问
腾讯TencentModelProvider混元
字节跳动VolcanicEngineModelProvider豆包
百度WenXinModelProvider文心一言
智谱ZhiPuModelProviderGLM 系列
KimiKimiModelProviderMoonshot
OllamaOLlamaModelProvider本地模型
AzureAzureModelProviderAzure OpenAI
SiliconFlowSiliconFlowModelProviderSiliconFlow
XinferenceXInferenceModelProviderXinference

模型类型:

  • ChatModel - 对话模型
  • StreamingChatModel - 流式对话模型
  • EmbeddingModel - 嵌入模型
  • ImageModel - 图像生成模型
  • ScoringModel - 重排序模型
  • STTModel - 语音转文字
  • TTSModel - 文字转语音
4.4 maxkb4j-workflow (工作流服务)

核心架构:

WorkFlowActuator (工作流执行器)
├── ChatWorkflowHandler (聊天工作流处理器)
└── KnowledgeWorkflowHandler (知识库工作流处理器)

节点类型 (NodeType 枚举):

节点类型描述处理器
START开始节点StartNodeHandler
AI_CHATAI 聊天节点LLMNodeHandler
SEARCH_KNOWLEDGE知识库搜索SearchKnowledgeNodeHandler
CONDITION条件节点ConditionNodeHandler
HTTP_CLIENTHTTP 请求HttpNodeHandler
TOOL工具节点ToolNodeHandler
MCPMCP 节点McpNodeHandler
FORM表单节点FormNodeHandler
QUESTION问题节点QuestionNodeHandler
REPLY回复节点DirectReplyNodeHandler
RERANKER重排序节点RerankerNodeHandler
INTENT_CLASSIFY意图分类IntentClassifyNodeHandler
PARAMETER_EXTRACTION参数提取ParameterExtractionNodeHandler
NL2SQL自然语言转 SQLNL2SqlNodeHandler
IMAGE_GENERATE图像生成ImageGenerateNodeHandler
IMAGE_UNDERSTAND图像理解-
TEXT_TO_SPEECH文字转语音TextToSpeechNodeHandler
SPEECH_TO_TEXT语音转文字SpeechToTextNodeHandler
DOCUMENT_EXTRACT文档提取DocumentExtractNodeHandler
DOCUMENT_SPLIT文档分块DocumentSpiltHandler
VARIABLE_ASSIGN变量赋值VariableAssignNodeHandler
VARIABLE_AGGREGATE变量聚合VariableAggregationNodeHandler
APPLICATION应用节点ApplicationNodeHandler
LOOP循环节点LoopNodeHandler
LOOP_START循环开始LoopStartNodeHandler
LOOP_BREAK循环跳出LoopBreakNodeHandler
LOOP_CONTINUE循环继续LoopContinueNodeHandler
KNOWLEDGE_WRITE知识库写入KnowledgeWriteHandler
DATA_SOURCE_LOCAL本地数据源DataSourceLocalHandler
DATA_SOURCE_WEBWeb 数据源DataSourceWebHandler
USER_SELECT用户选择UserSelectNodeHandler

条件比较器:

  • EqualCompare - 等于
  • ContainCompare - 包含
  • GTCompare/GECompare - 大于/大于等于
  • LTCompare/LECompare - 小于/小于等于
  • IsNullCompare/IsNotNullCompare - 空值判断
  • IsTrueCompare/IsNotTrueCompare - 布尔判断
  • LengthEqualCompare 等 - 长度比较
4.5 maxkb4j-tool (工具服务)

核心功能:

  • 工具管理
  • 工具连接验证
  • 工具导入导出

关键类:

  • ToolService - 工具服务
  • ToolProviderService - 工具提供者服务
  • McpToolUtil - MCP 工具工具类
  • 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 (前端项目)

路径: 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 -p8080: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 配置
sa-token:
  token-name: Authorization
  timeout: 2592000
  active-timeout: -1
  is-concurrent: true
  is-share: true
  token-style: uuid
  is-log: false

扩展开发

添加新的模型提供商

  1. 继承 AbsModelProvider 类
  2. 实现必要的方法:
    • getModelList() - 返回支持的模型列表
    • buildChatModel() - 构建对话模型
    • buildEmbeddingModel() - 构建嵌入模型
  3. 注册为 Spring Bean

添加新的工作流节点

  1. 在 NodeType 枚举中添加节点类型
  2. 创建节点数据类(继承 AbsNode)
  3. 创建节点处理器(实现 INodeHandler)
  4. 添加 @NodeHandlerType 注解

添加新的文档解析器

  1. 实现 DocumentParser 接口
  2. 注册为 Spring Bean

许可证

GNU General Public License v3.0 (GPLv3)


相关资源

  • Gitee Issues

目录

  1. MaxKB4j 技术架构详解
  2. 项目概述
  3. 核心特性
  4. 技术栈
  5. 项目结构
  6. 核心模块详解
  7. 1. maxkb4j-common (公共模块)
  8. 2. maxkb4j-core (核心模块)
  9. Assistant (AI 助手接口)
  10. Event (事件系统)
  11. LangChain4j 集成
  12. 3. maxkb4j-service-api (服务 API 层)
  13. 主要实体
  14. 数据库表结构
  15. 4. maxkb4j-service (服务实现层)
  16. 4.1 maxkb4j-application (应用服务)
  17. 4.2 maxkb4j-knowledge (知识库服务)
  18. 4.3 maxkb4j-model (模型服务)
  19. 4.4 maxkb4j-workflow (工作流服务)
  20. 4.5 maxkb4j-tool (工具服务)
  21. 5. maxkb4j-start (启动模块)
  22. 配置类
  23. 监听器
  24. 数据库迁移
  25. 6. ui (前端项目)
  26. 技术栈
  27. 目录结构
  28. 主要页面
  29. API 接口
  30. 认证接口
  31. 应用接口
  32. 知识库接口
  33. 文档接口
  34. 模型接口
  35. 部署指南
  36. 系统要求
  37. Docker 部署
  38. Docker Compose 部署
  39. 本地开发
  40. 后端
  41. 前端
  42. 配置说明
  43. application.yml 主要配置
  44. Sa-Token 配置
  45. 扩展开发
  46. 添加新的模型提供商
  47. 添加新的工作流节点
  48. 添加新的文档解析器
  49. 许可证
  50. 相关资源
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 西门子 PLC1500 与 FANUC 机器人焊装项目架构解析
  • 5 个维度掌握 python-okx 库:API 整合与量化交易实战
  • 二分查找实战:旋转排序数组最小值与缺失数字求解
  • YOLO 无人机目标检测数据集与实战训练教程
  • 大模型降低 AIGC 率的指令优化实战指南
  • 2026 年 OPC 商业模式全景解析:AI 赋能一人公司
  • Photon 联邦训练与 RLEF 代码纠错:AI 大模型新突破
  • 前端常见安全攻击手段及防御策略
  • Kratos 主题 SMTP 配置:实现博客评论邮件通知
  • 基于 LangChain 实现数据库问答机器人
  • 大语言模型在信息检索研究中的革新应用
  • Android 开发面试核心知识点与八股文精选题解
  • Android 插件化技术:动态加载综述与核心原理
  • N46Whisper 实战:利用云端 AI 快速生成日语视频字幕
  • OpenWork 开源平替 Claude Cowork:本地优先的 AI 协作方案
  • C++ 基于红黑树封装 map 与 set 详解
  • AI 辅助开发:智能生成安装程序的实践与优化
  • 通义 DeepResearch 开源:轻量级 AI 代理性能对标 OpenAI
  • Linux 进程 fork 写时拷贝机制与常见退出方式
  • A* 算法原理与历史:Hart, Nilsson, Raphael 1968 年论文解读

相关免费在线工具

  • 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

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online