分布式 Data Warebase - 讓數(shù)據(jù)涌現(xiàn)智能
一、DIKW 模型
通過 Data(數(shù)據(jù)) - Information(信息) - Knowledge(知識) - Wisdom(智慧)四層金字塔結(jié)構(gòu),DIKW 模型提供了一個理解它們之間關(guān)系的框架。
以一個例子來解釋 DIKW 模型中的概念:
- 數(shù)據(jù)是一些沒有上下文的數(shù)和文字,比如“9.8”本身并不具備確切的物理含義。
- 當(dāng)數(shù)據(jù)被賦予上下文,就成為了信息?!耙粋€一千克的鐵球以 9.8 米/秒2的加速度下落”這句話中的“9.8”就傳達(dá)了特定的信息,即鐵球下降的加速度。
- 知識則是對信息的歸納和總結(jié)。比如,根據(jù)觀察,一千克、五千克、十千克的鐵球都以 9.8 米/秒2的加速度下落,可以歸納出“所有的鐵球都以 9.8 米/秒2的加速度下落”這一知識。進(jìn)一步,我們發(fā)現(xiàn)銅球和銀球也以相同加速度下落,于是進(jìn)一步歸納出“所有物體都以 9.8 米/秒2的加速度下落”。這種歸納和抽象使信息轉(zhuǎn)化為知識,從而能夠預(yù)測未來,如推斷八千克的鉛球也將以 9.8 米/秒2的加速度下落。
- 智慧則是在知識基礎(chǔ)上通過復(fù)雜推理得出的洞見。例如,基于“所有物體都以 9.8 米/秒2的加速度下落”這一知識,可以推斷重力下加速度與落體本身的特性無關(guān),而是時空的一種幾何性質(zhì)。這就是廣義相對論的核心思想,體現(xiàn)了智慧。智慧是最高級的智能,它需要復(fù)雜的推理論證和深刻的洞察,目前僅人類具備這種能力。
從數(shù)據(jù)到信息到知識再到智慧,這是智能逐漸升級的過程。這個過程中對數(shù)據(jù)的理解越來越深入,提取的概念越來越抽象,體現(xiàn)的智能也越來越高級。接下來,本文將詳細(xì)闡述如何讓機(jī)器理解數(shù)據(jù),從中挖掘智能。
二、數(shù)據(jù)
首先從數(shù)據(jù)層講起,對機(jī)器而言,數(shù)據(jù)就是一堆0和1。機(jī)器表達(dá)數(shù)據(jù)的語言是比特。機(jī)器雖然能夠存儲數(shù)據(jù),但并不理解數(shù)據(jù)的意義。
三、信息
接下來是信息層,信息的語言是數(shù)據(jù)模型。通過一個例子來講解機(jī)器如何將存儲為比特的數(shù)據(jù)轉(zhuǎn)化為信息:“小明預(yù)訂了 2024 年 6 月 1 日的兩個標(biāo)間”。機(jī)器以比特的形式將這些文字存儲為數(shù)據(jù),但機(jī)器并不理解這個句子的含義。為了讓機(jī)器理解它,需要引入表的抽象??梢詣?chuàng)建一個“民宿預(yù)訂”表,然后將剛才的文字分解成多個字段存為這個民宿預(yù)訂表的一條記錄。例如,預(yù)訂人姓名是小明,預(yù)訂日期是 2024 年 6 月 1 日,預(yù)訂房間數(shù)是 2,預(yù)訂房型是標(biāo)間。
通過引入表結(jié)構(gòu),原本機(jī)器不理解的無結(jié)構(gòu)的數(shù)據(jù)就轉(zhuǎn)變?yōu)橐粭l帶結(jié)構(gòu)的記錄,機(jī)器可以理解和處理這些記錄。這種給數(shù)據(jù)賦予結(jié)構(gòu)的方式被稱為數(shù)據(jù)模型。常見的數(shù)據(jù)模型有兩種:
- 第一種是上面提到的關(guān)系模型,它通過引入表的抽象將數(shù)據(jù)劃分為多個字段,并且通過外鍵這種方式表達(dá)表和表之間記錄的關(guān)系。這些元數(shù)據(jù)信息也存儲于系統(tǒng)中,它包含了表名、表中的各個字段名、字段的類型、表和表之間的關(guān)系等等。這些元數(shù)據(jù)給數(shù)據(jù)賦予了上下文,給數(shù)據(jù)帶來了結(jié)構(gòu),結(jié)構(gòu)化的數(shù)據(jù)就能夠被機(jī)器理解和處理,從而變成了信息。作為一種描述信息的語言,關(guān)系模型對數(shù)據(jù)的要求比較嚴(yán)格,只有在所有數(shù)據(jù)結(jié)構(gòu)完全一致的情況下才能用它來描述。
- 另一種數(shù)據(jù)模型是文檔模型,和關(guān)系模型不同,它將數(shù)據(jù)組織成文檔。不同文檔的結(jié)構(gòu)可以不完全一樣。這種有一定結(jié)構(gòu)但結(jié)構(gòu)又不嚴(yán)格一致的數(shù)據(jù)被稱為半結(jié)構(gòu)化數(shù)據(jù)。文檔模型將數(shù)據(jù)組織為一種樹狀結(jié)構(gòu),這種結(jié)構(gòu)能夠較好地表達(dá)實(shí)體間一對一以及一對多的關(guān)系。文檔模型是讓半結(jié)構(gòu)化數(shù)據(jù)變成信息的語言。
概括一下,數(shù)據(jù)模型是表達(dá)信息的語言,有了這種語言后,數(shù)據(jù)就從比特升級為了表記錄或者文檔,這種語言和抽象幫我們完成了從數(shù)據(jù)到信息的一個躍遷。從此機(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ù)模型可以進(jìn)一步細(xì)分為關(guān)系型數(shù)據(jù)庫和 NoSQL 數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫基于關(guān)系模型,它使用表的抽象。NoSQL 數(shù)據(jù)庫也有很多細(xì)分類型,當(dāng)中最成功的一類是基于文檔模型的文檔型數(shù)據(jù)庫。這些數(shù)據(jù)庫產(chǎn)品的使命就是把數(shù)據(jù)轉(zhuǎn)化為信息,并且高效地存儲、檢索和管理這些信息。
- 另一類產(chǎn)品就是數(shù)據(jù)倉庫,簡稱數(shù)倉。數(shù)倉也是基于關(guān)系模型。數(shù)倉一般被用來對原始信息做匯總分析,從中發(fā)現(xiàn)規(guī)律,它的使命是高效地存儲和分析各種信息。
這一系列產(chǎn)品為信息革命打下了堅(jiān)實(shí)的基礎(chǔ)。
2. 信息革命的場景 - 一個民宿平臺的數(shù)據(jù)架構(gòu)
在這些基礎(chǔ)之上,行業(yè)迎來了基于數(shù)據(jù)和信息的應(yīng)用大爆發(fā),特別是互聯(lián)網(wǎng)時代的到來,極大地加速了進(jìn)化過程。這里以一個民宿平臺為例,剖析如何運(yùn)用這些數(shù)據(jù)產(chǎn)品信息化業(yè)務(wù)數(shù)據(jù)實(shí)現(xiàn)業(yè)務(wù)價值。民宿的房東可以把自己的房子上架到這個民宿平臺上,潛在的租客會在這個平臺上去查尋自己感興趣的民宿,并且在平臺上完成預(yù)定、入住、離店、以及評價等操作。
為了實(shí)現(xiàn)這樣一個應(yīng)用,首先需要構(gòu)建應(yīng)用服務(wù),一開始所有的數(shù)據(jù)都被存儲在像 PostgreSQL 這樣的關(guān)系型數(shù)據(jù)庫之中。由于業(yè)務(wù)的需求足夠簡單,而且數(shù)據(jù)量不是很大,所以一個單機(jī)的 PostgreSQL 足以滿足這個應(yīng)用服務(wù)對數(shù)據(jù)的一切需求。
隨著應(yīng)用的用戶越來越多,單機(jī)的關(guān)系型數(shù)據(jù)庫很快就無法滿足業(yè)務(wù)的性能需求,因此不得不引入 MongoDB 這樣的 NoSQL 數(shù)據(jù)庫。NoSQL 數(shù)據(jù)庫的一個好處是可以通過增加機(jī)器這種水平擴(kuò)容的方式提升性能,從而滿足業(yè)務(wù)日益增長的性能需求。在解決了性能問題之后,用戶數(shù)繼續(xù)快速增長,用戶對應(yīng)用的需求也日益復(fù)雜。比如用戶不再滿足于通過全名去查找民宿,而是希望能夠根據(jù)一些關(guān)鍵詞找到自己感興趣的民宿,MongoDB 并不能高效實(shí)現(xiàn)這一需求。因此,系統(tǒng)又引入了 ElasticSearch 這樣的搜索引擎。為了讓搜索引擎能夠提供搜索服務(wù),首先需要把數(shù)據(jù)導(dǎo)入到搜索引擎之中。數(shù)據(jù)的導(dǎo)入一般分為兩種形式,第一種是全量的數(shù)據(jù)導(dǎo)入,關(guān)系型數(shù)據(jù)庫和 NoSQL 數(shù)據(jù)庫里面的數(shù)據(jù)會定期以全量的方式導(dǎo)入到搜索引擎。如果應(yīng)用對數(shù)據(jù)的時效性有比較高的要求,還要再引入增量的數(shù)據(jù)同步鏈路,比如采用 Kafka 和 Flink 這樣的技術(shù)把上游的增刪改同步到搜索引擎之中。當(dāng)搜索引擎有了這些數(shù)據(jù)后,就可以為應(yīng)用提供高性能的關(guān)鍵詞搜索了。至此,通過利用各類數(shù)據(jù)庫產(chǎn)品,系統(tǒng)具備了基礎(chǔ)信息的存儲和高效提取能力。此外,我們還希望對信息進(jìn)行匯總分析。比如分析今年五一假期民宿營收和去年的同比情況、五一假期全國最熱門的 10 個城市是哪些。為了高效獲得這些匯總信息,系統(tǒng)又引入了像 Snowflake 或者 Hive 這類數(shù)倉產(chǎn)品。并且把數(shù)據(jù)從各個數(shù)據(jù)庫同步到這個數(shù)倉之中,就可以使用數(shù)倉進(jìn)行復(fù)雜的 BI 分析??梢钥吹剑阂粋€業(yè)務(wù)往往需要同時使用多個數(shù)據(jù)庫和數(shù)倉產(chǎn)品,并且需要在它們之間進(jìn)行復(fù)雜的數(shù)據(jù)同步。
四、知識
1. 知識是信息的歸納 - 知識的語言是嵌入向量
如果說信息的語言是數(shù)據(jù)模型,知識的語言將會是嵌入向量,首先來解釋一下什么是嵌入向量。
前面提到知識是相關(guān)信息的歸納和匯聚。所有物體都以 9.8 米/秒2的加速度落地,這個就是對大量相關(guān)信息的歸納。除了這種歸納之外,相關(guān)信息的匯聚也是知識。比如說,一個民宿所有信息在一起就是一種知識。這個知識概括了民宿各方面的信息:價格信息、風(fēng)格信息、設(shè)施信息等等。
我們希望用一種數(shù)學(xué)語言去表達(dá)這種知識,并且能通過這種數(shù)學(xué)表示去比較兩個民宿,判斷兩個民宿是否相似。民宿的比較是多方位的,例如可以從經(jīng)濟(jì)型還是豪華型的維度去評判兩個民宿是否相似。作為近似可以用民宿的價格來衡量一個民宿是經(jīng)濟(jì)型還是豪華型。兩個民宿的價格越接近,它們的豪華程度也就越相近。但價格不是唯一的維度,還可以從民宿的裝修風(fēng)格來比較,是簡約型的裝修,還是華麗型的裝修。按裝修風(fēng)格給每個民宿一個打分,得分越接近就說明它們的裝修風(fēng)格越相似。此外還可以從很多其他維度來比較民宿。如果要比較完整地從各個維度去描述這個民宿的各種特性,就必須使用高維空間中的向量。這個高維空間就是潛空間,知識對應(yīng)于潛空間當(dāng)中的一個高維向量,我們把它稱為嵌入向量。
我們的另外一個期望是從兩個民宿對應(yīng)的高維向量判斷它們的相似度。希望通過兩個嵌入向量間的距離來衡量它們所代表的知識的相似程度。兩個嵌入向量的距離越短,它們所對應(yīng)的民宿就越相似。所以潛空間不僅僅是一個高維的向量空間,它還是一個度量空間,它定義了兩個向量之間的距離。
簡單地根據(jù)輸入特征生成的高維向量在潛空間中的度量不一定能反應(yīng)它們所代表的知識的相似度,所以我們需要通過模型來生成嵌入向量。這些模型可以是專門的嵌入模型,此外神經(jīng)網(wǎng)絡(luò)的每一層也是一個不斷從輸入信息中抽象更高級知識的過程,這些中間層產(chǎn)出的向量也代表了不同抽象程度的知識。嵌入向量可以被用來完成很多下游的任務(wù),比如說分類、回歸、重建等等。
接下來展開解釋一下如何使用嵌入向量這種語言去表達(dá)和應(yīng)用知識。我們分為兩個階段來講述。第一個是傳統(tǒng) AI 階段,第二個是生成式 AI 階段。先舉兩個傳統(tǒng) AI 階段的例子。
2. 知識 - 傳統(tǒng) AI:離線洞察
民宿的房東希望更多的人來入住自家民宿,所以他決定通過折扣來做推廣。為了提高推廣的成功率,他希望只發(fā)送給對價格敏感的客戶。為了做到這點(diǎn),他需要理解用戶,需要根據(jù)用戶的基本信息、以及用戶和平臺交互的各種行為信息構(gòu)建出描述用戶的知識。如前文所述,這個知識可以表達(dá)為潛空間中的一個嵌入向量。為每個用戶構(gòu)建了相應(yīng)的嵌入向量后,就可以對這些嵌入向量分類,決定一個用戶是否對價格敏感。
為了實(shí)現(xiàn)這個功能,在剛才的架構(gòu)之上需要引入一些新的流程。首先需要引入信息預(yù)處理的流程,把跟用戶行為相關(guān)的信息做必要的清洗、補(bǔ)全和關(guān)聯(lián)等操作。由于和用戶行為相關(guān)的信息存儲于數(shù)倉中,可以利用數(shù)倉來做這些預(yù)處理。接下來會使用這些信息去訓(xùn)練模型,通過模型產(chǎn)生代表用戶知識的嵌入向量,并且把這些嵌入向量分類,篩選出那些對價格敏感的用戶。數(shù)倉在這個過程中扮演了存儲離線特征數(shù)據(jù)的角色。
3. 知識 - 傳統(tǒng) AI:實(shí)時決策
第二個例子是自動決策的場景。民宿每天都掛同樣的價格并不一定是最合理的。它可能會導(dǎo)致民宿在淡季租不出去,給房東帶損失。所以房東為了提高淡季入住率,在總體的空置率比較高的時候,更傾向降低價格以吸引潛在的租客。但是究竟降多少合適,什么時候應(yīng)該降,人工判斷是一件很繁瑣的事情,我們可以使用傳統(tǒng)的 AI 去更高效地達(dá)成這個目標(biāo)。
首先需要根據(jù)民宿的各種特性,比如裝修風(fēng)格、年份、房間數(shù)、地理位置等通過模型產(chǎn)生出一個代表民宿知識的嵌入向量。接下來還需要市場相關(guān)的信息,比如民宿所在地區(qū)當(dāng)前的總?cè)胱÷省⑾嗨泼袼薜膬r格、入住率等信息。AI 模型通過將這些信息和知識結(jié)合在一起實(shí)時推斷出什么樣的價格才是房東的最優(yōu)選擇,從而提供一個實(shí)時民宿自動定價功能。
為了實(shí)現(xiàn)這樣一個功能,除了上文提到的數(shù)據(jù)預(yù)處理和模型訓(xùn)練之外,還需要引入在線模型服務(wù),在用戶查看民宿時展示民宿的實(shí)時價格。為了給這個在線模型服務(wù)提供高吞吐低延遲的特征輸入,需要有個在線的特征存儲。由于特征的數(shù)據(jù)量比較大,所以通常采用 MongoDB 或者 HBase 這類存儲作為在線特征存儲。由于訓(xùn)練時用到的一些特征也可能被當(dāng)作模型服務(wù)的輸入,這部分離線的特征必須同步到在線的特征存儲中。除此之外,為了得到更好的效果,還可能需要實(shí)時計(jì)算一些特征,這進(jìn)一步增加了系統(tǒng)的復(fù)雜度。
4. 知識 - 生成式 AI:通用知識提取
接下來介紹在生成式 AI 時代如何提取和應(yīng)用知識。過去幾年我們見證了生成式 AI 的崛起,特別是基于 Transformer 架構(gòu)的大語言模型在理解和生成文字,以及基于 Diffusion 的圖像模型生成圖像上取得了重大的突破。生成式 AI 能生成高質(zhì)量的文本甚至代碼,能夠通過文生圖、圖生圖的方式生成圖像,能夠通過文字生成音頻甚至視頻,這一系列能力極大地拓寬了 AI 的使用場景,也在重新定義什么是非結(jié)構(gòu)化數(shù)據(jù),它以一種全新的方式給傳統(tǒng)的非結(jié)構(gòu)化數(shù)據(jù)賦予結(jié)構(gòu),從中提取知識。
相比傳統(tǒng) AI,生成式 AI 訓(xùn)練的數(shù)據(jù)集要大幾個數(shù)量級。最先進(jìn)的大語言模型幾乎使用了人類所有公開的高質(zhì)量文本語料,因此它具備非常廣泛的知識和智能。當(dāng)你和 ChatGPT 這樣一個先進(jìn)的大語言模型交互時,它往往能夠?qū)芏鄦栴}給出很好的回答。這可能會帶來錯覺:數(shù)據(jù)不再重要,有這樣一個大語言模型就可以解決一切業(yè)務(wù)問題。但事實(shí)恰恰相反,數(shù)據(jù)在生成式 AI 時代將會變得更為重要。
5. 業(yè)務(wù)數(shù)據(jù)驅(qū)動的生成式 AI
舉一個例子,九間堂民宿希望在江蘇做一個廣告,需要讓 AI 為這個廣告營銷活動生成一個圖片,下圖左側(cè)就是 AI 生成的圖片。可以看到這個圖片里有九間房子,房子位于地圖上的江蘇。因?yàn)橥ㄓ玫哪P椭挥羞@些信息,所以能夠生成這樣的圖片算是合格,但我們希望更好的效果。于是我們查找出了九間堂在江蘇最受歡迎的一些民宿,并且讓大模型學(xué)習(xí)了這些民宿的描述和圖片等信息。在理解了業(yè)務(wù)的數(shù)據(jù)后,再讓 AI 重新生成圖像,就得到了下方右側(cè)這張圖片,相較而言它的廣告效果會好很多。
可以看到,雖然大語言模型理解了大量公開的知識,但是缺少業(yè)務(wù)相關(guān)的私域知識。而這部分私域知識是數(shù)據(jù)在業(yè)務(wù)上發(fā)揮最大價值的關(guān)鍵。只有把生成式 AI 的能力和業(yè)務(wù)數(shù)據(jù)緊密結(jié)合在一起,才能最大化發(fā)揮生成式 AI 的智能,數(shù)據(jù)仍然是驅(qū)動智能的核心。接下來介紹將大語言模型能力和業(yè)務(wù)數(shù)據(jù)結(jié)合的三種方式。
6. 業(yè)務(wù)數(shù)據(jù)驅(qū)動智能方式一:上下文學(xué)習(xí)(In Context Learnig)
第一種方式是上下文學(xué)習(xí)(也就是 In-context-learning)。這里舉一個例子,用戶對某個民宿感興趣,但是他不確信這個民宿是否能夠讓家里的所有成員都住得比較舒適。當(dāng)然他可以自己去詳細(xì)地了解這個民宿的所有信息,然后再看是否能住下,但這無疑是件繁瑣的事情。于是我們想利用大語言模型的能力來完成這樣一個規(guī)劃,把這個民宿的描述等信息給到大語言模型,然后再向大語言模型提問,請它安排一下家人的住宿。大家可以看到大語言模型在了解了這些信息之后,給出了一個非常合理的安排。這就是大語言模型一個核心的能力,它可以從上下文當(dāng)中學(xué)習(xí)知識,并且把自己的智能應(yīng)用在這些新學(xué)的知識上。
7. 業(yè)務(wù)數(shù)據(jù)驅(qū)動智能方式二:向量搜索
第二種方式是基于嵌入向量的相似性搜索。比如基于 Transformer 的文本嵌入模型能夠?yàn)槊袼薜拿枋龊驮u論等文字生成嵌入向量。兩個民宿越相似,它們對應(yīng)的嵌入向量也就越接近。高效地查找和某個指定向量最相近的若干向量的搜索叫作向量搜索。
8. 檢索增強(qiáng)生成-RAG
把向量搜索技術(shù)和大模型上下文學(xué)習(xí)的能力相結(jié)合,就發(fā)展出了檢索增強(qiáng)生成技術(shù),也就是 RAG。當(dāng)用戶提交一個問題,比如“靠近西湖適合一家四口人居住并且簡約風(fēng)格的民宿”,我們先讓大語言模型改寫這個問題,然后用文本嵌入模型為改寫好的問題生成嵌入向量。接下來再通過向量搜索找出跟這個問題對應(yīng)的嵌入向量最近的一些嵌入向量所對應(yīng)的民宿。然后再把這些民宿的描述以及用戶的問題同時作為上下文輸入給大語言模型,大語言模型就可以通過剛才所說的上下文學(xué)習(xí)(也就是 In-context-learning)的能力去理解這些信息,并且根據(jù)這些信息給出答案。
9. 業(yè)務(wù)數(shù)據(jù)驅(qū)動智能方式三:模型微調(diào)
業(yè)務(wù)數(shù)據(jù)驅(qū)動智能的第三個方式是模型微調(diào)。檢索增強(qiáng)生成技術(shù)通過文本嵌入模型把數(shù)據(jù)變成嵌入向量,也就是知識。而模型微調(diào)的基本想法是讓通用模型去學(xué)習(xí)業(yè)務(wù)相關(guān)的領(lǐng)域知識,從而讓這些領(lǐng)域知識成為模型的內(nèi)在能力。微調(diào)的流程首先把業(yè)務(wù)數(shù)據(jù)做各種清洗加工,然后讓大語言模型去學(xué)習(xí)這些高質(zhì)量的數(shù)據(jù)集,從而成為一個理解業(yè)務(wù)數(shù)據(jù)的一個大語言模型。微調(diào)的方式一般會分為四種:無監(jiān)督微調(diào)、蒸餾、監(jiān)督微調(diào)、以及強(qiáng)化學(xué)習(xí)。
簡單地介紹一下這些微調(diào)方式的原理:
- 無監(jiān)督微調(diào)簡單地說就是博覽群書。比如想讓大語言模型理解古文,需要先找到一些高質(zhì)量的古文書,然后讓大語言模型閱讀這些書。通過這種泛讀的方式,大語言模型就能總結(jié)出古文用字的一些內(nèi)在規(guī)律,就有了一定的古文素養(yǎng),從而有知識和能力做和古文相關(guān)的任務(wù)。
- 蒸餾這種方式可以理解為找一個老師,跟著老師學(xué)。跟著一個古文素養(yǎng)很高的老師學(xué),借助老師能夠更快更好地學(xué)到古文的精髓。
- 監(jiān)督微調(diào):除了上面提到的兩個沒有明確目的的素質(zhì)教育之外,應(yīng)試教育在某些場景也同樣重要。即便大語言模型經(jīng)過各種素質(zhì)教育,有了比較好的古文素養(yǎng),并不代表著它在考試中一定可以得到高分。比如說讓大語言模型去參加科舉考試,如果沒有培訓(xùn)過八股文的寫作,那它就可能因?yàn)閷懙奈恼虏环弦?guī)范而得不到好的成績。應(yīng)試教育做的就是這種對齊工作,讓大語言模型知道人類在完成某些任務(wù)時的一些偏好。最直接的對齊方式是監(jiān)督微調(diào)。在這個例子里,就是讓大語言模型學(xué)習(xí)歷屆八股文的考題和范文。通過這種方式,大語言模型就明白了八股文的規(guī)范,就學(xué)會了如何把古文能力用八股文這種方式表現(xiàn)出來。
- 另外一種對齊方式是強(qiáng)化學(xué)習(xí)。這種學(xué)習(xí)方式不會告訴模型什么是正確答案,但是會給模型寫的文章進(jìn)行打分,告訴模型這篇文章寫得好還是不好。通過反復(fù)的試驗(yàn)?zāi)P途蜁业将@得高分的寫作手法,從而按照人類的期望高質(zhì)量地完成任務(wù)。
簡單總結(jié)一下,生成式 AI 和業(yè)務(wù)數(shù)據(jù)結(jié)合有三種方式:第一個是上下文學(xué)習(xí),也就是 In Context Learning;第二個是基于向量搜索和上下文學(xué)習(xí)的檢索增強(qiáng)生成,也就是 RAG。第三種方式是各種模型微調(diào)。在實(shí)際的應(yīng)用中,往往會把各種方式結(jié)合在一起,還可能使用外部的工具,這類智能的應(yīng)用就叫做數(shù)據(jù)智能體,也就是 AI Agent。
10. 數(shù)據(jù)智能體:AI Agent
在這個民宿的例子中,可以想象一個虛擬旅游顧問。用戶可以向這個虛擬旅游顧問咨詢?nèi)魏侮P(guān)于旅游的問題。比如為一家四口人設(shè)計(jì)一個杭州三天的旅行計(jì)劃,并且根據(jù)用戶反饋進(jìn)行修改,形成用戶滿意的方案后自動完成各種機(jī)票、民宿、以及景點(diǎn)的預(yù)定。為了完成這些功能,虛擬旅行顧問就需要利用大語言模型的能力去做規(guī)劃,使用推薦系統(tǒng)找出用戶可能喜歡的杭州的景點(diǎn),找出這些景點(diǎn)附近用戶可能喜歡的民宿,等等。這樣一個 AI Agent 能夠綜合大語言模型的能力并且靈活使用外部的工具。
五、現(xiàn)有架構(gòu)的弊端
再次審視業(yè)務(wù)架構(gòu),為了實(shí)現(xiàn)這些這樣一個 AI Agent,需要一個極其復(fù)雜的數(shù)據(jù)架構(gòu)。這種數(shù)據(jù)架構(gòu)有很多弊端。這些弊端可以從三個不同的視角來看。
- 開發(fā)視角:構(gòu)建這樣復(fù)雜的架構(gòu)有較高的開發(fā)門檻。開發(fā)人員需要學(xué)習(xí)和理解多個不同的數(shù)據(jù)產(chǎn)品,每個數(shù)據(jù)產(chǎn)品都有一些局限性,開發(fā)人員還需要去理解和繞開這些問題。對很多中小公司來說,招到這么多優(yōu)秀的數(shù)據(jù)和 AI 工程師是個挑戰(zhàn),從而導(dǎo)致很多數(shù)據(jù)的業(yè)務(wù)價值并沒有完全地挖掘出來。即使團(tuán)隊(duì)很幸運(yùn)擁有這些工程師,他們也需要把大量的時間花在繁瑣的數(shù)據(jù)同步上,這無疑極大地降低了開發(fā)效率,降低了業(yè)務(wù)的迭代速度,阻礙了業(yè)務(wù)的發(fā)展。
- 運(yùn)維視角:要運(yùn)維這么多產(chǎn)品,勢必給運(yùn)維帶來復(fù)雜度。特別是數(shù)據(jù)同步,它往往是一個系統(tǒng)中最薄弱的環(huán)節(jié),很容易導(dǎo)致系統(tǒng)的不穩(wěn)定。同時因?yàn)橐环輸?shù)據(jù)需要在多個產(chǎn)品中重復(fù)存儲,也帶來了更大的成本。
- 業(yè)務(wù)視角:雖然我們剛才所看到架構(gòu)是從業(yè)務(wù)需求倒逼出來的,但是從業(yè)務(wù)視角來看,它也不是完美的。因?yàn)槲覀冃枰龈鱾€產(chǎn)品之間的數(shù)據(jù)同步,這就無法避免數(shù)據(jù)延遲的問題。數(shù)據(jù)延遲會導(dǎo)致業(yè)務(wù)看到數(shù)據(jù)可能不一致,從而導(dǎo)致業(yè)務(wù)的問題。
六、新一代數(shù)據(jù)系統(tǒng):分布式 Data Warebase
為了能夠讓系統(tǒng)沒有數(shù)據(jù)延遲,唯一的選擇是讓數(shù)據(jù)同步不再是一種必要而是一個選擇。這就意味著我們需要用同一份數(shù)據(jù)支持剛才我們所說的各種場景。綜合評估下來關(guān)系型數(shù)據(jù)庫的功能最完備,離我們的最終目標(biāo)最接近。所以我們決定以關(guān)系型數(shù)據(jù)庫為出發(fā)點(diǎn)去吸取其他產(chǎn)品的一些核心技術(shù)。
先從語言層次來看這個問題,關(guān)系型數(shù)據(jù)庫使用的語言是關(guān)系模型,它能夠很好地表達(dá)結(jié)構(gòu)化的數(shù)據(jù)。為了能夠很好地表達(dá)半結(jié)構(gòu)化的數(shù)據(jù),可以引入 JSON 類型。這樣我們就能夠表達(dá)信息層的兩種語言。知識層的語言是嵌入向量,通過引入高維向量這種類型,知識也就成為了系統(tǒng)的一等公民。這種做法允許我們在一個表里同時存儲結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)、以及表達(dá)知識的嵌入向量。
接下來從性能的角度來分析。示例中構(gòu)建民宿平臺需要使用這么多數(shù)據(jù)產(chǎn)品的一個重要的原因是性能。要徹底解決系統(tǒng)的性能瓶頸,需要做五個重大性能相關(guān)的改進(jìn):
- 首先為了能夠通過增加更多的機(jī)器的方式提升系統(tǒng)的性能并且保持?jǐn)?shù)據(jù)的一致性,就需要實(shí)現(xiàn)分布式事務(wù),然后就能通過數(shù)據(jù)分片這種橫向擴(kuò)展方式提升系統(tǒng)的性能。
- 搜索的場景。之所以引入搜索引擎,是因?yàn)殛P(guān)系型數(shù)據(jù)庫即使在單機(jī)的情況下搜索的效率也很差。為了提升單機(jī)搜索性能,可以引入像倒排索引這樣的索引結(jié)構(gòu)。同樣為了提升向量搜索的性能,也可以引入向量索引。
- 為了支持高效的匯總分析,引入列式存儲。它能夠提升數(shù)據(jù)壓縮率,避免大量不必要的 IO,提升系統(tǒng)的分析性能。
- 通過向量化的執(zhí)行引擎提升復(fù)雜查詢的執(zhí)行效率。
- 通過物化視圖這種預(yù)計(jì)算的方式去避免反復(fù)執(zhí)行同樣的查詢,進(jìn)一步提升系統(tǒng)的性能。
通過這些技術(shù)的變革,就可以構(gòu)建出一類全新的數(shù)據(jù)產(chǎn)品:分布式 Data Warebase。Data Warebase 這個詞是 Data Warehouse 和 Database 這兩個詞的組合,它意味著 Data Warebase 同時具有了 Data Warehouse 和 Database 的所有能力和優(yōu)勢。
分布式 Data Warebase 能夠存儲所有的數(shù)據(jù)、信息和知識:它通過關(guān)系模型存儲結(jié)構(gòu)化的數(shù)據(jù);通過文檔模型也就是 JSON 這種方式存儲半結(jié)構(gòu)化的數(shù)據(jù);并且通過高維向量去存儲從傳統(tǒng)意義上的非結(jié)構(gòu)化數(shù)據(jù)中提取的知識。它能夠支持簡單查詢、關(guān)鍵詞查詢、以及匯總分析這類信息提取的需求,也能夠通過向量搜索去提取知識。分布式 Data Warebase 在性能、正確性、和實(shí)時性上挑戰(zhàn)可能的物理極限。分布式 Data Warebase 給用戶提供極簡的體驗(yàn),它兼容已有的生態(tài),減少學(xué)習(xí)成本,最大限度地發(fā)揮現(xiàn)有生態(tài)工具的能力。它通過隔離去保證不同場景之間互相不影響。通過自適應(yīng)保證它不僅在最苛刻的業(yè)務(wù)場景達(dá)到性能、正確性、和實(shí)時性的最優(yōu),而且在用戶的實(shí)際場景里也能夠挑戰(zhàn)極限,達(dá)到具體場景里性能、準(zhǔn)確性、和實(shí)時性的最優(yōu)。
分布式 Data Warebase 將開啟數(shù)據(jù)智能的新范式。它將使業(yè)務(wù)的數(shù)據(jù)架構(gòu)大大簡化,工程師不再需要耗費(fèi)大量的時間搭建系統(tǒng),而是把重心放在業(yè)務(wù)需求的開發(fā)上。
七、數(shù)據(jù)系統(tǒng)新的使命 - 讓數(shù)據(jù)涌現(xiàn)智能
總結(jié)一下,數(shù)據(jù)首先以比特的形式存儲在數(shù)據(jù)系統(tǒng)之中。系統(tǒng)并不理解數(shù)據(jù),數(shù)據(jù)在系統(tǒng)中還不具備任何智能。通過引入關(guān)系模型或文檔模型這類表達(dá)信息的語言,這些元數(shù)據(jù)給數(shù)據(jù)提供了上下文,賦予了數(shù)據(jù)結(jié)構(gòu),就產(chǎn)生了信息。建立在這些數(shù)據(jù)模型之上的關(guān)系型數(shù)據(jù)庫、NoSQL 數(shù)據(jù)庫、以及數(shù)倉等產(chǎn)品為信息的存儲、提取、管理、以及匯總分析提供了強(qiáng)大的工具,促進(jìn)了互聯(lián)網(wǎng)業(yè)務(wù)的快速發(fā)展。再往上是知識層的抽象,我們引入了嵌入向量這種強(qiáng)大的數(shù)學(xué)語言來表達(dá)知識。這種全新的語言為高效地表達(dá)和處理知識打開了大門,系統(tǒng)的智能也變得更加高級。再往上是智慧層,當(dāng)奇點(diǎn)到來 ,AGI 實(shí)現(xiàn)之后,機(jī)器也會和人一樣具有智慧,可以對知識做深刻的推理,并且做出戰(zhàn)略性的決策。也許當(dāng)那天到來我們將會發(fā)現(xiàn)表達(dá)智慧的新語言。
可以看到過去這些年數(shù)據(jù)系統(tǒng)的發(fā)展,已經(jīng)從信息層逐漸轉(zhuǎn)移到知識層。數(shù)據(jù)系統(tǒng)的使命也在悄然發(fā)生變化。它不再滿足于存儲、提取、管理、以及匯總分析信息。表達(dá)、理解和使用知識將會成為數(shù)據(jù)系統(tǒng)的一個重要部分。我們斷言數(shù)據(jù)系統(tǒng)新的使命將會是:讓數(shù)據(jù)涌現(xiàn)智能!