事情是這樣的。
上週,我負責的一個智能問答項目,老闆突然説一句話:
“小米啊,我們要做知識庫檢索,搞個類似 RAG 的東西,支持語義搜索。”
我當場愣住:語義搜索?知識庫?向量?Embedding?
老闆微微一笑:“別慌,用 SpringAI 接智譜 AI。”
那一刻,我的人生彷彿聽見了 命運的 Callback。於是,就有了今天這篇文章。
什麼是智譜 AI 向量模型?
通俗地講:Embedding 向量 = 語義世界裏的座標
我們平時的文字,比如:
- “今天天氣真好”
- “陽光明媚,適合出門”
雖然字完全不同,但意思很接近。Embedding 模型的工作就是:
- 把這些文字轉成一串數字向量
- 在向量空間裏,相似語義的文本離得更近
在智譜 AI 裏,你可以理解為:
它們在向量空間中“彼此靠近”,之後你只需要使用向量相似度搜索,就能實現語義檢索。而 Spring AI 則是幫我們用 Spring Boot 的方式,優雅地接入智譜 AI。
這,就是我們今天的主線任務。
先決條件:開打前必須準備的裝備
在開搞之前,你要準備三樣東西:
- JDK 17+(Spring AI 對 JDK 版本有要求)
- Spring Boot 3.x
- 智譜 AI 的 API Key
獲取智譜 Key 的地方就不展開了,反正你登錄智譜平台,創建應用就能拿到類似這樣的:
YOUR_ZHIPU_API_KEY
記好,這就是你進入“Embedding 鎮”的通行證。
添加倉庫和 BOM
因為 Spring AI 目前還在飛速進化中,所以我們一般要加它的倉庫與 BOM。
在 pom.xml 中添加:
然後引入智譜 AI Embedding 相關依賴:
至此,你和 SpringAI + 智譜 AI 的緣分就此開始。
自動配置機制:Spring AI 的“魔法”
Spring AI 是完全遵循 Spring Boot 的自動配置思路的。
只要你在 application.yml 中配置好:
Spring Boot 在啓動的時候:
- 會自動裝配 ZhiPuAiEmbeddingClient
- 會自動注入到 Spring 容器中
你只管用,剩下的交給 Starter。是不是很 Spring?
Embedding 屬性詳解
下面是乾貨最密集的一部分:配置屬性詳解。我拆成三個表。
1. 重試屬性表
這些屬性用於控制:調用智譜模型失敗後的重試行為。
實際業務中,如果你在高併發環境中使用,強烈建議好好配置一波。
2. 連接屬性表
控制你如何連接智譜 AI 服務。
如果你是在內網部署,可以改 base-url 走代理。
3. Embedding 核心配置屬性
這些是跟向量生成直接相關的:
其中 model 可以根據智譜當前支持的情況調整,比如:
- embedding-2
- embedding-3(未來可能更新)
運行時選項:ZhiPuAiEmbeddingOptions
除了配置文件,我們還可以在運行時動態指定參數。Spring AI 提供了一個對象:
ZhiPuAiEmbeddingOptions
示例:
這樣你就可以在不同業務場景下:
- 使用不同模型
- 使用不同向量維度
不用改全局配置,優雅得一批。
示例控制器:真刀真槍搞起來
終於,輪到重頭戲了。
一個最簡單的 Embedding Controller:
訪問:
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歲程序員。如果你喜歡我的文章,歡迎關注我的微信公眾號“軟件求生”,獲取更多技術乾貨!