手把手教你Spring-AI实战,从入门到精通(一):用Google GenAI 完成文本嵌入的实战

Spring AI 2.0 + LangChain4j 1.19 AI 可观测性企业级实战:从 OTel GenAI 语义约定到源码级落地 Java 生态正在把 LLM 调用收敛到 OTel GenAI 语义约定这一套统一语言上。这背后真正的"为什么",是当 AI 应用被部署到生产环境时,工程师需要的不是更聪明的模型,而是对一个调用到底发生了什么、扣了多少钱、慢了多久、卡在哪里的可观测能力。回到开篇的三个翻车:账单可控、链路可定位、流式首字可量化——这三条都不需要魔法模型或 Python 重写,只需要把 Spring AI 2.0 的+ LangChain4j 1.19 的。 阅读详情

一、Google GenAI 文本嵌入与准备工作

Google GenAI 文本嵌入 API 使用密集向量表示。与稀疏向量(倾向于直接将单词映射到数字)不同,密集向量旨在更好地表示一段文本的含义。在生成式 AI 中使用密集向量嵌入的好处是,您不仅可以搜索直接的单词或语法匹配,还可以更好地搜索与查询含义相符的段落,即使这些段落不使用相同的语言。

目前,Google GenAI SDK 仅支持文本嵌入。多模态嵌入支持正在开发中,将在 SDK 可用时添加。

此实现提供认证模式:

备注(重要):【需要一定的上网技术,甚至运行项目也需要此条件。】

  • Gemini 开发者 API: 使用 API 密钥进行快速原型设计和开发。

    • 从 Google AI Studio 获取 API 密钥。(目前适量使用的免费的,见图示)

    • 将 API 密钥设置为环境变量或在应用程序属性中设置

    在这里插入图片描述

二、项目依赖:采用最新的 Spring Boot 4.0.5 版本,适配的 AI 为 Spring AI 2.0.0.M4

采用 Gradle项目,因为配置要比Maven简洁的多。配置语法采用kotlin,语法结构上更加规范,有相应错误检查。
具体的 build.gradle.kts 配置如下

plugins {
    java
    id("org.springframework.boot") version "4.0.5"
    id("io.spring.dependency-management") version "1.1.7"

    id("io.spring.nullability") version "0.0.12"
}

group = "com.yiyi"
version = "0.0.1-SNAPSHOT"
description = "web"

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(25)
    }
}

repositories {
    mavenCentral()
    maven {
        name = "Central Portal Snapshots"
        url = uri("https://central.sonatype.com/repository/maven-snapshots/")
    }
}

dependencies {
    implementation(platform("org.springframework.ai:spring-ai-bom:2.0.0-M4"))

    implementation("org.springframework.boot:spring-boot-starter-webflux")
    // AI
    implementation("org.springframework.ai:spring-ai-starter-model-deepseek")
    implementation("org.springframework.ai:spring-ai-starter-model-google-genai-embedding")
}

tasks.withType<Test> {
    useJUnitPlatform()
}

三、Spring Boot 的配置文件:application.yaml

spring:
  application:
    name: yiiai    # 可访问 yiiai.top

  ai:
    deepseek:
      api-key: [你自己的 DeepSeek api-key]
      chat:
        options:
          model: deepseek-chat
          temperature: 0.7


    google:
      genai:
        embedding:
          api-key: [你自己的 Gemini api-key]

四、实战项目代码 : EmbeddingController.java

package com.yiyi.web.controller;

import org.jspecify.annotations.NullMarked;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.embedding.EmbeddingResponse;
import org.springframework.ai.google.genai.text.GoogleGenAiTextEmbeddingModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@NullMarked
@RestController
public class EmbeddingController {

    private final EmbeddingModel embeddingModel;

    public EmbeddingController(GoogleGenAiTextEmbeddingModel embeddingModel) {
        this.embeddingModel = embeddingModel;
    }

    @GetMapping("/embed")
    public float[] embed(@RequestParam String text) {
        EmbeddingResponse response = embeddingModel.embedForResponse(List.of(text));
        float[] result = response.getResults().getFirst().getOutput();
        System.out.println("float[] result length: " + result.length);
        return result;
    }
}

Spring Boot 启动类,以后的文章中省略此启动类

package com.yiyi.web;

import org.jspecify.annotations.NullMarked;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;

@NullMarked
@SpringBootApplication
@EnableR2dbcRepositories
public class WebApplication {
    static void main(String[] args) {
        SpringApplication.run(WebApplication.class, args);
    }
}

五、测试与检验:对字符串hello spring ai进行向量化

