🚀 免費嘗試 Zilliz Cloud,完全托管的 Milvus,體驗速度提升 10 倍!立即嘗試

milvus-logo
LFAI
  • Home
  • Blog
  • 感謝 Milvus,任何人都能建立超過 10 億張圖片的向量資料庫

感謝 Milvus,任何人都能建立超過 10 億張圖片的向量資料庫

  • Scenarios
November 11, 2020
milvus

運算能力的提升和運算成本的下降,使得機器規模的分析和人工智能 (AI) 比以往任何時候都更容易獲得。實際上,這意味著只需要一台伺服器和 10 行代碼,就可以建立一個能夠即時查詢超過 10 億張圖片的反向圖片搜尋引擎。本文將解釋如何利用開放原始碼向量資料管理平台Milvus 來建立強大的非結構化資料處理與分析系統,以及讓這一切成為可能的底層技術。

跳至:

AI 如何實現非結構化資料分析?

一個經常被引用的統計數據是,全球 80% 的資料都是非結構化的,但只有 1% 得到分析。非結構化資料,包括影像、視訊、音訊和自然語言,並不遵循預先定義的模型或組織方式。這使得處理和分析大型非結構化資料集變得困難。隨著智慧型手機和其他連線裝置的普及,將非結構化資料的產生推向新的高峰,企業也逐漸意識到從這些模糊的資訊中所獲得的洞察力有多重要。

數十年來,電腦科學家們開發了專門用於組織、搜尋和分析特定資料類型的索引演算法。對於結構化資料,有位圖 (bitmap)、哈希表 (hash tables) 和 B 樹 (B-tree),這些常用於 Oracle 和 IBM 等科技巨擘所開發的關聯式資料庫。對於半結構化資料,倒轉式索引演算法是標準演算法,可在SolrElasticSearch 等熱門搜尋引擎中找到。然而,非結構化資料的索引演算法則依賴於計算密集的人工智慧,而人工智慧在過去十年才開始普及。

神經網路將非結構化資料轉換為電腦友善的特徵向量

使用神經網路(例如CNNRNNBERT)可將非結構性資料轉換為特徵向量(又稱嵌入),特徵向量是一串整數或浮點數。這種數值資料格式更容易被機器處理和分析。將非結構化的資料嵌入到特徵向量中,然後用歐氏距離或余弦相似度等方法計算向量之間的相似度,就可以建立跨越反向圖像搜尋、視訊搜尋、自然語言處理 (NLP) 等應用程式。

Blog_Thanks to AI, Anyone Can Build a Search Engine for 1+ Billion Images_2.jpeg 博客_有了人工智能,任何人都可以為十億張以上的圖片建立搜尋引擎_2.jpeg

計算向量相似性是一個相對簡單的過程,需要依賴既有的演算法。然而,非結構化資料集即使在轉換成特徵向量之後,通常也會比傳統的結構化及半結構化資料集大上幾個數量級。要有效且精確地查詢大規模的非結構化資料,向量相似性搜尋所需的儲存空間和運算能力是相當複雜的。 不過,如果可以犧牲某種程度的精確度,有各種近似近鄰 (ANN) 搜尋演算法可以大幅改善高維度大規模資料集的查詢效率。這些 ANN 演算法透過將類似向量聚類在一起來降低儲存需求和計算負載,進而加快向量搜尋的速度。常用的演算法包括樹狀演算法、圖形演算法和組合 ANN。

什麼是向量資料管理平台?

向量資料管理平台是專為儲存、處理和分析大量向量資料集而設計的應用程式。這些工具的設計目的在於輕易地與大量資料連接,並包含簡化向量資料管理的功能。遺憾的是,很少有系統既靈活又強大,足以解決現代的大數據挑戰。Milvus 是由Zilliz發起,並於 2019 年以開放原始碼授權釋出的向量資料管理平台,試圖填補這個空白。

向量資料管理的現有方法有哪些限制?

