Spring Boot + VertexAI 向量模型,一键搞定语义搜索

62 阅读4分钟



故事的开始:我为什么会遇上 Vertex AI?

那天,是一个阳光明媚的周三下午。

我在公司写一个内部问答系统,需要用向量搜索来匹配语义最相近的答案。原本打算直接上 OpenAI Embeddings,但老李抬头看了我一眼:“小米,我们用 Google Cloud,全家桶用起来更香。”

于是我去翻了下 Google Cloud 的文档,才发现 Vertex AI 不只是能训练模型、部署模型,它还提供了文本向量模型(Text Embedding Model)

这意味着——我不用再训练自己的向量模型了!Google 已经帮我准备好了一切。

于是,开启了我和 Vertex AI Embeddings 的奇妙之旅。

认识一下:什么是 Vertex AI?

简单点讲,Vertex AI 是 Google Cloud 提供的一站式 AI 平台

它的定位非常明确:

“统一机器学习生命周期,从数据准备、模型训练、部署到推理,统统搞定。”

它包含了以下几大模块:

而我们今天的主角,正是其中的 Embeddings API

它能把一句话、一段文本变成一串数字,也就是向量,用于语义搜索、推荐、聚类等任务。

Google 文本向量模型:语义的魔法棒

Google 提供的文本向量模型,名字叫做:

textembedding-gecko@001

是不是听起来就有点可爱?

这个模型基于 Google 的大语言模型技术,可以把任意文本转成高维向量(通常是 768 或 1024 维),并且支持多语言。举个例子:

更厉害的是,它可以用来做:

  • 语义搜索(semantic search)
  • 相似文本检索
  • 文本聚类
  • 推荐系统
  • 知识库匹配(QA 场景)

先决条件:准备好 Google Cloud 环境

要在 Spring AI 中使用 Vertex AI,你需要准备以下东西

下载的凭据文件长这样(部分内容)

添加存储库和 BOM

如果你使用 Spring Boot 3.x,只需要在 pom.xml 中添加 Spring AI 的依赖配置即可。

如果你是用 Gradle:

自动配置:就是这么丝滑!

Spring AI 对 Vertex AI 有完善的自动配置支持。

当你在 application.yml 中配置完必要参数后,它会自动创建 VertexAiTextEmbeddingModel Bean。

是的,不用写一行 Java 代码,Spring Boot 会帮你搞定。

Embedding 属性

下面是 spring.ai.vertex.ai.embedding 相关的主要配置项

embedding.text 属性

Spring AI 提供了 embedding.text 子配置项,方便进一步微调嵌入模型的行为。

示例控制器:从文本到向量只要一行代码

我写了一个简单的控制器,你可以直接拿来跑

运行后访问:

返回结果是一串漂亮的向量

是不是很治愈?

手动配置:如果你想要更细的控制

当然,Spring AI 也支持手动创建 VertexAiTextEmbeddingModel,适合对 Bean 初始化有自定义需求的同学。

这样,你就可以完全掌控模型加载、凭据、区域等配置。

从 Google 服务帐户加载凭据

别忘了,我们的凭据是整个访问的关键。加载方式有三种:

推荐用环境变量或配置文件方式,因为更安全、更容易在容器环境下部署。

结语:一行配置,拥抱 AI 世界

这次体验下来,我最大的感受是:

Spring AI 真的是 AI 工程师的福音。

它把复杂的模型接入、凭据管理、接口调用都封装得干干净净,只留给我们最舒服的“API 级快乐”。

从 Vertex AI 获取文本向量,只需要:

  1. 下载凭据
  2. 配置一行 YAML
  3. 写一行控制器

完事!

再也不用到处拼 URL、调 REST API、写请求签名。Google 提供了世界级的模型,Spring AI 帮你一键接入。

这大概就是所谓的——“站在巨人的肩膀上搞开发”。

END

我把今天讲的核心步骤整理成一句口诀,方便记:

开通 Vertex → 下载凭据 → 配置 YAML → 调用模型 → 输出向量。

希望你今天也能像我一样,在代码世界里,喝上一口“冰可乐般”的丝滑快乐。

如果你喜欢我的分享,记得点个 【在看】 或者 【分享】 吧~

我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!