分布式 Data Warebase - 讓數(shù)據(jù)涌現(xiàn)智能
一、DIKW 模型
通過 Data(數(shù)據(jù)) - Information(信息) - Knowledge(知識) - Wisdom(智慧)四層金字塔結構,DIKW 模型提供了一個理解它們之間關系的框架。

以一個例子來解釋 DIKW 模型中的概念:
- 數(shù)據(jù)是一些沒有上下文的數(shù)和文字,比如“9.8”本身并不具備確切的物理含義。
- 當數(shù)據(jù)被賦予上下文,就成為了信息。“一個一千克的鐵球以 9.8 米/秒2的加速度下落”這句話中的“9.8”就傳達了特定的信息,即鐵球下降的加速度。
- 知識則是對信息的歸納和總結。比如,根據(jù)觀察,一千克、五千克、十千克的鐵球都以 9.8 米/秒2的加速度下落,可以歸納出“所有的鐵球都以 9.8 米/秒2的加速度下落”這一知識。進一步,我們發(fā)現(xiàn)銅球和銀球也以相同加速度下落,于是進一步歸納出“所有物體都以 9.8 米/秒2的加速度下落”。這種歸納和抽象使信息轉化為知識,從而能夠預測未來,如推斷八千克的鉛球也將以 9.8 米/秒2的加速度下落。
- 智慧則是在知識基礎上通過復雜推理得出的洞見。例如,基于“所有物體都以 9.8 米/秒2的加速度下落”這一知識,可以推斷重力下加速度與落體本身的特性無關,而是時空的一種幾何性質。這就是廣義相對論的核心思想,體現(xiàn)了智慧。智慧是最高級的智能,它需要復雜的推理論證和深刻的洞察,目前僅人類具備這種能力。
從數(shù)據(jù)到信息到知識再到智慧,這是智能逐漸升級的過程。這個過程中對數(shù)據(jù)的理解越來越深入,提取的概念越來越抽象,體現(xiàn)的智能也越來越高級。接下來,本文將詳細闡述如何讓機器理解數(shù)據(jù),從中挖掘智能。
二、數(shù)據(jù)
首先從數(shù)據(jù)層講起,對機器而言,數(shù)據(jù)就是一堆0和1。機器表達數(shù)據(jù)的語言是比特。機器雖然能夠存儲數(shù)據(jù),但并不理解數(shù)據(jù)的意義。
三、信息

接下來是信息層,信息的語言是數(shù)據(jù)模型。通過一個例子來講解機器如何將存儲為比特的數(shù)據(jù)轉化為信息:“小明預訂了 2024 年 6 月 1 日的兩個標間”。機器以比特的形式將這些文字存儲為數(shù)據(jù),但機器并不理解這個句子的含義。為了讓機器理解它,需要引入表的抽象。可以創(chuàng)建一個“民宿預訂”表,然后將剛才的文字分解成多個字段存為這個民宿預訂表的一條記錄。例如,預訂人姓名是小明,預訂日期是 2024 年 6 月 1 日,預訂房間數(shù)是 2,預訂房型是標間。