用浏览器访问 : http://localhost:8080/embed?text=hello%20spring%20ai

向量化后是 float[] 类型的数组。数组长度共有3072,表示向量化为 3072个维度,远超一般的 768维度。(这就是Google GenAI 文本嵌入 API 使用密集向量表示。)

生成后的向量化数据如图(部分截图):

在这里插入图片描述

35_Spring AI 干货笔记之 Google GenAI 文本嵌入 本文介绍了如何在Spring AI框架中集成Google GenAI文本嵌入模型,该模型使用密集向量表示文本语义。文章详细说明了两种认证模式:使用API密钥的Gemini开发者API(适合原型开发)和使用Google Cloud凭据的Vertex AI(适合生产环境)。核心内容包括通过starter依赖启用自动配置、设置连接与模型参数,并提供了创建REST控制器的示例代码。此外,文章还阐述了为不同用例优化的多种任务类型、支持维度缩减以优化存储,以及从Vertex AI迁移至此新实现的指南。 阅读详情

相关推荐

17_Spring AI 干货笔记之谷歌生成式AI聊天

本文详细介绍了Spring AI与Google GenAI的集成。开发者可通过API密钥或Vertex AI凭证,利用Spring Boot自动配置快速接入Gemini系列模型。文章全面阐述了配置属性、运行时选项及核心功能,包括工具调用、多模态(图像、PDF)处理和高级思维配置(预算、级别与签名)。重点解析了成本优化的“缓存内容”服务,并提供了从配置到控制器实现的完整代码示例,为构建高效AI应用提供指南。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 1531

Google GenAI全面教程:常用 API 串联与实战指南

Google GenAI(google-generativeai)是Google推出的轻量化Python库,用于直接调用Gemini系列大模型,具有轻量、易用、快速集成等特点。主要应用场景包括文本生成、多轮对话、文本嵌入、多模态交互等。环境配置仅需Python 3.8+和API密钥即可开始使用。核心API实战演示了基础文本生成、多轮对话、文本嵌入和多模态分析等功能,支持精细化参数配置,能快速实现Gemini模型的集成应用。

jobleap.cn求职助手首页 2284

Python爬虫实战:5分钟搞定东方财富A股数据抓取(附完整代码)

本文提供了一套基于Python的A股数据自动化采集与分析系统构建方案。文章详细解析了如何通过稳健的爬虫框架从东方财富等公开数据源高效抓取A股数据,并设计数据库进行自动化存储与管理,特别适合量化研究和数据分析场景。

weixin_29062963的博客 4429

用它,5行代码让你的App开口说话,猜猜背后是哪颗大脑

# 用它,5行代码让你的App开口说话,猜猜背后是哪颗大脑 ## 1. 背景:为什么今天我们必须聊聊 google-genai 2025 年,生成式 AI 已经从“酷炫 Demo”变成“产品标配”。 - 用户不再满足于只回复文字,他们想要**流式对话、实时语音、函数调用、代码执行**。 - 旧版 `google-generativeai` 库接口分散,模型、文件、调优各自为政,维护成本高。 - Google 在 2025 年 8 月正式推出新一代统一 SDK——**googl

AIGC搞起 1285

Verilog实现SPI通信协议驱动设计

线性序列机实现SPI协议

H19981118的博客 6085

瑞芯微RK3576上手实测:8nm新U配6TOPS NPU,做AIoT项目选它还是RK3588/RK3568?

本文深度评测瑞芯微RK3576芯片在中高端AIoT项目中的表现,对比RK3588和RK3568的性能差异。RK3576采用8nm工艺,配备6TOPS NPU,在解码能力、AI推理效率和功耗控制方面表现均衡,是中端项目的黄金选择。实测数据显示其在多路视频解码和AI加速性能上优势明显,特别适合智能摄像头和工业HMI设备。

weixin_42627853的博客 716

谷歌 MLKit 新增 GenAI API,支持端上的生成式 AI 能力

Google在I/O 2025上推出ML Kit端侧生成式AI(GenAI)API,包含总结、校对、改写和图像描述四大功能。这些API基于Gemini Nano模型,具备本地处理、离线可用和无额外费用三大优势。数据显示,经过微调的API在任务表现上显著优于基础模型,如在总结任务中得分从77.2提升至92.1。目前支持包括Google Pixel 9系列、三星Galaxy S25系列等多款设备。开发者可轻松集成这些API,为应用添加智能文本和图像处理功能,特别适合辅助技术、内容创作等场景。

移动端开发干货分享 1568

cst-python联合仿真的问题解决

cst与python联合仿真出现无法调用CST的问题解决

