本文將介紹企業在沒有向量資料的情況下,如何通過OpenSearch向量檢索版,快速搭建Image Search服務。
使用者可以直接匯入圖片來源資料,在OpenSearch內部便捷的完成圖片向量化、向量搜尋等步驟,實現以圖搜圖、以文搜圖等多種映像檢索能力。
方案架構
使用者可以通過4種不同的方式上傳圖片進行圖搜引擎的搭建:
OSS+MaxCompute+OpenSearch向量檢索版:使用者先將圖片上傳至OSS中,在MaxCompute中儲存業務表資料以及每條資料對應的圖片地址(OSS裡的路徑,比如/image/1.jpg)。
MaxCompute+OpenSearch向量檢索版:使用者將圖片通過base64編碼後的圖片及其表資料存放區在MaxCompute中。
API+OpenSearch向量檢索版:使用者通過OpenSearch向量檢索版提供的資料推送介面,將base64編碼後的圖片及其表資料推送到OpenSearch向量檢索版執行個體中。
資料湖構建(DLF)+OpenSearch向量檢索版:使用者將圖片資料移轉到資料湖構建DLF 2.0 Catalog下的資料表中。
本文示範的是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向量檢索版執行個體。
配置執行個體
在執行個體列表頁面,找到新購買的執行個體,其狀態為“待配置”,需要完成表的配置後,才可正常搜尋。
1. 表基礎資訊
配置說明:
表名稱:可自訂
資料分區數:分區數設定時,請填寫不超過256的正整數, 用於提升全量構建速度、單次查詢效能。(部分存量執行個體,仍需各索引表分區數保持一致;或至少一個索引表分區數為1,其餘索引表分區數一致)
資料更新資源數:資料更新所用資源數,每個索引預設免費提供2個4核8G的更新資源,超出免費額度的資源將產生費用,詳情可參考向量檢索版計費概述。
情境模板:選擇“向量:圖片搜尋”。
2. 資料同步
全量資料來源選擇MaxCompute+API方式,依次完成參數配置,最後需要通過資料來源校正,才能進行下一步的操作。
配置參數說明:
AccessKey:阿里雲帳號或RAM使用者的AccessKey ID。
AccessKey Secret:AccessKey ID對應的AccessKey Secret。
專案名 (Project):訪問的目標MaxCompute專案名稱。
表名 (Table):訪問的目標MaxCompute表名。
表資料分區 (Partition):MaxCompute資料來源必須設定分區鍵; 樣本:ds=20170626。
自動索引重建:是否開啟自動索引重建任務,如果開啟,則將在識別到當前資料來源的變更時,自動對引用該資料來源的索引表進行索引重建。
開啟自動索引重建,則必須建立done表,建立方式可參考自動索引重建。
3. 欄位配置
向量檢索版會根據選擇的情境模板,預置相關欄位,並將全量資料來源中的欄位,自動匯入欄位列表中,下圖是「向量:圖片搜尋」模板包含4個預置欄位。
欄位配置說明:
預設欄位:1.id(主鍵)、2.source_image(源圖片)、3.namespace(命名空間)、4.source_image_vector(源圖片向量)。
必選欄位:主鍵欄位和向量欄位,主鍵欄位為int或string類型並且需要勾選主鍵按鈕,向量欄位為float類型並且需要勾選向量欄位按鈕。
向量欄位預設為多值的float類型,控制台建表預設採用英文逗號切分,支援自訂多值分隔字元。
圖片向量化的欄位,需要在需資料預先處理中勾選去配置,對source_image預設欄位進行配置。
使用向量檢索,在定義欄位時有位置要求,需要按照主鍵欄位、命名空間欄位(非必要)、向量欄位的順序建立(如上圖所示)。
欄位 source_image 資料預先處理配置說明:
資料來源:有OSSObject Storage Service和Base64編碼的兩種資料類型選項。
OSSObject Storage Service:需要填寫OSS路徑,其實是將圖片儲存在OSS的檔案夾裡面,從OSS直接匯入。
Base64編碼:相當於需要先將圖片進行一次編碼,然後儲存在資料庫中,或者直接用API方式進行傳輸。
預先處理模板:會根據要進行前置處理過的資料類型(文本或圖片)而展示不同模板,由於欄位的資料是圖片類型,所以此時預先處理模板展示的分別為(1.圖片向量化、2.OCR圖片文字識別、3.OCR圖片文字識別+圖片向量化)三種模板。
服務列表:
選定預先處理模板後,自動出現模板下的服務列表,展示該模板下所用到的模型種類。
可選的模型有兩個來源:
AI平台OCR圖片文字識別/文本向量服務
OCR圖片文字識別:針對架構圖、分析圖表等圖片資料,AI搜尋開放平台提供圖片內容理解服務,可基於多模態大模型對圖片內容進行解析理解以及文字識別,也可基於OCR能力對圖片文字進行識別,將文字資訊提取出來,用於圖片檢索及問答等情境。
文本向量化:提供將文本資料轉化為稠密向量形式表達的服務,支援多款不同語言、輸入長度、輸出維度文本向量模型,可用於資訊檢索、文本分類、相似性比較等情境。
產生欄位:原始圖片資料經過模型處理後,會被自動轉化為其他格式,產生新的欄位內容
embedding處理類的服務,預設必鬚生成欄位。
ocr服務可選是否產生欄位。
介面調用配置:為了成功訪問AI搜尋開放平台,需要完成工作空間、API Key、串連網域名稱的設定。
4. 索引結構
配置說明:
向量索引名稱與向量欄位名稱相同。
包含欄位為主鍵、向量欄位、命名空間欄位可選。
進階配置可按需要填寫,詳情可參考向量索引通用配置。
5. 確認建立
點擊確認建立,完成表的建立,在左側導覽列日誌記錄 > 變更歷史,可以查看錶的建立進度,當狀態顯示完成後,就可以進行查詢測試的操作。
查詢測試
1.控制台查詢測試
在左側導覽列選擇向量管理 > 查詢測試,控制台的查詢測試功能同時支援表單/開發人員模式,控制台查詢用法可以參考:查詢測試。
1.1 表單模式
依次選擇好表單模式 > 表名,Query類型以圖片類型為例(支援向量、文本、圖片三種方式),圖片提供方式選擇上傳圖片檔案,完成查詢圖片的上傳後,點擊搜尋就可以在搜尋結果欄中查看到結果。
1.2 開發人員模式
依次選擇好開發人員模式 > 表名,在下方的搜尋方塊內輸入查詢參數,完成後點擊搜尋就可以在右側的結果欄內看到查詢結果。
欄位說明:
vector:具體要查詢的向量
topK:取top K個結果
includeVector:是否返迴文檔中的向量資訊
詳細的查詢文法可參考下方的文法說明。
2.SDK查詢
查詢樣本:可參考預測查詢。
結果展示:
{
"totalCount": 5,
"result": [
{
"id": 5,
"score": 1.103209137916565
},
{
"id": 3,
"score": 1.1278988122940064
},
{
"id": 2,
"score": 1.1326735019683838
}
],
"totalTime": 242.615
}result中記錄著返回結果。