- 博客(12)
- 收藏
- 关注
原创 RAG核心特性详解:ETL流水线
本文介绍了ETL(抽取、转换、加载)流程在RAG(检索增强生成)应用中的核心作用,通过将海量文档转换为向量数据库中的知识碎片,使AI能够高效检索和利用这些信息。文章用生活场景类比ETL的三个阶段:Extract(读取各种格式文档)、Transform(分割和增强文档内容)、Load(存储到向量数据库)。详细解析了Spring AI框架中的三大核心接口(DocumentReader、DocumentTransformer、DocumentWriter)及其实现类,并举例说明文本分割器、元数据增强器等关键组件的
2026-06-13 00:25:41
321
原创 【新手推荐】Java调用AI大模型的4种实战方案
本文介绍了Java程序调用AI大模型的4种主流方式,重点讲解了SDK接入和HTTP接入两种方案。SDK接入通过官方工具包实现类型安全调用,适合通义千问等特定平台;HTTP接入则提供跨语言灵活性,使用REST API直接请求模型服务。文章提供了基于JDK 21和Spring Boot 3.x的完整示例代码,包括依赖配置和核心调用逻辑,并对比了两种方式的优缺点:SDK在维护性和错误处理方面更优,而HTTP方案则具有无依赖和跨平台优势。文中还包含环境准备指引和阿里云百炼平台的API申请链接,为开发者提供实用参考。
2026-06-10 15:10:33
551
原创 Promot提示词:从概念到实践
本文基于Spring AI官方文档与网上promot教学,用大白话讲透提示词工程。核心包含四大策略:角色设定让AI入戏、少样本学习给AI参考、结构化输出规范格式、思维链引导逐步推理。附带可复制的Java代码示例、Token省钱技巧和安全防御方案。掌握这些,你就能从“瞎问”进阶到精准操控AI,让回答质量翻倍
2026-06-09 15:59:54
591
原创 Spring AI ChatClient:Chat Client API详解(含与阿里版对比)
Spring AI的ChatClient是一个统一接口,让你无需关心底层AI模型(如OpenAI或通义千问)的具体实现。它提供流式API,支持同步和异步调用,能直接返回文本、结构化对象或完整响应。核心功能包括: 简单调用:链式API(prompt().user().call().content())即可完成交互。 结构化返回:通过entity(Class)直接映射为Java对象。 对话记忆:集成ChatMemory实现多轮上下文记忆。 流式输出:stream()支持实时逐字返回,类似ChatGPT效果。 R
2026-06-08 15:03:09
579
原创 Spring AI结构化输出实战:StructuredOutputConverter详解
本文介绍了如何利用Spring AI的StructuredOutputConverter将大语言模型的自然语言输出转换为结构化数据,重点讲解了BeanOutputConverter的用法。通过两种方式实现:1)传统Prompt工程方式,在提示词中添加格式指令;2)利用模型原生结构化输出能力(如GPT-4o)。文章通过Tom Hanks电影列表的示例,演示了如何定义Java类、调用API及处理泛型场景,并对比了两种方式的可靠性和适用场景。建议程序化使用AI输出时优先采用结构化转换,特别是模型原生支持的情况下能
2026-06-07 16:43:25
458
原创 Spring AI对话记忆实战:Chat Memory详解和代码示例
本文介绍了Spring AI中的对话记忆机制(Chat Memory),帮助大语言模型(LLM)在无状态环境下维持上下文。主要内容包括: 核心概念:区分对话记忆(动态上下文)和对话历史(完整存档),强调ChatMemory专注于主动记忆管理。 架构设计: 策略层(ChatMemory接口)决定消息保留规则(如滑动窗口) 存储层(ChatMemoryRepository)支持多种后端(JDBC/MongoDB/Cassandra等) 内置实现: MessageWindowChatMemory采用窗口策略(默认
2026-06-07 16:28:28
549
原创 Spring AI 拦截器实战:Advisors 详解与代码示例
Spring AI 的 Advisors 是一种拦截器机制,用于在调用大模型前后自动执行通用逻辑(如聊天记录管理、RAG检索、日志记录等)。文章通过通俗易懂的语言和代码示例,介绍了 Advisors 的核心概念、执行流程(含时序图和流程图)、关键接口以及自定义实现方法。主要特点包括:1) 通过链式调用实现请求/响应拦截;2) 支持流式和非流式处理;3) 通过 order 值控制执行顺序;4) 提供开箱即用的常用功能模块。开发者可以基于标准接口快速扩展定制功能,避免重复代码,提升 AI 应用开发效率。
2026-06-06 22:11:57
565
原创 【直接推荐】Ubuntu SSH连接FinallShell终极指南
本文介绍了如何在Ubuntu系统中查看IP地址、安装SSH服务,并使用FinalShell进行远程连接。主要内容包括:1)通过ip addr或hostname -I命令查看IP地址;2)安装openssh-server并启动SSH服务;3)FinalShell的连接配置步骤;4)解决安装SSH时可能遇到的apt锁冲突问题,包括终止占用进程、清理锁文件等解决方案;5)可选关闭自动更新服务以避免类似问题。文章提供了详细的命令行操作和截图指引,帮助用户快速建立SSH远程连接。
2026-04-24 00:15:08
630
原创 【LeetCode热题100】49.字母异位词分组【哈希】
这篇文章介绍了字母异位词分组的Java解法。核心思路是利用字符计数作为哈希键:对每个字符串统计26个字母的出现次数,生成唯一标识作为键,将相同计数的字符串归为一组。关键技巧是使用count[c-'a']++高效统计字符频率,相比HashMap更节省空间和时间。时间复杂度O(n×k),空间复杂度O(n×k),其中n是字符串数量,k是平均长度。该方法通过数组索引巧妙避免了复杂的分支判断,代码简洁高效。
2026-04-23 17:46:40
301
1
原创 【LeetCode热题100】438.找到字符串中所有字母异位词【滑动窗口】提高时间复杂度成O(n)
题目要求在字符串s中查找所有与字符串p构成异位词的子串起始位置。关键解法是使用滑动窗口配合哈希表统计字符频次。维护两个哈希表分别记录目标字符串p和当前窗口的字符频次,当窗口大小等于p长度时检查是否满足异位词条件。通过count变量优化判断过程,仅当窗口中所有字符频次与p完全匹配时才记录结果。算法时间复杂度O(n),空间复杂度O(1)。示例执行过程详细展示了窗口滑动和字符频次比较的步骤,最终输出所有符合条件的起始索引。
2026-04-22 15:43:38
668
原创 【LeetCode热题100】3.无重复字符的最长字串【滑动窗口】
本文提出了一种滑动窗口算法来寻找字符串中最长无重复字符子串。关键思路是维护一个动态窗口[start,end],通过哈希表记录字符位置。当遇到重复字符时,窗口左边界跳转到重复字符的下一个位置(使用Math.max避免回退),确保窗口内始终无重复。算法时间复杂度O(n),空间复杂度O(min(m,n)),其中m为字符集大小。代码实现中,哈希表存储字符的下次起始位置(end+1),简化了边界处理。通过"abba"等案例验证了Math.max的必要性,防止窗口左边界错误回退。该算法高效解决了经典
2026-04-21 15:58:40
168
原创 【新手推荐】Git失误操作(速救回!!!)
Git误操作急救指南摘要 本文分类整理Git常见误操作场景及修复方案,包括提交错误、分支操作失误、数据丢失等紧急情况处理。提供基础急救命令速查表,详细说明误提交恢复、分支误删修复等具体解决方案,并给出预防数据丢失的措施。同时介绍高级恢复技巧、预防误操作的最佳实践,以及可视化工具的辅助功能。最后列出紧急情况处理流程,强调保持冷静、记录状态的重要性,建议建立事故报告机制。全文涵盖从基础到高级的Git操作恢复方案,帮助开发者有效应对版本控制中的意外情况。
2026-03-20 22:53:13
67
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