OpenSearch & AI 開放平臺,實現0程式碼圖片搜尋!

阿里云大数据AI發表於2024-12-10

本文將介紹如何使用 阿里雲 OpenSearch 向量檢索版結合 AI 搜尋開放平臺的模型能力,幫助客戶自動完成圖片的識別與向量化處理,一站式搭建圖片搜尋服務。

阿里雲 OpenSearch 向量檢索版結合 AI 搜尋開放平臺,提供了一套完整的端到端解決方案。企業只需提供原始圖片資料,後續的向量化處理、索引構建和相似度查詢等操作均可在阿里雲 OpenSearch 產品內部自動完成,客戶無需編寫程式碼,輕鬆實現高效的圖片搜尋服務。

整套方案非常適用於客戶在沒有向量資料、僅有原始圖片資料的情況下,快速搭建以圖搜圖、以文搜圖服務;在方案中,還能夠識別圖片中的具體文字內容,支援客戶透過搜尋圖片中的文字返回圖片結果。

背景

在數字化時代,圖片搜尋能力的需求日益增加。隨著AI技術的發展,各行各業紛紛引入圖片搜尋能力,常見的應用場景包括:電商的拍照搜尋、素材網站的相似圖片搜尋以及智慧駕駛的模型訓練等等。

圖片搜尋:

而圖片是一種典型的非結構化資料,它無法用 excel 結構表示與管理,也無法使用傳統的分詞技術來實現搜尋匹配。

企業想實現圖片搜尋的的能力,需要用到一種不同於傳統分詞匹配搜尋方案的技術——向量搜尋

向量檢索:

向量檢索是一種將物理世界產生的非結構化資料(如圖片),轉化為結構化的多維向量資料,用這些向量資料標識實體和實體間的關係,再透過計算向量之間的距離找到相似實體的方法。其中,將原始資料(如圖片、文字)轉化為多維向量資料的過程,被成為向量的 embedding 過程。

實際中會遇到的問題

  1. 技術能力不足:企業內部缺乏將圖片轉化為向量的專業技術人員,難以實現有效的圖片搜尋。
  2. 傳統搜尋效果不佳:僅依賴視覺相似度進行圖片查詢效果有限,尤其在倉儲行業,圖片往往相似,難以滿足精準查詢的需求。
  3. 系統維護壓力大:隨著資料量的增長,企業面臨著維護搜尋系統穩定性和控制成本的雙重挑戰。

搭建完整的圖搜服務的實施步驟

  1. 資料預處理:圖片資料向量化
  2. 構建向量索引
  3. 向量相查詢與結果返回

步驟在實際搭建中,會存在一些不可忽視的問題,比如:

  1. 企業是否有足夠的演算法研發人員,進行圖片資料的向量化預處理,並保障模型效果?
  2. 企業是否有經驗豐富的向量搜尋研發人員,完成向量距離計算的引數調整、保障搜尋效果?
  3. 面對資料量逐漸增長,企業能否維護搜尋系統的穩定性,在保障搜尋效能的同時降低成本?

場景舉例

  • 背景:某個從事裝卸搬運倉儲的企業,需要以圖搜圖快速查詢相似貨品,企業只有各倉庫工人拍攝的貨品照片、包裹id等資訊,期望快速搭建圖搜服務。
  • 客戶痛點:
  • 企業不具備將圖片轉化為向量的技術能力
  • 傳統的影像搜尋只查詢圖片之間的視覺相似度,但倉儲企業的圖片類似(都是紙箱圖片),僅透過影像查詢的效果較差,需引入圖片上具體的文字查詢(紙箱上寫的貨品文字資訊)

方案中用到的產品

  • AI搜尋開放平臺
  • 基於阿里雲 OpenSearch 搜尋領域多年累積經驗的平臺產品,對客提供優質的元件化服務。
  • 在本方案中,AI 搜尋開放平臺提供圖片內容 OCR 識別模型服務、向量化模型服務。
  • 阿里雲 OpenSearch 向量檢索版
  • 阿里巴巴自研的大規模分散式向量檢索引擎產品,為客戶提供效能強大、成本低廉的向量檢索服務。
  • 在本方案中,阿里雲 OpenSearch 向量檢索版提供向量檢索引擎,承接資料匯入、索引構建、提供搜尋服務。

方案圖示

操作手冊