ayihu_的博客 2370

7步快速部署AI模型:Google Cloud GenAI完整实践指南

Google Cloud GenAI是一套强大的人工智能工具集,帮助开发者快速构建和部署AI应用。本指南将通过简单易懂的步骤,带您从零开始在Google Cloud平台上部署AI模型,无需深厚的云服务经验也能轻松上手。 ## 🚀 为什么选择Google Cloud GenAI? Google Cloud GenAI提供了从文本生成、图像创建到多模态交互的全方位AI能力。无论是构建聊天机器人、

gitblog_00767的博客 387

Chatbox使用指南

Chatbox使用指南

weixin_65289420的博客 2万+

HA集群 执行 hdfs haadmin -transitionToActive 失败

最近把一个单NameNode集群变更为HA集群,过程中都很顺利,nn1和nn2两个NameNode都显示standby状态,但是把nn1或者nn2切换到active状态时就会报错抛异常。 查看master上namenode启动日志,如下: Incompatible clusterID for journal Storage Directory /home/hadoop-zero/bigdat...

qq_34727158的博客 1763

Spring AI / Models Embedding / Models / Google GenAI Text Embedding

本文介绍了Spring AI中Google GenAI文本嵌入模型的使用,涵盖Gemini Developer API(API密钥)和Vertex AI(Google Cloud凭证)两种认证模式。核心配置通过`spring.ai.google.genai.embedding`前缀进行,支持任务类型(如检索、分类)、维度缩减和自动截断等参数。文章提供了自动配置与手动配置的示例,并说明了从旧版Vertex AI文本嵌入迁移的注意事项。该实现支持快速原型开发和生产部署。

记录 分享 成就 144

用友U8库龄分析避坑指南:物料出入库日期计算的5个常见错误

本文深入剖析了在用友U8系统中进行库龄分析时,物料出入库日期计算的五个常见陷阱。从数据源选择、业务类型过滤、计价方式逻辑、期初数据处理到查询性能优化,逐一解析错误根源并提供避坑指南,帮助企业获得准确的库龄数据,有效管理库存与资金风险。

weixin_29209801的博客 455

Spring AI 从入门到精通:构建你的 AI 开发知识体系

在过去的两年里,大语言模型(LLM)以惊人的速度渗透到了软件开发的每一个角落。从 ChatGPT 的横空出世,到如今各类 AI 原生应用的遍地开花,开发者面临的核心挑战已经悄然发生了变化 —— 不再是"能不能调用一个 AI 模型",而是"如何将 AI 模型与企业的现有数据、业务系统、API 体系深度融合,构建出真正有价值的生产级应用"。

weixin_49778561的博客 388

UDF学习(二)基础数据类型与常见宏

thread_loop_c (t,d) 必须与begin_c_loop (c,t)同时使用,但begin_c_loop (c,t)不一定与thread_loop_c (t,d)同时使用。同理thread_loop_f(t,d)必须与begin_f_loop (c,t)同时使用,但begin_f_loop (c,t)不一定与thread_loop_f(t,d)同时使用。begin_c_loop (c,t) 在计算域内对网格单元进行循环。c_face_loop (c,t)遍历网格单元上的所有网格面。

weixin_44386973的博客 855

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java 开发者指南:手把手教你集成 Google Gemini AI 接口

摘要:本文详细介绍Java项目集成Google Gemini大模型的完整流程。从获取API Key开始,重点解决Maven依赖配置问题(需移除阿里云仓库,改用中央仓库),提供两种调用方式:官方SDK和原生HTTP。包含环境变量设置、代码示例及生产环境优化建议,帮助开发者快速实现文本生成等AI功能。注意事项包括JDK17版本要求、API Key配置规范等,并附有常见错误解决方案(如501报错处理)。通过本文可掌握Java生态与前沿AI能力的结合实践。

nanshaws的博客 936

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring AI 1.1 新特性详解:五大核心升级全面提升AI应用开发体验

近日,Spring团队正式发布了Spring AI 1.1版本,这是自该项目成立以来的一个重要里程碑。Spring AI作为一个旨在简化AI应用开发的框架,在1.1版本中带来了多项重磅更新,从功能增强到性能优化,全方位提升了开发者的使用体验。

weixin_44058951的博客 872

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

‌AI系列1:Spring AI

至此就可以通过springAI实现了调用DeepSeek模型了。不过DeepSeek模型需要充值(最少1块),所以下一节会通过Ollama来部署本地模型,并通过springAI来调用!

weigeshikebi的博客 387

Spring推出Spring AI框架,看看怎么个事

