如何使用向量資料庫解決複雜問題

譯者 | 李睿

如今的資料世界正在飛速變化,但許多企業似乎還未跟上這一趨勢的腳步。有行業專家預測,到2025年,80%或以上的資料將是非結構化資料。但德勤的一項調查顯示,只有18%的企業對非結構化資料分析做好了準備。這意味著絕大多數企業擁有的大部分資料都無法利用,而這也就突顯了擁有正確工具的重要性。

如何使用向量資料庫解決複雜問題

有很多資料是相當簡單易懂的,比如關鍵字、指標、字串和JSON等結構化物件都是如此。這類資料可以透過傳統資料庫組織管理,並藉助許多搜尋引擎進行搜尋,同時也可以有效回答相對簡單的問題,比如:

哪些文件包含這組單詞?

哪些專案符合這些客觀過濾標準?

可是,複雜的資料更難解釋也更有趣,透過回答複雜問題也可以為業務釋放更多價值。例如:

哪些歌曲與“喜歡的”歌曲樣本相似?

關於給定主題有哪些可用的檔案?

哪些安全警報需要關注,哪些可以忽略?

哪些專案符合自然語言描述?

回答這樣的問題通常需要更復雜、結構化程度更低的資料,比如文件、純文字段落、影片、影象、音訊檔案、工作流程和系統生成的警報等。這些形式的資料很難適配傳統SQL風格的資料庫,簡單的搜尋引擎也可能無法發現它們。為了組織和搜尋這些型別的資料,需要將資料轉換為計算機可以處理的格式。

向量的力量

好在機器學習模型允許建立文字、音訊、影象和其他形式的複雜資料數字表示。這些數字表示或向量嵌入旨在使語義相似的專案對映到附近的表示。當被視為高維空間中的點時,兩種表示的遠近取決於它們之間的角度或距離。

機器學習模型使人類與機器的互動方式更類似於人類之間的互動方式。對於文字,這意味著使用者可以查詢自然語言問題——查詢將轉換為向量,該向量使用將所有搜尋項轉換為向量的相同嵌入模型。然後查詢向量將與所有物件向量進行比較,以找到最接近的匹配項。同樣,影象或音訊檔案也可以轉換為向量,使人們能夠根據向量的接近程度(或數學相似性)搜尋匹配項。

如今,將資料轉換為向量可比幾年前簡單多了,而這要歸功於一些可用的向量轉換器模型。這些模型效能良好,並且通常按原樣工作。Word2Vec、GLoVE和BERT等句子和文字轉換器模型都是出色的通用向量嵌入器,影象則可以使用VGG和Inception等模型嵌入。音訊記錄可以使用音訊視覺表示上的影象嵌入轉換為向量。這些模型都很成熟,可以針對特定的應用和知識領域進行微調。

有了現成可用的向量轉換器模型,問題將從如何將複雜資料轉換為向量變成如何組織和搜尋它們。

首先,進入向量資料庫。向量資料庫專門設計了用於處理向量嵌入的獨特特徵。它們索引資料的方式可以很容易地根據物件的數值搜尋和檢索物件。

什麼是向量資料庫?

向量資料庫可以定義為一種工具,它用於索引和儲存向量嵌入,以實現快速檢索和相似性搜尋,並具有元資料過濾和水平縮放等功能。向量嵌入或者前面提到的向量是指資料物件的數字表示。向量資料庫將向量組織起來,以便它們之間可以快速比較或與搜尋查詢的向量表示進行比較。

向量資料庫是專門為非結構化資料設計的,但它也有一些傳統關係型資料庫所需的功能。它們可以對儲存的向量執行CRUD操作(建立、讀取、更新和刪除),提供資料永續性,並透過元資料過濾查詢。當將向量搜尋與資料庫操作結合起來時,就會得到一個可以用於多種應用程式並具有強大功能的工具。

雖然這項技術仍在興起階段,但向量資料庫已經為世界上一些大技術平臺提供了助力。比如,Spotify根據人們喜歡的歌曲、收聽歷史和類似的音樂檔案提供個性化的音樂推薦;亞馬遜使用向量來推薦與客戶正在瀏覽的專案互補的產品;谷歌旗下的YouTube則可根據使用者當前觀看的影片和過往歷史的相似性提供相關的全新內容,讓觀眾一直留駐在平臺上觀看。向量資料庫技術不斷改進,也為人們帶來了更優的效能和更個性化的使用者體驗。

如今,任何企業都可以實現向量資料庫。開源專案可以助力想要建立和維護自己的向量資料庫的組織,託管服務可以幫助想把這項工作外包出去並把關注點放在其他方面的企業。

本文將探討向量資料庫的重要特性以及最佳使用方式。

向量資料庫的常見應用

相似度搜索或“向量搜尋”是向量資料庫最常見的用例。向量搜尋將索引中多個向量的接近程度與搜尋查詢或主題項進行比較。為了找到相似的匹配項,可以使用用於建立向量嵌入的相同機器學習嵌入模型,將主題項或查詢轉換為向量。向量資料庫比較這些向量的接近度以找到最接近的匹配項,並提供相關的搜尋結果。

向量資料庫應用的一些示例包括:

語義搜尋。