前置條件

  1. 成功註冊阿里雲賬號並透過實名認證。
  2. 開通阿里雲賬號並登入控制檯時,會提示先建立 access key 才能繼續使用。

    a、建立及使用應用依賴 access key 引數,主賬號下 access key 引數不能為空。

    b、在為主賬號建立 access key 引數後,還可以再建立 RAM 子賬號 access key 透過 RAM 子賬號進行訪問,RAM 子賬號賦予對應訪問許可權,請參考授權訪問鑑權規則。(ps:子賬號需要賦予AliyunSearchEngineFullAccess、AliyunSearchEngineReadOnlyAccess訪問向量檢索版例項的許可權)。

  3. 需要使用者擁有 VPC 環境,詳情可點選此處進行檢視。

步驟一:購買例項和開通服務

1. 向量檢索版例項

先進入阿里雲 OpenSearch 控制檯,商品版本選擇向量檢索版,根據業務情況進行規格選擇和購買,具體參考購買指南

2. AI搜尋開放平臺服務

進入阿里雲 OpenSearch控制檯,選擇上海區域,在左上角的商品版本選擇 AI 搜尋開放平臺,在服務廣場頁點選立即開通,完成 AI 搜尋開放平臺服務的開通和工作空間建立,具體開通步驟可參考開通指南

在左側導航欄中的找到 API Keys,開通並獲得AI搜尋開放平臺的 API KeyAPI 域名,具體步驟可參考開通指南

步驟二:配置向量檢索版例項

在 阿里雲 OpenSearch 向量檢索版的例項列表頁。

找到新購的向量檢索版例項,其狀態為“待配置”,在完成例項配置後,就可正常搜尋和測試。

配置例項共分為 5 個步驟 :(1.表基礎資訊 2.資料同步 3.欄位配置 4.索引結構 5.確認建立)

1. 表基礎資訊

例項列表頁點選配置後,進入表基礎資訊頁。

4個必填項,需要分別對(表名稱、資料分片數、資料更新資源數、場景模板)進行設定,在場景模板裡請選擇「向量:圖片搜尋」 模板,設定完成後點選下一步。

配置說明:

  • 表名稱: 可以自定義。
  • 資料分片數:請填寫不超過256的正整數, 用於提升全量構建速度、單次查詢效能。
  • 資料更新資源數:資料更新所用資源數,每個索引預設免費提供2個4核8G的更新資源,超出免費額度的資源將產生費用,詳情可參考向量檢索版計費概述。
  • 場景模板:共3個模板可供選擇,包含(1.通用模板、2.向量:圖片搜尋模板、3.向量:文字語義搜尋模板),由於本次是搭建影像搜尋服務的演示,所以選擇的「向量:圖片搜尋」模板。

2. 資料同步

配置全量資料來源,這裡可以根據業務情況進行選擇,本次演示以 API方式為例,勾選後點選下一步。

3. 欄位配置

向量檢索版會根據選擇的場景模板,預置相關欄位,並會將全量資料來源中的欄位,自動匯入欄位列表中。

但由於在 資料同步中我們選擇的是 API方式,所以不會同步全量資料來源中的欄位,除了自動預設的欄位外,我們還可以結合業務情況手動填寫欄位。下圖為「向量:圖片搜尋」 模板場景的 4 個預設欄位。

欄位含義:

  • id(主鍵)
  • source_image(源圖片)
  • namespace(名稱空間)
  • source_image_vector(源圖片向量)

在欄位 source_image 中找到去配置,並點選進入欄位 source_image 資料預處理配置頁。

欄位 source_image 資料預處理配置頁:

  1. 資料來源:有 OSS 物件儲存Base64 編碼的兩種資料型別選項,本次演示選擇 Base64 編碼。
  2. OSS 物件儲存:需要填寫 OSS 路徑,其實就是將圖片存在了 OSS 的資料夾裡面,從 OSS 直接匯入。
  3. Base64 編碼:相當於需要先將圖片進行一次編碼,然後存在資料庫中,或者直接用API方式進行傳輸。
  4. 預處理模板:會根據要進行預處理的資料型別(文字或圖片)而展示不同模板,由於欄位的資料是圖片型別,所以此時預處理模板展示的分別是(1.圖片向量化、2. OCR 圖片文字識別、3. OCR 圖片文字識別+圖片向量化)3種模板。
  5. 服務列表
  6. 選定預處理模板後,自動出現模板下的服務列表,展示該模版下所用到的模型種類
  7. 可選的模型有兩個來源:
  8. 內建模型:模型種類與數量較少,可免費呼叫

    • AI搜尋開放平臺:模型能力豐富,需按呼叫量收費,參見計費方式和計費項;使用前需要先完成AI搜尋開放平臺工作空間和 API Key 開通。
  9. AI 平臺 OCR 圖片文字識別/通用文字向量服務
  10. OCR 圖片文字識別:針對架構圖、分析圖表等圖片資料,AI 搜尋開放平臺提供圖片內容理解服務,可基於多模態大模型對圖片內容進行解析理解以及文字識別,也可基於 OCR 能力對圖片文字進行識別,將文字資訊提取出來,用於圖片檢索及問答等場景。

    • 文字向量化:提供將文字資料轉化為稠密向量形式表達的服務,支援多款不同語言、輸入長度、輸出維度的文字向量模型,可用於資訊檢索、文字分類、相似性比較等場景。
  11. 生成欄位:原始圖片資料經過模型處理後,會被自動轉化為其他格式,生成新的欄位內容
  12. embedding 處理類的服務,預設必須生成欄位。

    • ocr 服務可選是否生成欄位。
  13. 介面呼叫配置:為了成功訪問 AI 搜尋開放平臺,需要完成 工作空間API Key連線域名的設定。

