全部產品
Search
文件中心

OpenSearch:端到端圖搜解決方案

更新時間:Feb 25, 2025

本文將介紹企業在沒有向量資料的情況下,如何通過OpenSearch向量檢索版,快速搭建Image Search服務。

使用者可以直接匯入圖片來源資料,在OpenSearch內部便捷完成圖片向量化、向量搜尋等步驟,實現以圖搜圖、以文搜圖等多種映像檢索能力。

方案架構

image_409b3ae0cc76

使用者可以通過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

image_409ce896ccx9

  1. 開通OSS服務

  2. 控制台建立儲存空間

  3. 控制台上傳檔案

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

image

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

image_409d36b4ccr4

部分圖片類型如下:

image_409d84d0cc9c

購買OpenSearch向量檢索版執行個體

購買執行個體可參考購買OpenSearch向量檢索版執行個體

配置執行個體

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

image.png

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

image.png

配置說明

  • 表名稱:可自訂

  • 資料分區數:分區數設定時,請填寫不超過256的正整數, 用於提升全量構建速度、單次查詢效能。(部分存量執行個體,仍需各索引表分區數保持一致;或至少一個索引表分區數為1,其餘索引表分區數一致)

  • 資料更新資源數:資料更新所用資源數,每個索引預設免費提供2個4核8G的更新資源,超出免費額度的資源將產生費用,詳情可參考向量檢索版國際站計費文檔

  • 情境模板:選擇“向量:圖片搜尋”

  • 資料處理:選擇“需將未經處理資料轉為向量資料”

  1. 資料同步,配置資料來源,校正通過後,點擊下一步

image.png

配置參數說明

  • 資料來源類型:選擇MaxCompute

  • Project:訪問的目標MaxCompute專案名稱

  • accesskeyId:阿里雲帳號或RAM使用者的AccessKey ID

  • accesskeySecret:AccessKey ID對應的AccessKey Secret

  • Table:訪問的目標MaxCompute 表名

  • 分組鍵partition:MaxCompute資料來源必須設定分區鍵; 樣本:ds=20170626

  • 時間戳記:如果有API的增量資料,該配置表示回追多久的增量資料,系統預設最大能回追3天的API增量資料

  • 自動索引重建:是否開啟自動索引重建任務,如果開啟,則將在識別到當前資料來源的變更時,自動對引用該資料來源的索引表進行索引重建;

說明
  • 開啟自動索引重建,則必須建立done表,建立方式可參考自動索引重建

  1. 欄位配置,配置完成後,點擊下一步:

image.png

此處需要選擇主鍵、向量欄位、需embedding欄位。

圖片儲存於OSS

模板選擇“向量:圖片搜尋”模板後,系統預設產生4個預置欄位id(主鍵)、cate_id(類目欄位)、vector(向量欄位)、vector_source_image(儲存圖片路徑的欄位),使用者選擇MaxCompute資料來源後,從資料來源同步的欄位,展示在預置欄位下方。

3.1.配置“vector_source_image”欄位:(欄位類型需要為STRING,必須勾選為需embedding欄位):

使用者可根據業務表欄位對預置欄位名稱進行修改,但需要保證該欄位的進階配置無誤:

image.png

在彈框中填寫相應資訊:

image

進階配置說明

  • 向量化模型

    • clip:通用圖片轉向量模型。

    • clip_ecom:電商增強圖片轉向量模型。

  • 資料類型:選擇image

  • 內容來源類型:OSS

  • OSS儲存空間:OSS的bucket名稱

注意:OSS的SLR方式需要開通OpenSearch-向量檢索版服務關聯角色

重要

假設某張圖片在OSS的路徑為“/測試圖片/湖泊.jpg”,那麼該欄位的內容也必須是“/測試圖片/湖泊.jpg”,以下圖舉例:

OSS的路徑:

image.png

MaxCompute欄位值:

image.png

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

image.png

base64編碼的圖片

模板選擇“向量:圖片搜尋”模板後,系統預設產生4個預置欄位id(主鍵)、cate_id(類目欄位)、vector(向量欄位)、vector_source_image(儲存圖片路徑的欄位),使用者選擇MaxCompute資料來源後,從資料來源同步的欄位,展示在預置欄位下方。

3.1.配置“vector_source_image”欄位:(欄位類型需要為STRING,必須勾選為需embedding欄位):

使用者可根據業務表欄位對預置欄位名稱進行修改,但需要保證該欄位的進階配置無誤:

image.png

在彈框中填寫相應資訊:

image.png

  • 向量化模型:目前支援通用版和電商版兩種模型,

    • clip:通用圖片轉向量模型。

    • clip_ecom:電商增強圖片轉向量模型。

  • 資料類型:選擇base64編碼。

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

image.png

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

image.png

配置說明

  • 向量索引名稱與向量欄位名稱相同

  • 包含欄位為主鍵、向量欄位、命名空間欄位可選

  • 進階配置按需填寫

說明

通過引擎將圖片產生的向量,預設為512維,並且不支援修改。

  1. 配置完成後,點擊確認建立

image.png

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

image.png

全量完成後,即可搜尋測試。

查詢測試

控制台查詢測試

控制台查詢用法可以參考:查詢測試

SDK查詢

查詢樣本:可參考預測查詢

結果展示

{
    "totalCount": 5,
    "result": [
        {
            "id": 5,
            "score": 1.103209137916565
        },
        {
            "id": 3,
            "score": 1.1278988122940064
        },
        {
            "id": 2,
            "score": 1.1326735019683838
        }
    ],
    "totalTime": 242.615
}

result 中 記錄著返回的結果。

文法說明

SDK中使用向量檢索