通過引入表結構,原本機器不理解的無結構的數(shù)據(jù)就轉變?yōu)橐粭l帶結構的記錄,機器可以理解和處理這些記錄。這種給數(shù)據(jù)賦予結構的方式被稱為數(shù)據(jù)模型。常見的數(shù)據(jù)模型有兩種:
- 第一種是上面提到的關系模型,它通過引入表的抽象將數(shù)據(jù)劃分為多個字段,并且通過外鍵這種方式表達表和表之間記錄的關系。這些元數(shù)據(jù)信息也存儲于系統(tǒng)中,它包含了表名、表中的各個字段名、字段的類型、表和表之間的關系等等。這些元數(shù)據(jù)給數(shù)據(jù)賦予了上下文,給數(shù)據(jù)帶來了結構,結構化的數(shù)據(jù)就能夠被機器理解和處理,從而變成了信息。作為一種描述信息的語言,關系模型對數(shù)據(jù)的要求比較嚴格,只有在所有數(shù)據(jù)結構完全一致的情況下才能用它來描述。
- 另一種數(shù)據(jù)模型是文檔模型,和關系模型不同,它將數(shù)據(jù)組織成文檔。不同文檔的結構可以不完全一樣。這種有一定結構但結構又不嚴格一致的數(shù)據(jù)被稱為半結構化數(shù)據(jù)。文檔模型將數(shù)據(jù)組織為一種樹狀結構,這種結構能夠較好地表達實體間一對一以及一對多的關系。文檔模型是讓半結構化數(shù)據(jù)變成信息的語言。
概括一下,數(shù)據(jù)模型是表達信息的語言,有了這種語言后,數(shù)據(jù)就從比特升級為了表記錄或者文檔,這種語言和抽象幫我們完成了從數(shù)據(jù)到信息的一個躍遷。從此機器開始理解數(shù)據(jù),并且可以從數(shù)據(jù)中提取一定的智能。
1. 信息革命的基石 - 數(shù)據(jù)模型帶來數(shù)據(jù)產(chǎn)品的興起

在數(shù)據(jù)模型這種信息的語言之上發(fā)展出眾多的數(shù)據(jù)產(chǎn)品,這些產(chǎn)品主要分為兩大類:
- 第一類是數(shù)據(jù)庫產(chǎn)品。根據(jù)數(shù)據(jù)模型可以進一步細分為關系型數(shù)據(jù)庫和 NoSQL 數(shù)據(jù)庫。關系型數(shù)據(jù)庫基于關系模型,它使用表的抽象。NoSQL 數(shù)據(jù)庫也有很多細分類型,當中最成功的一類是基于文檔模型的文檔型數(shù)據(jù)庫。這些數(shù)據(jù)庫產(chǎn)品的使命就是把數(shù)據(jù)轉化為信息,并且高效地存儲、檢索和管理這些信息。
- 另一類產(chǎn)品就是數(shù)據(jù)倉庫,簡稱數(shù)倉。數(shù)倉也是基于關系模型。數(shù)倉一般被用來對原始信息做匯總分析,從中發(fā)現(xiàn)規(guī)律,它的使命是高效地存儲和分析各種信息。
這一系列產(chǎn)品為信息革命打下了堅實的基礎。
2. 信息革命的場景 - 一個民宿平臺的數(shù)據(jù)架構
在這些基礎之上,行業(yè)迎來了基于數(shù)據(jù)和信息的應用大爆發(fā),特別是互聯(lián)網(wǎng)時代的到來,極大地加速了進化過程。這里以一個民宿平臺為例,剖析如何運用這些數(shù)據(jù)產(chǎn)品信息化業(yè)務數(shù)據(jù)實現(xiàn)業(yè)務價值。民宿的房東可以把自己的房子上架到這個民宿平臺上,潛在的租客會在這個平臺上去查尋自己感興趣的民宿,并且在平臺上完成預定、入住、離店、以及評價等操作。