完成欄位 source_image 資料預處理配置頁設定後,返回到欄位配置頁,原先預設欄位中的source_image_vector(源圖片向量)會被替換掉,自動更新兩個的新預設欄位,確認欄位設定資訊無誤後,點選下一步進入索引結構頁。

  • source_image_ocr_vector(源圖片上的文字資訊向量)
  • source_image_vector(源圖片向量)

4. 索引結構

以開頭企業的案例為例,本次索引構建需要分別對圖片向量化索引、圖片中文字的向量化索引進行配置,如果有多個向量欄位,就需要去建多個向量索引。

4.1. 圖片向量索引

在索引結構頁面,進行圖片向量索引配置。

  1. 索引名稱可自定義。
  2. 主鍵欄位已自動填寫完成。
  3. 勾選好建立的向量欄位
  4. 向量維度、實時索引、距離型別、向量索引演算法可以根據業務情況填寫。

向量索引演算法:

4.2. 圖片中的文字向量索引

點選新增向量索引,進行新的向量索引建立。

完成圖片向量索引和文字向量索引配置以後,就可以點選下一步,進入最後的確認建立頁面。

5. 確認建立

點選 確認建立,完成後還需等待2分鐘,返回到 例項列表頁,待例項狀態為“ 正常”後,即可進行後續的搜尋和測試。

步驟三:新增資料和查詢

1. 新增資料

進入例項配置頁,在左側導航欄的向量管理找到新增資料,此時我們需要先進行資料的新增,如果僅是單條資料的新增可以選擇“表單模式”,多條資料的新增則選擇“開發者模式”。

1.1. 開發者模式(新增多條資料)
  1. 選擇開發者模式和表名。
  2. 新增資料,共3個必填項(1. id/主鍵、2. source_image/需 embedding欄位、3. namespace/名稱空間)
  3. 新增完資料後,點選新增,右側提示 "message": "success" ,就代表資料新增成功。

1.2. 表單模式(僅新增單條資料)
  1. 先在右上角選擇表單模式,之後選擇表名。
  2. 對id、source_image、2項進行配置,在 source_image 項中可以選擇圖片或者 base64 編碼方式進行新增。
  3. 內容新增完成後,點選“新增”,當執行結果出現 "message": "success" 說明資料上傳成功。

2. 查詢測試(表單模式)

在左側導航欄找到向量管理的查詢測試 查詢測試同時支援表單模式開發者模式,本次以表單模式為例,進行以圖搜圖和文字搜圖的演示。

2.1. 以圖搜圖
  1. 選擇表單模式、選好對應的表名索引名稱。
  2. Query 型別選擇圖片(可選型別,包含向量/圖片/文字)。
  3. 圖片提供方式選擇上傳圖片檔案(可選方式,包含上傳圖片檔案/Base64編碼),上傳完成後,點選搜尋,就能在搜尋結果欄檢視結果了。
  4. 由於本次採用的距離型別是歐式距離(SquareEuclidean),所以距離分數越小,表示搜尋的內容就越相近。

2.2. 文字搜圖
  1. 完成對表單模式表名索引名稱的選擇。
  2. Query 型別需要選擇文字。
  3. 舉例在文字內輸入“XXX”的內容,輸入完成後,點選搜尋。

透過結合 阿里雲 OpenSearch 向量檢索版與 AI 搜尋開放平臺的強大能力,企業能夠輕鬆搭建高效的圖片搜尋服務,迅速解決傳統圖片查詢中的技術難題與效率瓶頸。該方案不僅降低了技術門檻,使得沒有專業技術團隊的企業也能快速實現以圖搜圖和以文搜圖的功能,還透過智慧化的向量處理與索引構建,提升了查詢的準確性與響應速度。

相關文章