当前位置: 首页 > news >正文

45_Spring AI 干货笔记之 Google VertexAI 多模态嵌入模型

一、Google VertexAI 多模态嵌入模型

实验性功能。仅用于实验目的。目前尚不兼容 VectorStores。

Vertex AI 支持两种类型的嵌入模型:文本嵌入和多模态嵌入。本文档介绍如何使用 Vertex AI 多模态嵌入 API 创建多模态嵌入。

多模态嵌入模型根据您提供的输入生成 1408 维向量,输入可以包括图像、文本和视频数据的组合。生成的嵌入向量随后可用于后续任务,如图像分类或视频内容审核。

图像嵌入向量和文本嵌入向量位于同一语义空间,且维度相同。因此,这些向量可以互换使用,适用于诸如按文本搜索图像或按图像搜索视频等用例。

VertexAI 多模态 API 施加了 以下限制。

对于纯文本嵌入的用例,我们建议改用 Vertex AI 文本嵌入模型。

二、先决条件

  • 安装适用于您操作系统的 gcloud CLI。

  • 通过运行以下命令进行身份验证。请将 <PROJECT_ID> 替换为您的 Google Cloud 项目 ID,将 替换为您的 Google Cloud 用户名。

gcloud configsetproject<PROJECT_ID>&&gcloud auth application-default login<ACCOUNT>

添加仓库和 BOM

Spring AI 的构件发布在 Maven Central 和 Spring Snapshot 仓库中。请参阅 构件仓库 部分,将这些仓库添加到您的构建系统中。

为便于依赖管理,Spring AI 提供了 BOM(物料清单),以确保在整个项目中使用统一版本的 Spring AI。请参阅 依赖管理 部分,将 Spring AI BOM 添加到您的构建系统中。

三、自动配置

Spring AI 的自动配置和启动器模块的构件名称发生了重大变化。更多信息请参阅升级说明。

Spring AI 为 VertexAI 嵌入模型提供了 Spring Boot 自动配置。要启用它,请在项目的 Maven pom.xml 文件中添加以下依赖:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-vertex-ai-embedding</artifactId></dependency>

或在您的 Gradle build.gradle 构建文件中添加:

dependencies{implementation'org.springframework.ai:spring-ai-starter-model-vertex-ai-embedding'}

请参阅 依赖管理 部分,将 Spring AI BOM 添加到您的构建文件中。

嵌入属性

前缀 spring.ai.vertex.ai.embedding 用作属性前缀,用于连接到 VertexAI 嵌入 API。

现在通过前缀为 spring.ai.model.embedding 的顶级属性来配置嵌入自动配置的启用和禁用。

  • 启用:spring.ai.model.embedding.multimodal=vertexai(默认已启用)

  • 禁用:spring.ai.model.embedding.multimodal=none(或任何与 vertexai 不匹配的值)

此项更改是为了支持配置多个模型。

前缀 spring.ai.vertex.ai.embedding.multimodal 是用于配置 VertexAI 多模态嵌入的嵌入模型实现的属性前缀。

四、手动配置

VertexAiMultimodalEmbeddingModel 实现了 DocumentEmbeddingModel 接口。

在项目的 Maven pom.xml 文件中添加 spring-ai-vertex-ai-embedding 依赖:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-vertex-ai-embedding</artifactId></dependency>

或在您的 Gradle build.gradle 构建文件中添加:

dependencies{implementation'org.springframework.ai:spring-ai-vertex-ai-embedding'}

请参阅 依赖管理 部分,将 Spring AI BOM 添加到您的构建文件中。

接下来,创建一个 VertexAiMultimodalEmbeddingModel 并使用它生成嵌入:

VertexAiEmbeddingConnectionDetailsconnectionDetails=VertexAiEmbeddingConnectionDetails.builder().projectId(System.getenv(<VERTEX_AI_GEMINI_PROJECT_ID>)).location(System.getenv(<VERTEX_AI_GEMINI_LOCATION>)).build();VertexAiMultimodalEmbeddingOptionsoptions=VertexAiMultimodalEmbeddingOptions.builder().model(VertexAiMultimodalEmbeddingOptions.DEFAULT_MODEL_NAME).build();varembeddingModel=newVertexAiMultimodalEmbeddingModel(this.connectionDetails,this.options);MediaimageMedial=newMedia(MimeTypeUtils.IMAGE_PNG,newClassPathResource("/test.image.png"));MediavideoMedial=newMedia(newMimeType("video","mp4"),newClassPathResource("/test.video.mp4"));vardocument=newDocument("Explain what do you see on this video?",List.of(this.imageMedial,this.videoMedial),Map.of());EmbeddingResponseembeddingResponse=this.embeddingModel.embedForResponse(List.of("Hello World","World is big and salvation is near"));DocumentEmbeddingRequestembeddingRequest=newDocumentEmbeddingRequest(List.of(this.document),EmbeddingOptions.EMPTY);EmbeddingResponseembeddingResponse=multiModelEmbeddingModel.call(this.embeddingRequest);assertThat(embeddingResponse.getResults()).hasSize(3);
http://www.cnnetsun.cn/news/83614.html

相关文章:

  • AIGC 商用实战派:集之互动用 “高可控” 接住品牌真需求
  • Go语言结构体
  • 计算机大学生找工作:选网络安全,比做传统程序员更 “香” 的 5 个核心理由
  • AI产业格局生变,家居服企业的“智”胜关键在哪?
  • COLMAP动态干扰消除:从问题诊断到智能解决方案
  • SGMICRO圣邦微 SGM2006-2.8XN5/TR SOT23-5 线性稳压器(LDO)
  • 19、PC-BSD社区求助资源全攻略
  • 5分钟搞定F5-TTS语音合成:从零配置到实战应用完整指南
  • Qwen3-8B与14B的TTFT性能对比及优化原理
  • Miniconda + conda-forge:AI开发环境管理指南
  • 8款必选终端主题:提升开发效率的终极指南
  • Python深度学习:从入门到实战
  • CopyQ剪贴板管理器终极配置指南:打造高效工作流
  • 毕业即就业!网络安全专业大学生必备的5大核心技能与实战指南
  • 知名外资对冲基金新需求:- QD/QR:HK,同业,有机器学习特别是深度学习方向经验的人选- Production Reliability Engineer:即SRE Operation部门的P
  • 12、游戏开发:用户界面与人工智能实现
  • 申请专利带来的好处
  • BilibiliSponsorBlock智能配置:一键告别B站广告干扰
  • 单细胞T细胞分析新突破:高效追踪免疫应答全流程
  • PDF补丁丁终极使用指南:PDFPatcher快速精通手册
  • 35、GnomeVFS 文件传输、类型识别与 URI 操作全解析
  • mysql修改密码
  • Git commit规范与TensorFlow项目协作开发的最佳实践
  • CVE-2025-55182和CVE-2025-66478漏洞(Next.js)
  • CRMEB-PHP商品采集模块开发指南:API对接与批量上架实现
  • 基于django微信小程序的校园食堂点餐订餐系统
  • LangFlow工作流引擎在多模态大模型中的调度作用
  • 32、开源系统在不同领域的高效应用案例剖析
  • VeraCrypt终极指南:5分钟掌握磁盘加密完整流程
  • ENSP抓包分析GPT-SoVITS API通信数据格式