事情是這樣的。

上週,我負責的一個智能問答項目,老闆突然説一句話:

“小米啊,我們要做知識庫檢索,搞個類似 RAG 的東西,支持語義搜索。”

我當場愣住:語義搜索?知識庫?向量?Embedding?

老闆微微一笑:“別慌,用 SpringAI 接智譜 AI。”

那一刻,我的人生彷彿聽見了 命運的 Callback。於是,就有了今天這篇文章。

什麼是智譜 AI 向量模型?

通俗地講:Embedding 向量 = 語義世界裏的座標

我們平時的文字,比如:

  • “今天天氣真好”
  • “陽光明媚,適合出門”

雖然字完全不同,但意思很接近。Embedding 模型的工作就是:

  • 把這些文字轉成一串數字向量
  • 在向量空間裏,相似語義的文本離得更近

在智譜 AI 裏,你可以理解為:

從 0 到 1 玩轉 Spring AI + 智譜 AI 向量模型,RAG 工程師都在用!_搜索

它們在向量空間中“彼此靠近”,之後你只需要使用向量相似度搜索,就能實現語義檢索。而 Spring AI 則是幫我們用 Spring Boot 的方式,優雅地接入智譜 AI。

這,就是我們今天的主線任務。

先決條件:開打前必須準備的裝備

在開搞之前,你要準備三樣東西:

  1. JDK 17+(Spring AI 對 JDK 版本有要求)
  2. Spring Boot 3.x
  3. 智譜 AI 的 API Key

獲取智譜 Key 的地方就不展開了,反正你登錄智譜平台,創建應用就能拿到類似這樣的:

YOUR_ZHIPU_API_KEY

記好,這就是你進入“Embedding 鎮”的通行證。

添加倉庫和 BOM

因為 Spring AI 目前還在飛速進化中,所以我們一般要加它的倉庫與 BOM。

在 pom.xml 中添加:

從 0 到 1 玩轉 Spring AI + 智譜 AI 向量模型,RAG 工程師都在用!_屬性表_02

然後引入智譜 AI Embedding 相關依賴:

從 0 到 1 玩轉 Spring AI + 智譜 AI 向量模型,RAG 工程師都在用!_搜索_03

至此,你和 SpringAI + 智譜 AI 的緣分就此開始。

自動配置機制:Spring AI 的“魔法”

Spring AI 是完全遵循 Spring Boot 的自動配置思路的。

只要你在 application.yml 中配置好:

從 0 到 1 玩轉 Spring AI + 智譜 AI 向量模型,RAG 工程師都在用!_搜索_04

Spring Boot 在啓動的時候:

  • 會自動裝配 ZhiPuAiEmbeddingClient
  • 會自動注入到 Spring 容器中

你只管用,剩下的交給 Starter。是不是很 Spring?

Embedding 屬性詳解

下面是乾貨最密集的一部分:配置屬性詳解。我拆成三個表。

1. 重試屬性表

這些屬性用於控制:調用智譜模型失敗後的重試行為。

實際業務中,如果你在高併發環境中使用,強烈建議好好配置一波。

2. 連接屬性表

控制你如何連接智譜 AI 服務。

如果你是在內網部署,可以改 base-url 走代理。

3. Embedding 核心配置屬性

這些是跟向量生成直接相關的:

從 0 到 1 玩轉 Spring AI + 智譜 AI 向量模型,RAG 工程師都在用!_向量空間_05

其中 model 可以根據智譜當前支持的情況調整,比如:

  • embedding-2
  • embedding-3(未來可能更新)

運行時選項:ZhiPuAiEmbeddingOptions

除了配置文件,我們還可以在運行時動態指定參數。Spring AI 提供了一個對象:

ZhiPuAiEmbeddingOptions

示例:

從 0 到 1 玩轉 Spring AI + 智譜 AI 向量模型,RAG 工程師都在用!_向量空間_06

這樣你就可以在不同業務場景下:

  • 使用不同模型
  • 使用不同向量維度

不用改全局配置,優雅得一批。

示例控制器:真刀真槍搞起來

終於,輪到重頭戲了。

一個最簡單的 Embedding Controller:

從 0 到 1 玩轉 Spring AI + 智譜 AI 向量模型,RAG 工程師都在用!_向量空間_07

訪問:

GET /embedding/vector?text=今天天氣很好

返回的就是:

[0.2331, -0.5921, 0.1893, ...]

你就可以把這個向量丟進:

  • Milvus
  • FAISS
  • PGVector
  • Qdrant

實現各種語義搜索場景。是不是特別爽?

手動配置:給強迫症程序員的浪漫

如果你不想用 Spring Boot 的自動配置,也可以手動 Bean:

適合那些想完全掌控細節、或者做多模型隔離的場景。

為什麼我要用 Spring AI + 智譜?

最後説點大實話。我嘗試過:

  • 手擼 HTTP 調用
  • 寫 SDK 適配
  • 接第三方中間層

但自從我用了 Spring AI + 智譜 AI:

  • 接入快
  • 風格統一
  • 適合微服務
  • 直接適配後續 RAG / Function Calling / Chat 模型

最重要的是:

代碼真的變少了,頭髮也少掉幾根……

總結一波今天學到的重點

我們今天一口氣聊完了:

  • 智譜 AI 向量模型原理
  • Spring AI 自動接入方式
  • Embedding 屬性完整配置
  • 重試 + 連接 + 核心參數表格
  • 運行時選項 ZhiPuAiEmbeddingOptions
  • Controller 實戰
  • 自動配置 & 手動配置對比

如果你接下來要做:

  • 知識庫問答
  • AI 搜索
  • 語義推薦
  • 相似文本匹配

那這一套:

Spring AI + 智譜 AI Embedding = 你項目裏最香的一塊積木。

END

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