- 博客(320)
- 资源 (1)
- 收藏
- 关注
原创 向量存储(VectorStore)详解
向量存储(VectorStore)是现代 AI 应用中的关键技术,能够高效地存储和检索高维向量数据。通过与嵌入模型和 AI 模型的结合,向量存储为开发者提供了强大的工具,用于构建智能问答系统、内容推荐系统等应用。随着技术的不断发展,向量存储将在更多领域发挥重要作用,为开发者提供更多智能化的解决方案。
2025-04-12 22:16:43
399
原创 Spring AI 结构化输出详解
Spring AI 提供了一种强大的功能,允许开发者将大型语言模型(LLM)的输出从字符串转换为结构化格式,如 JSON、XML 或 Java 对象。这种结构化输出能力对于依赖可靠解析输出值的下游应用程序至关重要。通过 Spring AI 的结构化输出转换器,开发者可以快速将 AI 模型的结果转换为可以传递给其他应用程序函数和方法的数据类型。转换器在 LLM 调用之前将期望的输出格式附加到 prompt 中,为模型提供生成所需输出结构的明确指导。
2025-04-12 22:09:42
884
原创 文档检索技术详解 (Document Retriever)
文档检索(Document Retriever)是一种信息检索技术,旨在从大量未结构化或半结构化文档中快速找到与特定查询相关的文档或信息。文档检索通常以在线(online)方式运行,能够实时响应用户的查询请求。文档检索的核心在于其基于向量搜索的技术。它通过将用户的查询问题(query)转化为嵌入向量(Embeddings),然后在存储的文档中进行相似性搜索,返回与查询最相关的片段。这些片段可以作为提示词(prompt)的一部分,发送给大模型(LLM)进行汇总处理,最终以答案的形式呈现给用户。
2025-04-12 22:03:12
594
原创 检索增强生成RAG(Retrieval-Augmented Generation)
RAG(Retrieval Augmented Generation,检索增强生成)是一种结合信息检索和文本生成的技术范式。
2025-04-12 21:56:38
573
原创 提示词 (Prompt)
Prompt 设计是生成式 AI 应用的基础,直接影响模型的行为和输出质量。通过理解 Prompt 的演变历程、合理划分角色、熟练使用 Spring AI 提供的 Prompt API 与 PromptTemplate 工具,开发者可以构建出灵活、高效且易维护的对话系统。结合最佳实践,您将能够在各类业务场景中充分发挥 LLM 的潜力,为用户带来流畅、智能的交互体验。本文示例基于 Spring AI 框架及 StringTemplate 引擎,旨在为开发者提供系统的 Prompt 设计指导。
2025-04-12 21:19:29
650
原创 对话记忆(Conversational Memory)
除了内存存储,开发者可以实现ChatMemory文件系统:将对话记录序列化为文件,适用于轻量部署。Redis:利用 Redis 的高速读写与过期机制,支持大规模会话并发与自动过期。关系型数据库:将对话存入 MySQL、PostgreSQL 等数据库,便于查询与分析。向量数据库:将历史消息嵌入为向量,并存储在 Pinecone、Weaviate 等系统,实现基于相似度的上下文检索。自定义存储策略的核心在于实现ChatMemory的write与read方法,开发者可灵活定义序列化、检索和过期逻辑。
2025-04-12 21:04:42
511
原创 Model Context Protocol (MCP) 模型上下文协议
模型上下文协议(MCP)为 LLM 应用提供了一个统一、标准化的接口,使其能够在对话或工作流中随时访问和操作外部数据源与工具。通过 JSON-RPC 2.0 协议、能力协商机制和多种传输层实现,MCP 打破了不同系统间的集成壁垒,简化了多源集成成本。在 Java/Spring 生态中,借助 Spring AI MCP,我们可以轻松地将本地文件系统、数据库、第三方 API 等资源暴露给 LLM,并在 ChatClient 中将其注册为函数回调,实现“智能体”式的交互与自动化操作。
2025-04-12 20:55:13
619
原创 大型语言模型中的工具调用(Function Calling)技术详解
Bean@Description("Get the weather in location") // 函数描述,帮助模型选择调用Bean 名称(默认为方法名)即作为函数名传给模型。注解为该函数提供说明,模型据此判断何时调用。“工具调用(Function Calling)”为 LLM 提供了与外部系统、API、代码逻辑无缝对接的能力,大大拓展了模型在实际应用中的边界。
2025-04-12 20:14:04
696
原创 深入解析嵌入模型Embedding :从理论到实践的全方位指南
嵌入模型(Embedding Model)是人工智能领域的一项核心技术,它能够将非结构化数据(如文本、图像、音频)转换为数值向量。这个过程类似于为每个数据元素创建一个独特的"数字指纹",使得计算机可以通过数学运算理解和处理这些信息。
2025-04-12 19:22:57
657
原创 深入解析 Spring AI Alibaba 多模态对话模型:构建下一代智能应用的实践指南
现代AI应用正经历从单一文本交互到多模态融合的革命性转变。根据Gartner预测,到2026年将有超过80%的企业应用集成多模态AI能力。Spring AI Alibaba 对话模型体系正是为这一趋势量身打造,其技术架构演进路径呈现以下特点:输入维度扩展:支持文本、图像、音频、视频等多源数据输出能力增强:实现跨模态内容生成与转换上下文理解升级:基于多模态信息的综合语义理解服务编排优化:统一API规范下的异构模型调度1.2 Spring AI Alibaba 的架构定位作为Spring AI生态的重
2025-04-12 10:32:21
577
原创 深入解析 Spring AI ChatClient:构建高效 AI 应用的终极指南
分层配置策略基础配置通过 application.yaml 管理业务相关配置使用 Java Config运行时参数通过 Advisor 动态注入性能优化矩阵| 场景 | 策略 | 工具支持 || 高并发 | 响应缓存+流式处理 | Redis+Caffeine || 大数据量 | 分块处理+并行执行 | Reactor Parallel || 低延迟要求 | 本地模型+内存存储 | ONNX Runtime |可观测性方案指标采集:Token 使用量、响应延迟、错误率日志追踪:全链路请求标识。
2025-04-12 09:33:58
629
原创 智能体代理模式(Agent Agentic Patterns)深度解析
传统AI系统以规则驱动型工作流为核心,依赖预设程序执行确定性任务(如制造业机器人)。而智能体(Agent)通过大语言模型(LLMs)实现了动态决策能力感知维度:突破单一模态输入,整合视觉、语音、触觉等多源信号推理能力:从线性逻辑处理升级至多层级任务拆解(如金融报告分析需分解为数据检索→计算→趋势预测)行动闭环:形成“目标设定→规划→执行→反思”的自主迭代循环典型案例:Crew.AI平台通过层级流程(Hierarchical Process)
2025-04-10 23:11:25
786
原创 Spring AI 框架使用的核心概念
这意味着,就像欧几里得几何中平面上的点可以根据其坐标的远近关系而接近或远离一样,在语义空间中,点的接近程度反映了意义的相似性。嵌入(Embedding)是文本、图像或视频的数值表示,能够捕捉输入之间的关系,Embedding 通过将文本、图像和视频转换为称为向量(Vector)的浮点数数组来工作。创建有效的 Prompt 涉及建立请求的上下文,并用用户输入的特定值替换请求的部分内容。从最初的简单字符串开始,Prompt 逐渐演变为包含多条消息的格式,其中每条消息中的每个字符串代表模型的不同角色。
2025-04-10 22:45:54
991
原创 多角度全面对比A2A、ANP与MCP协议
未来,三者可能形成分层协作:MCP连接工具、A2A协调企业级任务、ANP构建开放网络。而谷歌与Anthropic的竞合关系,将深刻影响AI生态的格局演变。
2025-04-10 13:51:38
964
原创 ANP协议深度解析:智能体网络协议的演进与革新
在此背景下,**自主协商协议(Autonomous Negotiation Protocol, ANP)**应运而生,旨在为智能体提供一套标准化、可扩展的协商框架,以优化任务分配、冲突解决和动态决策。通过融合博弈论、密码学与分布式系统的最新成果,ANP为复杂场景下的智能体协作提供了可验证、高效率的解决方案。未来,ANP或将成为智能社会的“隐形协调者”,推动人类与机器共同构建更高效、更公平的协作生态。:专注于智能体间的策略协商与资源优化,类似“外交谈判”,三者共同构成完整的智能体协作生态。
2025-04-10 13:42:36
1087
原创 A2A协议技术解析与行业影响:AI协作的新纪元
在人工智能(AI)技术快速发展的背景下,AI代理(Agent)的互操作性问题逐渐成为制约生态协同的关键瓶颈。2025年4月,Google联合50余家科技企业推出,旨在通过标准化通信框架,实现跨厂商、跨生态的AI代理协作。这一协议的发布标志着AI技术从“单兵作战”向“群体智能”的跃迁,其设计理念、技术实现与行业影响均值得深入探讨。本文将从背景、核心原则、技术架构、应用场景、与MCP协议的协同关系等多维度展开分析。
2025-04-10 10:54:57
752
原创 RocketMQ 学习笔记01
MQ(Message Queue,消息队列)是一种在分布式系统中用于实现进程间通信和数据传输的中间件。它通过在不同进程或应用程序之间传递消息,实现数据的异步处理、解耦和削峰填谷等功能。MQ广泛应用于互联网、高并发场景下的数据传输和处理。RocketMQ是由阿里巴巴开源的一款高性能、高可靠的分布式消息中间件。经过阿里内部多次大规模业务场景(如双十一)的验证,RocketMQ能够处理亿万级别的消息。2016年,RocketMQ开源并捐赠给Apache基金会,现已成为Apache的顶级项目。发展历程早期阶段。
2025-01-16 23:19:03
776
原创 Kafka的Partition故障恢复机制与HW一致性保障-Epoch更新机制详解
Kafka中的每个Topic被划分为多个Partition,每个Partition有多个副本(Replicas),其中一个副本被选举为Leader,其余为Follower。Leader负责处理所有客户端的读写请求,Follower负责同步Leader的数据。当某个Broker或Partition发生故障时,Kafka需要迅速恢复Partition的可用性,确保数据的一致性和系统的高可用性。
2025-01-07 14:30:50
1282
原创 Kafka的Zookeeper元数据梳理学习笔记-04
本章节系统梳理了Kafka在Zookeeper中存储的元数据及其相关机制,包括Broker信息、Controller选举、Leader Partition选举与自动平衡、Partition故障恢复以及HW一致性保障等。通过这些机制,Kafka能够在复杂多变的运行环境中,保持数据的一致性和系统的高可用性。核心要点:Zookeeper的作用:作为集群的协调者,存储关键的元数据,确保集群中各个Broker的一致性和协调性。Controller的职责:集中管理集群的状态,处理分区和副本的分配与管理。
2025-01-07 14:15:00
691
原创 Spring Boot 项目中集成 Kafka-03
和适用于大多数常规应用,简单易用,与 Spring 生态系统无缝集成。Spring Cloud Stream 与 Kafka Binder适用于微服务架构,需处理复杂消息路由与多中间件支持的场景。适用于需要响应式编程模型、高并发和非阻塞消息处理的应用。手动配置 Producer 和 Consumer Bean适用于需要高度自定义 Kafka 配置和行为的应用。适用于复杂集成场景,需要与其他消息渠道和系统协作的应用。嵌入式 Kafka 在测试中使用。
2025-01-06 22:35:56
1577
原创 Kafka核心参数与使用02
属性配置(序列化、分区器、拦截器、幂等性/事务等) → 将消息提交到→Sender线程批量发送到 Broker → 按acks等待 Broker 响应 → 提交或重试。属性配置(反序列化、消费组、分区分配策略等) →poll()拉取消息 → 业务处理 → 提交 offset(手动或自动),与 Broker 同步消费进度。重点:消息在 Producer 端的缓存发送机制与消息在 Consumer 端的主动拉取、分组消费、offset 提交是理解 Kafka 高并发、高吞吐、高可用的关键。其他如。
2025-01-06 22:33:14
989
原创 Kafka 快速实战及基本原理详解解析-01
消息队列(Message Queue,简称 MQ)是一种用于跨进程通信的技术,核心功能是通过异步消息的方式实现系统之间的解耦。Topic是逻辑概念,Producer 和 Consumer 通过 Topic 进行消息传递。Partition是实际存储单元,保证数据分散存储和负载均衡。Broker是 Kafka 的服务器实例,存储 Partition 数据并处理客户端请求。Zookeeper管理 Kafka 集群的元数据和选举过程。Controller。
2025-01-03 23:02:03
1249
原创 7、Spring Bean 的初始化与销毁机制
XML 配置方式:在spring.xml配置文件中,可以通过和属性为 Bean 指定初始化和销毁的方法。这些方法将在 Bean 实例化后和销毁前通过反射机制进行调用。接口实现方式:实现接口的方法和接口的destroy()方法,来处理 Bean 的初始化和销毁逻辑。这种方式相对更符合面向对象设计思想,同时也提供了更细粒度的控制。通过以上实现,我们能够看到 Spring 框架对 Bean 的生命周期管理提供了灵活且强大的支持。
2024-09-13 22:27:14
862
原创 6、实现应用上下文
在实际的软件开发过程中,产品的需求常常变化多端,开发者往往需要在时间紧迫的情况下快速交付项目。为了应对业务上的灵活变更与调整,很多时候我们会选择在已有项目的基础上进行扩展,或者临时搭建出一个能满足需求的工程。然而,这种快速拼凑的开发模式可能会埋下许多隐患。上线后,随着业务的进一步变更,代码的质量和结构往往难以维持,最终陷入维护困境。举个实际的例子,当项目上线后,运营部门发现某个活动的配置不合理,可能立刻需要调整参数,比如更改用户优惠金额、奖金池配置等。
2024-09-09 19:52:34
692
原创 5、设计与实现资源加载器,从Spring.xml解析和注册Bean对象
在实际开发过程中,代码的质量和可维护性往往会因为业务需求的不断变更而逐渐恶化。开发者在最初实现功能时,可能会忽略未来可能发生的变化,导致代码的扩展性不足。为了应对这样的挑战,Spring 框架提供了一种非常优秀的代码组织方式,它通过松耦合的设计模式,让代码更易于扩展和维护。**代码的混乱并非始于大量需求的堆叠,而是始于最初设计阶段对变化的预估不足。**很多时候,开发者在最开始设计代码时,未能充分考虑未来的扩展性和变更需求,这就为后续的混乱埋下了伏笔。
2024-09-08 18:59:08
1166
原创 3、以客户为中心的产品开发:实事求是与工作反推的结合
在开发过程中,华为通过工作反推的方法,从用户需求出发,设计产品功能和体验。在开发过程中,团队不断参考用户反馈,通过A/B测试优化车辆性能,使得比亚迪的车型不仅在续航和充电效率上领先,还能更好地满足用户对智能化和环保的期待。FAQ文档帮助团队预见可能遇到的问题,并提前制定解决方案,而用户故事则通过场景化的描述,让开发团队深入了解客户的使用场景,从而设计出更符合实际需求的产品。结合实事求是的数据分析能力和工作反推的反向设计方法,企业的产品开发不再依赖主观判断,而是建立在真实数据和客户需求的基础上。
2024-09-04 23:41:16
1165
原创 2、小团队(Two-Pizza Teams)
这种小团队、高度自治的模式不仅解决了大团队运作中的沟通和决策问题,还极大地提升了企业的创新能力和市场响应速度。通过建立明确的目标、自治的决策权和良好的协作机制,亚马逊成功地将这种模式打造成了公司文化的一部分,推动企业不断取得新的突破。亚马逊的“小团队”(Two-Pizza Teams)策略是公司内部的组织结构和管理模式的核心之一,这种模式大幅度提高了亚马逊的灵活性、创新能力和快速响应市场变化的能力。即每个团队都必须以接口的方式与其他团队协作,数据和功能通过API共享,避免了直接的依赖和复杂的跨团队协调。
2024-09-04 23:26:33
778
原创 1、快速响应市场和技术变化的深度探讨
快速响应市场和技术变化是现代企业生存和发展的核心能力。通过优化信息流通、调整组织架构、改进决策机制、应用先进技术和培养适应性文化,企业可以大幅提升对变化的应对速度。在这个过程中,领导者的开放式领导、容错文化的建设以及技术手段的落地都至关重要。这些策略和实践的结合,最终将帮助企业在快速变化的市场环境中保持竞争力,实现持续创新和成长。
2024-09-04 23:19:06
1295
原创 4、Spring手写系列-为Bean对象注入属性和依赖Bean的功能实现
在软件开发中,系统的健壮性和抗压能力是衡量程序优劣的重要指标。无论是高并发场景下的超卖问题,还是复杂业务逻辑中的幂等性,开发人员都需要具备处理这些问题的能力。而这些问题往往不是通过简单的CRUD操作就能解决的,它需要深厚的技术积累和良好的架构设计。对于初级程序员来说,可能会遇到代码丢三落四、乱码等问题,这不仅影响系统的稳定性,还可能带来隐患。在这种情况下,要想让你的程序“抗揍”,就必须提升自己的技术水平,理解并应用更高级的设计理念和模式。
2024-09-01 17:25:28
878
原创 3、spring手写系列-基于Cglib实现含构造函数的类实例化策略
编程能力的提升不仅仅是通过大量重复的CRUD操作,而是要深入理解系统架构、设计模式和技术实现细节。特别是在面对复杂的业务场景时,如何设计合理的数据结构、实现高效的核心算法、应用合适的设计模式,以及搭建健壮的系统架构,都是提升编程能力的关键。这不仅决定了系统在高并发和大流量场景下的稳定性,也反映了一个程序员对技术的深刻理解。在上一章节中,我们初步实现了Bean容器的功能,能够将对象实例化交给容器处理。但我们遇到了一个问题:对于带有构造函数的对象,容器实例化会报错。原因是实例化时没有考虑构造函数的入参。
2024-09-01 10:49:01
1161
原创 2、Spring手写系列-实现 Bean 的定义、注册、获取
本文通过手写 Spring Bean 容器的关键源码,详细解析了其核心设计思想和实现方式。通过这种逐步实现的方式,读者可以更好地理解 Spring 框架的设计理念,包括接口与实现的分离、模板方法模式、单例模式的应用等。这些设计不仅保证了系统的灵活性和可扩展性,同时也使得框架能够应对复杂的业务场景。在实际开发中,掌握这些设计思想将对构建稳定、可维护的系统具有重要的指导意义。
2024-08-29 23:14:51
966
原创 1、Spring手写系列-创建一个容器
容器在编程中广泛存在,可以理解为一种用于存放和管理数据的结构。我们在日常编程中使用的ArrayListLinkedListHashSet都是典型的容器。然而,在构建一个类似于 Spring 的 IoC 容器时,我们需要一种更特殊的容器,用来管理应用中的 Bean 对象。这个容器不仅仅是存储数据,还负责对象的创建、管理、依赖注入和生命周期管理。在 IoC 容器的实现中,HashMap被广泛使用,因为它支持快速的键值对存储与查找。
2024-08-26 23:15:22
705
1
原创 19、基于DDD的微服务代码详解
本章将深入探讨如何基于领域驱动设计(DDD)开发微服务代码,并提供具体的代码示例和详细解释。我们将基于第十八章中的请假案例进行讲解,确保每个细节都不放过。回顾第十八章中请假案例的需求和设计,我们已经拆分出两个微服务:请假服务和考勤服务。请假服务的核心业务流程如下:请假微服务使用了许多DDD的设计思想和方法,如聚合、实体、值对象、领域服务和仓储模式。请假微服务包含三个聚合:请假(leave)、人员(person)和审批规则(rule)。我们将详细解释每个聚合中的对象及其职责。聚合根是聚合的入口,负责维护聚合内
2024-07-29 23:13:25
1218
原创 18、基于DDD的微服务设计实例
在本章基于DDD的微服务设计实例中,我们将通过一个实际的微服务设计实例,详细介绍如何基于领域驱动设计(DDD)来构建微服务架构。这个实例不仅涵盖了微服务设计的基本原则,还展示了实际应用中的具体实现细节和最佳实践。
2024-07-29 23:09:58
1850
原创 17、服务和数据在微服务各层的协作
在微服务架构中,服务和数据的协作是确保系统高效运行和可维护性的关键。本章详细探讨了微服务架构中的服务视图和数据视图,帮助我们理解在运行过程中这些服务和实体在各层是如何协作的。
2024-07-29 23:05:46
784
原创 16、DDD系列-向微服务迈进
在本章中,我们将探讨如何从传统的单体架构向微服务架构演进。这个过程需要考虑许多因素,包括微服务的驱动力、所需条件、服务粒度的确定以及系统复杂性的治理。
2024-07-29 23:00:43
633
原创 15、如何保证领域模型与代码模型一致
在代码中,为每个领域对象定义对应的类。// 构造方法、getter和setter方法// 构造方法、getter和setter方法// 构造方法、getter和setter方法。
2024-07-28 10:36:28
406
原创 14、如何⽤DDD设计微服务代码模型
在完成领域模型设计后,接下来我们就可以开始微服务的设计和 落地了。在微服务落地前,⾸先要确定微服务的代码结构,也就是我 下⾯要讲的微服务代码模型。只有建⽴了标准的微服务代码模型和代码规范后,我们才可以将 领域对象映射到代码对象,并将它们放⼊合适的代码⽬录结构中。标 准的代码模型可以让项⽬团队成员更好地理解代码,根据统⼀的代码 规范实现团队协作,也可以让微服务各层的业务逻辑互不⼲扰、分⼯ 协作、各据其位、各司其职,避免不必要的代码混淆,还可以让你在 微服务架构演进时,轻松完成代码重构。
2024-07-22 23:15:05
969
原创 3、计算机网络通信及其编程:深入Linux内核理解epoll
当某一进程调用 epoll_create 方法时,Linux 内核会创建一个 eventpoll 结构体,在内核 cache 里建了个红黑树用于存储以后 epoll_ctl 传来的 socket 外,还会再建立一个 rdllist 双向链表,用于存储准备就绪的事件,当 epoll_wait 调用时,仅仅观察这个 rdllist 双向链表里有没有数据即可。有数据就返回,没有数据就 sleep,等到 timeout 时间到后即使链表没数据也返回。
2024-07-16 22:45:31
1040
原创 2、Netty系列-计算机网络通信及其编程:BIO、NIO、直接内存与零拷贝深入解析
NIO 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 BIO 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。NIO 被称为 no-blocking io 或者 new io 都说得通。Zero Copy 意为“零拷贝”,在计算机操作系统中是指 CPU 不需要调用数据直接从一个地址复制到另一个地址,避免了内核态与用户态之间频繁的数据拷贝。直接内存(Direct Memory)是在堆外分配的内存,不受 Java 垃圾回收机制(GC)管理。
2024-07-16 09:46:46
1222
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人