Part 01 利用大模型構(gòu)建知識圖譜
上圖是之前,我基于大語言模型構(gòu)建知識圖譜的成品圖,主要是將金融相關(guān)的股票、人物、漲跌幅之類的基金信息抽取出來。之前,我們要實現(xiàn)這種信息抽取的話,一般是用 Bert + NER 來實現(xiàn),要用到幾千個樣本,才能開發(fā)出一個效果相對不錯的模型。而到了大語言模型時代,我們有了 few-shot 和 zero-shot 的能力。
這里穿插下 few-shot 和 zero-shot 的簡單介紹,前者是小樣本學(xué)習(xí),后者是零樣本學(xué)習(xí),模型借助推理能力,能對未見過的類別進行分類。 因為大語言模型的這種特性,即便你不給模型輸入任何樣本,它都能將 n+ 做好,呈現(xiàn)一個不錯的效果。如果你再給模型一定的例子,進行學(xué)習(xí):
is_example={ '基金':[ { 'content':'4月21日,易方達基金公司明星基金經(jīng)理張坤在管的4只基金產(chǎn)品悉數(shù)發(fā)布了2023年年報' 'answers':{ '基金名稱':['易方達優(yōu)質(zhì)企業(yè)','易方達藍籌精選'], '基金經(jīng)理':['張坤'], '基金公司':['易方達基金公司'], '基金規(guī)模':['889.42億元'], '重倉股':['五糧液','茅臺'] } } ], '股票':[ { 'content':'國聯(lián)證券04月23日發(fā)布研報稱,給予東方財富(300059.SZ,最新價:17.03元)買入評級...' 'answers':{ '股票名稱':['東方財富'], '董事長':['其實'], '漲跌幅':['原文中未提及'] } } ] }就能達到上述的效果。有了大語言模型之后,用戶對數(shù)據(jù)的需求會減少很多,對大多數(shù)人而言,你不需要那么多預(yù)算去搞數(shù)據(jù)了,大語言模型就能實現(xiàn)數(shù)據(jù)的簡單抽取,滿足你的業(yè)務(wù)基本需求,再輔助一些規(guī)則,就可以。 而這些大語言模型的能力,主要是大模型的 ICL(In-Context Learning)能力以及 prompt 構(gòu)建能力。
ICL 就是給定一定樣本,輸入的樣本越多,輸出的效果越好,但是這個能力受限于模型的最大 token 長度,像是 ChatGLM-2,第一版本只有 2k 的輸入長度。像是上面的這個示例,如果你的輸入特別多的話,可能很快就達到了這個模型可輸入的 token 上限。
當然,現(xiàn)在有不少方法來提升這個輸入長度的限制。比如,前段時間 Meta 更新的差值 ORp 方法,能將 2k 的 token 上限提升到 32k。在這種情況下,你的 prompt 工程可以非常完善,加入超多的限制條件和巨多的示例,達到更好的效果。
此外,進階的大模型使用的話,你可以采用 LoRA 之類的微調(diào)方式,來強化效果。如果你有幾百個,甚至上千個樣本,這時候輔助用個 LoRA 做微調(diào),加一個類似 A100 的顯卡機器,就可以進行相關(guān)的微調(diào)工作來強化效果。
Part 02 利用大模型操作結(jié)構(gòu)化數(shù)據(jù)
結(jié)構(gòu)化數(shù)據(jù)其實有非常多種類,像圖數(shù)據(jù)也是一種結(jié)構(gòu)化數(shù)據(jù),表數(shù)據(jù)也是一種結(jié)構(gòu)化數(shù)據(jù),還有像是 MongoDB 之類的文檔型數(shù)據(jù)庫存儲的數(shù)據(jù)。Office 全家桶之前就在搞這塊的工作,有一篇相關(guān)論文講述了如何用大模型來操作 Sheet。
此外,還有一個相關(guān)工作是針對 SQL 的。前兩年,有一個研究方向特別火,叫:Text2SQL,就是如何用自然語言去生成 SQL。
大家吭哧吭哧做了好幾年,對于單表的查詢這塊做得非常好。但是有一個 SQL 困境,就是多表查詢?nèi)绾螌崿F(xiàn)?多表查詢,一方面是沒有相關(guān)數(shù)據(jù),本身多表查詢的例子就非常少,限制了模型提升;另一方面,多表查詢本身就難以學(xué)習(xí),學(xué)習(xí)條件會更加復(fù)雜。
而大語言模型出來之后,基于 GPT-4,或者是 PaLM 2 之類的模型,去訓(xùn)練一個 SQL 版本的模型,效果會非常好。SQL-PaLM 操作數(shù)據(jù)庫的方式有兩種。一是在上下文學(xué)習(xí)(In-context learning), 也就是給模型一些例子,包括數(shù)據(jù)庫的 schema、自然語言的問題和對應(yīng)的 SQL 語句,然后再問幾個新問題,要求模型輸出 SQL 語句。另一種方式是微調(diào)(fine-tuning),像是用 LoRA 或者是 P-tuning。
上圖就是一個用 Prompt 工程來實現(xiàn) Text2SQL,事先先把表的 schema 告訴大模型,再提問,再拼成 SQL…按照這種方式給出多個示例之后,大模型生成的 SQL 語句效果會非常好。還有一種就是上面提到的微調(diào),將 schema 和 question 組合成樣本對,讓大模型去學(xué)習(xí),這時候得到的效果會更好。具體可以看下 SQL-PaLM 這篇論文,參考文末延伸閱讀;
此外,還有更進階的用法,和思為之前舉的例子有點相似,就是大模型和知識圖譜結(jié)合。
比如說,我想問“奧巴馬出生在哪個國家“,它就是構(gòu)建知識圖譜 KQs,再進行一個召回,而召回有很多種方法,比如之前思為分享的 Llama Index 的向量召回,而向量召回最大的難點在于模型,像 OpenAI 提供的模型,效果會比較好,但是數(shù)據(jù)量大的時候,頻繁調(diào)用 OpenAI API 接口一方面涉及到隱私問題,另一方面涉及到預(yù)算費用問題;而自己要訓(xùn)練一個模型,不僅難度大,由于數(shù)據(jù)量的原因,效果也不是很好。因此,如果你是借助 Llama Index 的向量模型進行召回,可能需要輔助一些額外的關(guān)鍵詞模型,基于關(guān)鍵詞匹配來進行召回,像是子圖召回之類的。
對應(yīng)到這個例子,系統(tǒng)需要識別出關(guān)鍵詞是 Obama 和 Country,關(guān)聯(lián)到美國,再進行召回。這樣處理之后,將相關(guān)的事實 Retrieved Facts 喂給大模型,讓它輸出最終的結(jié)果。在 Retrieved Facts 部分(上圖藍色部分),輸入可能相對會比較長,在圖中可能是一個三元組,這樣就會相對比較簡單。這里還會涉及到上面說的 2k 輸入 token 提升問題,還是一樣的通過一些微調(diào)手段來實現(xiàn)。
Part 03 大模型使用工具
下面就是本文的重頭戲——大模型的使用工具。什么是大模型工具?你可以理解為它是把一些復(fù)雜操作集成到一起,讓大模型做一個驅(qū)動。
舉個例子,ChatGPT 剛出來的時候,會有人說“給我點一個披薩”,這當中就涉及到許多復(fù)雜的操作。
Data-Copilot 是浙大某個團隊做的大模型工具,主要是做意圖識別和信息抽取。上圖右側(cè)是“輸入一句話,把相關(guān)的圖繪制出來”的效果展示,這里就要提取一句話中的關(guān)鍵詞信息,關(guān)鍵詞信息識別之后去對應(yīng)的數(shù)據(jù)庫中找對應(yīng)的數(shù)據(jù),找到數(shù)據(jù)之后進行數(shù)據(jù)處理,最后再生成一個圖。這里并沒有用到圖數(shù)據(jù)庫,而是直接基于 2Sheet 接口來實現(xiàn)的。
這里我們向這個模型提出一個需求“今年上證50指數(shù)的所有成分股的凈利潤增長率同比是多少”,這個模型會將其解析成對應(yīng)的一個個步驟進行操作。上圖右側(cè)顯示了一共有 4 步:
Step1 解析關(guān)鍵指標;
Step2 提取相關(guān)數(shù)據(jù);
Step3 數(shù)據(jù)處理,整理成對應(yīng)格式;
Step4 繪制成圖;
而大模型是如何實現(xiàn)的呢?主要分為兩層,一方面你要設(shè)計一個接口調(diào)用,供 prompt 調(diào)用;另一方面準備好底層數(shù)據(jù),它可能是在圖數(shù)據(jù)庫中,也可能在關(guān)系型數(shù)據(jù)庫中,給接口做承接之用。
這個例子更加復(fù)雜,是想讓大模型來預(yù)測中國未來(下四個季度)的 GDP 增長。這里看到它分成了三部分(上圖橙色部分):
Step1 拿到歷史數(shù)據(jù);
Step2 調(diào)用預(yù)測函數(shù),它可能是線性函數(shù),也可能是非線性函數(shù),也有可能是深度學(xué)習(xí)模型;
Step3 繪制成圖(上圖藍色部分);
一般來說,金融分析師做相關(guān)的金融數(shù)據(jù)分析的模型會相對統(tǒng)一,這種相對統(tǒng)一的模型我們用函數(shù)實現(xiàn)之后,就可以讓他的工作更加便捷:分析師只要說一句話,圖就畫好。
Part 04 大模型的最終形態(tài)
上面展示的形態(tài),基本上人工痕跡還是很明顯的:prompt 要人為寫,數(shù)據(jù)接口也得人為寫。而我覺得它最終的形態(tài),可能同 GPT4 的形態(tài)有點相似,像是前段時間出的 Code Interpreter,代碼編譯器功能。你只用一句話,后面所有的功能都實現(xiàn)完了。
大概實現(xiàn)過程就是上圖所示的,用 LLM 作為接口,把整個百科、計算器、搜索、編譯器、知識圖譜等等接入進來,從而最終實現(xiàn)畫圖的功能。
而它的最終效果是怎么樣的呢?下面是國際友人在推特上 po 出的一張圖:
就那么簡單,你不需要額外地搞 API,就能實現(xiàn)一個功能。
審核編輯:劉清
-
SQL
+關(guān)注
關(guān)注
1文章
764瀏覽量
44130 -
GPT
+關(guān)注
關(guān)注
0文章
354瀏覽量
15373 -
數(shù)據(jù)存儲器
+關(guān)注
關(guān)注
1文章
69瀏覽量
17781 -
LoRa技術(shù)
+關(guān)注
關(guān)注
3文章
101瀏覽量
16330
原文標題:LLM:大模型下的知識圖譜另類實踐
文章出處:【微信號:智行RFID,微信公眾號:智行RFID】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論