大家好,我是小米。

今天我一定要和你們分享一個我最近“玩到停不下來”的東西:

Google Vertex AI 的多模態向量模型(Multimodal Embedding)整合進 SpringAI

你有沒有這種感覺:

明明我們已經用文本向量模型玩得飛起,做語義搜索、做相似度匹配、做推薦算法……結果這時候突然有人告訴你:

“兄弟,別隻盯着文本了,世界是多模態的,圖像、文本、音頻、視頻都能一起理解!”

這不就像你剛學會炒酸菜魚,突然有人告訴你還能一鍋端火鍋、烤肉、炒粉絲一樣震撼嗎?

於是,我開始探索 Google 的多模態嵌入模型 Vertex AI Multimodal Embeddings,再配合 SpringAI 的自帶自動配置……

簡直不要太爽。今天我們就一起來把它徹底講明白!

Vertex AI 多模態嵌入 API 是個啥?

如果你用過 OpenAI 的 CLIP、Google 的 PaLM Embedding、或 Cohere 的 multimodal 模型,那你已經對“多模態 Embedding”不陌生了。

但 Google 的 Vertex AI Multimodal Embeddings 最大的特點是:

一個模型,同時支持文本 + 圖像輸入,生成統一向量空間 Embedding

也就是説:

  • 你可以讓模型把圖片轉成 embedding
  • 也可以把文本轉成 embedding
  • 甚至可以讓它把文本和圖像一起輸入,生成帶語義理解的混合向量

比如:

  • 給模型一張貓的圖片,讓它輸出 1408 維向量
  • 然後給它一句話 “一隻窩在沙發上的橘貓”,也會輸出 1408 維向量
  • 你還能用向量相似度判斷圖片和文本是不是描述同一個東西(比如在圖像搜索、內容檢索中超常用)

這就是 統一模態向量空間(UNIFIED space) 的魅力。而 SpringAI 已經把它封裝得非常絲滑,只需要幾行配置即可調用。

先決條件(Prerequisites)

要順利使用 SpringAI + Vertex AI,你至少需要準備這些:

1. 一個 Google Cloud 項目

必須提前啓用 Vertex AI API。

2. 在 Google Cloud 上創建服務賬號

並下載 JSON 密鑰文件。

3. 給這個服務賬號綁定至少以下權限

  • Vertex AI User
  • Storage Object Viewer(如果你要從 GCS 讀取圖片)

4. 你的 Spring Boot 項目版本

建議:

  • Spring Boot >= 3.2
  • SpringAI >= 1.0+

因為 SpringAI 從 1.0 起就內置了 Vertex AI 支持。

5. 配置 GOOGLE_APPLICATION_CREDENTIALS

例如:

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/service-account.json

這些準備好後,下面就可以開幹了!

添加存儲庫和 BOM

在你的 pom.xml 中添加 SpringAI 的 BOM 和依賴:

震撼!SpringAI 扛起多模態大旗:Google Vertex AI 嵌入模型太強了!_相似度

加上這些,你就可以在 Spring 中用 VertexAiEmbeddingModel 和 VertexAiMultimodalEmbeddingModel。

自動配置(Auto Configuration)

SpringAI 的精髓就在於 —— 自動配置

當你把下面這些 application.yml 配好:

震撼!SpringAI 扛起多模態大旗:Google Vertex AI 嵌入模型太強了!_相似度_02

然後只要寫:

震撼!SpringAI 扛起多模態大旗:Google Vertex AI 嵌入模型太強了!_模態_03

它就能直接拿來用了!

  • 不用你創建 client
  • 不用你寫 Builder
  • 不用你寫工廠方法
  • 不用你管理 token
  • 不用你處理 endpoint

是不是超級爽?

Embedding 屬性

SpringAI 對 Vertex AI 的 Embedding 相關屬性做了一層非常貼心的封裝,我們來看看有哪些配置可調。

1. vertex.ai.embedding 屬性

震撼!SpringAI 扛起多模態大旗:Google Vertex AI 嵌入模型太強了!_模態_04

這些是專門給“文本 embedding(Text Embedding)”用的。

2. vertex.ai.embedding.multimodal 屬性

多模態版的配置更豐富:

震撼!SpringAI 扛起多模態大旗:Google Vertex AI 嵌入模型太強了!_Google_05

配好這些,SpringAI 就會自動給你注入一個:

VertexAiMultimodalEmbeddingModel

這個模型能一次性處理文本和圖像!

手動配置(VertexAiMultimodalEmbeddingModel)

有時候你想完全控制模型,比如調整 Client、配置超時、修改 endpoint,那麼就需要手動創建 Bean。

下面給你一個典型示例:

震撼!SpringAI 扛起多模態大旗:Google Vertex AI 嵌入模型太強了!_Google_06

你只需要注入就能用了:

震撼!SpringAI 扛起多模態大旗:Google Vertex AI 嵌入模型太強了!_相似度_07

然後直接生成 embedding:

震撼!SpringAI 扛起多模態大旗:Google Vertex AI 嵌入模型太強了!_Google_08

是不是非常絲滑?

寫在最後:多模態未來已來

為什麼我這麼興奮地分享 Vertex AI 的多模態向量模型?因為這意味着:

  • 圖像搜索可以變得更聰明
  • 內容審核更準確
  • 以圖搜文、以文搜圖變得簡單
  • 推薦系統可以跨文本和圖像理解用户喜好
  • 私有化部署也可以使用多模態能力
  • 和 Spring 配合之後真的開發效率爆表

以前我們做向量搜索還只能靠文本,現在我們終於可以擁抱:

“讓模型理解世界的更多維度”

作為一個喜歡折騰的程序員,我覺得未來的系統不會只處理文本,一定會是:

  • 文本
  • 圖像
  • 視頻
  • 語音
  • 結構化數據

而 SpringAI 把這種能力做得夠優雅、夠順滑、夠 Java,讓人完全不想回頭用原生 SDK。

END

如果你是想在公司裏構建私有向量庫、圖像檢索系統、AI 搜索引擎、多模態知識庫……

強烈建議馬上試試 Vertex AI Multimodal Embedding + SpringAI。

我是小米,一個喜歡分享技術的31歲程序員。如果你喜歡我的文章,歡迎關注我的微信公眾號“軟件求生”,獲取更多技術乾貨!