在当今快速发展的技术时代,人工智能(AI)已经成为各行各业的关键驱动力。而作为一种领先的Java应用开发框架,Spring Framework在软件开发领域享有盛誉。下面跟着我一起去了解Spring AI的庐山真面目吧。官网地址如下:https://spring.io/projects/spring-ai#learn文档地址如下:https://docs.spring.io/spring-ai/reference/index.html。

m0_51274464的博客 1271

【Spring AI】Spring AI 2.0.1 新特性袭来

整体看下来,Spring AI 2.0.1 虽然只是一个维护版本,但更新一点都不小。除了修复 7 个 CVE,这次还把工具调用、流式响应、MCP、文档处理、向量数据库等一批细节继续补齐,尤其是 Agent 工具调用次数限制这类能力,对真正落地生产环境很重要。Spring AI 现在已经不只是让 Java 调一下大模型这么简单了,而是在持续补齐企业级 AI 应用开发需要的基础设施。

杰叔叔不是个好叔叔的博客 261

Spring AI 2.0.1-SNAPSHOT:企业级AI应用开发的终极依赖管理解决方案

在当今AI技术快速发展的时代,企业如何高效、稳定地集成AI能力到现有系统中成为了技术决策者面临的核心挑战。Spring AI作为Spring生态中的AI应用框架,通过其精妙的依赖管理机制,为企业提供了从零到一的AI集成完整解决方案。本文将深度解析Spring AI 2.0.1-SNAPSHOT版本的依赖管理体系,揭示其如何帮助企业构建可维护、可扩展的AI应用架构。 ## 🎯 企业AI集成的三大

gitblog_00353的博客 884

Qwen2.5-7B-Instruct_rai_1.8.0_npu_16K常见问题排错完全指南:从安装失败到性能调优

**Qwen2.5-7B-Instruct_rai_1.8.0_npu_16K** 是 AMD 基于 Qwen2.5-7B-Instruct 为 Ryzen AI NPU(Ryzen AI 1.8.0)深度优化的本地大语言模型,采用 AWQ / UINT4 权重量化 + ONNX 导出 + NPU Token Fusion 16K 上下文后处理。如果你在**安装、下载、部署或运行**这个模型时遇到

gitblog_00949的博客 399

基于 Google ADK 快速搭建 AI Agent 智能体:Java 工程实践与 ELK 日志巡检场景全解析

> 本篇文章以 CodeGuide 仓库中 [Google ADK 实战教程](https://link.gitcode.com/i/5f11c1b1cedb108c4edf66372db437b7) 为骨架,结合仓库内 AI Agent 系列文档([A2A 协议](https://link.gitcode.com/i/67720e3a155ae426437dddc909f1a06a)、[Agen

gitblog_00304的博客 642

Spring AI 2.0.0 API

> Spring AI版本:2.0.0 > 官网地址:https://docs.spring.io/spring-ai/reference/index.html > 初衷:1. 发现还是官网原版解释的清楚,建议读;2. 读取英文依然不通顺,所以翻译过来大家都能看看。 > 若有编辑问题,请留言。

记录 分享 成就 347

Gemini API 入门实战:从 $300 信用额度到本地 Python 应用

大模型 API 是现代 AI 工程的基础设施,其核心在于安全、稳定、可编程的调用能力。Gemini API 作为 Google 官方提供的生成式 AI 接口,依托 Google Cloud 的服务等级协议(SLA)保障可用性,并通过 Authorization Key 实现细粒度权限控制。相比 Chrome 内置的消费级入口,API 模式规避了 UI 不稳定、功能波动等工程风险,真正支撑 PDF 解析、合同摘要、结构化 JSON 输出等生产场景。本文聚焦 Gemini API 的零基础落地路径,覆盖 AI

dingdi3021的博客 486

Spring AI 2.0依赖管理深度解析:告别版本冲突的实用指南

你是否遇到过这样的烦恼?🤔 在Spring AI项目中引入多个AI模型和向量数据库时,版本冲突让你头疼不已。不同模块的依赖版本不兼容,导致项目编译失败或者运行时出现奇怪的错误。别担心,今天我们就来深入解析Spring AI 2.0的依赖管理机制,让你彻底告别版本地狱! Spring AI是Spring生态系统中的AI工程应用框架,它提供了统一的API和抽象层,让你能够轻松集成各种AI模型和向量

gitblog_00516的博客 421
上一篇: bat 脚本(真实项目可用):ftp取远程文件
下一篇: BUG列表:如何定位线上 OOM ?
Yiyi_Coding
博客等级 码龄1年 2粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值