先说结论:Java 程序员不需要焦虑“AI 时代 Java 没用了”。从 2026 秋招的岗位分布来看,Java 后端依然是招聘量最大的方向之一,但纯 CRUD 的 Java 岗位正在变少,要求带 AI 能力的 Java 岗位在变多。这场转型的关键不是重学 Python,而是把 Java 生态里的 AI 接入框架吃透:langchain4j 和 Spring AI。
这篇文章就是为 2026 届秋招准备的 Java + AI 转型攻略。我会直接讲清楚这几件事:langchain4j 和 Spring AI 各是什么、怎么快速跑通对话和 RAG、学习路线怎么安排、简历上的 AI 项目怎么写、面试官通常会问什么。不绕弯子,照着做就行。
1. 为什么 Java 程序员做 AI 有天然优势
先说方向判断。很多 Java 程序员一看 AI 大模型的示例代码全是 Python,就觉得自己落后了。实际上大模型落地的岗位分两类:一类是算法岗,要调模型、训练模型,这类确实以 Python 为主;另一类是工程岗,要把模型接进业务系统、做 API 封装、做 RAG 检索、做 Agent 调度,这类岗位的核心能力是后端工程能力。
Java 程序员的优势恰恰在第二类。大模型再好,落到企业里都要变成服务:用户管理、权限控制、消息队列、订单状态机、数据一致性、高并发兜底。这些全是 Java 后端的存量能力。面试官现在最缺的候选人不是会写 prompt 的人,而是能把 RAG 流程接到 Spring Boot 项目里的人。
从 2026 秋招的行情看,Java 岗位的要求普遍在变化:
- 基础题还在考:JVM、并发、MySQL、Redis、消息队列。
- 新题开始出现:“怎么用 Java 调大模型?”“RAG 的检索链路怎么设计?”“Function Calling 怎么实现?”
- 项目经验要求多了 AI 相关场景:智能客服、知识库问答、简历解析、代码生成助手。
所以这不是“要不要学 AI”的问题,而是“Java + AI”已经变成了 Java 岗的加分项,部分岗位甚至变成了必选项。下面直接看两个主流框架。
2. Java 生态 AI 大模型接入框架全景
Java 生态接入大模型目前有三条路线,但真正值得投入时间的是两条:
| 路线 | 代表框架 | 定位 | 适合人群 |
|---|---|---|---|
| 直接调 HTTP API | OpenAI SDK、各家云厂商 SDK | 简单对话、透传接口 | 只做 demo,不做工程化 |
| langchain4j | LangChain4j | LangChain 的 Java 版,功能全 | 想深入 RAG、Agent、Function Calling |
| Spring AI | Spring AI | Spring 官方生态,适合企业级 | 做 Spring Boot 项目、微服务集成 |
第三条路线也就是直接用 Java 的 HTTP Client 调模型接口,不是不能用,而是没有封装,你还要自己处理流式输出、token 统计、上下文管理,工程量大且容易出错。真正值得学的是 langchain4j 和 Spring AI。
langchain4j 的特点是“功能覆盖广”,它把 Python 生态里 LangChain 的常用能力搬到了 Java:模型封装、Prompt 模板、记忆管理、Embedding、向量存储、RAG、Agent、Function Calling。你在网上看到的 LangChain 概念,大部分在 langchain4j 里都有对应实现。
Spring AI 的特点是“和 Spring 生态融合好”,它由 Spring 官方团队维护,设计上就是让你在 Spring Boot 项目里以最少的配置接入大模型。它的核心思路是提供一个统一的ChatClient接口,底层可以接不同的模型厂商。对 Java 后端来说,Spring AI 的上手成本明显更低,因为依赖注入、自动配置、Starter 这些机制都是现成的。
两个框架都支持主流模型:OpenAI、Azure OpenAI、Ollama 本地模型、通义千问、豆包、DeepSeek 等通过兼容接口接入。不用纠结“必须用哪个”,先跑通一个,再学另一个会快很多。
3. langchain4j:Java 版的 LangChain
3.1 核心概念
langchain4j 的核心抽象可以概括成四层:
- ChatLanguageModel:聊天的核心接口,负责和大模型交互。
- EmbeddingModel:把文本转成向量。
- EmbeddingStore:向量存储与相似度检索,支持内存、Redis、PGVector、Milvus 等。
- AiServices:把模型、记忆、工具、RAG 组件串起来的门面。
再加上两类常用组件:
- MessageWindowChatMemory:对话记忆窗口,控制上下文条数。
- Tool / @Tool:Function Calling 的函数定义,让模型可以调用你的 Java 方法。
这套结构和 Python 的 LangChain 基本对应。懂 Java 的人看一遍官网文档,一天之内就能建起概念体系。
3.2 Maven 依赖与最小对话示例
先建一个普通 Maven 项目,Java 版本建议使用 17 以上。核心依赖如下:
<dependencies> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j</artifactId> <version>0.36.2</version> </dependency> <!-- 以 Ollama 本地模型为例,也可以换 OpenAI 或兼容接口 --> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-ollama</artifactId> <version>0.36.2</version> </dependency> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId> <version>0.36.2</version> </dependency> </dependencies>版本号仅供参考,实际使用以 Maven 仓库最新版本为准。下面是调用本地 Ollama 模型的最简代码:
import dev.langchain4j.model.chat.ChatLanguageModel; import dev.langchain4j.model.ollama.OllamaChatModel; public class LangChain4jQuickStart { public static void main(String[] args) { ChatLanguageModel model = OllamaChatModel.builder() .baseUrl("http://localhost:11434") .modelName("qwen2.5") .temperature(0.7) .build(); String answer = model.generate("用一句话解释什么是 RAG"); System.out.println(answer); } }这段代码跑通之后,你就已经完成了“Java 调大模型”的第一环。接下来可以尝试:
- 换模型:把 modelName 换成其他已 pull 的模型。
- 换 OpenAI 兼容接口:改依赖和 build 参数。
3.3 用 langchain4j 实现 RAG
RAG 是 Java 后端面试里最容易出场景题的方向。langchain4j 的 RAG 链路是:
- 加载文档:支持文件、URL、数据库内容。
- 切分文档:按长度或语义切块。
- 生成向量:用 EmbeddingModel 将每块文本向量化。
- 存入向量数据库:启动时建索引。
- 查询时检索相似片段,拼进 prompt。
- 交给模型生成回答。
这段代码演示“启动时加载文档 + 查询时召回”的过程:
import dev.langchain4j.data.document.Document; import dev.langchain4j.data.document.loader.FileDocumentLoader; import dev.langchain4j.data.segment.TextSegment; import dev.langchain4j.memory.chat.MessageWindowChatMemory; import dev.langchain4j.model.embedding.EmbeddingModel; import dev.langchain4j.model.ollama.OllamaChatModel; import dev.langchain4j.model.ollama.OllamaEmbeddingModel; import dev.langchain4j.store.embedding.EmbeddingStore; import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore; import dev.langchain4j.service.AiServices; import dev.langchain4j.service.UserMessage; import java.nio.file.Path; public class RagDemo { interface Assistant { String chat(String userMessage); } public static void main(String[] args) { ChatLanguageModel chatModel = OllamaChatModel.builder() .baseUrl("http://localhost:11434") .modelName("qwen2.5") .build(); EmbeddingModel embeddingModel = OllamaEmbeddingModel.builder() .baseUrl("http://localhost:11434") .modelName("nomic-embed-text") .build(); // 1. 加载一个 txt 文档 Document document = FileDocumentLoader.loadDocument(Path.of("kb/faq.txt")); // 2. 切分为 3 段,每段最多 300 字符(实际按需配置) List<TextSegment> segments = document.text().length() > 900 ? splitToSegments(document.text(), 300) : List.of(TextSegment.from(document.text())); // 3. 向量化并存入内存向量库 EmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>(); segments.forEach(seg -> { var embedding = embeddingModel.embed(seg).content(); store.add(embedding, seg); }); // 4. 通过 AiServices 绑定对话记忆与 RAG 检索 Assistant assistant = AiServices.builder(Assistant.class) .chatLanguageModel(chatModel) .chatMemory(MessageWindowChatMemory.withMaxMessages(10)) .contentRetriever(EmbeddingStoreContentRetriever.builder() .embeddingModel(embeddingModel) .embeddingStore(store) .maxResults(2) .build()) .build(); String answer = assistant.chat("我们公司的退款政策是什么?"); System.out.println(answer); } }这个例子把“知识库问答”跑通了,面试时能讲清楚每一步做了什么,项目含金量就起来了。真实项目里可以把InMemoryEmbeddingStore换成 PGVector 或 Milvus,把文件加载换成数据库或接口同步。
3.4 混检索与去重:面试里容易被深挖的点
这里插一个面试高频细节:langchain4j 在做混合检索时,默认的 RRF(Reciprocal Rank Fusion,倒数排名融合)实现存在重复计算的边界问题。面试官如果问“RAG 召回结果重复了怎么办”,就是想要你答出这层。
RRF 的公式是多个检索结果排名分数的加权求和,常见写法如下:
score(d) = sum( 1 / (k + rank_i(d)) )其中rank_i(d)是文档 d 在第 i 路检索中的排名,k 是平滑常数。问题在于,如果同一篇文档在多路检索中被分成多个不同片段,RRF 本身不会去重,最后可能把同一段内容重复拼进 prompt。工程上要在召回归一化之后做一步:
- 按文档 ID 做分组去重。
- 对同一来源的多个片段做最大分数保留或截断合并。
- 用句子相似度阈值过滤 90% 以上相似的重复内容。
如果你简历写了 RAG 项目,提前想明白这个细节,面试时能主动讲,比背概念有效得多。
4. Spring AI:Spring 官方生态的 AI 框架
4.1 为什么 Spring AI 值得学
Spring AI 相比 langchain4j 最大的优势是“它是 Spring 的项目”。Spring Boot 3.2 以上可以直接引入,自动配置、Starter、属性绑定、Actuator 监控全都能用上。对 Java 后端学生来说,这几乎是最低门槛的 AI 集成方式。
从秋招的角度看,Spring AI 的搜索热度和岗位需求都在涨。现在企业里很多“大模型应用开发”的外包和自研岗位,技术栈写的就是“Spring Boot + Spring AI + 大模型 API”。你简历上有 Spring AI 项目,比只写“了解大模型”更有说服力。
4.2 标准对话示例
先加依赖。Spring AI 的模块按模型厂商拆分,但核心调用方式统一。示例中版本用 1.0.0,实际以官方 Release 为准:
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>1.0.0</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-openai-spring-boot-starter</artifactId> <version>1.0.0</version> </dependency>配置文件application.yml示例:
spring: ai: openai: base-url: https://api.openai.com api-key: ${OPENAI_API_KEY} chat: options: model: gpt-4o-mini temperature: 0.7Controller 里通过ChatClient调用:
import org.springframework.ai.chat.client.ChatClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class ChatController { private final ChatClient chatClient; public ChatController(ChatClient.Builder builder) { this.chatClient = builder.build(); } @GetMapping("/chat") public String chat(@RequestParam String message) { return chatClient.prompt() .user(message) .call() .content(); } }访问http://localhost:8080/chat?message=你好就能得到回答。注意这里配置里用的是 OpenAI 兼容地址,如果你用的是国内云厂商模型,把base-url和api-key换成对应平台即可,Spring AI 的调用代码不用改。
4.3 流式输出
对话机器人项目里有两个核心功能必考:基本对话和流式输出。流式输出的价值是“字一个字地出”,体验接近 ChatGPT 网页版。
Spring AI 流式输出示例:
import org.springframework.ai.chat.client.ChatClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Flux; @RestController public class StreamChatController { private final ChatClient chatClient; public StreamChatController(ChatClient.Builder builder) { this.chatClient = builder.build(); } @GetMapping("/chat/stream") public Flux<String> stream(@RequestParam String message) { return chatClient.prompt() .user(message) .stream() .content(); } }前端接一个EventSource或 WebSocket,就能实现打字机效果。如果面试官问“流式输出怎么做”,你答出Flux和spring.ai.chat.client.StreamingChatClient变化,再讲一句“前端用 SSE 接流”,这个问题就能过关。
4.4 Function Calling:@Tool 注解
Spring AI 比直接调 API 强的地方是工具调用。你可以定义 Java 方法,让模型在回答时自动调用它。Spring AI 用注解标记:
import org.springframework.ai.tool.annotation.Tool; import org.springframework.stereotype.Component; @Component public class OrderTools { @Tool(name = "queryOrderStatus", description = "根据订单号查询订单状态") public String queryOrderStatus(String orderId) { // 实际项目中在这里查数据库或调用订单服务 return "订单 " + orderId + " 状态:已发货"; } }定义之后,把工具注册到 ChatClient 上:
chatClient = builder .defaultTools(new OrderTools()) .build();模型收到用户问题“我的订单 20260901 什么时候发货”,会先决定调用queryOrderStatus,再把方法返回值组织成自然语言回复。这就是 Agent 里最基本的 ReAct 模式:思考 -> 调用工具 -> 组织回答。
面试时这一块很容易展开:Function Calling 的流程、工具结果怎么回填、多工具怎么编排、异常工具调用怎么兜底。做一个小项目能把这条链路跑通,简历上写“实现基于 Function Calling 的订单查询助手”,含金量比普通 CRUD 项目高很多。
5. langchain4j 和 Spring AI 怎么选
很多人在两个框架之间纠结。我给一个直接的选择标准:
- 如果你的项目是标准 Spring Boot 工程,团队要求快速交付、少写胶水代码,选 Spring AI。
- 如果你要做偏研究性质的原型、要覆盖 Agent、多模型切换、多种向量库组合,选 langchain4j。
- 最稳妥的做法是两个都学。langchain4j 和 Spring AI 很多概念相通,先跑通一个,另一个 2 到 3 天就能上手。
两个框架的对比,面试时可以直接用这个表:
| 对比维度 | langchain4j | Spring AI |
|---|---|---|
| 维护方 | 社区驱动,对标 Python LangChain | Spring 官方,与 Spring Boot 深度绑定 |
| 上手难度 | 中等,需自行拼装组件 | 低,自动配置 + Starter |
| 流式输出 | 支持stream()响应 | 支持Flux/ SSE |
| RAG 组件 | 丰富,向量库适配多 | 支持,但依赖外部向量库配置 |
| Function Calling | 通过@Tool注解和 AiServices 实现 | 通过@Tool注解 + ChatClient 实现 |
| 和 Spring Boot 集成 | 可以,但要注意版本匹配 | 原生集成,无版本焦虑 |
| Agent 支持 | 功能覆盖广,社区例子多 | 相对轻量,适合标准场景 |
| 2026 秋招权重 | 简历加分项 | 简历加分项 + 岗位直接要求常见 |
结论:学校作业或毕设用 langchain4j 更容易出效果,因为组装过程能体现你对 AI 链路每个环节的理解;企业项目或秋招项目展示用 Spring AI 更稳,因为贴近生产环境。
6. 2026 秋招 Java + AI 学习路线
下面这条学习路线以“能写项目、能讲原理、能过面试”为目标,总周期可以压缩到 8 到 12 周。默认读者 Java 基础已有:了解集合、并发、MySQL、Redis、Spring Boot。
阶段一:AI 素养补齐(一周)
目标不是学透神经网络,而是能看懂大模型领域的常用词:
- 什么是 Token、上下文窗口、温度参数。
- 什么是 Prompt、System Prompt、Few-shot。
- 什么是嵌入向量、余弦相似度。
- 什么是 RAG、Fine-tuning、Function Calling、Agent。
- 了解主流模型:GPT 系列、Claude、DeepSeek、Qwen、Llama。
这一阶段输出一篇笔记即可,不需要代码。
阶段二:spring-ai 或 langchain4j 最小 Demo(一周)
目标:把本地对话跑通。
- 选择一个模型服务:本地用 Ollama,云上用一个兼容接口。
- 用 Maven 创建项目。
- 完成一个
/chat接口和一个/chat/stream接口。 - 记录启动过程、配置参数、请求日志。
产出物:一个能运行的 Spring Boot 对话服务。
阶段三:RAG 知识库实战(两周)
重点做这个阶段,RAG 是面试问答里最容易获得好感的方向。
- 选择一个领域,比如“公司 FAQ”“课程资料”“论文摘要”。
- 设计数据加载与切分逻辑。
- 实现向量化存储和检索。
- 把检索结果拼进 prompt。
- 调优召回:topK 从 2 调到 5,对比效果。
产出物:一个基于本地知识库的问答应用,能回答“根据你提供的文档,答案是……”的提问。
阶段四:Agent 与工具调用(一周半)
- 实现 1 到 3 个 Tool:查天气、算价格、查订单。
- 跑通“多轮对话 + 工具调用 + 结果回填”。
- 尝试让 Agent 连续调用两个工具。
- 记录模型在什么情况下会乱调工具,你怎么兜底。
产出物:一个能通过对话完成业务动作的小助手。
阶段五:模型微调与部署(选做,两周)
如果时间够,做一次 Qwen 或 Llama 的小规模微调。重点不是训练精度,而是理解流程:
- 数据准备:把 200 到 500 条问答整理成训练格式。
- 训练工具:选择 LLaMA-Factory 或类似开源工具。
- 本地 GPU 配置:普通 6GB 到 8GB 显存可以跑 LoRA 小模型。
- 导出模型并接入 Spring AI 或 langchain4j 对话接口。
注意:不要为了写简历硬做微调,微调对面试加分有限,重点还是 RAG 和 Agent。时间不够可以直接跳过,把省下的时间拿去强化项目深度。
阶段六:沉淀项目文档与八股(一周半)
- 做 3 到 4 个“项目亮点描述”。
- 整理面试高频题答案。
- 每天花半小时在白板上画 RAG 流程图、Agent 流程图。
整体时间不建议拉太长,秋招最重要的是“有项目能讲、有题目能答”。
7. 简历优化:Java + AI 项目经历怎么写
很多人项目做了,简历写不出来。下面的写法可以直接套用。
7.1 项目描述模板
推荐使用“背景 -> 动作 -> 亮点 -> 结果”的结构:
【项目名称】基于 Spring AI 的企业知识库问答助手 【项目背景】企业内部文档分散在多个系统,人工检索成本高,需要一个统一问答入口。 【核心动作】 1. 使用 Spring Boot + Spring AI 搭建对话服务,支持 SSE 流式输出。 2. 基于 langchain4j 实现文档分段、Embedding、向量检索,召回 TopK 可配置。 3. 设计 Prompt 模板与兜底逻辑,未命中知识库时返回人工入口。 4. 通过 @Tool 实现订单状态查询与工单创建的 Function Calling。 【项目亮点】 - 支持多轮对话记忆,上下文窗口限制 10 条。 - 检索结果采用 RRF 融合,并增加片段去重逻辑,避免重复内容进入提示词。 - 接口平均响应时间在流式模式下首 token 延迟明显降低。 【项目结果】 - 知识库问答准确率从不到 50% 提升到 85% 左右(结合人工抽检)。注意概率别写绝对,面试官会追问口径。比“100% 准确”更可信的是“抽检 100 条,准确率 85%,失败集中在专业术语未覆盖”。
7.2 技术栈怎么写
不要只写“精通 Java”,要写:
技术栈:Java 17、Spring Boot 3.x、Spring AI、langchain4j、Ollama、Docker、Redis、MySQL、PGVector把 AI 相关技术放前面,一方面说明你确实在做 AI 应用开发,另一方面面试官一眼就能找到提问点。
7.3 简历上的“诚实边界”
写 AI 项目经历有两个红线:
- 不要伪造大厂实习经历或模型训练经历。
- 不要在项目描述里写“自研大模型”。你用的是开源模型 + API,如实写“基于 Qwen2.5 搭建”“调用 OpenAI 兼容接口”即可。
诚信问题在技术面试里是硬伤。你可以通过项目细节深度让面试官信服,而不是靠夸大标题。
8. 面试高频题与回答思路
下面这批题是 Java + AI 求职里最常见的,按类别整理。每道题给一个回答思路,展开细节需要结合你自己的项目。
8.1 Java 基础与并发
面试官会先确认你的 Java 底子是否扎实。高频题:
- “Java 怎么保证数据一致性?例如多个线程同时更新一个订单状态。”
- “ConcurrentHashMap 的并发控制原理是什么?”
- “Synchronized 和 ReentrantLock 怎么选?”
回答思路:先讲锁,再讲事务,最后讲乐观锁和版本号。能结合 AI 项目接口并发调用场景更好,比如“知识库问答服务在高并发下用 Redis 做请求幂等,避免大模型接口重复计费”。
8.2 AI 基础与概念
- “什么是 RAG?和 Fine-tuning 有什么区别?”
- 回答要点:RAG 是在推理时检索外部知识,不改变模型参数;Fine-tuning 是更新模型权重,让模型本身学会特定风格或领域知识。RAG 适合知识库实时更新,微调适合风格对齐和格式输出。
- “LangChain 和 langchain4j 的关系?”
- 回答要点:LangChain 是 Python 生态的框架,langchain4j 是 Java 版,核心概念基本对应,解决的是 Java 后端接入 LLM 的工程化问题。
- “什么是 Function Calling?”
- 回答要点:模型在生成时把用户意图映射为函数调用,后端执行函数后把结果回填给模型,再由模型生成自然语言回复。
- “什么是 Agent?”
- 回答要点:Agent 是让模型在循环中自主决定下一步动作,常见模式是 ReAct(思考 -> 行动 -> 观察 -> 循环)。
- “向量检索为什么比关键词搜索更适合 RAG?”
- 回答要点:向量能表达语义相似度,解决同义词、歧义表达问题;关键词搜索适合精确匹配,两者可以结合做混合检索。
8.3 场景设计题
这类题是区分度最高的:
- “设计一个企业知识库问答系统,从数据入库到用户提问,全链路怎么走?”
- 参考链路:文档上传 -> 格式解析 -> 切片 -> Embedding -> 向量库索引 -> 用户提问 -> 向量检索 -> 重排序 -> Prompt 组装 -> 大模型生成 -> 流式返回。
- “知识库更新了,检索结果怎么保证不过期?”
- 回答要点:文档版本管理 + 定时任务增量同步向量库 + 清理删除文档的向量记录。
- “如果大模型接口超时了,你的系统怎么办?”
- 回答要点:超时设置、重试策略、降级返回缓存或兜底话术、熔断。
8.4 常见八股补充
不要只准备 AI 题,Java 基础还是大头。重点复习:
- JVM:内存模型、垃圾回收、类加载。
- 集合:HashMap 源码、线程安全集合。
- 并发:锁、线程池、AQS、volatile。
- MySQL:索引、事务隔离级别、MVCC、SQL 优化。
- Redis:缓存三大问题、持久化、分布式锁。
- Spring:IoC、AOP、事务传播、自动配置原理。
- 消息队列:削峰、解耦、幂等消费、顺序消息。
这部分决定你能不能进面,AI 部分决定你在面试里能不能领先。两条腿缺一不可。
9. 常见误区与避坑
先做防火墙,再做加法。下面是转型期最常见的五个坑:
9.1 只学 Python 不学 Java 框架
看到大模型示例都是 Python,就弃 Java 转 Python,这是最亏的选择。2026 秋招 Java 岗位依然多,Python 算法岗竞争更激烈。你的差异化是 Java 后端 + AI 应用能力,不是重新做一名 Python 新手。
9.2 一上来就学模型微调
微调需要数据、算力和时间,而且面试官通常更关心 RAG 和 Agent。优先做 RAG,再做一个 Function Calling,最后有时间再碰微调。
9.3 项目只写“调 API”
“调 API”在简历上不值钱。要让项目有深度,至少包含:流式输出、上下文记忆、RAG 检索、工具调用、异常兜底中的三项以上。
9.4 忽略模型成本和隐私合规
在你自己的项目里用大模型接口时,注意不把敏感数据和未授权数据喂给外部模型。企业场景更要注意数据脱敏、私有化部署选择和模型服务提供商的合规要求。做一个 demo 时用本地 Ollama 最安全,不需要上传数据到公网。
9.5 面试只会说概念,画不出链路
大模型应用面试必问流程。同样一句话“用了 RAG”,能画链路的人和只能说概念的差距非常大。建议在白纸上练 5 次以上:文档加载、切片、向量化、检索、重排、Prompt 拼接、生成、返回。
10. 总结与下一步
Java 程序员转型大模型方向,最现实的路径不是转算法,而是成为“AI 应用后端开发”。把 langchain4j 和 Spring AI 各跑通一个 Demo,再做透一个 RAG 项目。简历上不用写“懂 AI”,直接写“基于 Spring AI 的流式对话服务 + 基于 langchain4j 的知识库问答 + @Tool 函数调用”。这套话术比任何自我评价都管用。
下一步从今天开始做三件事:
- 装好 Spring Boot 3.x 环境,跑通一个
/chat/stream接口。 - 把一份文档切成片段,用 Embedding + 向量检索实现一个最小 RAG。
- 用
@Tool注解实现一个查询订单状态的函数调用。
这三件事做出来,你的简历就能从“Java 后端”变成“Java + AI 应用”。2026 秋招不想等也不要等,时间窗口就在现在,动手比犹豫有用。