譯者 | 李睿
如今的數(shù)據(jù)世界正在飛速變化,但許多企業(yè)似乎還未跟上這一趨勢的腳步。有行業(yè)專家預(yù)測,到2025年,80%或以上的數(shù)據(jù)將是非結(jié)構(gòu)化數(shù)據(jù)。但德勤的一項(xiàng)調(diào)查顯示,只有18%的企業(yè)對非結(jié)構(gòu)化數(shù)據(jù)分析做好了準(zhǔn)備。這意味著絕大多數(shù)企業(yè)擁有的大部分?jǐn)?shù)據(jù)都無法利用,而這也就突顯了擁有正確工具的重要性。
有很多數(shù)據(jù)是相當(dāng)簡單易懂的,比如關(guān)鍵字、指標(biāo)、字符串和JSON等結(jié)構(gòu)化對象都是如此。這類數(shù)據(jù)可以通過傳統(tǒng)數(shù)據(jù)庫組織管理,并借助許多搜索引擎進(jìn)行搜索,同時也可以有效回答相對簡單的問題,比如:
哪些文檔包含這組單詞?
哪些項(xiàng)目符合這些客觀過濾標(biāo)準(zhǔn)?
可是,復(fù)雜的數(shù)據(jù)更難解釋也更有趣,通過回答復(fù)雜問題也可以為業(yè)務(wù)釋放更多價值。例如:
哪些歌曲與“喜歡的”歌曲樣本相似?
關(guān)于給定主題有哪些可用的文件?
哪些安全警報需要關(guān)注,哪些可以忽略?
哪些項(xiàng)目符合自然語言描述?
回答這樣的問題通常需要更復(fù)雜、結(jié)構(gòu)化程度更低的數(shù)據(jù),比如文檔、純文本段落、視頻、圖像、音頻文件、工作流程和系統(tǒng)生成的警報等。這些形式的數(shù)據(jù)很難適配傳統(tǒng)SQL風(fēng)格的數(shù)據(jù)庫,簡單的搜索引擎也可能無法發(fā)現(xiàn)它們。為了組織和搜索這些類型的數(shù)據(jù),需要將數(shù)據(jù)轉(zhuǎn)換為計算機(jī)可以處理的格式。
向量的力量
好在機(jī)器學(xué)習(xí)模型允許創(chuàng)建文本、音頻、圖像和其他形式的復(fù)雜數(shù)據(jù)數(shù)字表示。這些數(shù)字表示或向量嵌入旨在使語義相似的項(xiàng)目映射到附近的表示。當(dāng)被視為高維空間中的點(diǎn)時,兩種表示的遠(yuǎn)近取決于它們之間的角度或距離。
機(jī)器學(xué)習(xí)模型使人類與機(jī)器的互動方式更類似于人類之間的互動方式。對于文本,這意味著用戶可以查詢自然語言問題——查詢將轉(zhuǎn)換為向量,該向量使用將所有搜索項(xiàng)轉(zhuǎn)換為向量的相同嵌入模型。然后查詢向量將與所有對象向量進(jìn)行比較,以找到最接近的匹配項(xiàng)。同樣,圖像或音頻文件也可以轉(zhuǎn)換為向量,使人們能夠根據(jù)向量的接近程度(或數(shù)學(xué)相似性)搜索匹配項(xiàng)。
如今,將數(shù)據(jù)轉(zhuǎn)換為向量可比幾年前簡單多了,而這要?dú)w功于一些可用的向量轉(zhuǎn)換器模型。這些模型性能良好,并且通常按原樣工作。Word2Vec、GLoVE和BERT等句子和文本轉(zhuǎn)換器模型都是出色的通用向量嵌入器,圖像則可以使用VGG和Inception等模型嵌入。音頻記錄可以使用音頻視覺表示上的圖像嵌入轉(zhuǎn)換為向量。這些模型都很成熟,可以針對特定的應(yīng)用和知識領(lǐng)域進(jìn)行微調(diào)。
有了現(xiàn)成可用的向量轉(zhuǎn)換器模型,問題將從如何將復(fù)雜數(shù)據(jù)轉(zhuǎn)換為向量變成如何組織和搜索它們。
首先,進(jìn)入向量數(shù)據(jù)庫。向量數(shù)據(jù)庫專門設(shè)計了用于處理向量嵌入的獨(dú)特特征。它們索引數(shù)據(jù)的方式可以很容易地根據(jù)對象的數(shù)值搜索和檢索對象。
什么是向量數(shù)據(jù)庫?
向量數(shù)據(jù)庫可以定義為一種工具,它用于索引和存儲向量嵌入,以實(shí)現(xiàn)快速檢索和相似性搜索,并具有元數(shù)據(jù)過濾和水平縮放等功能。向量嵌入或者前面提到的向量是指數(shù)據(jù)對象的數(shù)字表示。向量數(shù)據(jù)庫將向量組織起來,以便它們之間可以快速比較或與搜索查詢的向量表示進(jìn)行比較。
向量數(shù)據(jù)庫是專門為非結(jié)構(gòu)化數(shù)據(jù)設(shè)計的,但它也有一些傳統(tǒng)關(guān)系型數(shù)據(jù)庫所需的功能。它們可以對存儲的向量執(zhí)行CRUD操作(創(chuàng)建、讀取、更新和刪除),提供數(shù)據(jù)持久性,并通過元數(shù)據(jù)過濾查詢。當(dāng)將向量搜索與數(shù)據(jù)庫操作結(jié)合起來時,就會得到一個可以用于多種應(yīng)用程序并具有強(qiáng)大功能的工具。
雖然這項(xiàng)技術(shù)仍在興起階段,但向量數(shù)據(jù)庫已經(jīng)為世界上一些大技術(shù)平臺提供了助力。比如,Spotify根據(jù)人們喜歡的歌曲、收聽歷史和類似的音樂檔案提供個性化的音樂推薦;亞馬遜使用向量來推薦與客戶正在瀏覽的項(xiàng)目互補(bǔ)的產(chǎn)品;谷歌旗下的YouTube則可根據(jù)用戶當(dāng)前觀看的視頻和過往歷史的相似性提供相關(guān)的全新內(nèi)容,讓觀眾一直留駐在平臺上觀看。向量數(shù)據(jù)庫技術(shù)不斷改進(jìn),也為人們帶來了更優(yōu)的性能和更個性化的用戶體驗(yàn)。
如今,任何企業(yè)都可以實(shí)現(xiàn)向量數(shù)據(jù)庫。開源項(xiàng)目可以助力想要建立和維護(hù)自己的向量數(shù)據(jù)庫的組織,托管服務(wù)可以幫助想把這項(xiàng)工作外包出去并把關(guān)注點(diǎn)放在其他方面的企業(yè)。
本文將探討向量數(shù)據(jù)庫的重要特性以及最佳使用方式。
向量數(shù)據(jù)庫的常見應(yīng)用
相似度搜索或“向量搜索”是向量數(shù)據(jù)庫最常見的用例。向量搜索將索引中多個向量的接近程度與搜索查詢或主題項(xiàng)進(jìn)行比較。為了找到相似的匹配項(xiàng),可以使用用于創(chuàng)建向量嵌入的相同機(jī)器學(xué)習(xí)嵌入模型,將主題項(xiàng)或查詢轉(zhuǎn)換為向量。向量數(shù)據(jù)庫比較這些向量的接近度以找到最接近的匹配項(xiàng),并提供相關(guān)的搜索結(jié)果。
向量數(shù)據(jù)庫應(yīng)用的一些示例包括:
語義搜索。搜索文本和文檔時通常有兩種選擇:詞法搜索或語義搜索。詞法搜索查找詞串、確切詞或詞部分的匹配項(xiàng)。在另一方面,語義搜索使用搜索查詢的含義將其與候選對象進(jìn)行比較。自然語言處理(NLP)模型將文本和整個文檔轉(zhuǎn)換為向量嵌入,這些模型試圖表示單詞的場景及其所傳達(dá)的含義。然后,用戶可以使用自然語言和相同的模型進(jìn)行查詢,以查找相關(guān)結(jié)果,而無需知道特定的關(guān)鍵字。
對音頻、視頻、圖像和其他類型的非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行相似性搜索。這些數(shù)據(jù)類型很難用與傳統(tǒng)數(shù)據(jù)庫兼容的結(jié)構(gòu)化數(shù)據(jù)來很好地描述。最終用戶可能很難知道數(shù)據(jù)是如何組織的,或者哪些屬性可以幫助他們識別項(xiàng)目。用戶可以使用相似的對象和相同的機(jī)器學(xué)習(xí)模型查詢數(shù)據(jù)庫,以便更輕松地比較和找到相似的匹配項(xiàng)。
重復(fù)數(shù)據(jù)刪除和記錄匹配。考慮一個從目錄中刪除重復(fù)項(xiàng)目的應(yīng)用程序,使目錄更有用和相關(guān)。如果重復(fù)項(xiàng)的組織方式相似并登記為匹配項(xiàng),那么傳統(tǒng)數(shù)據(jù)庫就可以做到這一點(diǎn),但情況并非總是如此。向量數(shù)據(jù)庫允許人們使用機(jī)器學(xué)習(xí)模型來確定相似性,這通??梢员苊獠粶?zhǔn)確或人工的分類工作。
推薦和排名引擎。類似的項(xiàng)目通常會提供很好的建議。例如,消費(fèi)者經(jīng)常發(fā)現(xiàn)查看相似或建議的產(chǎn)品、內(nèi)容或服務(wù)的比較很有用,它可以幫助消費(fèi)者找到自己本來不會發(fā)現(xiàn)或考慮的新產(chǎn)品。
異常檢測。向量數(shù)據(jù)庫可以找到與所有其他對象非常不同的異常值。一個人可能有一百萬種不同但預(yù)期的模式,而異??赡芘c這百萬種預(yù)期模式中的任何一種都不同。此類異常對于IT運(yùn)營、安全威脅評估和欺詐檢測非常有價值。
向量數(shù)據(jù)庫的關(guān)鍵功能
(1)向量索引和相似性搜索
向量數(shù)據(jù)庫使用專門設(shè)計用于有效索引和檢索向量的算法。他們使用“最近鄰”算法來評估相似對象彼此或搜索查詢的接近程度。一個查詢向量與100個其他向量之間的距離可以相當(dāng)容易地計算出來,但要計算1億個向量的距離就是另一回事了。
近似最近鄰(ANN)搜索通過近似和檢索相似向量的最佳猜測來解決延遲問題。近似最近鄰(ANN)不能保證一組精確的最佳匹配,但它在高準(zhǔn)確性和更快性能之間取得了平衡。用于構(gòu)建近似最近鄰(ANN)索引的一些最常用的技術(shù)包括分層導(dǎo)航小世界(HNSW)、乘積量化(PQ)和倒排文件索引(IVF)。大多數(shù)向量數(shù)據(jù)庫使用這些的組合來生成針對性能優(yōu)化的復(fù)合索引。
(2)單級過濾
過濾是一種有用的技術(shù),可根據(jù)所選元數(shù)據(jù)限制搜索結(jié)果以增加相關(guān)性,通常在最近鄰搜索之前或之后完成。預(yù)過濾首先在近似最近鄰(ANN)搜索之前收縮數(shù)據(jù)集,但這通常與領(lǐng)先的近似最近鄰(ANN)算法不兼容。一種解決方法是先縮小數(shù)據(jù)集,然后執(zhí)行暴力精確搜索。在對整個數(shù)據(jù)集進(jìn)行近似最近鄰(ANN)搜索后,后過濾會縮小結(jié)果。而后過濾利用近似最近鄰(ANN)算法的速度,但可能無法返回足夠的結(jié)果。比如這樣一種情況,過濾器僅向下選擇少數(shù)不太可能從整個數(shù)據(jù)集的搜索中返回的候選者。
單級過濾結(jié)合了預(yù)過濾的準(zhǔn)確性、相關(guān)性以及幾乎與后過濾一樣快的近似最近鄰(ANN)速度。通過將向量和元數(shù)據(jù)索引合并到一個索引中,單級過濾提供了兩種方法的最佳選擇。
(3)API
與許多托管服務(wù)一樣,應(yīng)用程序通常通過API與向量數(shù)據(jù)庫進(jìn)行交互。這使企業(yè)可以專注于自己的應(yīng)用程序,而不必?fù)?dān)心管理自己的向量數(shù)據(jù)庫的性能、安全性和可用性挑戰(zhàn)。
API調(diào)用使開發(fā)人員和應(yīng)用程序可以輕松上傳、查詢、獲取結(jié)果或刪除數(shù)據(jù)。
(4)混合存儲
向量數(shù)據(jù)庫通常將所有向量數(shù)據(jù)存儲在內(nèi)存中,以便快速查詢和檢索。但是對于超過10億個搜索項(xiàng)的應(yīng)用程序,僅內(nèi)存成本就會使許多向量數(shù)據(jù)庫項(xiàng)目停滯不前。企業(yè)可以選擇將向量存儲在磁盤上,但這通常以更嚴(yán)重的搜索延遲為代價。
使用混合存儲,壓縮的向量索引存儲在內(nèi)存中,完整的向量索引存儲在磁盤上。內(nèi)存索引可以將搜索空間縮小到磁盤上全分辨率索引內(nèi)的一小組候選項(xiàng)?;旌洗鎯υ试S企業(yè)在相同的數(shù)據(jù)占用空間中存儲更多向量,通過提高整體存儲容量來降低運(yùn)行向量數(shù)據(jù)庫的成本,而不會對數(shù)據(jù)庫性能產(chǎn)生負(fù)面影響。
(5)對復(fù)雜數(shù)據(jù)的洞察
在數(shù)據(jù)形態(tài)不斷發(fā)展,復(fù)雜數(shù)據(jù)增長迅速的同時,多數(shù)企業(yè)目前還沒有能力對其進(jìn)行分析。大多數(shù)企業(yè)已經(jīng)使用的傳統(tǒng)數(shù)據(jù)庫不適合處理此類數(shù)據(jù),因此對組織、存儲和分析非結(jié)構(gòu)化數(shù)據(jù)的新方法的需求與日俱增。
要解決復(fù)雜問題就需要能夠搜索和分析復(fù)雜數(shù)據(jù),而向量數(shù)據(jù)庫無疑是能夠充分挖掘這些復(fù)雜數(shù)據(jù)并獲取洞見的關(guān)鍵工具。
原文標(biāo)題:Solving complex problems with vector databases,作者:Dave Bergstein
關(guān)鍵詞: 如何使用向量數(shù)據(jù)庫解決復(fù)雜問題 機(jī)器學(xué)習(xí)模