隨著大語言模型的興起,向量數(shù)據(jù)庫正愈發(fā)受到人們的關注。作為對向量數(shù)據(jù)庫的一名小白,近期簡單對這一新技術(shù)方向做了些了解,特分享給大家。
在數(shù)學中,向量是有大小和方向的量,可以使用帶箭頭的線段表示,箭頭指向即為向量的方向,線段的長度表示向量的大小。兩個向量的距離或者相似性可以通過歐式距離、余弦距離等得到。
向量數(shù)據(jù)是一種數(shù)學表示,用一組(多個維度)有序的數(shù)值表示一個對象或數(shù)據(jù)點。在向量數(shù)據(jù)中,每個維度代表了向量的一個特征或?qū)傩浴@纾绻紤]一個二維向量數(shù)據(jù)集,每個向量可以表示平面上的一個點,其中第一個維度表示橫坐標,第二個維度表示縱坐標。實際只要維度夠多,就能夠?qū)⑺惺挛锒紖^(qū)分開來,世間萬物都可以用一個多維坐標系來表示,它們都在一個高維的特征空間中對應著一個坐標點。在生活中,向量數(shù)據(jù)在各種領域中得到廣泛應用,特別是在機器學習、數(shù)據(jù)挖掘和模式識別等領域。它可以表示各種類型的數(shù)據(jù),如圖像、音頻、文本、用戶行為、傳感器數(shù)據(jù)等。
簡而言之,向量表示是一種將非結(jié)構(gòu)化的數(shù)據(jù)轉(zhuǎn)換為嵌入向量的技術(shù),通過多維度向量數(shù)值表述某個對象或事物的屬性或者特征。通過嵌入技術(shù),任何圖像、聲音、文本都可以被表達為一個高維的向量。
如果鍵值、文檔、圖數(shù)據(jù)一樣,向量數(shù)據(jù)也需要一種專門的載體來承擔。向量數(shù)據(jù)庫是一種專門用于存儲、管理和搜索向量數(shù)據(jù)的數(shù)據(jù)庫。它以向量的形式存儲數(shù)據(jù),其中向量是抽象實體(如圖像、音頻文件、文本等)的數(shù)學表示;并支持使用專門的算法來支持向量數(shù)據(jù)搜索和分析。與傳統(tǒng)數(shù)據(jù)庫相比,向量數(shù)據(jù)庫使用向量化計算,能夠高速地處理大規(guī)模的復雜數(shù)據(jù);并可以處理高維數(shù)據(jù),例如圖像、音頻和視頻等,解決傳統(tǒng)關系型數(shù)據(jù)庫中的痛點。
向量數(shù)據(jù)庫,具有如下核心特點:
向量數(shù)據(jù)之前已經(jīng)得到廣泛應用,包括:推薦系統(tǒng)、圖像檢索、自然語言處理、人臉識別和圖像搜索、音頻識別、實時數(shù)據(jù)分析、物聯(lián)網(wǎng)以及生物信息學等諸多場景。ChatGPT的橫空出世,帶動了新一波生成式AI的投資浪潮,也帶火了向量數(shù)據(jù)庫。2023年3月,英偉達CEO黃仁勛首次提及向量數(shù)據(jù)庫,強調(diào)了向量數(shù)據(jù)庫對于構(gòu)建專有大模型的重要性,也催生了一波投資浪潮。
目前,市場上的涌現(xiàn)出一批向量數(shù)據(jù)庫。技術(shù)原理上,一種是關系型數(shù)據(jù)庫或NoSQL數(shù)據(jù)庫,增加向量嵌入存儲,但它們最初都沒有設計用于存儲和提供這種類型的數(shù)據(jù)。例如最為常見的pgvector插件,可以通過嵌入方式在PostgreSQL數(shù)據(jù)支持存儲和使用。另一種是原生的向量數(shù)據(jù)庫,即在誕生之初就定位為專項數(shù)據(jù)庫產(chǎn)品。Milvus是一個于2019年首次發(fā)布的開源矢量數(shù)據(jù)庫。
那上述兩種路線未來發(fā)展如何呢?一種觀點認為向量數(shù)據(jù)庫的核心技術(shù)核心向量索引技術(shù)成熟,進入壁壘低,因此市場認為向量數(shù)據(jù)庫核心技術(shù)缺少壁壘,傳統(tǒng)數(shù)據(jù)庫實現(xiàn)向量搜索功能簡單,將替代向量數(shù)據(jù)庫滿足大部分市場需求,專業(yè)向量數(shù)據(jù)庫將被“傳統(tǒng)向量數(shù)據(jù)庫”取代。另一種觀點認為,專業(yè)的向量數(shù)據(jù)庫仍具有不可替代性,其在檢索性能、數(shù)據(jù)規(guī)模、接口豐富度、性價比等方面具有一定優(yōu)勢。個人認為,從長期角度來看,上述兩種路線都具有存在意義,雙方也都有各自所長及適應場景。特別是近年來,向量數(shù)據(jù)庫也在不斷向傳統(tǒng)數(shù)據(jù)庫學習,進而滿足AI場景化在通用性、穩(wěn)定性等方面的要求。
從近期的融資來看,資本角度非常看好這一領域(如下圖)。向量數(shù)據(jù)庫正在被定義為一種“AI基礎設施”。從市場空間來看,AI技術(shù)的發(fā)展將推動向量數(shù)據(jù)應用與存儲需求加速增長:一方面隨著AI應用場景不斷豐富,向量數(shù)據(jù)庫的下游客戶數(shù)量隨著AI發(fā)展而飛速增長;另一方面AIGC正推動著非結(jié)構(gòu)化數(shù)據(jù)應用飛速增長,AIGC帶來了跨模態(tài)數(shù)據(jù)分析的需求浪潮,只有向量數(shù)據(jù)庫才能實時快速地處理這些海量的向量數(shù)據(jù)。
在所有現(xiàn)有向量數(shù)據(jù)庫中,pgvector是一個獨特的存在——它選擇了在現(xiàn)有的世界上最強大的開源關系型數(shù)據(jù)庫PostgreSQL上以插件的形式添磚加瓦,而不是另起爐灶做成另一個專用的"數(shù)據(jù)庫"。目前很多PostgreSQL生態(tài)產(chǎn)品和云產(chǎn)品,都推出了對pgvector的支持。
pgvector是一個基于PostgreSQL的擴展,為用戶提供了一套強大的功能,用于高效地存儲、查詢和處理向量數(shù)據(jù)。它具有以下特點:
在pgvector中,可以使用各種查詢運算符對向量數(shù)據(jù)進行不同的操作。這些運算符主要用于計算向量之間的相似度或距離,其中一些運算符使用不同的距離度量。以下是一些常用的pgvector查詢運算符:
在選擇適當?shù)倪\算符時,您應該考慮您的應用需求和數(shù)據(jù)特性。這可能涉及保持相對距離、強調(diào)大小或方向以及關注特定維度等因素。請注意,根據(jù)您的數(shù)據(jù)和用例,運算符的選擇可能會對搜索結(jié)果的質(zhì)量以及最終應用程序的有效性產(chǎn)生重大影響。
pgvector提供了ivfflat算法以近似搜索,它的工作原理是將相似的向量聚類為區(qū)域,并建立一個倒排索引,將每個區(qū)域映射到其向量。這使得查詢可以集中在數(shù)據(jù)的一個子集上,從而實現(xiàn)快速搜索。通過調(diào)整列表和探針參數(shù),ivfflat可以平衡數(shù)據(jù)集的速度和準確性,使PostgreSQL有能力對復雜數(shù)據(jù)進行快速的語義相似性搜索。通過簡單的查詢,應用程序可以在數(shù)百萬個高維向量中找到與查詢向量最近的鄰居。對于自然語言處理、信息檢索等,ivfflat是一個比較好的解決方案。
下面構(gòu)建一個測例,在PostgreSQL中使用pgvector插件測試對向量數(shù)據(jù)的檢索。向量數(shù)據(jù)集采用公開的國內(nèi)省市位置數(shù)據(jù),將經(jīng)緯度作為向量維度存儲。通過歐幾里德距離計算向量數(shù)據(jù)間距離(即城市間距離)。
北京市海淀區(qū)中關村南1條甲1號ECO中科愛克大廈6-7層
北京市公安局海淀分局備案編號:110108002980號營業(yè)執(zhí)照
本文地址:http://www.schoolwires.net.cn/article-407.html
上一篇:從來不是僥幸Oracle為何獨得印度政府青睞?...
下一篇:針對五種云環(huán)境類型的全面防御指南...