# Java AI 学习计划 **Repository Path**: cocoknight/java-ai-learning-plan ## Basic Information - **Project Name**: Java AI 学习计划 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-02 - **Last Updated**: 2026-06-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java AI 开发学习计划 --- ## 一、框架选择 ### 首推:Spring AI(入门首选) **选择理由:** - Spring 官方项目,VMware/Broadcom 背书 - 当前稳定版 **1.1.7**,2.0.0-M8 预览中 - API 风格与 Spring 生态一致(`ChatClient` ≈ `RestClient`),学习曲线极低 - 原生 Spring Boot Auto Configuration + Starters,零配置起步 - 已支持 MCP 协议 ### 备选:LangChain4j(进阶扩展) **选择理由:** - 框架无关(同时支持 Quarkus、Helidon、Micronaut),社区更活跃 - LLM 提供商(20+)和向量数据库(30+)覆盖面更广 - Agent / AI Services / Skills 模式更成熟 - API 仍在快速演进,适合在掌握 Spring AI 基础后扩展 ### 使用策略 ``` 入门阶段 → Spring AI(复用 Spring 知识,快速跑通全链路) 进阶阶段 → LangChain4j(需要复杂 Agent 编排或非 Spring 环境时引入) ``` > 两者可以共存,不是互斥的。 --- ## 二、知识体系全景 ### 知识域总览 ``` ┌─────────────────────────────────────────────────┐ │ 第三层:AI Agent · MCP 协议 · 可观测性与评估 │ │ ┌───────────────────────────────────────────┐ │ │ │ 第二层:RAG · 向量数据库 · Embedding 模型 │ │ │ │ ┌─────────────────────────────────────┐ │ │ │ │ │ 第一层:LLM 原理 · Prompt · Tool │ │ │ │ │ └─────────────────────────────────────┘ │ │ │ └───────────────────────────────────────────┘ │ └─────────────────────────────────────────────────┘ ``` ### 第一层:基础(必须掌握) 📄 [详细文档](docs/第一层-LLM基础-Prompt工程-FunctionCalling.md) | 知识域 | 学习内容 | 重要性 | |:---|:---|:---| | **LLM 基本原理** | Token 与 Tokenizer、上下文窗口限制、Temperature / Top-P 采样参数、System Prompt vs User Prompt 的区别 | 不理解 Token 就无法控制成本与输入长度 | | **Prompt Engineering** | Few-shot 示例、Chain-of-Thought 思维链、角色设定技巧、结构化输出指令(JSON 格式约束) | 90% 的"调优"实际是在调 Prompt | | **Function Calling / Tool Use** | LLM 调用 Java 方法的机制、JSON Schema 定义工具接口、工具执行结果的回传格式 | AI 与业务系统交互的核心桥梁 | ### 第二层:进阶(实际项目必备) 📄 [详细文档](docs/第二层-RAG-向量数据库-Embedding模型.md) | 知识域 | 学习内容 | 重要性 | |:---|:---|:---| | **RAG(检索增强生成)** | 文档加载与解析、文本切分策略(固定长度 / 语义 / 递归)、向量化 Embedding、相似度检索、Re-Ranking 重排序 | "和我的文档对话"场景的唯一解法 | | **向量数据库** | PGVector / Milvus / Redis Stack / Chroma 选型、HNSW 索引原理、元数据过滤、混合检索(向量 + 关键字) | RAG 的存储底座,选错等于白做 | | **Embedding 模型** | text-embedding-3-small vs large 选型、BGE / M3E 中文模型、维度与精度/成本权衡 | 决定检索质量的天花板 | ### 第三层:高级(架构师 / 技术负责人) 📄 [详细文档](docs/第三层-AI-Agent-MCP协议.md) | 知识域 | 学习内容 | 重要性 | |:---|:---|:---| | **AI Agent** | ReAct 推理模式(Reason + Act)、多步推理链路、工具编排与路由、短期/长期记忆管理 | 从"问答机器人"升级到"自主执行任务" | | **MCP 协议** | 三种原语(Tools/Resources/Prompts)的适用场景、MCP Client/Server 架构、四种传输协议选型 | 2025 年 AI 集成的事实标准 | | **MCP Spring AI 实现** | @McpTool/@McpResource/@McpPrompt 注解、Server/Client 端开发、Streamable-HTTP 传输配置 | Spring AI 生态下 MCP 的开箱即用 | --- ## 三、分阶段学习路线 ### 第一阶段:LLM 基础 + Prompt Engineering(第 1–2 周) 📄 [详细文档](docs/第一层-LLM基础-Prompt工程-FunctionCalling.md) **目标:** 理解 LLM 工作方式,用 Spring AI 写出第一个 AI 应用。 #### 学习任务 - [ ] 阅读 Spring AI 官方 Getting Started 指南 - [ ] 搭建 Spring Boot + Spring AI 项目(引入 `spring-ai-openai-spring-boot-starter`) - [ ] 配置 API Key,注入 `ChatClient`,完成第一次对话调用 - [ ] 理解 Token 概念:用在线 Tokenizer 工具拆解一段中文,观察 Token 边界 - [ ] 实验 Temperature 参数(0.0 → 1.0),观察输出差异 #### 实践项目 > **命令行聊天机器人** > > - 支持多轮对话(使用 Conversation Memory) > - 通过 System Prompt 设定机器人角色(如"你是一个资深的 Java 技术面试官") > - 实现结构化输出:让 LLM 返回 JSON,映射到 Java POJO #### 验收标准 - 能用 `ChatClient` 完成单轮 + 多轮对话 - 能写出有效的 System Prompt 控制 LLM 行为 - 能将 LLM 的 JSON 输出反序列化为 POJO --- ### 第二阶段:Function Calling / Tool Use(第 3–4 周) **目标:** 让 LLM 能够调用你的 Java 业务方法。 #### 学习任务 - [ ] 理解 Function Calling 的完整流程:模型请求 → 工具匹配 → 执行 → 结果回传 - [ ] 学习 JSON Schema 定义工具参数的方式 - [ ] 在 Spring AI 中使用 `@Tool` 注解定义可调用函数 - [ ] 理解工具调用的确认机制与错误处理 #### 实践项目 > **智能订单助手** > > - 定义 3–5 个 Tool:`queryOrder(id)`、`cancelOrder(id)`、`searchProducts(keyword)` 等 > - 让 LLM 根据用户意图自动选择合适的 Tool,支持多步组合调用 > - 示例对话:「帮我查一下订单 #12345 的状态」→ LLM 自动调用 `queryOrder` #### 验收标准 - 能定义并注册 3+ 个 Tool - LLM 能根据用户自然语言自动选择并调用正确的 Tool - 理解 Tool 调用的 JSON Schema 定义 --- ### 第三阶段:RAG 全链路(第 5–6 周) 📄 [详细文档](docs/第二层-RAG-向量数据库-Embedding模型.md) **目标:** 实现"和你的文档对话"——检索增强生成。 #### 学习任务 - [ ] 理解 RAG 的核心流程:Ingestion(摄入)→ Retrieval(检索)→ Generation(生成) - [ ] 文档加载:支持 PDF、Markdown、TXT 等多种格式 - [ ] 学习文本切分策略:固定窗口 / 递归字符 / 语义切分,对比效果 - [ ] Embedding 生成:调用 `text-embedding-3-small` 将文本片段向量化 - [ ] 向量存储与检索:使用 PGVector 或 Chroma,实现 Top-K 相似度搜索 - [ ] 上下文拼接:将检索结果拼入 Prompt,让 LLM 基于文档回答 - [ ] 实验 Re-Ranking:对比有无 Re-Rank 的回答质量差异 #### 实践项目 > **知识库问答系统** > > - 选择一份文档(如 Spring AI 官方文档 PDF 或某个开源项目 README 合集) > - 实现全链路:导入 → 切分 → Embedding → 存储 → 检索 → 生成回答 > - 对比 3 种切分策略的检索命中率 > - (可选)加入 Re-Rank 步骤,对比前后效果 #### 验收标准 - 能将任意文档导入并建立向量索引 - 提问时能检索到相关片段并基于片段生成回答(带引用来源) - 能说出不同切分策略的适用场景 --- ### 第四阶段:AI Agent + MCP 协议(第 7–8 周) 📄 [详细文档](docs/第三层-AI-Agent-MCP协议.md) **目标:** 从"问答"升级到"自主决策与执行"。 #### 学习任务 - [ ] 理解 Agent 的核心概念:观察(Observe)→ 思考(Think)→ 行动(Act)→ 观察… - [ ] 学习 ReAct 模式:Reasoning + Acting 交替进行的推理链路 - [ ] 理解 MCP 三种原语(Tools / Resources / Prompts)的区别与适用场景 - [ ] 掌握 MCP Client/Server 架构与四种传输协议(STDIO / SSE / Streamable-HTTP / Stateless) - [ ] 用 Spring AI 2.0 搭建 MCP Server(@McpTool + @McpResource + @McpPrompt) - [ ] 用 Spring AI 2.0 搭建 MCP Client,通过远程连接使用 Server 的工具 - [ ] 理解 @Tool 与 @McpTool 的本质差异(进程内 vs 跨进程标准化) #### 实践项目 > **智能研发助手 Agent** > > - Agent 具备多个工具:代码搜索、Git 日志查询、Issue 查询、文档检索 > - 将这些工具封装为独立的 MCP Server,通过 Streamable-HTTP 暴露 > - 用户说"帮我看看最近一周关于登录模块的改动",Agent 自动: > 1. 调用 Git 日志工具获取最近提交 > 2. 筛选与"登录"相关的 commit > 3. 调用文档检索工具补充上下文 > 4. 生成一份改动摘要 > - 验证:同一个 MCP Server 可以被不同的 AI Client 复用 #### 验收标准 - 能实现一个具备多工具、多步推理的 Agent - Agent 能根据中间结果动态调整下一步行动 - 能独立搭建 MCP Server 和 MCP Client,通过远程协议调用 - 能说出 Tools、Resources、Prompts 的适用场景和边界 --- ### 第五阶段:工程化与生产部署(第 9 周起) **目标:** 将 AI 应用打磨到可上线状态。 #### 学习任务 - [ ] **流式响应(Streaming)**:Server-Sent Events 实现打字机效果 - [ ] **会话记忆**:跨会话持久化记忆,用户偏好学习 - [ ] **多模态**:图片/音频输入的理解与处理 - [ ] **可观测性**:接入 Spring AI Observability,追踪 Token 用量与延迟 - [ ] **生成质量评估**:使用 RAGAS 等指标评估 RAG 回答质量 - [ ] **成本控制**:缓存策略(语义缓存 / 精确缓存)、模型降级方案 - [ ] **安全防护**:Prompt Injection 防御、敏感信息过滤、内容审核集成 - [ ] **容器化部署**:Docker 打包,CI/CD 流程 #### 验收标准 - 应用支持流式输出 - 具备 Token 用量监控与成本报表 - 通过基本的安全审查(Prompt 注入防护 + 敏感信息脱敏) --- ## 四、技术栈推荐 | 分层 | 推荐选型 | 备选 | |:---|:---|:---| | **框架** | Spring AI 1.1.x | LangChain4j | | **LLM 提供商** | OpenAI(入门) / 通义千问(国内) | DeepSeek、Ollama(本地) | | **Embedding 模型** | text-embedding-3-small | BGE-M3(中文)、M3E | | **向量数据库** | PGVector(与 PostgreSQL 复用) | Milvus、Chroma | | **数据库** | PostgreSQL | MySQL | | **开发工具** | Spring Boot 3.x + JDK 17+ | JDK 21(Virtual Threads) | | **容器化** | Docker + Docker Compose | Kubernetes | --- ## 五、学习资源索引 ### 本项目文档 | 文档 | 说明 | |:---|:---| | [第一层:LLM 基础 · Prompt 工程 · Function Calling](docs/第一层-LLM基础-Prompt工程-FunctionCalling.md) | Token / 采样参数 / Prompt 技巧 / 结构化输出 / Tool 设计 | | [第二层:RAG · 向量数据库 · Embedding 模型](docs/第二层-RAG-向量数据库-Embedding模型.md) | 切分策略 / 检索技术 / 向量库选型 / 中文 Embedding | | [第三层:AI Agent · MCP 协议](docs/第三层-AI-Agent-MCP协议.md) | Agent 架构 / ReAct 模式 / MCP 原语与传输 / Spring AI 2.0 实战 | ### 外部资源 | 资源 | 链接 | 适用阶段 | |:---|:---|:---| | Spring AI 官方参考文档 | https://docs.spring.io/spring-ai/reference/ | 全阶段 | | Spring AI 中文文档 | https://springdoc.cn/ | 全阶段 | | LangChain4j 官方文档 | https://docs.langchain4j.dev/intro/ | 第三阶段后 | | LangChain4j 中文文档 | https://langchain4j.cn/ | 第三阶段后 | | OpenAI 官方文档 | https://platform.openai.com/docs | 全阶段 | | Pinecone 向量数据库学习 | https://www.pinecone.io/learn/ | 第三阶段 | | MCP 协议规范 | https://modelcontextprotocol.io/ | 第四阶段 | --- ## 六、进度跟踪 | 阶段 | 时间 | 状态 | 开始日期 | 完成日期 | 备注 | |:---|:---|:---|:---|:---|:---| | 第一阶段:LLM 基础 + Prompt | 第 1–2 周 | ⬜ 待开始 | | | | | 第二阶段:Function Calling | 第 3–4 周 | ⬜ 待开始 | | | | | 第三阶段:RAG 全链路 | 第 5–6 周 | ⬜ 待开始 | | | | | 第四阶段:Agent + MCP | 第 7–8 周 | ⬜ 待开始 | | | | | 第五阶段:工程化部署 | 第 9 周起 | ⬜ 待开始 | | | | > 状态图标说明:⬜ 待开始 | 🔄 进行中 | ✅ 已完成 | ⏸️ 暂缓 --- ## 七、核心原则 1. **先调模型,再喂数据。** 先用 Prompt + Function Calling 搞定模型行为,再引入 RAG 做知识注入。 2. **Spring AI 入门,LangChain4j 进阶。** 不要在入门阶段纠结框架选择——Spring AI 的上手成本几乎为零。 3. **每个阶段必须有可运行的代码产物。** 不要只读文档,跑起来的代码才是真的理解。 4. **Token 意识贯穿始终。** 每一次 API 调用都有成本,从第一天起就养成关注 Token 用量的习惯。 5. **Prompt 是你的第一武器。** 在引入 RAG、Agent 等复杂方案之前,先问自己:Prompt 还能不能再优化?