news 2026/6/13 23:17:58

38_Spring AI 干货笔记之 OCI GenAI 嵌入

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
38_Spring AI 干货笔记之 OCI GenAI 嵌入

一、Oracle Cloud Infrastructure (OCI) GenAI 嵌入

OCI GenAI 服务 提供文本嵌入功能,支持按需模型或专用 AI 集群。

OCI 嵌入模型页面 和 OCI 文本嵌入页面 提供了关于在 OCI 上使用和托管嵌入模型的详细信息。

二、先决条件

添加仓库和 BOM

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

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

三、自动配置

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

Spring AI 为 OCI GenAI 嵌入客户端提供了 Spring Boot 自动配置。要启用它,请将以下依赖项添加到项目的 Maven pom.xml 文件中:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-oci-genai</artifactId></dependency>

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

dependencies{implementation'org.springframework.ai:spring-ai-starter-model-oci-genai'}

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

嵌入属性

前缀 spring.ai.oci.genai 是用于配置连接到 OCI GenAI 的属性前缀。

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

  • 要启用:spring.ai.model.embedding=oci-genai(默认启用)

  • 要禁用:spring.ai.model.embedding=none(或任何与 oci-genai 不匹配的值)

进行此更改是为了允许配置多个模型。

前缀 spring.ai.oci.genai.embedding 是用于配置 OCI GenAI 的 EmbeddingModel 实现的属性前缀。

所有以 spring.ai.oci.genai.embedding.options 为前缀的属性都可以在运行时通过向 EmbeddingRequest 调用添加请求特定的 运行时选项 来覆盖。

四、运行时选项

OCIEmbeddingOptions 提供嵌入请求的配置信息。OCIEmbeddingOptions 提供了一个构建器来创建选项。

在启动时,使用 OCIEmbeddingOptions 构造函数来设置用于所有嵌入请求的默认选项。在运行时,您可以通过向 EmbeddingRequest 请求传递带有您设置的 OCIEmbeddingOptions 实例来覆盖默认选项。

例如,为特定请求覆盖默认模型名称:

EmbeddingResponseembeddingResponse=embeddingModel.call(newEmbeddingRequest(List.of("Hello World","World is big and salvation is near"),OCIEmbeddingOptions.builder().model("my-other-embedding-model").build()));

五、示例代码

这将创建一个 EmbeddingModel 实现,您可以将其注入到您的类中。下面是一个简单的 @Controller 类示例,它使用 EmbeddingModel 实现。

spring.ai.oci.genai.embedding.model=<your model>spring.ai.oci.genai.embedding.compartment=<your model compartment>
@RestControllerpublicclassEmbeddingController{privatefinalEmbeddingModelembeddingModel;@AutowiredpublicEmbeddingController(EmbeddingModelembeddingModel){this.embeddingModel=embeddingModel;}@GetMapping("/ai/embedding")publicMapembed(@RequestParam(value="message",defaultValue="给我讲个笑话")Stringmessage){EmbeddingResponseembeddingResponse=this.embeddingModel.embedForResponse(List.of(message));returnMap.of("embedding",embeddingResponse);}}

六、手动配置

如果您不想使用 Spring Boot 自动配置,可以在应用程序中手动配置 OCIEmbeddingModel。为此,请将 spring-oci-genai-openai 依赖项添加到项目的 Maven pom.xml 文件中:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-oci-genai-openai</artifactId></dependency>

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

dependencies{implementation'org.springframework.ai:spring-oci-genai-openai'}

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

接下来,创建一个 OCIEmbeddingModel 实例并使用它来计算两个输入文本之间的相似性:

finalStringEMBEDDING_MODEL="cohere.embed-english-light-v2.0";finalStringCONFIG_FILE=Paths.get(System.getProperty("user.home"),".oci","config").toString();finalStringPROFILE="DEFAULT";finalStringREGION="us-chicago-1";finalStringCOMPARTMENT_ID=System.getenv("OCI_COMPARTMENT_ID");varauthProvider=newConfigFileAuthenticationDetailsProvider(this.CONFIG_FILE,this.PROFILE);varaiClient=GenerativeAiInferenceClient.builder().region(Region.valueOf(this.REGION)).build(this.authProvider);varoptions=OCIEmbeddingOptions.builder().model(this.EMBEDDING_MODEL).compartment(this.COMPARTMENT_ID).servingMode("on-demand").build();varembeddingModel=newOCIEmbeddingModel(this.aiClient,this.options);List<Double>embedding=this.embeddingModel.embed(newDocument("加拿大有多少个省?"));
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 19:37:22

告别手动提交:用Git Auto Commit Action实现自动化工作流

告别手动提交&#xff1a;用Git Auto Commit Action实现自动化工作流 【免费下载链接】git-auto-commit-action Automatically commit and push changed files back to GitHub with this GitHub Action for the 80% use case. 项目地址: https://gitcode.com/gh_mirrors/gi/g…

作者头像 李华
网站建设 2026/6/14 12:43:44

解决ComfyUI-SeedVR2视频超分项目wandb依赖冲突的3种实用方法

解决ComfyUI-SeedVR2视频超分项目wandb依赖冲突的3种实用方法 【免费下载链接】ComfyUI-SeedVR2_VideoUpscaler Non-Official SeedVR2 Vudeo Upscaler for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-SeedVR2_VideoUpscaler 你在使用ComfyUI-SeedVR2…

作者头像 李华
网站建设 2026/6/13 23:09:27

iOS动画开发终极指南:用lottie-ios组件库打造高性能可复用动画

iOS动画开发终极指南&#xff1a;用lottie-ios组件库打造高性能可复用动画 【免费下载链接】lottie-ios airbnb/lottie-ios: Lottie-ios 是一个用于 iOS 平台的动画库&#xff0c;可以将 Adobe After Effects 动画导出成 iOS 应用程序&#xff0c;具有高性能&#xff0c;易用性…

作者头像 李华
网站建设 2026/6/12 12:53:38

Lenia终极指南:快速上手连续细胞自动机的数学生命世界

Lenia终极指南&#xff1a;快速上手连续细胞自动机的数学生命世界 【免费下载链接】Lenia Lenia - Mathematical Life Forms 项目地址: https://gitcode.com/gh_mirrors/le/Lenia Lenia&#xff08;莱尼亚&#xff09;是一个革命性的连续细胞自动机系统&#xff0c;它打…

作者头像 李华
网站建设 2026/6/11 11:13:39

3个GitHub Actions自动化构建技巧,让Deep-Live-Cam部署效率提升500%

还在为AI项目繁琐的部署流程而苦恼吗&#xff1f;Deep-Live-Cam作为一款仅需单张图片就能实现实时人脸交换的创新工具&#xff0c;通过GitHub Actions实现了从代码提交到Windows可执行文件的全自动构建。本文将带你深入拆解这套自动化流程的核心技术&#xff0c;从场景痛点出发…

作者头像 李华
网站建设 2026/6/12 13:42:26

HarmonyOS模块配置终极指南:5步快速掌握module.json5核心技巧

HarmonyOS模块配置终极指南&#xff1a;5步快速掌握module.json5核心技巧 【免费下载链接】harmony-utils harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库&#xff0c;借助众多实用工具类&#xff0c;致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、…

作者头像 李华