建立非結構化資料分析系統的常見方式,是將 ANN 等演算法與 Facebook AI Similarity Search (Faiss) 等開源實作函式庫搭配使用。由於多種限制,這些演算法與實作函式庫的組合並不等同於 Milvus 之類的完整向量資料管理系統。用於管理向量資料的現有技術面臨以下問題:

  1. 彈性:預設情況下,現有系統通常會將所有資料儲存在主記憶體中,這表示它們無法在多台機器上執行,而且不適合處理大量資料集。
  2. 動態資料處理:一旦將資料輸入現有系統,通常會假設資料是靜態的,這使得動態資料的處理變得複雜,也使得近乎即時的搜尋變得不可能。
  3. 進階查詢處理:大多數工具都不支援進階查詢處理 (例如屬性篩選和多向量查詢),而這對建立有用的相似性搜尋引擎是非常重要的。
  4. 異質運算最佳化:很少有平台能同時在 CPU 和 GPU(不包括 Faiss)上為異質系統架構提供最佳化,導致效率降低。

Milvus 嘗試克服所有這些限制。本系統透過提供多種應用程式介面 (包括 Python、Java、Go、C++ 的 SDK 及 RESTful APIs)、多種向量索引類型 (例如:基於量化的索引及基於圖的索引) 及進階查詢處理的支援,增強彈性。Milvus 使用日誌結構合併樹 (LSM tree) 來處理動態向量資料,讓資料的插入與刪除保持高效率,並能即時進行搜尋。Milvus 也針對現代 CPU 和 GPU 上的異質運算架構提供最佳化,讓開發人員可以針對特定的情境、資料集和應用環境調整系統。

Blog_Thanks to AI, Anyone Can Build a Search Engine for 1+ Billion Images_3.png 部落格_拜人工智慧所賜,任何人都能為十億張以上的圖片建立搜尋引擎_3.png

Milvus 使用各種 ANN 索引技術,能夠達到 99% 的前五名召回率。該系統還能夠每分鐘載入一百多萬個資料項目。這使得在 10 億張圖片上執行反向圖片搜尋時,查詢時間少於 1 秒。由於 Milvus 是雲端原生應用程式,可作為部署在多個節點的分散式系統運作,因此可以輕鬆可靠地在包含 100 億甚至 1000 億張圖片的資料集上達到類似效能。此外,該系統並不限於影像資料,應用範圍涵蓋電腦視覺、會話式 AI、推薦系統、新藥發現等。

如上文所述,Milvus 這類功能強大的向量資料管理平台搭配近似近鄰演算法,可在大量非結構化資料上進行相似性搜尋。這項技術可用於開發跨領域的應用程式。以下我們將簡單介紹向量資料管理工具和向量類似性搜尋的幾個常見用例。

Google 等主要搜尋引擎已經提供使用者依圖像搜尋的選項。此外,電子商務平台也意識到這項功能為線上購物者帶來的好處,Amazon 已將圖片搜尋納入其智慧型手機應用程式中。

Blog_Thanks to AI, Anyone Can Build a Search Engine for 1+ Billion Images_4.png 部落格_藉由人工智慧,任何人都能建立超過十億張圖片的搜尋引擎_4.png

Milvus 等開放原始碼軟體讓任何企業都能建立自己的反向圖片搜尋系統,降低了這項需求日增的功能的進入門檻。開發人員可以使用預先訓練好的 AI 模型,將自己的圖片資料集轉換成向量,然後再利用 Milvus 來實現透過圖片搜尋類似產品的功能。

視訊推薦系統

YouTube 等大型線上視訊平台每分鐘可接收500 小時的使用者產生內容,因此在內容推薦方面有其獨特的需求。為了在考慮到新上傳內容的情況下進行相關的即時推薦,視訊推薦系統必須提供快如閃電的查詢時間和有效的動態資料處理。透過將關鍵畫面轉換為向量,然後將結果饋送至 Milvus,數十億的影片就可以近乎即時地進行搜尋和推薦。

自然語言處理 (NLP)

自然語言處理是人工智慧的一個分支,其目的在於建立可以詮釋人類語言的系統。將文字資料轉換為向量後,Milvus 可用於快速識別和移除重複文字、強化語意搜尋,甚至建立智慧型寫作助理。有效的向量資料管理平台有助於最大化任何 NLP 系統的效用。

進一步瞭解 Milvus

如果您想進一步瞭解 Milvus,請造訪我們的網站。此外,我們的Bootcamp提供了多種教學,包括設定 Milvus、基準測試和建立各種不同應用程式的說明。如果您對向量資料管理、人工智慧和大資料挑戰感興趣,請加入我們在GitHub上的開放原始碼社群,並與我們在Slack 上交談。

想要瞭解更多關於建立影像搜尋系統的資訊嗎?查看此案例研究:

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    繼續閱讀