大家好呀,我是小米,一個愛折騰也愛分享的大哥哥。
最近有個小夥伴跟我説:“小米,我現在的AI項目需要用到向量檢索,但我的數據全在PostgreSQL裏,難道我還得搭個外部Embedding服務嗎?”
我笑了笑,抿了口咖啡,輕輕地説:“不一定哦~你聽過 PostgresML 向量模型 嗎?它能讓你的數據庫直接變成一個AI模型倉庫!”
於是,我給他講了一個故事——
關於SpringAI 與 PostgresML 的浪漫合作,一場數據庫和AI的完美融合。
當數據庫學會“思考”:什麼是 PostgresML 向量模型?
在我們平常的開發世界裏,PostgreSQL 只是個“老實人”:存數據、查數據、加個索引、跑點SQL。
可 PostgresML 卻讓它搖身一變——成為一個內嵌機器學習模型的數據庫!
你可以直接在PostgreSQL裏執行機器學習操作,比如訓練模型、生成Embedding向量、甚至推理!
SpringAI 則是這場魔法的“橋樑”,它讓你像使用普通Spring Bean一樣,輕鬆地調用AI模型。
而“PostgresML 向量模型”就是 SpringAI 提供的一種嵌入(Embedding)模型實現,它直接利用 PostgresML 的強大算力,將文本數據轉換成向量並存儲在數據庫中。
這意味着——你不需要額外部署OpenAI、Ollama、或者HuggingFace服務,就能在Spring中調用AI向量功能!
一句話總結就是:
PostgresML 向量模型 = 數據庫存儲 + 向量生成 + AI原生化 + 零外部依賴
是不是很香?
添加存儲庫和 BOM:讓SpringAI接入PostgresML
故事的第二幕,就是“相遇”。
為了讓SpringAI與PostgresML成功牽手,我們需要引入依賴。在你的 pom.xml 中,添加以下配置:
BOM負責統一版本管理,Starter則讓我們開箱即用,無需繁瑣配置。
這也是Spring Boot的浪漫——少寫代碼,多點魔法。
自動配置:讓AI自己動起來
添加依賴後,Spring Boot 會根據 application.yml 自動配置好向量模型。示例配置如下:
Spring Boot 會自動幫我們生成一個 PostgresMlEmbeddingModel Bean。
只要應用啓動成功,你的數據庫就已經變身為一個能生成Embedding的AI模型倉庫啦!
這時候,你幾乎什麼都不用幹,SpringAI會自動幫你注入 EmbeddingModel 對象,你只需要調用 embed() 方法即可。
Embedding 屬性:讓配置更一目瞭然
有時候開發同事問我:“小米,這些屬性都能配哪些值呀?”
我就喜歡這種問題!因為做筆記的我,早就幫你們整理好了:
看,這樣一目瞭然。
SpringAI就是這麼貼心,所有配置都可以通過YAML靈活調整。
運行時選項
有時候我們不想寫死配置,比如想在運行時動態選擇模型或修改參數。
這時我們可以使用 PostgresMlEmbeddingOptions。它允許在代碼層面靈活設置每次Embedding任務的執行參數。比如:
然後調用:
這段代碼的語氣就像在跟AI説悄悄話:“嘿,用e5-base模型來理解這句話吧~”
SpringAI幫我們封裝好了底層調用,開發者只需要關注邏輯,而不是通信細節。
這就是“Spring魔法”的魅力。
示例控制器:讓向量生成像寫REST接口一樣簡單
想讓AI在線生成向量?簡單!
我們寫一個控制器,幾行代碼搞定:
運行後你就能直接POST文本數據:
返回結果大概是:
這串數字看似平平無奇,但它其實是AI對文本語義的“理解座標”。
有了它,你就能做相似度搜索、語義檢索、推薦系統等各種AI應用!
手動配置(高級玩法)
有時候我們希望完全掌控配置,比如需要動態切換數據庫或自定義連接池。
這時可以手動註冊 Bean:
註冊完成後,你可以像普通Spring Bean一樣注入使用。
這種方式適合對性能、安全性或動態配置要求較高的場景,比如多租户系統或私有化部署。
寫在最後:AI與數據庫的融合未來
以前我們總覺得:
AI是AI,數據庫是數據庫。一個做推理,一個存數據,涇渭分明。
但SpringAI和PostgresML告訴我們——
未來,AI不再是“外部服務”,而是數據系統的原生能力。我們不需要再去搭一個複雜的LLM推理服務;我們只需要在熟悉的Spring和PostgreSQL裏,就能實現語義檢索、智能推薦、甚至知識問答。
這不只是技術的整合,更是“思維模式的進化”。
總結一下今天的重點:
PostgresML 向量模型:讓PostgreSQL直接支持Embedding生成。
添加存儲庫和BOM:輕鬆集成SpringAI。
自動配置:YAML配置後開箱即用。
Embedding屬性表格:清晰明瞭。
PostgresMlEmbeddingOptions:靈活的運行時參數設置。
示例控制器:簡單幾行實現AI接口。
手動配置:進階玩法,完全掌控。
END
所以,如果你也想讓你的數據庫“聰明”起來,不妨試試PostgresML和SpringAI吧~下一次,你的SQL也許就能和AI一起思考啦!
最後,小米有個小問題想問大家:
如果你能讓數據庫擁有一種“AI能力”,你希望它最先學會什麼?
歡迎在評論區聊聊~
我是小米,一個喜歡分享技術的31歲程序員。如果你喜歡我的文章,歡迎關注我的微信公眾號“軟件求生”,獲取更多技術乾貨!