為了實現(xiàn)這樣一個應用,首先需要構建應用服務,一開始所有的數(shù)據(jù)都被存儲在像 PostgreSQL 這樣的關系型數(shù)據(jù)庫之中。由于業(yè)務的需求足夠簡單,而且數(shù)據(jù)量不是很大,所以一個單機的 PostgreSQL 足以滿足這個應用服務對數(shù)據(jù)的一切需求。
隨著應用的用戶越來越多,單機的關系型數(shù)據(jù)庫很快就無法滿足業(yè)務的性能需求,因此不得不引入 MongoDB 這樣的 NoSQL 數(shù)據(jù)庫。NoSQL 數(shù)據(jù)庫的一個好處是可以通過增加機器這種水平擴容的方式提升性能,從而滿足業(yè)務日益增長的性能需求。在解決了性能問題之后,用戶數(shù)繼續(xù)快速增長,用戶對應用的需求也日益復雜。比如用戶不再滿足于通過全名去查找民宿,而是希望能夠根據(jù)一些關鍵詞找到自己感興趣的民宿,MongoDB 并不能高效實現(xiàn)這一需求。因此,系統(tǒng)又引入了 ElasticSearch 這樣的搜索引擎。為了讓搜索引擎能夠提供搜索服務,首先需要把數(shù)據(jù)導入到搜索引擎之中。數(shù)據(jù)的導入一般分為兩種形式,第一種是全量的數(shù)據(jù)導入,關系型數(shù)據(jù)庫和 NoSQL 數(shù)據(jù)庫里面的數(shù)據(jù)會定期以全量的方式導入到搜索引擎。如果應用對數(shù)據(jù)的時效性有比較高的要求,還要再引入增量的數(shù)據(jù)同步鏈路,比如采用 Kafka 和 Flink 這樣的技術把上游的增刪改同步到搜索引擎之中。當搜索引擎有了這些數(shù)據(jù)后,就可以為應用提供高性能的關鍵詞搜索了。至此,通過利用各類數(shù)據(jù)庫產(chǎn)品,系統(tǒng)具備了基礎信息的存儲和高效提取能力。此外,我們還希望對信息進行匯總分析。比如分析今年五一假期民宿營收和去年的同比情況、五一假期全國最熱門的 10 個城市是哪些。為了高效獲得這些匯總信息,系統(tǒng)又引入了像 Snowflake 或者 Hive 這類數(shù)倉產(chǎn)品。并且把數(shù)據(jù)從各個數(shù)據(jù)庫同步到這個數(shù)倉之中,就可以使用數(shù)倉進行復雜的 BI 分析。可以看到:一個業(yè)務往往需要同時使用多個數(shù)據(jù)庫和數(shù)倉產(chǎn)品,并且需要在它們之間進行復雜的數(shù)據(jù)同步。
四、知識

1. 知識是信息的歸納 - 知識的語言是嵌入向量
如果說信息的語言是數(shù)據(jù)模型,知識的語言將會是嵌入向量,首先來解釋一下什么是嵌入向量。
前面提到知識是相關信息的歸納和匯聚。所有物體都以 9.8 米/秒2的加速度落地,這個就是對大量相關信息的歸納。除了這種歸納之外,相關信息的匯聚也是知識。比如說,一個民宿所有信息在一起就是一種知識。這個知識概括了民宿各方面的信息:價格信息、風格信息、設施信息等等。

我們希望用一種數(shù)學語言去表達這種知識,并且能通過這種數(shù)學表示去比較兩個民宿,判斷兩個民宿是否相似。民宿的比較是多方位的,例如可以從經(jīng)濟型還是豪華型的維度去評判兩個民宿是否相似。作為近似可以用民宿的價格來衡量一個民宿是經(jīng)濟型還是豪華型。兩個民宿的價格越接近,它們的豪華程度也就越相近。但價格不是唯一的維度,還可以從民宿的裝修風格來比較,是簡約型的裝修,還是華麗型的裝修。按裝修風格給每個民宿一個打分,得分越接近就說明它們的裝修風格越相似。此外還可以從很多其他維度來比較民宿。如果要比較完整地從各個維度去描述這個民宿的各種特性,就必須使用高維空間中的向量。這個高維空間就是潛空間,知識對應于潛空間當中的一個高維向量,我們把它稱為嵌入向量。
我們的另外一個期望是從兩個民宿對應的高維向量判斷它們的相似度。希望通過兩個嵌入向量間的距離來衡量它們所代表的知識的相似程度。兩個嵌入向量的距離越短,它們所對應的民宿就越相似。所以潛空間不僅僅是一個高維的向量空間,它還是一個度量空間,它定義了兩個向量之間的距離。

