?保姆級拆解向量數(shù)據(jù)庫的結(jié)構(gòu)和應(yīng)用場景
一、NewDataStack 時代的數(shù)據(jù)架構(gòu)地圖
首先來看一張 Andreessen Horowitz 發(fā)布的關(guān)于未來數(shù)據(jù)架構(gòu)的預(yù)測圖。我們在后面又加入了對應(yīng)的當(dāng)前比較流行的大模型以及向量數(shù)據(jù)庫。
首先最左側(cè)的是數(shù)據(jù)源層,這里包括來自于企業(yè)各種各樣的數(shù)據(jù)源,我們也叫它多元異構(gòu)的數(shù)據(jù)形態(tài)。有了這部分?jǐn)?shù)據(jù)之后,首先要做的是數(shù)據(jù)的攝取,再往后是數(shù)據(jù)的轉(zhuǎn)化,這里面涉及到非常多類型數(shù)據(jù)的形態(tài)轉(zhuǎn)換。包括傳統(tǒng)企業(yè)數(shù)倉的 ETL 過程,以及當(dāng)前 AI 背景下的特征加工、數(shù)據(jù)處理等流程。還有處理流式數(shù)據(jù)、實時數(shù)據(jù)的數(shù)據(jù)組件,用來滿足高時效、低延遲的處理需求。
在數(shù)據(jù)存儲與計算層,向量數(shù)據(jù)庫一方面可以把前面各種各樣的數(shù)據(jù)做比較好的接入,還可以完成數(shù)據(jù)處理上的一些轉(zhuǎn)換,實際上在向量數(shù)據(jù)庫計算引擎的加持下,我們可以完成面向各種類型的數(shù)據(jù)存儲以及計算。
在數(shù)據(jù)分析與預(yù)測層,向量數(shù)據(jù)庫也可以提供比較全面的支撐,包括 AI 基礎(chǔ)小模型和大模型應(yīng)用的場景,特別是在大模型方面,大家的共識是把向量數(shù)據(jù)庫作為大模型應(yīng)用非常重要的記憶體。除了上面說到的 AI 這部分場景,對一些傳統(tǒng)業(yè)務(wù)的支持,比如高效的即席查詢、實時數(shù)據(jù)分析以及向量的搜索、分析場景,向量數(shù)據(jù)庫都能發(fā)揮重要價值。
最后的數(shù)據(jù)應(yīng)用層則對應(yīng)一些具體的業(yè)務(wù)場景,比如 BI 儀表盤、嵌入式分析、增強分析、自助分析程序等。
二、向量數(shù)據(jù)庫發(fā)展歷程
向量數(shù)據(jù)庫的發(fā)展大致經(jīng)過了三個階段:
- 第一個階段是探索階段。主要以文件形式存儲向量數(shù)據(jù),還沒有具備有效的索引以及查詢的能力,代表產(chǎn)品如 Lucene 等。
- 第二個階段是發(fā)展階段。大家已經(jīng)開始使用像 KD 樹等索引結(jié)構(gòu),可以實現(xiàn)一定查詢性能的提升,但是在高維空間的查詢效率還是遠(yuǎn)遠(yuǎn)不夠,代表產(chǎn)品如 Annoy、FAISS 等。
- 第三個階段是應(yīng)用階段。隨著大家對大模型認(rèn)知的提升以及一些應(yīng)用場景的擴展,又對向量數(shù)據(jù)庫的發(fā)展提了很多新要求,因此向量數(shù)據(jù)庫也具備了一些新的特性,比如高效的向量索引和查詢、處理海量的高維向量數(shù)據(jù),這個階段也涌現(xiàn)出了大批比較優(yōu)秀的向量數(shù)據(jù)庫,代表產(chǎn)品如ElasticSearch、DingoDB、Weaviate 等。
三、企業(yè)面臨痛點&挑戰(zhàn)
在大模型時代,企業(yè)對于多模態(tài)數(shù)據(jù)會有越來越多的應(yīng)用場景,在多模態(tài)數(shù)據(jù)的分析和檢索方面將會面臨很多挑戰(zhàn)以及問題。大概分為以下四個方面:
- 第一個是如何有效地去應(yīng)對大模型時代數(shù)據(jù)架構(gòu)的變化。從底層數(shù)據(jù)的角度來看,向量是人工智能理解世界的一種通用的數(shù)據(jù)形式,特別是在大模型時代,整個基于 Transformer 架構(gòu)的計算,以及對數(shù)據(jù)快速 Embedding 的轉(zhuǎn)化,其實都是基于向量去做的,大家常常把向量數(shù)據(jù)庫稱為是大模型記憶的存儲核心,因此企業(yè)如何結(jié)合向量數(shù)據(jù)庫進(jìn)行企業(yè)級大模型數(shù)據(jù)架構(gòu)的規(guī)劃就變得非常重要。
- 第二個是多模態(tài)數(shù)據(jù)聯(lián)合存儲、分析、服務(wù)難題。這里面包含結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)混合存儲的問題,以及在保障性能的前提下,實現(xiàn)向量數(shù)據(jù)、標(biāo)量數(shù)據(jù)的混合檢索。為了支撐豐富多樣的數(shù)據(jù)服務(wù)場景,要求我們的數(shù)據(jù)架構(gòu)要能很好地應(yīng)對多模態(tài)的數(shù)據(jù)在存儲、分析、服務(wù)等各個方面可能會面臨的問題。
- 第三個是如何滿足高性能、易運維的企業(yè)級應(yīng)用需求。海量的數(shù)據(jù)索引會帶來運維的難題,包括怎樣去優(yōu)化當(dāng)前的索引,以及把大批量的數(shù)據(jù)做初始化;向量數(shù)據(jù)庫在運行的過程中,對于不同業(yè)務(wù)場景的響應(yīng)是否能滿足多并發(fā)低延遲的服務(wù)響應(yīng),如何降低運維的復(fù)雜度,減少企業(yè)的應(yīng)用成本,這些都是企業(yè)要去實際考慮的問題。
- 第四個是企業(yè)數(shù)據(jù)如何安全可靠應(yīng)用。數(shù)據(jù)高可用會涉及到像 HAI 分布式環(huán)境下的數(shù)據(jù)管理、備份等問題。數(shù)據(jù)權(quán)限除了多租戶數(shù)據(jù)隔離,企業(yè)通常還要保障數(shù)據(jù)的安全和被高效地利用。當(dāng)然,還有很重要的一點是當(dāng)前形勢下對于國產(chǎn)化信創(chuàng)的要求。
四、向量數(shù)據(jù)庫整體形態(tài)
前文提到向量數(shù)據(jù)庫的數(shù)據(jù)來源可能包括結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù),所以從這張圖上可以看到像圖片、文檔、音頻以及視頻這些數(shù)據(jù)都要做向量化轉(zhuǎn)換才能存到向量數(shù)據(jù)庫。對于我們原來經(jīng)常接觸的一些關(guān)系型數(shù)據(jù)庫數(shù)據(jù),以及 Key-Value 這種半結(jié)構(gòu)化數(shù)據(jù),也要統(tǒng)一存儲。海量數(shù)據(jù)在向量數(shù)據(jù)庫做向量的轉(zhuǎn)換,用來提供相似性的檢索。再上層是向量數(shù)據(jù)庫通過其分析和計算引擎支撐 BI、流分析、AI、數(shù)據(jù)科學(xué)以及大模型等不同的場景。
上圖左側(cè)是數(shù)據(jù)的來源,有各種各樣多模態(tài)的數(shù)據(jù)類型。從上往下看,最上面是我們通過向量數(shù)據(jù)庫實現(xiàn)的一些場景,包括關(guān)系數(shù)據(jù)分析、語義數(shù)據(jù)檢索、實時決策、提示詞管理和大模型記憶的管理。下面展示了各種各樣的服務(wù)形態(tài),包括兼容MySQL 協(xié)議、提供 Serving API 的對接、面向原生向量的 API。再往下是向量數(shù)據(jù)庫所要具備的元數(shù)據(jù)存儲與資源管理能力,以及一些優(yōu)化的組件,比如多模優(yōu)化器和事務(wù)管理器,用來保證向量數(shù)據(jù)庫高效地運行。最底層是數(shù)據(jù)存儲的形態(tài),有關(guān)系型存儲、向量存儲以及 HDFS 倉存儲和湖存儲。
五、向量數(shù)據(jù)功能特性
這是中國信通院組織 50 家企業(yè)的專家在一起討論了大概 3-4 個月形成的一個行業(yè)通用標(biāo)準(zhǔn),它定義了向量數(shù)據(jù)庫的基本功能、運維管理、安全性、兼容性、擴展性、高可用等多個方面的標(biāo)準(zhǔn),可以比較全面地看到向量數(shù)據(jù)庫的一些技術(shù)指標(biāo)要求。
六、多模態(tài)向量數(shù)據(jù)庫未來發(fā)展趨勢及核心能力
多模態(tài)向量數(shù)據(jù)庫的未來發(fā)展趨勢及核心能力可以總結(jié)為以下五個方面:
- 第一個是支持標(biāo)量、向量數(shù)據(jù)的混合聯(lián)合查詢。既要同時支持傳統(tǒng)的數(shù)據(jù)庫索引的類型和比較豐富的向量索引的類型,又要能夠無縫銜接標(biāo)量向量混合檢索體驗,還要有領(lǐng)先的檢索能力。
- 第二個是具備多樣化的訪問接口。向量數(shù)據(jù)庫對外提供服務(wù)時,我們還是希望它有像 SQL、SDK、API 等多樣化的服務(wù)形態(tài),在不同場景下提供合適的訪問方式。比如在時效性要求特別高的場景適合集成 SDK 或者高頻 Serving 的 API。在面向 Table 和 Vector 數(shù)據(jù)模型時,不管是用向量或者關(guān)系型,都可以做一些靈活的配置跟轉(zhuǎn)換。
- 第三個是全自動的彈性數(shù)據(jù)分片。當(dāng)我們把大批量的數(shù)據(jù)導(dǎo)入進(jìn)來之后,向量數(shù)據(jù)庫可以自動對數(shù)據(jù)分片大小進(jìn)行動態(tài)設(shè)置,并完成自動分裂與合并,為用戶提供靈活的空間和資源配置策略。
- 第四個是實時索引構(gòu)建自優(yōu)化。數(shù)據(jù)存儲之后,可以實時構(gòu)建標(biāo)量和向量的索引,并且具備用戶無感知的后臺自動索引優(yōu)化。而且索引不僅僅局限于某一種類型向量數(shù)據(jù)庫,在向量入庫的時候,我們就可以選擇一種索引去作為數(shù)據(jù)組織的基本形態(tài),提供無延遲的數(shù)據(jù)檢索能力支持。
- 第五個是內(nèi)建的數(shù)據(jù)高可用。我們希望向量數(shù)據(jù)庫無需部署任何外部組件,所有功能和高可用全部內(nèi)置,這樣既能減少跟其他組件的適配成本,同時也可以極大降低企業(yè)的部署及運維成本。
七、向量數(shù)據(jù)庫重點支撐場景
簡單來講,在大模型時代,多模向量數(shù)據(jù)庫的重點支撐場景包括大模型記憶體、企業(yè)知識庫、非結(jié)構(gòu)化數(shù)據(jù)檢索、實時決策指標(biāo)計算、結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)的融合分析和 VectorOcean 數(shù)據(jù)支撐平臺等。
八、基于大模型的知識管家(Agent)向量數(shù)據(jù)庫應(yīng)用
向量數(shù)據(jù)庫作為大模型知識管家后臺的核心存儲引擎,一方面把各種類型的企業(yè)數(shù)據(jù)進(jìn)行私有化的存儲,然后在這個基礎(chǔ)上用大模型去跟向量數(shù)據(jù)庫做高效的交互。另一方面是用戶在提問之后,可以通過大模型先對語言做基礎(chǔ)的組織,然后用向量數(shù)據(jù)庫查詢出最相似的知識片段 TopN,并把這些知識片段作為基礎(chǔ)語料傳送給大模型,大模型去做答案的組織,再結(jié)合大模型的生成式的能力給出最終答案。通過這個過程可以大大降低大模型應(yīng)用換輪的問題,能夠讓用戶得到更可靠的問答。