AI应用部署:JeecgBoot AI模型在线部署指南
你是否还在为企业级AI应用部署流程繁琐而困扰?是否担心模型配置复杂导致项目延期?本文将以JeecgBoot的AI模块为例,带你快速掌握从环境配置到模型上线的全流程,无需复杂编程即可完成企业级AI服务部署。读完本文你将获得:AI模型可视化配置方法、分布式部署架构设计、实时对话服务开发指南以及性能优化最佳实践。
一、环境准备与依赖说明
JeecgBoot AI模块(Airag)基于Spring Boot微服务架构设计,支持主流大语言模型(LLM)和向量模型部署。核心依赖组件包括:
- 数据库:PostgreSQL 15+(向量存储)、MySQL 5.7+(业务数据)
- 缓存系统:Redis 6.0+(会话管理与高频数据缓存)
- 消息队列:默认内置SSE(Server-Sent Events)实现实时通信
- AI框架:LangChain4J(模型调用抽象层)、Spring AI(可选扩展)
核心配置文件路径:jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/resources/application.yml
关键配置项说明:
jeecg:
ai-rag:
embed-store: # 向量存储配置
host: "localhost"
port: 15432
database: "postgres"
table: "embeddings" # 向量数据存储表名
二、模型配置与测试流程
2.1 模型注册与参数设置
通过AiragModelController提供的REST接口可完成模型可视化配置,支持LLM(对话模型)和Embedding(向量模型)两类部署。核心接口定义在:jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/llm/controller/AiragModelController.java
添加模型示例代码:
@PostMapping(value = "/add")
public Result<String> add(@RequestBody AiragModel airagModel) {
// 验证必填参数
AssertUtils.assertNotEmpty("模型名称不能为空", airagModel.getName());
AssertUtils.assertNotEmpty("模型类型不能为空", airagModel.getModelType()); // LLM或EMBEDDING
AssertUtils.assertNotEmpty("基础模型不能为空", airagModel.getModelName()); // 如gpt-3.5-turbo
airagModelService.save(airagModel);
return Result.OK("添加成功!");
}
2.2 连接测试与状态激活
模型添加后需通过/test接口验证连接性,系统会自动检测API密钥有效性和网络连通性。测试通过后模型状态将自动激活(activateFlag=1):
@PostMapping(value = "/test")
public Result<?> test(@RequestBody AiragModel airagModel) {
try {
if(LLMConsts.MODEL_TYPE_LLM.equals(airagModel.getModelType())){
// 测试对话模型
aiChatHandler.completions(airagModel,
Collections.singletonList(UserMessage.from("返回success")), null);
}else{
// 测试向量模型
EmbeddingModel embeddingModel = AiModelFactory.createEmbeddingModel(aiModelOptions);
embeddingModel.embed("test text");
}
airagModel.setActivateFlag(1); // 激活模型
airagModelService.updateById(airagModel);
return Result.OK("测试成功");
}catch (Exception e){
return Result.error("测试失败:" + e.getMessage());
}
}
三、实时对话服务开发
3.1 SSE实时通信实现
AiragChatController通过Server-Sent Events技术实现流式响应,支持前端实时接收AI生成结果。核心实现代码位于:jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/src/main/java/org/jeecg/modules/airag/app/controller/AiragChatController.java
发送消息接口:
@PostMapping(value = "/send")
public SseEmitter send(@RequestBody ChatSendParams chatSendParams) {
// 设置超时时间30分钟
SseEmitter emitter = new SseEmitter(1800000L);
chatService.handleStreamMessage(chatSendParams, emitter);
return emitter;
}
3.2 对话状态管理
系统通过Redis维护会话状态,支持多轮对话上下文记忆。关键API包括:
- 获取对话历史:GET /airag/chat/messages?conversationId=xxx
- 清空对话记录:GET /airag/chat/messages/clear/{conversationId}
- 更新对话标题:PUT /airag/chat/conversation/update/title
四、部署架构与扩展方案
4.1 单机部署流程
通过Docker Compose可快速启动完整环境,包含数据库、缓存和AI服务:
# 启动基础依赖服务
docker-compose -f docker-compose.yml up -d mysql postgres redis
# 启动AI模块服务
cd jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag
mvn clean package -DskipTests
java -jar target/jeecg-boot-module-airag-3.5.4.jar
4.2 分布式集群部署
在生产环境建议采用微服务架构,通过Nacos实现服务注册与配置中心,部署架构如下:
核心服务部署路径:jeecg-boot/jeecg-server-cloud/jeecg-system-cloud-start/
五、性能优化与监控
5.1 向量检索优化
通过调整PostgreSQL向量索引参数提升检索性能:
-- 创建向量索引(针对1536维向量)
CREATE INDEX embeddings_idx ON embeddings
USING ivfflat (vector vector_cosine_ops) WITH (lists = 100);
5.2 请求限流与熔断
在application.yml中配置限流参数:
jeecg:
airag:
rate-limit:
enabled: true
max-requests: 60 # 每分钟最大请求数
burst-capacity: 10 # 突发请求容量
5.3 监控指标采集
通过Spring Boot Actuator暴露监控端点,关键指标包括:
- API调用量:/actuator/metrics/http.server.requests
- 模型响应时间:/actuator/metrics/airag.model.response.time
- 向量检索性能:/actuator/metrics/airag.embedding.search.time
六、常见问题解决
-
模型测试连接失败
检查网络连通性和API密钥有效性,可通过POST /airag/airagModel/test接口获取详细错误信息 -
向量存储初始化失败
确认PostgreSQL已安装pgvector扩展:CREATE EXTENSION vector; -
对话上下文丢失
检查Redis连接状态和会话超时配置,默认会话有效期为2小时
七、总结与后续展望
本文详细介绍了JeecgBoot AI模块的部署流程,包括环境配置、模型管理、实时通信和架构扩展。通过提供的REST接口和可视化配置工具,非专业开发人员也能快速部署企业级AI服务。
下期预告:《JeecgBoot AI+低代码平台集成实战》,将介绍如何通过拖拽式表单构建AI应用前端界面。收藏本文,关注项目更新获取更多实战指南!
官方文档:jeecg-boot/README.md
AI模块源码:jeecg-boot/jeecg-boot-module/jeecg-boot-module-airag/
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



