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