如何使用向量數據庫解決復雜問題
譯文譯者 | 李睿
審校 | 梁策 孫淑娟
如今的數據世界正在飛速變化,但許多企業似乎還未跟上這一趨勢的腳步。有行業專家預測,到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