本文將介紹企業在沒有向量資料的情況下,如何通過OpenSearch向量檢索版,快速搭建Image Search服務。
使用者可以直接匯入圖片來源資料,在OpenSearch內部便捷完成圖片向量化、向量搜尋等步驟,實現以圖搜圖、以文搜圖等多種映像檢索能力。
方案架構

使用者可以通過3種不同的方式上傳圖片進行圖搜引擎的搭建:
OSS+MaxCompute+OpenSearch向量檢索版:使用者先將圖片上傳至OSS中,在MaxCompute中儲存業務表資料以及每條資料對應的圖片地址(OSS裡的路徑,比如/image/1.jpg)
MaxCompute+OpenSearch向量檢索版:使用者將圖片通過base64編碼後的圖片及其表資料存放區在MaxCompute中
API+OpenSearch向量檢索版:使用者通過OpenSearch向量檢索版給出的資料推送介面,將base64編碼後的圖片及其表資料推送到OpenSearch向量檢索版執行個體中
本文示範的是OSS+MaxCompute+OpenSearch向量檢索版搭建圖搜引擎。
環境準備
1、建立AK和SK
第一次開通阿里雲帳號並登入控制台時,會提示先建立access key才能繼續使用。
建立及使用應用依賴access key參數,主帳號下access key參數不可為空。
在為主帳號建立access key參數後,還可以再建立RAM子帳號access key通過RAM子帳號進行訪問,RAM子帳號賦予對應存取權限,請參考RAM(子帳號)的建立及授權。
2、建立Object Storage Service

添加opensearch標籤:(key-value 值均為opensearch)

本文在OSS中上傳了1000張圖片:

部分圖片類型如下:

購買OpenSearch向量檢索版執行個體
購買執行個體可參考購買OpenSearch向量檢索版執行個體。
配置執行個體
新購買的執行個體,其狀態為“待配置”,之後需要為該執行個體配置一張表,之後才可正常搜尋。

填寫表基礎資訊,點擊下一步:

配置說明:
表名稱:可自訂
資料分區數:分區數設定時,請填寫不超過256的正整數, 用於提升全量構建速度、單次查詢效能。(部分存量執行個體,仍需各索引表分區數保持一致;或至少一個索引表分區數為1,其餘索引表分區數一致)
資料更新資源數:資料更新所用資源數,每個索引預設免費提供2個4核8G的更新資源,超出免費額度的資源將產生費用,詳情可參考向量檢索版國際站計費文檔
情境模板:選擇“向量:圖片搜尋”
資料處理:選擇“需將未經處理資料轉為向量資料”
資料同步,配置資料來源,校正通過後,點擊下一步:

配置參數說明:
資料來源類型:選擇MaxCompute
Project:訪問的目標MaxCompute專案名稱
accesskeyId:阿里雲帳號或RAM使用者的AccessKey ID
accesskeySecret:AccessKey ID對應的AccessKey Secret
Table:訪問的目標MaxCompute 表名
分組鍵partition:MaxCompute資料來源必須設定分區鍵; 樣本:ds=20170626
時間戳記:如果有API的增量資料,該配置表示回追多久的增量資料,系統預設最大能回追3天的API增量資料
自動索引重建:是否開啟自動索引重建任務,如果開啟,則將在識別到當前資料來源的變更時,自動對引用該資料來源的索引表進行索引重建;
開啟自動索引重建,則必須建立done表,建立方式可參考自動索引重建
欄位配置,配置完成後,點擊下一步:

此處需要選擇主鍵、向量欄位、需embedding欄位。
圖片儲存於OSS
模板選擇“向量:圖片搜尋”模板後,系統預設產生4個預置欄位id(主鍵)、cate_id(類目欄位)、vector(向量欄位)、vector_source_image(儲存圖片路徑的欄位),使用者選擇MaxCompute資料來源後,從資料來源同步的欄位,展示在預置欄位下方。
3.1.配置“vector_source_image”欄位:(欄位類型需要為STRING,必須勾選為需embedding欄位):
使用者可根據業務表欄位對預置欄位名稱進行修改,但需要保證該欄位的進階配置無誤:

在彈框中填寫相應資訊:

進階配置說明:
向量化模型
clip:通用圖片轉向量模型。
clip_ecom:電商增強圖片轉向量模型。
資料類型:選擇image
內容來源類型:OSS
OSS儲存空間:OSS的bucket名稱
注意:OSS的SLR方式需要開通OpenSearch-向量檢索版服務關聯角色
假設某張圖片在OSS的路徑為“/測試圖片/湖泊.jpg”,那麼該欄位的內容也必須是“/測試圖片/湖泊.jpg”,以下圖舉例:
OSS的路徑:

MaxCompute欄位值:

3.2.配置vector向量欄位:(欄位類型需要為FLOAT,必須勾選為向量欄位)

base64編碼的圖片
模板選擇“向量:圖片搜尋”模板後,系統預設產生4個預置欄位id(主鍵)、cate_id(類目欄位)、vector(向量欄位)、vector_source_image(儲存圖片路徑的欄位),使用者選擇MaxCompute資料來源後,從資料來源同步的欄位,展示在預置欄位下方。
3.1.配置“vector_source_image”欄位:(欄位類型需要為STRING,必須勾選為需embedding欄位):
使用者可根據業務表欄位對預置欄位名稱進行修改,但需要保證該欄位的進階配置無誤:

在彈框中填寫相應資訊:

向量化模型:目前支援通用版和電商版兩種模型,
clip:通用圖片轉向量模型。
clip_ecom:電商增強圖片轉向量模型。
資料類型:選擇base64編碼。
3.2.勾選vector向量欄位:(欄位類型需要為FLOAT,必須勾選為向量欄位)

索引結構配置,配置完成後點擊下一步:

配置說明:
向量索引名稱與向量欄位名稱相同
包含欄位為主鍵、向量欄位、命名空間欄位可選
進階配置按需填寫
通過引擎將圖片產生的向量,預設為512維,並且不支援修改。
配置完成後,點擊確認建立:

可在變更歷史中查看錶的建立進度:

全量完成後,即可搜尋測試。
查詢測試
控制台查詢測試
控制台查詢用法可以參考:查詢測試。
SDK查詢
查詢樣本:可參考預測查詢。
結果展示:
{
"totalCount": 5,
"result": [
{
"id": 5,
"score": 1.103209137916565
},
{
"id": 3,
"score": 1.1278988122940064
},
{
"id": 2,
"score": 1.1326735019683838
}
],
"totalTime": 242.615
}result 中 記錄著返回的結果。