簡單地根據(jù)輸入特征生成的高維向量在潛空間中的度量不一定能反應它們所代表的知識的相似度,所以我們需要通過模型來生成嵌入向量。這些模型可以是專門的嵌入模型,此外神經(jīng)網(wǎng)絡的每一層也是一個不斷從輸入信息中抽象更高級知識的過程,這些中間層產(chǎn)出的向量也代表了不同抽象程度的知識。嵌入向量可以被用來完成很多下游的任務,比如說分類、回歸、重建等等。

接下來展開解釋一下如何使用嵌入向量這種語言去表達和應用知識。我們分為兩個階段來講述。第一個是傳統(tǒng) AI 階段,第二個是生成式 AI 階段。先舉兩個傳統(tǒng) AI 階段的例子。
2. 知識 - 傳統(tǒng) AI:離線洞察

民宿的房東希望更多的人來入住自家民宿,所以他決定通過折扣來做推廣。為了提高推廣的成功率,他希望只發(fā)送給對價格敏感的客戶。為了做到這點,他需要理解用戶,需要根據(jù)用戶的基本信息、以及用戶和平臺交互的各種行為信息構建出描述用戶的知識。如前文所述,這個知識可以表達為潛空間中的一個嵌入向量。為每個用戶構建了相應的嵌入向量后,就可以對這些嵌入向量分類,決定一個用戶是否對價格敏感。

為了實現(xiàn)這個功能,在剛才的架構之上需要引入一些新的流程。首先需要引入信息預處理的流程,把跟用戶行為相關的信息做必要的清洗、補全和關聯(lián)等操作。由于和用戶行為相關的信息存儲于數(shù)倉中,可以利用數(shù)倉來做這些預處理。接下來會使用這些信息去訓練模型,通過模型產(chǎn)生代表用戶知識的嵌入向量,并且把這些嵌入向量分類,篩選出那些對價格敏感的用戶。數(shù)倉在這個過程中扮演了存儲離線特征數(shù)據(jù)的角色。
3. 知識 - 傳統(tǒng) AI:實時決策

第二個例子是自動決策的場景。民宿每天都掛同樣的價格并不一定是最合理的。它可能會導致民宿在淡季租不出去,給房東帶損失。所以房東為了提高淡季入住率,在總體的空置率比較高的時候,更傾向降低價格以吸引潛在的租客。但是究竟降多少合適,什么時候應該降,人工判斷是一件很繁瑣的事情,我們可以使用傳統(tǒng)的 AI 去更高效地達成這個目標。
首先需要根據(jù)民宿的各種特性,比如裝修風格、年份、房間數(shù)、地理位置等通過模型產(chǎn)生出一個代表民宿知識的嵌入向量。接下來還需要市場相關的信息,比如民宿所在地區(qū)當前的總入住率、相似民宿的價格、入住率等信息。AI 模型通過將這些信息和知識結合在一起實時推斷出什么樣的價格才是房東的最優(yōu)選擇,從而提供一個實時民宿自動定價功能。

為了實現(xiàn)這樣一個功能,除了上文提到的數(shù)據(jù)預處理和模型訓練之外,還需要引入在線模型服務,在用戶查看民宿時展示民宿的實時價格。為了給這個在線模型服務提供高吞吐低延遲的特征輸入,需要有個在線的特征存儲。由于特征的數(shù)據(jù)量比較大,所以通常采用 MongoDB 或者 HBase 這類存儲作為在線特征存儲。由于訓練時用到的一些特征也可能被當作模型服務的輸入,這部分離線的特征必須同步到在線的特征存儲中。除此之外,為了得到更好的效果,還可能需要實時計算一些特征,這進一步增加了系統(tǒng)的復雜度。
4. 知識 - 生成式 AI:通用知識提取

