news 2026/4/15 2:30:58

43_Spring AI 干货笔记之 PostgresML 嵌入模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
43_Spring AI 干货笔记之 PostgresML 嵌入模型

一、PostgresML 嵌入模型

Spring AI 支持 PostgresML 文本嵌入模型。

嵌入是文本的一种数值表示形式,用于将单词和句子表示为向量(即数字数组)。通过使用距离度量比较数值向量的相似性,嵌入可用于查找相似的文本片段;此外,由于大多数算法无法直接使用文本,嵌入也可用作其他机器学习模型的输入特征。

PostgresML 内部可使用许多预训练的大型语言模型从文本生成嵌入。您可以在 Hugging Face 上浏览所有可用 模型,以找到最适合的解决方案。

二、添加仓库和 BOM

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

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

三、自动配置

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

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

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

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

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

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

使用 spring.ai.postgresml.embedding.options.* 属性来配置您的 PostgresMlEmbeddingModel。

嵌入属性

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

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

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

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

前缀 spring.ai.postgresml.embedding 是用于配置 PostgresML 嵌入的 EmbeddingModel 实现的属性前缀。

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

四、运行时选项

使用 PostgresMlEmbeddingOptions.java 来配置 PostgresMlEmbeddingModel 的选项,例如要使用的模型等。

在启动时,您可以将 PostgresMlEmbeddingOptions 传递给 PostgresMlEmbeddingModel 构造函数,以配置用于所有嵌入请求的默认选项。

在运行时,您可以在 EmbeddingRequest 中使用 PostgresMlEmbeddingOptions 来覆盖默认选项。

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

EmbeddingResponseembeddingResponse=embeddingModel.call(newEmbeddingRequest(List.of("Hello World","World is big and salvation is near"),PostgresMlEmbeddingOptions.builder().transformer("intfloat/e5-small").vectorType(VectorType.PG_ARRAY).kwargs(Map.of("device","gpu")).build()));

五、示例控制器

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

spring.ai.postgresml.embedding.options.transformer=distilbert-base-uncased spring.ai.postgresml.embedding.options.vectorType=PG_ARRAY spring.ai.postgresml.embedding.options.metadataMode=EMBED spring.ai.postgresml.embedding.options.kwargs.device=cpu
@RestControllerpublicclassEmbeddingController{privatefinalEmbeddingModelembeddingModel;@AutowiredpublicEmbeddingController(EmbeddingModelembeddingModel){this.embeddingModel=embeddingModel;}@GetMapping("/ai/embedding")publicMapembed(@RequestParam(value="message",defaultValue="Tell me a joke")Stringmessage){EmbeddingResponseembeddingResponse=this.embeddingModel.embedForResponse(List.of(message));returnMap.of("embedding",embeddingResponse);}}

六、手动配置

如果不使用 Spring Boot 自动配置,您可以手动创建 PostgresMlEmbeddingModel。为此,请在项目的 Maven pom.xml 文件中添加 spring-ai-postgresml 依赖:

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

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

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

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

接下来,创建一个 PostgresMlEmbeddingModel 实例,并用它来计算两个输入文本的相似度:

varjdbcTemplate=newJdbcTemplate(dataSource);// 您的 postgresml 数据源PostgresMlEmbeddingModelembeddingModel=newPostgresMlEmbeddingModel(this.jdbcTemplate,PostgresMlEmbeddingOptions.builder().transformer("distilbert-base-uncased")// huggingface 转换器模型名称.vectorType(VectorType.PG_VECTOR)// PostgreSQL 中的向量类型.kwargs(Map.of("device","cpu"))// 可选参数.metadataMode(MetadataMode.EMBED)// 文档元数据模式.build());embeddingModel.afterPropertiesSet();// 初始化 jdbc 模板和数据库EmbeddingResponseembeddingResponse=this.embeddingModel.embedForResponse(List.of("Hello World","World is big and salvation is near"));

手动创建时,您必须在设置属性后、使用客户端之前调用 afterPropertiesSet()。将 PostgresMlEmbeddingModel 创建为 @Bean 会更方便(也更推荐)。这样您就不必手动调用 afterPropertiesSet():

@BeanpublicEmbeddingModelembeddingModel(JdbcTemplatejdbcTemplate){returnnewPostgresMlEmbeddingModel(jdbcTemplate,PostgresMlEmbeddingOptions.builder().....build());}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 17:13:11

结合ComfyUI打造可视化界面:玩转Stable Diffusion 3.5 FP8新体验

结合ComfyUI打造可视化界面&#xff1a;玩转Stable Diffusion 3.5 FP8新体验 在消费级显卡上流畅运行千亿参数大模型&#xff0c;曾经是AI工程师的奢望。而今天&#xff0c;当FP8量化技术遇上节点式工作流引擎ComfyUI&#xff0c;我们正站在一个新时代的门槛上——高性能生成式…

作者头像 李华
网站建设 2026/4/15 10:09:21

WebSocket实时传输FLUX.1-dev生成图像:低延迟交互新体验

WebSocket实时传输FLUX.1-dev生成图像&#xff1a;低延迟交互新体验 在AI生成内容&#xff08;AIGC&#xff09;日益渗透创意产业的今天&#xff0c;用户早已不再满足于“输入提示词、等待几秒后查看结果”这种线性交互模式。设计师希望看到构图逐步成形的过程&#xff0c;艺术…

作者头像 李华
网站建设 2026/4/14 12:12:31

VLC皮肤定制指南:从界面美化到专业体验升级

VLC皮肤定制指南&#xff1a;从界面美化到专业体验升级 【免费下载链接】VeLoCity-Skin-for-VLC Castom skin for VLC Player 项目地址: https://gitcode.com/gh_mirrors/ve/VeLoCity-Skin-for-VLC VLC播放器作为一款功能强大的开源播放器&#xff0c;其默认界面往往无法…

作者头像 李华
网站建设 2026/4/15 13:16:39

如何快速掌握UABEA:游戏资源提取的完整入门指南

你是否曾经好奇过游戏中的精美模型、音效和纹理是如何被封装和管理的&#xff1f;想要亲手提取或修改Unity游戏中的资源文件&#xff0c;却苦于找不到合适的工具&#xff1f;UABEA&#xff08;Unity Asset Bundle Extractor Avalonia&#xff09;正是你需要的解决方案&#xff…

作者头像 李华
网站建设 2026/4/15 13:16:46

VirtualMonitor虚拟显示器终极指南:零成本扩展桌面空间

VirtualMonitor虚拟显示器终极指南&#xff1a;零成本扩展桌面空间 【免费下载链接】VirtualMonitor 项目地址: https://gitcode.com/gh_mirrors/vi/VirtualMonitor 还在为单显示器工作效率低下而苦恼吗&#xff1f;每天在多个应用程序间频繁切换&#xff0c;不仅浪费时…

作者头像 李华
网站建设 2026/4/14 18:47:31

UABEA终极指南:快速掌握Unity资源逆向工程完整流程

UABEA终极指南&#xff1a;快速掌握Unity资源逆向工程完整流程 【免费下载链接】UABEA UABEA: 这是一个用于新版本Unity的C# Asset Bundle Extractor&#xff08;资源包提取器&#xff09;&#xff0c;用于提取游戏中的资源。 项目地址: https://gitcode.com/gh_mirrors/ua/U…

作者头像 李华