搜尋文字和文件時通常有兩種選擇:詞法搜尋或語義搜尋。詞法搜尋查詢詞串、確切詞或詞部分的匹配項。在另一方面,語義搜尋使用搜索查詢的含義將其與候選物件進行比較。自然語言處理(NLP)模型將文字和整個文件轉換為向量嵌入,這些模型試圖表示單詞的場景及其所傳達的含義。然後,使用者可以使用自然語言和相同的模型進行查詢,以查詢相關結果,而無需知道特定的關鍵字。

對音訊、影片、影象和其他型別的非結構化資料進行相似性搜尋。

這些資料型別很難用與傳統資料庫相容的結構化資料來很好地描述。終端使用者可能很難知道資料是如何組織的,或者哪些屬性可以幫助他們識別專案。使用者可以使用相似的物件和相同的機器學習模型查詢資料庫,以便更輕鬆地比較和找到相似的匹配項。

重複資料刪除和記錄匹配。

考慮一個從目錄中刪除重複專案的應用程式,使目錄更有用和相關。如果重複項的組織方式相似並登記為匹配項,那麼傳統資料庫就可以做到這一點,但情況並非總是如此。向量資料庫允許人們使用機器學習模型來確定相似性,這通常可以避免不準確或人工的分類工作。

推薦和排名引擎。

類似的專案通常會提供很好的建議。例如,消費者經常發現檢視相似或建議的產品、內容或服務的比較很有用,它可以幫助消費者找到自己本來不會發現或考慮的新產品。

異常檢測。

向量資料庫可以找到與所有其他物件非常不同的異常值。一個人可能有一百萬種不同但預期的模式,而異常可能與這百萬種預期模式中的任何一種都不同。此類異常對於IT運營、安全威脅評估和欺詐檢測非常有價值。

向量資料庫的關鍵功能

(1)向量索引和相似性搜尋

向量資料庫使用專門設計用於有效索引和檢索向量的演算法。他們使用“最近鄰”演算法來評估相似物件彼此或搜尋查詢的接近程度。一個查詢向量與100個其他向量之間的距離可以相當容易地計算出來,但要計算1億個向量的距離就是另一回事了。

近似最近鄰(ANN)搜尋透過近似和檢索相似向量的最佳猜測來解決延遲問題。近似最近鄰(ANN)不能保證一組精確的最佳匹配,但它在高準確性和更快效能之間取得了平衡。用於構建近似最近鄰(ANN)索引的一些最常用的技術包括分層導航小世界(HNSW)、乘積量化(PQ)和倒排檔案索引(IVF)。大多數向量資料庫使用這些的組合來生成針對性能最佳化的複合索引。

(2)單級過濾

過濾是一種有用的技術,可根據所選元資料限制搜尋結果以增加相關性,通常在最近鄰搜尋之前或之後完成。預過濾首先在近似最近鄰(ANN)搜尋之前收縮資料集,但這通常與領先的近似最近鄰(ANN)演算法不相容。一種解決方法是先縮小資料集,然後執行暴力精確搜尋。在對整個資料集進行近似最近鄰(ANN)搜尋後,後過濾會縮小結果。而後過濾利用近似最近鄰(ANN)演算法的速度,但可能無法返回足夠的結果。比如這樣一種情況,過濾器僅向下選擇少數不太可能從整個資料集的搜尋中返回的候選者。

單級過濾結合了預過濾的準確性、相關性以及幾乎與後過濾一樣快的近似最近鄰(ANN)速度。透過將向量和元資料索引合併到一個索引中,單級過濾提供了兩種方法的最佳選擇。

(3)API

與許多託管服務一樣,應用程式通常透過API與向量資料庫進行互動。這使企業可以專注於自己的應用程式,而不必擔心管理自己的向量資料庫的效能、安全性和可用性挑戰。

API呼叫使開發人員和應用程式可以輕鬆上傳、查詢、獲取結果或刪除資料。

(4)混合儲存

向量資料庫通常將所有向量資料儲存在記憶體中,以便快速查詢和檢索。但是對於超過10億個搜尋項的應用程式,僅記憶體成本就會使許多向量資料庫專案停滯不前。企業可以選擇將向量儲存在磁碟上,但這通常以更嚴重的搜尋延遲為代價。

使用混合儲存,壓縮的向量索引儲存在記憶體中,完整的向量索引儲存在磁碟上。記憶體索引可以將搜尋空間縮小到磁碟上全解析度索引內的一小組候選項。混合儲存允許企業在相同的資料佔用空間中儲存更多向量,透過提高整體儲存容量來降低執行向量資料庫的成本,而不會對資料庫效能產生負面影響。

(5)對複雜資料的洞察

在資料形態不斷髮展,複雜資料增長迅速的同時,多數企業目前還沒有能力對其進行分析。大多數企業已經使用的傳統資料庫不適合處理此類資料,因此對組織、儲存和分析非結構化資料的新方法的需求與日俱增。

要解決複雜問題就需要能夠搜尋和分析複雜資料,而向量資料庫無疑是能夠充分挖掘這些複雜資料並獲取洞見的關鍵工具。

原文標題:

Solving complex problems with vector databases

,作者:Dave Bergstein

TAG: 向量資料庫搜尋資料索引