接下來介紹在生成式 AI 時代如何提取和應用知識。過去幾年我們見證了生成式 AI 的崛起,特別是基于 Transformer 架構的大語言模型在理解和生成文字,以及基于 Diffusion 的圖像模型生成圖像上取得了重大的突破。生成式 AI 能生成高質量的文本甚至代碼,能夠通過文生圖、圖生圖的方式生成圖像,能夠通過文字生成音頻甚至視頻,這一系列能力極大地拓寬了 AI 的使用場景,也在重新定義什么是非結構化數(shù)據(jù),它以一種全新的方式給傳統(tǒng)的非結構化數(shù)據(jù)賦予結構,從中提取知識。
相比傳統(tǒng) AI,生成式 AI 訓練的數(shù)據(jù)集要大幾個數(shù)量級。最先進的大語言模型幾乎使用了人類所有公開的高質量文本語料,因此它具備非常廣泛的知識和智能。當你和 ChatGPT 這樣一個先進的大語言模型交互時,它往往能夠對很多問題給出很好的回答。這可能會帶來錯覺:數(shù)據(jù)不再重要,有這樣一個大語言模型就可以解決一切業(yè)務問題。但事實恰恰相反,數(shù)據(jù)在生成式 AI 時代將會變得更為重要。
5. 業(yè)務數(shù)據(jù)驅動的生成式 AI
舉一個例子,九間堂民宿希望在江蘇做一個廣告,需要讓 AI 為這個廣告營銷活動生成一個圖片,下圖左側就是 AI 生成的圖片。可以看到這個圖片里有九間房子,房子位于地圖上的江蘇。因為通用的模型只有這些信息,所以能夠生成這樣的圖片算是合格,但我們希望更好的效果。于是我們查找出了九間堂在江蘇最受歡迎的一些民宿,并且讓大模型學習了這些民宿的描述和圖片等信息。在理解了業(yè)務的數(shù)據(jù)后,再讓 AI 重新生成圖像,就得到了下方右側這張圖片,相較而言它的廣告效果會好很多。

可以看到,雖然大語言模型理解了大量公開的知識,但是缺少業(yè)務相關的私域知識。而這部分私域知識是數(shù)據(jù)在業(yè)務上發(fā)揮最大價值的關鍵。只有把生成式 AI 的能力和業(yè)務數(shù)據(jù)緊密結合在一起,才能最大化發(fā)揮生成式 AI 的智能,數(shù)據(jù)仍然是驅動智能的核心。接下來介紹將大語言模型能力和業(yè)務數(shù)據(jù)結合的三種方式。
6. 業(yè)務數(shù)據(jù)驅動智能方式一:上下文學習(In Context Learnig)

第一種方式是上下文學習(也就是 In-context-learning)。這里舉一個例子,用戶對某個民宿感興趣,但是他不確信這個民宿是否能夠讓家里的所有成員都住得比較舒適。當然他可以自己去詳細地了解這個民宿的所有信息,然后再看是否能住下,但這無疑是件繁瑣的事情。于是我們想利用大語言模型的能力來完成這樣一個規(guī)劃,把這個民宿的描述等信息給到大語言模型,然后再向大語言模型提問,請它安排一下家人的住宿。大家可以看到大語言模型在了解了這些信息之后,給出了一個非常合理的安排。這就是大語言模型一個核心的能力,它可以從上下文當中學習知識,并且把自己的智能應用在這些新學的知識上。
7. 業(yè)務數(shù)據(jù)驅動智能方式二:向量搜索

第二種方式是基于嵌入向量的相似性搜索。比如基于 Transformer 的文本嵌入模型能夠為民宿的描述和評論等文字生成嵌入向量。兩個民宿越相似,它們對應的嵌入向量也就越接近。高效地查找和某個指定向量最相近的若干向量的搜索叫作向量搜索。
8. 檢索增強生成-RAG

把向量搜索技術和大模型上下文學習的能力相結合,就發(fā)展出了檢索增強生成技術,也就是 RAG。當用戶提交一個問題,比如“靠近西湖適合一家四口人居住并且簡約風格的民宿”,我們先讓大語言模型改寫這個問題,然后用文本嵌入模型為改寫好的問題生成嵌入向量。接下來再通過向量搜索找出跟這個問題對應的嵌入向量最近的一些嵌入向量所對應的民宿。然后再把這些民宿的描述以及用戶的問題同時作為上下文輸入給大語言模型,大語言模型就可以通過剛才所說的上下文學習(也就是 In-context-learning)的能力去理解這些信息,并且根據(jù)這些信息給出答案。
9. 業(yè)務數(shù)據(jù)驅動智能方式三:模型微調

