有時候,程序員的快樂真的很簡單——比如,終於搞懂了 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 之前,你需要準備以下內容:

OCI GenAI + Spring AI = 向量檢索的最強組合,你準備好了嗎?_數組

添加存儲庫和 BOM

在 pom.xml 中添加依賴即可輕鬆接入。

OCI GenAI + Spring AI = 向量檢索的最強組合,你準備好了嗎?_搜索_02

這一步就像打通了任督二脈——從此,你的 Spring Boot 項目擁有了 AI 的靈魂。

自動配置(Auto Configuration)

Spring AI 已經為我們準備好了 OciEmbeddingAutoConfiguration,只需在 application.yml 中配置 OCI 參數即可自動啓用。

OCI GenAI + Spring AI = 向量檢索的最強組合,你準備好了嗎?_數組_03

這樣,Spring Boot 啓動時就會自動創建 OciEmbeddingClient 實例,無需手動 Bean 配置。

是不是有點“Plug and Play”的感覺?

Embedding 屬性詳解

Spring AI 為 OCI GenAI 提供了詳細的配置屬性。我們來看看兩個核心屬性組:

1. spring.ai.oci.genai 屬性

OCI GenAI + Spring AI = 向量檢索的最強組合,你準備好了嗎?_搜索_04

2. spring.ai.oci.genai.embedding 屬性

OCI GenAI + Spring AI = 向量檢索的最強組合,你準備好了嗎?_ci_05

運行時選項(OCIEmbeddingOptions)

在運行時,我們還可以靈活調整嵌入行為。

Spring AI 提供了 OCIEmbeddingOptions 類,可以讓我們動態控制參數:

OCI GenAI + Spring AI = 向量檢索的最強組合,你準備好了嗎?_ci_06

這樣我們可以針對不同場景靈活切換模型或調整批處理策略。

示例代碼(Sample Code)

現在到了大家最喜歡的環節——上代碼!

以下是一個完整的 Spring Boot 示例,展示如何調用 OCI GenAI 向量模型進行文本嵌入。

OCI GenAI + Spring AI = 向量檢索的最強組合,你準備好了嗎?_ci_07

運行之後,訪問 POST /embedding 接口,輸入一段文本,就能獲得一個漂亮的向量數組。

就這麼簡單,你的系統已經擁有了語義理解能力!

手動配置(Manual Configuration)

當然,如果你想更靈活地控制,可以手動配置 OCIEmbeddingClient Bean:

OCI GenAI + Spring AI = 向量檢索的最強組合,你準備好了嗎?_ci_08

這種方式適合想要在多模型、多環境之間動態切換的開發者。

尾聲:AI 的向量世界才剛剛開始

當我第一次用 OCI GenAI 生成向量時,腦子裏閃過一句話:

“人類理解語言靠情感,AI 理解語言靠向量。”

向量,是 AI 理解世界的方式。而 Spring AI + OCI GenAI 的組合,讓 Java 開發者終於可以用熟悉的方式駕馭這種能力。

你可以用它做:

  • 智能問答
  • 語義搜索
  • 向量數據庫檢索
  • 推薦系統
  • 文檔聚類分析

未來的應用,不僅要“存儲數據”,還要“存儲語義”。而這,就是向量的意義。

總結

OCI GenAI + Spring AI = 向量檢索的最強組合,你準備好了嗎?_數組_09

END

“代碼是冷的,但 AI 讓它有了靈魂。”

當你把 OCI GenAI 接入項目的那一刻,你不僅讓系統更智能,也讓自己更靠近未來。

下次,我們來聊聊——如何用 Spring AI + 向量數據庫構建一個真正懂語義的知識問答系統。

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