那天是个普通的周三,我泡着一杯咖啡,盯着电脑屏幕,心想:“这搜索功能,能不能更聪明点?”
比如,用户搜“春天的花”,结果系统能自动理解成“樱花”“花开”“万物复苏”这些语义相近的内容。
这不就是语义搜索嘛!于是我开始研究 SpringAI 的 OpenAI 向量模型(Vector Model)。结果越学越兴奋,简直像打开了一个新世界的大门。今天就带大家一起探索一下这条“智能搜索”的修炼之路。
什么是 OpenAI 向量模型?先别急着看代码。想象一下,你在给机器解释“猫”和“狗”的区别。
如果你用传统数据库,它会觉得这只是两个不同的字符串;
但如果你用向量模型(Embedding),机器能真正“理解”它们在语义上的相似性。
OpenAI 的向量模型,本质上是一个“文本到数字空间”的翻译器。它能把一句话、一段话、甚至一篇文章,转成一个高维向量(通常是几千维的浮点数数组)。这样我们就能在数学空间中比较语义距离,找到“意思相近”的文本。
SpringAI 提供了对 OpenAI 向量模型的无缝集成,让 Java 开发者也能轻松玩转语义搜索、知识问答、内容推荐等高级 AI 功能。
先决条件:准备好你的“钥匙”要用上 OpenAI 向量模型,你得先有三样宝贝:
OpenAI API Key —— 这是通往模型世界的通行证;
Spring Boot 3.2+ 或 SpringAI 最新版本 —— 因为它帮你自动配置好一切;
Java 17+ 环境 —— 新特性多、安全性好,兼容性更强。
配置方式其实超简单,在 application.yml 中加入以下配置:

然后你就能愉快地调用 OpenAI 的模型啦。
添加存储库和 BOM:搭建起依赖地基写 Spring 项目的第一步,永远离不开依赖管理。
要用上 SpringAI 的 OpenAI 模型,先在 pom.xml 里引入官方的 SpringAI BOM(Bill of Materials)。

这就像装好了一个自动驾驶的底盘,接下来无论是 Embedding、Chat、还是 Image,都能一路畅行。
自动配置:让 SpringAI 接管一切繁琐SpringAI 的最大魅力之一,就是自动配置。
只要依赖引入正确,Spring Boot 会自动扫描配置项并创建对应的 Bean。
例如,只要配置了 spring.ai.openai.api-key,系统就会自动创建一个 OpenAiEmbeddingModel 实例。
你甚至不用自己去写复杂的构造函数,所有连接池、重试逻辑、超时机制都帮你配好了。
这就像开车时自动挂挡一样爽!
Embedding 属性:掌控模型的核心参数当我们要精细调教模型时,就要用到 Embedding 的配置属性。在 application.yml 中可以设置如下:

这些配置主要分为三类:重试属性、连接属性、模型属性。下面我用表格给你一目了然:
1. 重试属性表格

2. 连接属性表格

3. 配置属性表格

这些属性让你像调音师一样,能精准地控制每一个“音符”,让系统稳定又高效。
运行时选项SpringAI 还提供了运行时动态配置能力,通过 OpenAiEmbeddingOptions,你可以在调用时灵活设置参数。
比如说,我希望某次调用使用 text-embedding-3-small 模型,而不是默认的 large 模型:

这在做实验或 A/B 测试时特别有用。
你可以轻松切换不同模型、不同参数,观察性能与效果的变化。
示例控制器:一行代码嵌入智能语义现在我们来写一个小示例,让 Spring Boot 项目直接调用 OpenAI 向量模型生成 Embedding。

当我们访问 /embedding?text=春天的花 时,返回的就是一个高维向量。
这组数字看似毫无意义,却代表了语义空间中“春天的花”的位置。
通过这个向量,我们可以用余弦相似度(cosine similarity)去判断两个文本的语义距离。
也就是说,如果用户搜索“花开”,系统就能自动匹配“春天的花”“樱花绽放”等相似内容。
手动配置:当你想自己“开车”当然,SpringAI 自动配置虽然方便,但有时候我们想更灵活地控制细节,这时候就可以选择手动配置:

这样,你就可以手动指定模型、API 地址、超时策略等配置,完全自定义属于你的 AI 接入方式。
尾声:从“理解文字”到“理解世界”写完这个 Demo 的时候,我突然意识到,AI 的世界其实很浪漫。我们用一串串数字,去捕捉语言的温度、情感和思想。
SpringAI + OpenAI 向量模型,不仅仅是技术的组合,更像是一种新的思考方式。
让机器学会“理解”,让搜索变得更人性化。这不就是程序员心中最浪漫的事吗?
总结一下今天的关键点:
OpenAI 向量模型能将文本转为语义向量;
SpringAI 自动配置极简,只需 API Key;
支持丰富的属性配置(重试、连接、模型等);
提供运行时可调参数(OpenAiEmbeddingOptions);
一行代码实现语义 Embedding 控制器;
可选手动配置,灵活掌控模型行为。
下次当你在做搜索、推荐或智能问答时,不妨让 SpringAI 的向量模型试试看。或许,机器真的能“理解”你的意思。
END如果你喜欢这种既讲技术又有点故事味的分享,记得点个赞或者收藏哦~