業(yè)務數(shù)據(jù)驅動智能的第三個方式是模型微調。檢索增強生成技術通過文本嵌入模型把數(shù)據(jù)變成嵌入向量,也就是知識。而模型微調的基本想法是讓通用模型去學習業(yè)務相關的領域知識,從而讓這些領域知識成為模型的內在能力。微調的流程首先把業(yè)務數(shù)據(jù)做各種清洗加工,然后讓大語言模型去學習這些高質量的數(shù)據(jù)集,從而成為一個理解業(yè)務數(shù)據(jù)的一個大語言模型。微調的方式一般會分為四種:無監(jiān)督微調、蒸餾、監(jiān)督微調、以及強化學習。
簡單地介紹一下這些微調方式的原理:
- 無監(jiān)督微調簡單地說就是博覽群書。比如想讓大語言模型理解古文,需要先找到一些高質量的古文書,然后讓大語言模型閱讀這些書。通過這種泛讀的方式,大語言模型就能總結出古文用字的一些內在規(guī)律,就有了一定的古文素養(yǎng),從而有知識和能力做和古文相關的任務。
- 蒸餾這種方式可以理解為找一個老師,跟著老師學。跟著一個古文素養(yǎng)很高的老師學,借助老師能夠更快更好地學到古文的精髓。
- 監(jiān)督微調:除了上面提到的兩個沒有明確目的的素質教育之外,應試教育在某些場景也同樣重要。即便大語言模型經(jīng)過各種素質教育,有了比較好的古文素養(yǎng),并不代表著它在考試中一定可以得到高分。比如說讓大語言模型去參加科舉考試,如果沒有培訓過八股文的寫作,那它就可能因為寫的文章不符合規(guī)范而得不到好的成績。應試教育做的就是這種對齊工作,讓大語言模型知道人類在完成某些任務時的一些偏好。最直接的對齊方式是監(jiān)督微調。在這個例子里,就是讓大語言模型學習歷屆八股文的考題和范文。通過這種方式,大語言模型就明白了八股文的規(guī)范,就學會了如何把古文能力用八股文這種方式表現(xiàn)出來。
- 另外一種對齊方式是強化學習。這種學習方式不會告訴模型什么是正確答案,但是會給模型寫的文章進行打分,告訴模型這篇文章寫得好還是不好。通過反復的試驗模型就會找到獲得高分的寫作手法,從而按照人類的期望高質量地完成任務。
簡單總結一下,生成式 AI 和業(yè)務數(shù)據(jù)結合有三種方式:第一個是上下文學習,也就是 In Context Learning;第二個是基于向量搜索和上下文學習的檢索增強生成,也就是 RAG。第三種方式是各種模型微調。在實際的應用中,往往會把各種方式結合在一起,還可能使用外部的工具,這類智能的應用就叫做數(shù)據(jù)智能體,也就是 AI Agent。
10. 數(shù)據(jù)智能體:AI Agent

在這個民宿的例子中,可以想象一個虛擬旅游顧問。用戶可以向這個虛擬旅游顧問咨詢任何關于旅游的問題。比如為一家四口人設計一個杭州三天的旅行計劃,并且根據(jù)用戶反饋進行修改,形成用戶滿意的方案后自動完成各種機票、民宿、以及景點的預定。為了完成這些功能,虛擬旅行顧問就需要利用大語言模型的能力去做規(guī)劃,使用推薦系統(tǒng)找出用戶可能喜歡的杭州的景點,找出這些景點附近用戶可能喜歡的民宿,等等。這樣一個 AI Agent 能夠綜合大語言模型的能力并且靈活使用外部的工具。
五、現(xiàn)有架構的弊端

