Java 后端开发者转型 Java AI 完整学习计划

☕ Java 后端开发者转型 Java AI 完整学习计划

适用对象 :具备 Java 后端开发基础,希望转型 AI 方向,且不离开 Java 技术栈的开发者

制定时间 :2026年6月

预计周期:6 ~ 12 个月(视基础和投入时间调整)


📋 目录

  1. 学习路线概览
  2. [AI 基础知识](#AI 基础知识)
  3. [Java AI 生态栈详解](#Java AI 生态栈详解)
  4. 大模型应用开发
  5. 工程化实践
  6. 学习资源推荐
  7. 时间规划与里程碑

一、学习路线概览

1.1 总体学习路线图

#mermaid-svg-qJTlWpSbVDgYeAin{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-qJTlWpSbVDgYeAin .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-qJTlWpSbVDgYeAin .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-qJTlWpSbVDgYeAin .error-icon{fill:#552222;}#mermaid-svg-qJTlWpSbVDgYeAin .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-qJTlWpSbVDgYeAin .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-qJTlWpSbVDgYeAin .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-qJTlWpSbVDgYeAin .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-qJTlWpSbVDgYeAin .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-qJTlWpSbVDgYeAin .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-qJTlWpSbVDgYeAin .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-qJTlWpSbVDgYeAin .marker{fill:#333333;stroke:#333333;}#mermaid-svg-qJTlWpSbVDgYeAin .marker.cross{stroke:#333333;}#mermaid-svg-qJTlWpSbVDgYeAin svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-qJTlWpSbVDgYeAin p{margin:0;}#mermaid-svg-qJTlWpSbVDgYeAin .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-qJTlWpSbVDgYeAin .cluster-label text{fill:#333;}#mermaid-svg-qJTlWpSbVDgYeAin .cluster-label span{color:#333;}#mermaid-svg-qJTlWpSbVDgYeAin .cluster-label span p{background-color:transparent;}#mermaid-svg-qJTlWpSbVDgYeAin .label text,#mermaid-svg-qJTlWpSbVDgYeAin span{fill:#333;color:#333;}#mermaid-svg-qJTlWpSbVDgYeAin .node rect,#mermaid-svg-qJTlWpSbVDgYeAin .node circle,#mermaid-svg-qJTlWpSbVDgYeAin .node ellipse,#mermaid-svg-qJTlWpSbVDgYeAin .node polygon,#mermaid-svg-qJTlWpSbVDgYeAin .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-qJTlWpSbVDgYeAin .rough-node .label text,#mermaid-svg-qJTlWpSbVDgYeAin .node .label text,#mermaid-svg-qJTlWpSbVDgYeAin .image-shape .label,#mermaid-svg-qJTlWpSbVDgYeAin .icon-shape .label{text-anchor:middle;}#mermaid-svg-qJTlWpSbVDgYeAin .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-qJTlWpSbVDgYeAin .rough-node .label,#mermaid-svg-qJTlWpSbVDgYeAin .node .label,#mermaid-svg-qJTlWpSbVDgYeAin .image-shape .label,#mermaid-svg-qJTlWpSbVDgYeAin .icon-shape .label{text-align:center;}#mermaid-svg-qJTlWpSbVDgYeAin .node.clickable{cursor:pointer;}#mermaid-svg-qJTlWpSbVDgYeAin .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-qJTlWpSbVDgYeAin .arrowheadPath{fill:#333333;}#mermaid-svg-qJTlWpSbVDgYeAin .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-qJTlWpSbVDgYeAin .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-qJTlWpSbVDgYeAin .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-qJTlWpSbVDgYeAin .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-qJTlWpSbVDgYeAin .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-qJTlWpSbVDgYeAin .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-qJTlWpSbVDgYeAin .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-qJTlWpSbVDgYeAin .cluster text{fill:#333;}#mermaid-svg-qJTlWpSbVDgYeAin .cluster span{color:#333;}#mermaid-svg-qJTlWpSbVDgYeAin div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-qJTlWpSbVDgYeAin .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-qJTlWpSbVDgYeAin rect.text{fill:none;stroke-width:0;}#mermaid-svg-qJTlWpSbVDgYeAin .icon-shape,#mermaid-svg-qJTlWpSbVDgYeAin .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-qJTlWpSbVDgYeAin .icon-shape p,#mermaid-svg-qJTlWpSbVDgYeAin .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-qJTlWpSbVDgYeAin .icon-shape .label rect,#mermaid-svg-qJTlWpSbVDgYeAin .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-qJTlWpSbVDgYeAin .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-qJTlWpSbVDgYeAin .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-qJTlWpSbVDgYeAin :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} ⚙️ 第四阶段:工程化实践(1-2月)
微服务集成 AI
性能调优
AI 应用部署
监控与可观测性
🤖 第三阶段:大模型应用开发(2-3月)
Prompt 工程
RAG 系统构建
Agent 开发
向量数据库集成
🔧 第二阶段:Java AI 框架(2-3月)
LangChain4j 入门
Spring AI 集成
Deeplearning4j 基础
ONNX Runtime 推理
🌱 第一阶段:AI 基础(1-2月)
数学基础补充
机器学习基础概念
深度学习基础概念
大模型基础原理
☕ Java 后端开发者
🎯 具备 Java AI 应用独立开发能力

1.2 核心学习原则

原则 说明
Java 优先 所有框架、工具、示例均以 Java 为主语言
🎯 应用导向 聚焦工程应用,而非纯学术研究
🔄 实践驱动 每个阶段配有动手项目,边学边做
📈 循序渐进 从基础到进阶,知识点相互衔接
🏢 产业聚焦 结合企业真实场景,学以致用

1.3 技能树全览

复制代码
Java AI 技能树
├── AI 基础知识
│   ├── 数学基础(线性代数 / 概率统计 / 微积分)--不学也行
│   ├── 机器学习(监督/无监督/强化学习)--不学也行
│   ├── 深度学习(CNN / RNN / Transformer)--不学也行
│   └── 大模型原理(GPT / BERT / Attention) --不学也行
├── Java AI 生态
│   ├── LangChain4j ★★★★★(大模型应用首选)
│   ├── Spring AI ★★★★☆(企业集成首选)
│   ├── Deeplearning4j ★★★☆☆(自训练场景)
│   ├── ONNX Runtime ★★★☆☆(模型推理)
│   └── Weka ★★☆☆☆(传统机器学习)
├── 大模型应用开发
│   ├── Prompt 工程
│   ├── RAG 检索增强生成
│   ├── AI Agent 开发
│   ├── Function Calling
│   └── 多模态应用
└── 工程化能力
    ├── 微服务 AI 集成
    ├── 向量数据库运维
    ├── AI 应用性能优化
    └── 监控与可观测性

二、AI 基础知识

说明:作为工程师,数学不需要达到科研级别,但核心概念必须理解,才能看懂框架文档和调优参数。

2.1 数学基础(轻量化版)

线性代数(最重要)
概念 在 AI 中的用途 学习重点
向量 Vector 文本嵌入、特征表示 点积、余弦相似度
矩阵 Matrix 权重存储、变换计算 矩阵乘法、转置
张量 Tensor 多维数据表示 维度理解、广播机制
特征值/向量 PCA 降维 理解即可,无需手算

💡 推荐 3Blue1Brown「线性代数的本质」系列视频,非常直观。

概率与统计
概念 在 AI 中的用途
条件概率、贝叶斯定理 分类模型基础
正态分布 权重初始化、数据分析
最大似然估计 MLE 模型训练目标函数
交叉熵 Cross-Entropy 分类任务损失函数
微积分(工程向)
  • 梯度:理解反向传播的方向
  • 链式法则:神经网络梯度计算原理
  • 梯度下降:模型参数优化核心算法

💡 工程师重点:理解概念即可,不需要手推公式,框架会自动完成微分计算。


2.2 机器学习基础

核心概念速览
复制代码
机器学习
├── 监督学习 Supervised Learning
│   ├── 分类(Classification)--- 逻辑回归、决策树、随机森林、SVM
│   └── 回归(Regression)--- 线性回归、多项式回归
├── 无监督学习 Unsupervised Learning
│   ├── 聚类(K-Means、DBSCAN)
│   └── 降维(PCA、t-SNE)
└── 强化学习 Reinforcement Learning(了解即可)
    └── RLHF:大模型对齐的核心技术
必须掌握的 ML 概念
概念 说明 重要程度
训练集/验证集/测试集 数据划分策略 ★★★★★
过拟合/欠拟合 模型泛化问题 ★★★★★
损失函数 衡量预测误差 ★★★★★
梯度下降 参数优化方法 ★★★★★
特征工程 数据预处理关键步骤 ★★★★☆
超参数调优 模型性能提升 ★★★★☆
交叉验证 评估模型可靠性 ★★★☆☆

2.3 深度学习基础

神经网络基础结构
复制代码
前馈神经网络(Feedforward Neural Network)
  输入层 → [隐藏层 1] → [隐藏层 2] → ... → 输出层

核心组件:
  - 激活函数:ReLU / Sigmoid / Softmax / GELU
  - 权重 & 偏置:可训练参数
  - 反向传播:根据损失更新权重
  - Batch Normalization:稳定训练过程
  - Dropout:正则化防过拟合
必了解的网络架构
架构 用途 对 Java AI 开发的意义
CNN 卷积神经网络 图像识别 图像分类 API 背后的原理
RNN/LSTM 循环网络 序列数据、时序 理解文本序列处理
Transformer NLP、大模型核心 ⭐ 必须重点理解,LLM 基础
BERT 文本理解、嵌入 向量化文本的基础
GPT 系列 文本生成 大模型应用开发核心
Transformer 架构简要理解
复制代码
Transformer 核心机制:
  输入文本
    ↓ Token Embedding(词向量化)
    ↓ Positional Encoding(位置编码)
    ↓ 多头自注意力机制(Multi-Head Self-Attention)
    ↓ 前馈神经网络(FFN)
    ↓ 输出:预测下一个 Token

核心创新:Self-Attention 允许模型关注序列中任意位置的关联

2.4 大模型(LLM)基础概念

概念 说明
Token 模型处理的最小文本单位(不等于字符)
Context Window 模型一次能处理的最大 Token 数
Temperature 控制输出随机性(0=确定性,1=创造性)
Top-P / Top-K 输出采样策略
Embedding 将文本转换为数值向量的过程
Fine-tuning 在预训练基础上针对特定任务继续训练
Prompt 给模型的输入指令
System Prompt 设定模型角色和行为的系统级提示

三、Java AI 生态栈详解

3.1 技术选型全景

复制代码
Java AI 技术栈

┌─────────────────────────────────────────────────────────────┐
│                    应用层 Application Layer                   │
│         Spring Boot 微服务 / REST API / 业务逻辑              │
├─────────────────────────────────────────────────────────────┤
│               AI 应用框架层 AI Framework Layer                 │
│    LangChain4j(Agent/Chain/RAG)  Spring AI(统一接口)       │
├─────────────────────────────────────────────────────────────┤
│            模型与推理层 Model & Inference Layer                │
│  大模型 API(OpenAI/文心/通义/Claude)  ONNX Runtime 本地推理  │
│              Deeplearning4j 自训练模型                         │
├─────────────────────────────────────────────────────────────┤
│              数据层 Data Layer                                 │
│   向量数据库(Milvus/Chroma/PGVector)  传统 DB + 文档存储      │
└─────────────────────────────────────────────────────────────┘

3.2 LangChain4j ⭐(大模型应用开发首选)

定位:Java 版的 LangChain,用于构建基于 LLM 的应用,是 Java AI 开发最重要的框架

Maven 依赖
xml 复制代码
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j</artifactId>
    <version>0.35.0</version>
</dependency>
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>0.35.0</version>
</dependency>
核心功能示例

1. 基础对话

java 复制代码
ChatLanguageModel model = OpenAiChatModel.builder()
    .apiKey("your-api-key")
    .modelName("gpt-4o-mini")
    .build();

String response = model.generate("请用一句话解释什么是 RAG?");
System.out.println(response);

2. AI Service(声明式 AI 接口)

java 复制代码
interface CustomerSupportAgent {
    @SystemMessage("你是一个专业的客服助手,请友好且专业地回答用户问题。")
    String answer(String question);
}

CustomerSupportAgent agent = AiServices.create(CustomerSupportAgent.class, model);
String answer = agent.answer("我的订单什么时候到货?");

3. 流式输出

java 复制代码
StreamingChatLanguageModel streamingModel = OpenAiStreamingChatModel.builder()
    .apiKey("your-api-key")
    .modelName("gpt-4o")
    .build();

streamingModel.generate("写一首关于 Java 的诗", new StreamingResponseHandler<>() {
    @Override
    public void onNext(String token) {
        System.out.print(token);
    }
    @Override
    public void onComplete(Response<AiMessage> response) {
        System.out.println("\n完成!");
    }
});
LangChain4j 学习路径
复制代码
Week 1: 基础
  ✓ ChatModel 调用(OpenAI / 文心 / 通义)
  ✓ PromptTemplate 使用
  ✓ OutputParser 结果解析
  ✓ MessageHistory 对话历史

Week 2: 进阶
  ✓ AiServices 声明式 API
  ✓ EmbeddingModel 向量化
  ✓ DocumentLoader 文档加载
  ✓ InMemoryEmbeddingStore 向量存储

Week 3: RAG 系统
  ✓ EmbeddingStoreIngestor 文档导入
  ✓ EmbeddingStoreRetriever 相关检索
  ✓ RetrievalAugmentor 增强检索

Week 4: Agent 开发
  ✓ Tools/@Tool 工具定义
  ✓ 工具调用链
  ✓ 自定义 Agent

3.3 Spring AI ⭐(企业集成首选)

定位:Spring 官方出品的 AI 集成框架,无缝融入 Spring 生态,适合企业级项目

Maven 依赖 & 配置
xml 复制代码
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
    <version>1.0.0</version>
</dependency>
yaml 复制代码
spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: gpt-4o-mini
          temperature: 0.7
核心功能示例

1. 自动注入使用

java 复制代码
@RestController
public class ChatController {

    @Autowired
    private ChatClient chatClient;

    @PostMapping("/chat")
    public String chat(@RequestBody String message) {
        return chatClient.prompt()
            .user(message)
            .call()
            .content();
    }
}

2. 结构化输出

java 复制代码
record ProductAnalysis(
    String productName,
    List<String> pros,
    List<String> cons,
    double rating
) {}

ProductAnalysis analysis = chatClient.prompt()
    .user("分析这款产品:MacBook Pro M3")
    .call()
    .entity(ProductAnalysis.class); // 自动解析为 Java 对象

3. SSE 流式输出

java 复制代码
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamChat(@RequestParam String message) {
    return chatClient.prompt()
        .user(message)
        .stream()
        .content();
}
Spring AI vs LangChain4j 对比
维度 Spring AI LangChain4j
定位 Spring 生态集成 LLM 应用开发框架
学习曲线 低(Spring 用户友好) 中(专门学习)
适用场景 企业级 Spring Boot 项目 复杂 AI 应用、Agent
Agent 能力 基础 完整丰富
RAG 支持 支持 支持且更完整
多模型统一接口 ✅ 优秀 ✅ 支持

💡 建议:两者结合使用,Spring AI 处理企业集成,LangChain4j 处理复杂 AI 逻辑


3.4 Deeplearning4j(自训练场景)

定位:Java 深度学习框架,适合需要自己训练模型的场景(如企业私有数据建模)

适用场景
  • 企业内部分类/预测模型训练
  • 自定义文本分类(如情感分析、意图识别)
  • 时序数据预测(如异常检测、流量预测)
  • 图像识别(在 Java 服务中内嵌)
核心示例
java 复制代码
MultiLayerConfiguration config = new NeuralNetConfiguration.Builder()
    .updater(new Adam(0.001))
    .list()
    .layer(new DenseLayer.Builder()
        .nIn(784).nOut(256)
        .activation(Activation.RELU)
        .build())
    .layer(new OutputLayer.Builder()
        .nIn(256).nOut(10)
        .activation(Activation.SOFTMAX)
        .lossFunction(LossFunctions.LossFunction.MCXENT)
        .build())
    .build();

MultiLayerNetwork model = new MultiLayerNetwork(config);
model.init();
model.fit(trainingDataset);

3.5 ONNX Runtime for Java(模型推理)

定位:跨平台模型推理引擎,可以加载 Python 训练的模型在 Java 中推理

典型使用场景
复制代码
Python 训练模型(PyTorch / TensorFlow)
    ↓ 导出 .onnx 文件
Java 服务使用 ONNX Runtime 加载运行
    ↓ 高性能推理
直接在 Spring Boot 服务中返回结果
快速示例
java 复制代码
OrtEnvironment env = OrtEnvironment.getEnvironment();
OrtSession session = env.createSession("model.onnx");

float[] inputData = preprocessText(inputText);
OnnxTensor inputTensor = OnnxTensor.createTensor(env,
    FloatBuffer.wrap(inputData),
    new long[]{1, inputData.length});

Map<String, OnnxTensor> inputs = Map.of("input", inputTensor);
OrtSession.Result result = session.run(inputs);
float[][] output = (float[][]) result.get(0).getValue();

3.6 向量数据库选型

数据库 特点 Java 支持 推荐场景
Milvus 专业向量数据库,高性能 Java SDK 大规模生产环境
Chroma 轻量易用,适合开发 HTTP API 开发测试阶段
PGVector PostgreSQL 扩展 JDBC 支持 已有 PG 的项目
Redis Vector 低延迟 Jedis/Lettuce 实时检索场景
Qdrant 高性能,功能丰富 REST API 中大规模应用

四、大模型应用开发

4.1 Prompt 工程

Prompt 设计六要素
复制代码
1. 角色设定(Role)
   "你是一位经验丰富的 Java 架构师..."

2. 任务描述(Task)
   "请帮我审查以下代码并指出潜在问题..."

3. 背景信息(Context)
   "这是一个高并发电商系统,QPS 约 10000..."

4. 约束条件(Constraints)
   "只使用 Java 17 及以上语法,不使用第三方库..."

5. 输出格式(Format)
   "请以 JSON 格式输出,包含字段:问题、严重程度、修改建议"

6. 示例(Examples / Few-Shot)
   "例如:{'issue': '空指针风险', 'severity': '高', 'suggestion': '添加 null 检查'}"
Prompt 模板管理
java 复制代码
PromptTemplate template = PromptTemplate.from(
    "你是一个 {{role}}。\n" +
    "请针对以下需求生成 Java 代码:{{requirement}}\n" +
    "要求:{{constraints}}"
);

Prompt prompt = template.apply(Map.of(
    "role", "高级 Java 后端工程师",
    "requirement", "实现一个线程安全的缓存组件",
    "constraints", "使用 Java 17,基于 ConcurrentHashMap"
));

4.2 RAG(检索增强生成)⭐

RAG 是当前企业 AI 应用最核心的技术,解决大模型"幻觉"和知识时效问题

RAG 工作流程
复制代码
【索引阶段(离线处理)】
原始文档(PDF / Word / 网页 / 数据库)
    ↓ 文档加载 Document Loader
    ↓ 分块处理(Chunk Splitting,每块约 500~1000 Token)
    ↓ 向量化(Embedding Model)
    ↓ 存入向量数据库

【检索阶段(在线处理)】
用户提问
    ↓ 问题向量化
    ↓ 向量相似度检索(Top-K 最相关文档块)
    ↓ Context 注入 Prompt
    ↓ LLM 生成最终回答(基于检索到的上下文)
    ↓ 返回给用户
RAG 完整实现(LangChain4j)
java 复制代码
@Service
public class RagService {

    @Autowired private EmbeddingModel embeddingModel;
    @Autowired private EmbeddingStore<TextSegment> embeddingStore;
    @Autowired private ChatLanguageModel chatModel;

    // 文档索引
    public void indexDocument(String filePath) {
        Document document = FileSystemDocumentLoader.loadDocument(filePath);
        DocumentSplitter splitter = DocumentSplitters.recursive(512, 50);
        EmbeddingStoreIngestor ingestor = EmbeddingStoreIngestor.builder()
            .documentSplitter(splitter)
            .embeddingModel(embeddingModel)
            .embeddingStore(embeddingStore)
            .build();
        ingestor.ingest(document);
    }

    // RAG 查询
    public String query(String question) {
        EmbeddingStoreContentRetriever retriever =
            EmbeddingStoreContentRetriever.builder()
                .embeddingStore(embeddingStore)
                .embeddingModel(embeddingModel)
                .maxResults(5)
                .minScore(0.7)
                .build();

        interface KnowledgeAssistant {
            String answer(@UserMessage String question);
        }

        KnowledgeAssistant assistant = AiServices.builder(KnowledgeAssistant.class)
            .chatLanguageModel(chatModel)
            .contentRetriever(retriever)
            .build();

        return assistant.answer(question);
    }
}
RAG 优化策略
优化方向 方法 效果
分块策略 按句子/段落分块 vs 固定长度 提升召回质量
混合检索 向量检索 + BM25 关键词检索 提升召回率
重排序 CrossEncoder Reranker 精排 提升精排质量
Query 改写 将用户问题改写为更利于检索的形式 提升相关性
HyDE 生成假设文档再检索 提升语义匹配

4.3 AI Agent 开发

Agent = LLM + 工具调用 + 规划能力 + 记忆,是当前 AI 最热门的工程方向

Agent 工作循环(ReAct 模式)
复制代码
用户请求
    ↓ LLM 思考(Reasoning):分析任务,决定下一步
    ↓ 选择工具(Action):调用 API / 数据库 / 计算 / 搜索
    ↓ 获取结果(Observation):工具执行结果返回 LLM
    ↓ 循环直到任务完成
    ↓ 最终回答给用户
Tool 定义(LangChain4j)
java 复制代码
public class OrderTools {

    @Tool("根据订单ID查询订单状态")
    public OrderStatus getOrderStatus(
            @P("订单ID,格式如 ORD-12345") String orderId) {
        return orderService.findById(orderId);
    }

    @Tool("取消订单")
    public String cancelOrder(
            @P("订单ID") String orderId,
            @P("取消原因") String reason) {
        return orderService.cancel(orderId, reason);
    }

    @Tool("查询商品库存")
    public int checkInventory(@P("商品SKU编码") String sku) {
        return inventoryService.getStock(sku);
    }
}

// 创建 Agent
interface CustomerServiceAgent {
    @SystemMessage("""
        你是一个智能客服 Agent,可以:
        1. 查询订单状态
        2. 处理取消申请
        3. 查看商品库存
        请根据用户需求调用相应工具完成任务。
        """)
    String serve(@UserMessage String userRequest);
}

CustomerServiceAgent agent = AiServices.builder(CustomerServiceAgent.class)
    .chatLanguageModel(model)
    .tools(new OrderTools())
    .chatMemory(MessageWindowChatMemory.withMaxMessages(10))
    .build();

4.4 Function Calling(Spring AI)

java 复制代码
@Component
public class WeatherFunction implements Function<WeatherRequest, WeatherResponse> {
    @Override
    public WeatherResponse apply(WeatherRequest request) {
        return weatherApiService.getWeather(request.city());
    }
}

@Bean
public FunctionCallback weatherFunctionCallback(WeatherFunction weatherFunction) {
    return FunctionCallbackWrapper.builder(weatherFunction)
        .withName("getCurrentWeather")
        .withDescription("获取指定城市的当前天气信息")
        .withInputType(WeatherRequest.class)
        .build();
}

五、工程化实践

5.1 AI 微服务架构设计

复制代码
企业 AI 微服务架构:

┌──────────────────────────────────────────────────────────────┐
│                API Gateway(鉴权 / 限流 / 路由)               │
└──────────────────────┬───────────────────────────────────────┘
                       │
      ┌────────────────┼────────────────┐
      ▼                ▼                ▼
┌───────────┐    ┌───────────┐    ┌───────────────┐
│  对话服务   │    │  RAG 服务  │    │   Agent 服务   │
│ Chat API  │    │ 知识库检索  │    │  自动化任务     │
└───────────┘    └───────────┘    └───────────────┘
      │                │                │
      └────────────────┼────────────────┘
                       ▼
              ┌─────────────────┐
              │   向量数据库      │
              │  Milvus/PGVector │
              └─────────────────┘

5.2 限流与成本控制

java 复制代码
// 基于 Bucket4j 的 Token 消耗限流
@Component
public class LlmRateLimiter {

    private final Bucket bucket;

    public LlmRateLimiter() {
        // 每分钟最多消耗 100,000 Token
        Bandwidth limit = Bandwidth.classic(100000,
            Refill.intervally(100000, Duration.ofMinutes(1)));
        this.bucket = Bucket.builder().addLimit(limit).build();
    }

    public void consumeTokens(int tokenCount) {
        if (!bucket.tryConsume(tokenCount)) {
            throw new RateLimitExceededException("LLM Token 消耗限流,请稍后重试");
        }
    }
}

5.3 Prompt 缓存(降低成本)

java 复制代码
@Service
public class CachedLlmService {

    @Autowired private ChatLanguageModel model;
    @Autowired private RedisTemplate<String, String> redisTemplate;

    public String generateWithCache(String prompt) {
        String cacheKey = "llm:cache:" + DigestUtils.md5Hex(prompt);

        // 命中缓存直接返回
        String cached = redisTemplate.opsForValue().get(cacheKey);
        if (cached != null) return cached;

        // 调用 LLM
        String result = model.generate(prompt);

        // 缓存 24 小时
        redisTemplate.opsForValue().set(cacheKey, result, 24, TimeUnit.HOURS);
        return result;
    }
}

5.4 可观测性 & 监控

java 复制代码
// 使用 Micrometer 监控 LLM 调用
@Component
public class LlmMetrics {

    private final MeterRegistry registry;
    private final Counter llmCallCounter;
    private final Timer llmResponseTimer;

    public LlmMetrics(MeterRegistry registry) {
        this.registry = registry;
        this.llmCallCounter = Counter.builder("llm.calls.total")
            .description("LLM 调用总次数")
            .register(registry);
        this.llmResponseTimer = Timer.builder("llm.response.time")
            .description("LLM 响应时间")
            .register(registry);
    }

    public String callWithMetrics(ChatLanguageModel model, String prompt) {
        llmCallCounter.increment();
        return llmResponseTimer.record(() -> model.generate(prompt));
    }
}

5.5 AI 应用部署最佳实践

部署方向 方案 说明
容器化 Docker + K8s 标准化部署,弹性伸缩
API 密钥管理 Vault / K8s Secret 绝不硬编码 API Key
模型降级 主模型故障切备用模型 提高可用性
日志链路 Tracing + 请求 ID 便于问题排查
本地模型 Ollama + LangChain4j 私有化部署场景

六、学习资源推荐

6.1 推荐书籍

书名 语言 适合阶段 评分
《动手学深度学习》 中文 AI 基础 ★★★★★
《机器学习》(周志华·西瓜书) 中文 AI 基础进阶 ★★★★☆
《大规模语言模型》 中文 LLM 原理 ★★★★★
Building LLM Apps(英文) 英文 LLM 应用开发 ★★★★☆
《Spring Boot 实战》 中文 Spring 基础 ★★★★☆

6.2 在线课程

课程 平台 适合阶段
吴恩达《Machine Learning Specialization》 Coursera AI 基础
吴恩达《Deep Learning Specialization》 Coursera 深度学习
《大模型应用开发 LangChain4j》 B站/慕课 框架入门
Spring AI 官方文档 + 示例 spring.io Spring AI
LangChain4j 官方文档 langchain4j.dev LangChain4j
《Prompt Engineering Guide》 promptingguide.ai Prompt 工程

6.3 GitHub 开源项目(重点研究)

项目 地址 价值
langchain4j github.com/langchain4j/langchain4j Java AI 框架核心
spring-ai github.com/spring-projects/spring-ai Spring AI 源码
deeplearning4j github.com/deeplearning4j DL4J 框架
spring-ai-alibaba github.com/alibaba/spring-ai-alibaba 阿里 AI 集成
langchain4j-examples github.com/langchain4j/langchain4j-examples 官方示例 ⭐

6.4 技术社区 & 博客

  • 掘金:Java AI 实践文章丰富
  • InfoQ:架构级 AI 工程内容
  • LangChain4j Discord:官方社区,可提问
  • Spring AI GitHub Issues:关注最新动态
  • 微信公众号:JavaAI、阿里云开发者、Spring官方博客

七、时间规划与里程碑

7.1 总体时间规划

复制代码
月份   阶段                    核心目标
────────────────────────────────────────────────────────
1-2月  🌱 AI 基础阶段           掌握 ML/DL 核心概念
3-4月  🔧 Java AI 框架阶段      熟练使用 LangChain4j + Spring AI
5-6月  🤖 大模型应用开发阶段     能独立构建 RAG 和 Agent 系统
7-8月  ⚙️ 工程化实践阶段        具备生产级 AI 应用开发能力
9-12月 🚀 进阶深化阶段          专项深化 + 求职/晋升准备

7.2 详细阶段计划

第一阶段:AI 基础(第 1-2 月)

学习目标

  • 理解机器学习核心概念(监督/无监督/强化学习)
  • 掌握深度学习基础(神经网络、反向传播、常见架构)
  • 理解 Transformer 和注意力机制原理
  • 了解大模型(LLM)的工作原理和关键概念

每周计划

周次 内容 资源
Week 1-2 线性代数 + 概率统计基础 3Blue1Brown 视频
Week 3-4 机器学习基础(西瓜书前5章) 西瓜书 + 吴恩达课程
Week 5-6 深度学习基础(动手学DL 1-5章) 动手学深度学习
Week 7-8 Transformer / BERT / GPT 原理 论文精读 + B站视频

实践项目:用 Weka/DL4J 实现一个简单文本分类器(如垃圾邮件过滤)


第二阶段:Java AI 框架(第 3-4 月)

学习目标

  • 熟练使用 LangChain4j 构建对话应用
  • 掌握 Spring AI 企业级集成
  • 了解 ONNX Runtime 模型推理
  • 能接入国内主流大模型 API(文心、通义、智谱)

每周计划

周次 内容 资源
Week 1-2 LangChain4j 基础:对话/模板/解析 官方文档 + examples
Week 3-4 Spring AI 集成:自动注入/Prompt/输出解析 Spring AI 官方文档
Week 5-6 向量化 + 向量数据库(Chroma/PGVector) LangChain4j 文档
Week 7-8 ONNX Runtime 集成 + 国内 API 适配 ONNX 官方文档

实践项目:构建一个多轮对话客服机器人(Spring Boot + LangChain4j + 通义千问)


第三阶段:大模型应用开发(第 5-6 月)

学习目标

  • 掌握 Prompt 工程最佳实践
  • 独立构建完整 RAG 知识库系统
  • 开发基于工具调用的 AI Agent
  • 理解 Function Calling 机制

每周计划

周次 内容 资源
Week 1-2 Prompt 工程实战(Few-Shot / CoT / Self-Consistency) Prompt Engineering Guide
Week 3-5 RAG 系统完整实现(索引+检索+优化) LangChain4j RAG 文档
Week 6-7 AI Agent 开发(工具定义 + 调用链) LangChain4j Agent 文档
Week 8 Function Calling + 多模态初探 Spring AI 文档

实践项目:企业知识库问答系统(RAG + Milvus + Spring Boot)


第四阶段:工程化实践(第 7-8 月)

学习目标

  • 掌握 AI 微服务架构设计
  • 学会 LLM 调用限流和成本控制
  • 实现 AI 应用的监控和可观测性
  • 完成一个完整的生产级 AI 应用

实践项目:完整的企业级 AI 助手系统

  • 对话服务(Spring AI + WebSocket)
  • 知识库(RAG + Milvus)
  • 任务 Agent(LangChain4j + 工具调用)
  • 监控面板(Micrometer + Grafana)

第五阶段:进阶深化(第 9-12 月)

根据个人方向选择专项深化:

方向 内容 适合人群
LLM 应用架构师 多 Agent 系统、工作流引擎 希望做架构设计
AI 平台工程 模型管理、A/B 测试、评估体系 希望做平台建设
垂直领域 AI 金融/医疗/法律 AI 应用 有行业背景
本地化部署 Ollama + 私有化大模型运维 对私有化感兴趣

7.3 阶段里程碑 & 能力检验

里程碑 时间 能力标准
M1: AI 入门 第 2 月末 能解释 Transformer 架构,能用 DL4J 训练简单模型
M2: 框架掌握 第 4 月末 独立构建多轮对话应用,熟练使用 LangChain4j
M3: RAG 达标 第 6 月末 独立完成生产可用的企业知识库问答系统
M4: 工程化 第 8 月末 完成完整 AI 微服务系统,含监控和限流
M5: 专项深化 第 12 月末 具备某方向的核心竞争力,可参与/主导 AI 项目

7.4 实践项目清单

序号 项目名称 技术栈 难度 阶段
P1 文本分类器 DL4J / Weka ⭐⭐ 第一阶段
P2 多轮对话客服机器人 Spring Boot + LangChain4j + 通义 ⭐⭐⭐ 第二阶段
P3 企业知识库问答系统 RAG + Milvus + Spring AI ⭐⭐⭐⭐ 第三阶段
P4 智能工单处理 Agent LangChain4j Tools + Spring Boot ⭐⭐⭐⭐ 第三阶段
P5 完整 AI 助手平台 全栈(对话+知识库+Agent+监控) ⭐⭐⭐⭐⭐ 第四阶段

附录:Java AI 常用 API 速查

国内主流大模型 API 接入

模型 提供商 LangChain4j 支持 Spring AI 支持
文心一言(ERNIE) 百度
通义千问(Qwen) 阿里云 ✅(via Alibaba AI)
ChatGLM 智谱 AI
混元(Hunyuan) 腾讯
DeepSeek 深度求索 ✅(兼容 OpenAI API)
Kimi 月之暗面 ✅(兼容 OpenAI API)

快速接入通义千问(LangChain4j)

java 复制代码
// Maven 依赖
// dev.langchain4j:langchain4j-dashscope:0.35.0

ChatLanguageModel qwenModel = QwenChatModel.builder()
    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
    .modelName(QwenModelName.QWEN_MAX)
    .build();

String response = qwenModel.generate("你好,请介绍一下自己");

快速接入 DeepSeek

java 复制代码
// DeepSeek 兼容 OpenAI API,直接用 OpenAI 客户端接入
ChatLanguageModel deepSeekModel = OpenAiChatModel.builder()
    .apiKey(System.getenv("DEEPSEEK_API_KEY"))
    .baseUrl("https://api.deepseek.com")
    .modelName("deepseek-chat")
    .build();

📌 温馨提示:AI 领域技术迭代极快,学习过程中要关注 LangChain4j、Spring AI 的版本更新。建议在 GitHub 上 Star 这两个项目,及时跟进新特性。

💪 坚持就是胜利:从 Java 后端到 Java AI,你已经具备了最重要的工程化基础,剩下的就是系统性地补充 AI 知识体系,加油!


文档版本:v1.0 | 最后更新:2026年6月