有時候,程序員的快樂真的很簡單——比如,終於搞懂了 OCI 的 GenAI 向量模型!那天我在辦公室喝着第二杯美式,看着控制枱跑出那行“Embedding completed successfully”,差點起立鼓掌。今天,小米就帶你走進 Spring AI 的世界,一起玩轉 OCI GenAI 向量模型 ——它不止能“理解文本”,還能為 AI 應用賦能,讓智能檢索、知識問答、語義搜索都變得又準又快!
故事從一次“語義搜索”説起
那是一個項目上線前的晚上。我們的客服知識庫太龐大,用户提的問題和文檔標題完全不匹配。
我想了想,單純關鍵字匹配肯定不行,於是盯上了“向量檢索”這條路。
就在那時,我發現了 Spring AI 的 OCI GenAI 向量模型(Oracle Cloud Infrastructure Generative AI) —— 它支持直接生成文本向量嵌入(Embedding),還完美兼容 Spring Boot。
一句話總結:
這是一個可以讓你輕鬆用上 Oracle 雲 AI 能力的神器!
什麼是 OCI GenAI 向量模型?
簡單來説,OCI GenAI 向量模型(OCI Generative AI Embedding Model)能把文本轉化為高維向量表示(Embedding)。
這些向量可以理解為文本的“語義指紋”——語義相似的文本,它們的向量距離也會更近。
舉個例子:
“買機票到東京”和“預訂去日本的航班”雖然文字不同,但通過 Embedding 向量後,它們的語義距離會非常接近。
Spring AI 提供了非常優雅的封裝,讓我們通過簡單的配置就能調用 OCI 的 Embedding 服務。
OCI Embedding 模型頁面
在 OCI 控制枱中,進入 Generative AI 模型頁面,我們可以選擇:
- 模型類型:Text Embedding
- 模型名稱:如 cohere.embed-english-v3.0 或 cohere.embed-multilingual-v3.0
- 部署區域(Region)
- 模型端點(Endpoint)
每個模型都有不同的特點,比如英文模型速度快、多語言模型覆蓋廣。
小米小貼士:
如果你的系統要支持中文和英文雙語知識庫,推薦用 embed-multilingual-v3.0,效果會比單語模型更好。
OCI 文本嵌入頁面
進入 OCI 控制枱 → Generative AI → Text Embedding 頁面,就能直接測試文本嵌入。
你只需輸入一段文本,控制枱就會返回一串向量數組。例如輸入:
“Spring AI 是 Java 世界的 AI 框架。”
返回的結果可能是一個 1024 維的浮點數組。這些數字看起來平平無奇,但它們代表了文本的語義特徵。
而在實際項目中,我們會將這些向量存入向量數據庫(如 Milvus、Pinecone、PGVector)用於語義檢索。
先決條件(Prerequisites)
在使用 Spring AI 集成 OCI GenAI 之前,你需要準備以下內容:
添加存儲庫和 BOM
在 pom.xml 中添加依賴即可輕鬆接入。
這一步就像打通了任督二脈——從此,你的 Spring Boot 項目擁有了 AI 的靈魂。
自動配置(Auto Configuration)
Spring AI 已經為我們準備好了 OciEmbeddingAutoConfiguration,只需在 application.yml 中配置 OCI 參數即可自動啓用。
這樣,Spring Boot 啓動時就會自動創建 OciEmbeddingClient 實例,無需手動 Bean 配置。
是不是有點“Plug and Play”的感覺?
Embedding 屬性詳解
Spring AI 為 OCI GenAI 提供了詳細的配置屬性。我們來看看兩個核心屬性組:
1. spring.ai.oci.genai 屬性
2. spring.ai.oci.genai.embedding 屬性
運行時選項(OCIEmbeddingOptions)
在運行時,我們還可以靈活調整嵌入行為。
Spring AI 提供了 OCIEmbeddingOptions 類,可以讓我們動態控制參數:
這樣我們可以針對不同場景靈活切換模型或調整批處理策略。
示例代碼(Sample Code)
現在到了大家最喜歡的環節——上代碼!
以下是一個完整的 Spring Boot 示例,展示如何調用 OCI GenAI 向量模型進行文本嵌入。
運行之後,訪問 POST /embedding 接口,輸入一段文本,就能獲得一個漂亮的向量數組。
就這麼簡單,你的系統已經擁有了語義理解能力!
手動配置(Manual Configuration)
當然,如果你想更靈活地控制,可以手動配置 OCIEmbeddingClient Bean:
這種方式適合想要在多模型、多環境之間動態切換的開發者。
尾聲:AI 的向量世界才剛剛開始
當我第一次用 OCI GenAI 生成向量時,腦子裏閃過一句話:
“人類理解語言靠情感,AI 理解語言靠向量。”
向量,是 AI 理解世界的方式。而 Spring AI + OCI GenAI 的組合,讓 Java 開發者終於可以用熟悉的方式駕馭這種能力。
你可以用它做:
- 智能問答
- 語義搜索
- 向量數據庫檢索
- 推薦系統
- 文檔聚類分析
未來的應用,不僅要“存儲數據”,還要“存儲語義”。而這,就是向量的意義。
總結
END
“代碼是冷的,但 AI 讓它有了靈魂。”
當你把 OCI GenAI 接入項目的那一刻,你不僅讓系統更智能,也讓自己更靠近未來。
下次,我們來聊聊——如何用 Spring AI + 向量數據庫構建一個真正懂語義的知識問答系統。
我是小米,一個喜歡分享技術的31歲程序員。如果你喜歡我的文章,歡迎關注我的微信公眾號“軟件求生”,獲取更多技術乾貨!