再次審視業(yè)務架構,為了實現(xiàn)這些這樣一個 AI Agent,需要一個極其復雜的數(shù)據(jù)架構。這種數(shù)據(jù)架構有很多弊端。這些弊端可以從三個不同的視角來看。
- 開發(fā)視角:構建這樣復雜的架構有較高的開發(fā)門檻。開發(fā)人員需要學習和理解多個不同的數(shù)據(jù)產(chǎn)品,每個數(shù)據(jù)產(chǎn)品都有一些局限性,開發(fā)人員還需要去理解和繞開這些問題。對很多中小公司來說,招到這么多優(yōu)秀的數(shù)據(jù)和 AI 工程師是個挑戰(zhàn),從而導致很多數(shù)據(jù)的業(yè)務價值并沒有完全地挖掘出來。即使團隊很幸運擁有這些工程師,他們也需要把大量的時間花在繁瑣的數(shù)據(jù)同步上,這無疑極大地降低了開發(fā)效率,降低了業(yè)務的迭代速度,阻礙了業(yè)務的發(fā)展。
- 運維視角:要運維這么多產(chǎn)品,勢必給運維帶來復雜度。特別是數(shù)據(jù)同步,它往往是一個系統(tǒng)中最薄弱的環(huán)節(jié),很容易導致系統(tǒng)的不穩(wěn)定。同時因為一份數(shù)據(jù)需要在多個產(chǎn)品中重復存儲,也帶來了更大的成本。
- 業(yè)務視角:雖然我們剛才所看到架構是從業(yè)務需求倒逼出來的,但是從業(yè)務視角來看,它也不是完美的。因為我們需要做各個產(chǎn)品之間的數(shù)據(jù)同步,這就無法避免數(shù)據(jù)延遲的問題。數(shù)據(jù)延遲會導致業(yè)務看到數(shù)據(jù)可能不一致,從而導致業(yè)務的問題。

六、新一代數(shù)據(jù)系統(tǒng):分布式 Data Warebase
為了能夠讓系統(tǒng)沒有數(shù)據(jù)延遲,唯一的選擇是讓數(shù)據(jù)同步不再是一種必要而是一個選擇。這就意味著我們需要用同一份數(shù)據(jù)支持剛才我們所說的各種場景。綜合評估下來關系型數(shù)據(jù)庫的功能最完備,離我們的最終目標最接近。所以我們決定以關系型數(shù)據(jù)庫為出發(fā)點去吸取其他產(chǎn)品的一些核心技術。

先從語言層次來看這個問題,關系型數(shù)據(jù)庫使用的語言是關系模型,它能夠很好地表達結構化的數(shù)據(jù)。為了能夠很好地表達半結構化的數(shù)據(jù),可以引入 JSON 類型。這樣我們就能夠表達信息層的兩種語言。知識層的語言是嵌入向量,通過引入高維向量這種類型,知識也就成為了系統(tǒng)的一等公民。這種做法允許我們在一個表里同時存儲結構化數(shù)據(jù)、半結構化數(shù)據(jù)、以及表達知識的嵌入向量。

接下來從性能的角度來分析。示例中構建民宿平臺需要使用這么多數(shù)據(jù)產(chǎn)品的一個重要的原因是性能。要徹底解決系統(tǒng)的性能瓶頸,需要做五個重大性能相關的改進:
- 首先為了能夠通過增加更多的機器的方式提升系統(tǒng)的性能并且保持數(shù)據(jù)的一致性,就需要實現(xiàn)分布式事務,然后就能通過數(shù)據(jù)分片這種橫向擴展方式提升系統(tǒng)的性能。
- 搜索的場景。之所以引入搜索引擎,是因為關系型數(shù)據(jù)庫即使在單機的情況下搜索的效率也很差。為了提升單機搜索性能,可以引入像倒排索引這樣的索引結構。同樣為了提升向量搜索的性能,也可以引入向量索引。
- 為了支持高效的匯總分析,引入列式存儲。它能夠提升數(shù)據(jù)壓縮率,避免大量不必要的 IO,提升系統(tǒng)的分析性能。
- 通過向量化的執(zhí)行引擎提升復雜查詢的執(zhí)行效率。
- 通過物化視圖這種預計算的方式去避免反復執(zhí)行同樣的查詢,進一步提升系統(tǒng)的性能。
通過這些技術的變革,就可以構建出一類全新的數(shù)據(jù)產(chǎn)品:分布式 Data Warebase。Data Warebase 這個詞是 Data Warehouse 和 Database 這兩個詞的組合,它意味著 Data Warebase 同時具有了 Data Warehouse 和 Database 的所有能力和優(yōu)勢。

