前言
AI 时代,Java/后端开发者的机会在哪里?工程化落地。
大模型本身是概率性的"黑盒",但把它变成稳定、可观测、可扩展的生产级服务,恰恰是 Java/Go 工程师的主场——高并发架构、数据库优化、系统稳定性治理,这些能力可以直接复用。
学习建议:按顺序推进,每个阶段都有对应的详细文章。不要跳过阶段零——思维校准是后面所有技术学习的基础。
一、项目介绍
这是一个基于大语言模型的智能面试辅助平台,旨在帮助求职者提升面试能力。系统提供三大核心功能:
- 智能简历分析:上传简历后,AI 自动进行多维度评分并给出改进建议
- 模拟面试系统:基于简历内容生成个性化面试题,支持实时问答和答案评估
- RAG 知识库问答:上传技术文档构建私有知识库,支持向量检索增强的智能问答
开源地址:https://github.com/Snailclimb/interview-guide
1.1 系统架构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
┌─────────────────────────────────────────────────────────────┐
│ 前端展示层 (React) │
├─────────────────────────────────────────────────────────────┤
│ 后端服务层 (Spring Boot) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Resume Svc │ │Interview Svc│ │Knowledge Svc│ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ AI 集成层 (Spring AI + 通义千问) │ │
│ └─────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 异步处理层 (Redis Stream) │ │
│ └─────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 数据存储层 │
│ PostgreSQL+pgvector │ Redis │ RustFS/MinIO │
└─────────────────────────────────────────────────────────────┘
|
1.2 技术栈概览
后端技术:
| 技术 |
版本 |
说明 |
| Spring Boot |
4.0 |
应用框架 |
| Java |
21 |
开发语言 |
| Spring AI |
2.0 |
AI 集成框架 |
| PostgreSQL + pgvector |
14+ |
关系数据库 + 向量存储 |
| Redis |
6+ |
缓存 + 消息队列 |
| Apache Tika |
2.9.2 |
文档解析 |
| MapStruct |
1.6.3 |
对象映射 |
二、学习路线总览
阶段总览表
学习时间规划
按每天 3~6 小时投入估算:
| 阶段 |
建议时间 |
说明 |
| 阶段零~二 |
2~3 周 |
打基础,不要跳过 |
| 阶段三~四 |
3~4 周 |
核心能力,需动手实践 |
| 阶段五~六 |
2~3 周 |
工程化,复用后端经验 |
| 阶段七 |
2~4 周 |
项目实战,巩固所学 |
三、阶段零:认知校准
3.1 思维校准
认知转变:
| 认知 |
说明 |
| 确定性 → 概率性 |
LLM 是概率预测机器,相同输入可能产生不同输出 |
| 工程应对 |
模型输出进入业务逻辑前,必须经过校验、重试或降级兜底 |
| Java 开发者定位 |
工程化落地,把模型能力变成稳定的生产级服务 |
3.2 常见踩坑与解决方案
详细内容见:大模型核心概念详解
| 坑 |
表现 |
解决方案 |
| LLM 响应慢卡死 Tomcat |
服务雪崩 |
SseEmitter/WebFlux + 异步线程池 |
| @Transactional 内调 LLM |
连接池耗尽 |
LLM 调用游离事务外 |
| Agent 死循环导致账单爆炸 |
成本失控 |
Token 消耗监控 + 阈值告警 |
| LLM 输出不符合事实 |
幻觉严重 |
RAG + 知识图谱双引擎校验 |
| JSON 解析失败率高 |
格式错误 |
低温 + Strict Mode + Retry 闭环 |
四、阶段一:大模型核心概念
详细内容:大模型核心概念详解
4.1 Token 与上下文窗口
- Token:模型处理文本的基本单位(英文 3
4 字符/Token,中文 12 汉字/Token)
- 上下文窗口:LLM 的"工作记忆",决定模型可以处理的文本量
- Token 预算:
可用输入 = window × 0.9 - max_output_tokens - 安全边际
4.2 解码参数
| 参数 |
工程建议 |
场景 |
| Temperature |
00.3(结构化)/ 0.40.8(分析) |
控制输出稳定性 |
| Top-p |
低温 + Top-p(0.9) |
控制生成多样性 |
| Max Tokens |
硬上限 |
需防截断风险 |
4.3 Prompt 工程基础
| 要素 |
说明 |
| CoT(思维链) |
一步一步思考,展示推理过程,对抗幻觉 |
| Few-Shot |
提供 1~3 个示例,让模型理解输入输出模式 |
| 任务分解 |
复杂任务拆成子任务逐一完成,再汇总 |
4.4 结构化输出
| 方案 |
特点 |
| JSON Schema 约束 |
实现简单、跨供应商 |
| Function Calling |
结构化更强,供应商差异大 |
| Structured Outputs (Strict) |
受限解码,格式错误率趋近 0 |
五、阶段二:大模型对接
详细内容:SpringAi实战指南_大模型集成_流式输出
5.1 框架选型
| 框架 |
特点 |
适用场景 |
| Spring AI |
与 Spring 生态无缝集成 |
企业内部系统 |
| LangChain4j |
RAG 和 Agent 场景功能全面 |
知识库问答 |
防腐层设计:AI 框架迭代快,业务代码绝不能直接耦合框架 API,需定义自己的领域接口隔离。
5.2 OpenAI 协议兼容性
主流模型均兼容 OpenAI 格式:
| 模型 |
Base URL |
特点 |
| DeepSeek |
api.deepseek.com |
成本低,中文优化 |
| 通义千问 |
dashscope.aliyuncs.com |
国内合规,稳定 |
| Ollama |
localhost:11434 |
本地部署,数据安全 |
5.3 流式输出 SSE
详细内容见:Spring AI实战指南 - 流式输出
1
2
3
4
5
6
7
8
9
10
11
|
@GetMapping(value = "/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ServerSentEvent<String>> streamChat(@RequestParam String question) {
return chatClient.prompt()
.system(systemPrompt)
.user(question)
.stream()
.content()
.map(chunk -> ServerSentEvent.<String>builder()
.data(chunk.replace("\n", "\\n").replace("\r", "\\r"))
.build());
}
|
六、阶段三:Prompt 工程
详细内容:大模型核心概念详解
6.1 CoT 思维链详解
| 范式 |
适用场景 |
| 普通 CoT |
数学推导、逻辑分析 |
| 自治 CoT |
模型自我验证推理路径 |
| 工具增强 CoT |
需要调用工具获取中间结果 |
6.2 Prompt 工程化管理
| 要点 |
说明 |
| 外置化存储 |
Prompt 不应硬编码,使用 .st 文件存储 |
| 配置中心热更新 |
接入 Nacos/Apollo |
| 变量注入安全 |
用户输入需清洗,防 Prompt Injection |
6.3 结构化输出与反思闭环
| 要点 |
Java 实现 |
| 强类型映射 |
Java 14+ Record |
| JSR-380 校验 |
@NotNull、@Size 等注解 |
| Retry Loop |
设定最大重试次数(如 3 次) |
七、阶段四:RAG + 知识图谱
详细内容:RAG知识库实战
7.1 RAG 核心概念
1
2
3
4
5
6
|
┌─────────────────────────────────────────────────────────────┐
│ RAG 系统 │
├──────────────────────────┬──────────────────────────────────┤
│ 📥 索引阶段 │ 🔍 检索阶段 │
│ 文档 → 分块 → 向量化 │ 查询 → 检索 → 生成 │
└──────────────────────────┴──────────────────────────────────┘
|
7.2 技术选型
| 组件 |
选型 |
理由 |
| 向量数据库 |
PostgreSQL + pgvector |
一套数据库,运维简单 |
| 索引算法 |
HNSW |
毫秒级检索,百万级够用 |
| Embedding |
text-embedding-v3 |
1024 维,中文优化 |
7.3 关键知识点
| 概念 |
说明 |
| 混合检索 |
向量检索 + BM25 关键词检索 |
| Rerank |
Cross-Encoder 精排,提升顶部结果准确性 |
| 语义缓存 |
Redis 向量检索命中缓存,降成本 + 降延迟 |
八、阶段五:Agent 核心机制
详细内容:AI_Agent核心机制_ReAct_MultiAgent_记忆系统
8.1 Agent 调度范式
| 范式 |
说明 |
适用场景 |
| ReAct |
Think → Act → Observe 循环,动态纠错 |
工具调用、复杂推理 |
| Plan-and-Execute |
先全局规划再逐步执行 |
长任务、多步骤 |
| Reflection |
自我纠错闭环 |
代码生成、内容创作 |
1
|
用户问题 → LLM 判断需要调用工具 → 返回工具名称+参数 → 执行工具 → 返回结果 → LLM 生成回答
|
8.3 记忆系统
| 类型 |
说明 |
存储 |
| 短期记忆 |
Redis 缓存对话历史 |
Redis |
| 长期记忆 |
用户偏好、历史知识 |
Neo4j / 向量库 |
8.4 MCP 协议
| 协议 |
说明 |
| MCP |
Model Context Protocol,统一工具调用接口 |
| ACP |
Agent Communication Protocol,打通 Agent 与 IDE 集成 |
九、阶段六:工程化框架
详细内容:工程化与生产落地
9.1 Redis Stream 异步处理
1
2
3
4
5
6
7
|
上传请求 → 保存文件 → 发送消息到 Stream → 立即返回
↓
Consumer 消费消息
↓
执行分析/向量化任务
↓
更新数据库状态
|
状态流转:PENDING → PROCESSING → COMPLETED / FAILED
9.2 事务安全
| 要点 |
说明 |
| 事务反模式 |
禁止在 @Transactional 方法内调用 LLM |
| 事务极小化 |
LLM 调用游离在事务外,先校验再落盘 |
9.3 分布式限流
| 维度 |
说明 |
| 用户维度 |
限制单个用户 |
| IP 维度 |
限制单个 IP |
| 接口维度 |
限制单个接口 |
9.4 FinOps 成本控制
| 要点 |
工具 |
| Token 计量 |
Micrometer + Prometheus |
| 成本预警 |
单日 Token 消耗阈值告警 |
| 语义缓存 |
Redis 缓存,降成本 30~50% |
十、阶段七:项目实战
10.1 智能面试平台
基于大语言模型的智能面试辅助平台,提供三大核心功能:
- 智能简历分析:多维度评分 + 改进建议
- 模拟面试系统:个性化面试题 + 实时问答
- RAG 知识库问答:私有知识库 + 向量检索
10.2 核心技术点
| 功能 |
技术方案 |
| 简历解析 |
Apache Tika 多格式解析 |
| AI 分析 |
Spring AI + 结构化输出 |
| 向量检索 |
PostgreSQL + pgvector |
| 流式输出 |
SSE + 虚拟线程 |
| 异步处理 |
Redis Stream |
| 限流 |
Redis + Lua |
十一、推荐模型选择
| 场景 |
推荐模型 |
说明 |
| 开发调试 |
DeepSeek / 通义千问 |
成本低,中文友好 |
| 生产环境 |
GPT / Claude / Gemini |
稳定性、能力最均衡 |
| 数据安全 |
本地部署 Ollama + Qwen |
内网环境,数据不出域 |
十二、延伸阅读