分布式 Data Warebase 能夠存儲所有的數(shù)據(jù)、信息和知識:它通過關系模型存儲結構化的數(shù)據(jù);通過文檔模型也就是 JSON 這種方式存儲半結構化的數(shù)據(jù);并且通過高維向量去存儲從傳統(tǒng)意義上的非結構化數(shù)據(jù)中提取的知識。它能夠支持簡單查詢、關鍵詞查詢、以及匯總分析這類信息提取的需求,也能夠通過向量搜索去提取知識。分布式 Data Warebase 在性能、正確性、和實時性上挑戰(zhàn)可能的物理極限。分布式 Data Warebase 給用戶提供極簡的體驗,它兼容已有的生態(tài),減少學習成本,最大限度地發(fā)揮現(xiàn)有生態(tài)工具的能力。它通過隔離去保證不同場景之間互相不影響。通過自適應保證它不僅在最苛刻的業(yè)務場景達到性能、正確性、和實時性的最優(yōu),而且在用戶的實際場景里也能夠挑戰(zhàn)極限,達到具體場景里性能、準確性、和實時性的最優(yōu)。

分布式 Data Warebase 將開啟數(shù)據(jù)智能的新范式。它將使業(yè)務的數(shù)據(jù)架構大大簡化,工程師不再需要耗費大量的時間搭建系統(tǒng),而是把重心放在業(yè)務需求的開發(fā)上。
七、數(shù)據(jù)系統(tǒng)新的使命 - 讓數(shù)據(jù)涌現(xiàn)智能

總結一下,數(shù)據(jù)首先以比特的形式存儲在數(shù)據(jù)系統(tǒng)之中。系統(tǒng)并不理解數(shù)據(jù),數(shù)據(jù)在系統(tǒng)中還不具備任何智能。通過引入關系模型或文檔模型這類表達信息的語言,這些元數(shù)據(jù)給數(shù)據(jù)提供了上下文,賦予了數(shù)據(jù)結構,就產(chǎn)生了信息。建立在這些數(shù)據(jù)模型之上的關系型數(shù)據(jù)庫、NoSQL 數(shù)據(jù)庫、以及數(shù)倉等產(chǎn)品為信息的存儲、提取、管理、以及匯總分析提供了強大的工具,促進了互聯(lián)網(wǎng)業(yè)務的快速發(fā)展。再往上是知識層的抽象,我們引入了嵌入向量這種強大的數(shù)學語言來表達知識。這種全新的語言為高效地表達和處理知識打開了大門,系統(tǒng)的智能也變得更加高級。再往上是智慧層,當奇點到來 ,AGI 實現(xiàn)之后,機器也會和人一樣具有智慧,可以對知識做深刻的推理,并且做出戰(zhàn)略性的決策。也許當那天到來我們將會發(fā)現(xiàn)表達智慧的新語言。
可以看到過去這些年數(shù)據(jù)系統(tǒng)的發(fā)展,已經(jīng)從信息層逐漸轉移到知識層。數(shù)據(jù)系統(tǒng)的使命也在悄然發(fā)生變化。它不再滿足于存儲、提取、管理、以及匯總分析信息。表達、理解和使用知識將會成為數(shù)據(jù)系統(tǒng)的一個重要部分。我們斷言數(shù)據(jù)系統(tǒng)新的使命將會是:讓數(shù)據(jù)涌現(xiàn)智能!




























