張鶴譯,王 鑫+,韓立帆,李 釗,陳子睿,陳 哲
1.天津大學(xué) 智能與計算學(xué)部,天津 300354
2.天津中醫(yī)藥大學(xué) 循證醫(yī)學(xué)中心,天津 301617
問答系統(tǒng)(question answering,QA)能夠自動回答用戶提出的自然語言問題,是信息檢索和自然語言處理的交叉研究方向。將知識圖譜(knowledge graph,KG)與問答系統(tǒng)融合,正確理解用戶語義是一大挑戰(zhàn)[1]。雖然知識圖譜問答能夠通過對問題進(jìn)行分析理解,最終獲取答案,但面對自然語言的靈活性與模糊性,如何處理復(fù)雜問題的語義信息,如何提高復(fù)雜推理問答的高效性仍是研究難點[2]。
近年來,大語言模型(large language models,LLM)在多種自然語言處理任務(wù)[3-4]上取得了顯著的成果,并表現(xiàn)出若干涌現(xiàn)能力[5]。InstructGPT[6]、ChatGPT(https://openai.com/blog/chatgpt/)、GPT4[7]等自回歸大語言模型[8]通過預(yù)訓(xùn)練、微調(diào)(fine-tuning)等技術(shù)理解并遵循人類指令,使其能夠正確理解并回答復(fù)雜問題。LLM 在各種自然語言處理任務(wù)上表現(xiàn)卓越,甚至能夠?qū)ξ匆娺^的任務(wù)表現(xiàn)出不錯的性能,這為正確處理復(fù)雜問題展示了能夠提供統(tǒng)一解決方案的潛力。然而,這些模型都存在一些固有的局限性,包括處理中文能力較差,部署困難,無法獲得關(guān)于最近事件的最新信息以及產(chǎn)生有害幻覺事實(halluci-natory fact)[9]等。由于這些局限性,將大語言模型直接應(yīng)用于專業(yè)領(lǐng)域問答仍然存在諸多問題。一方面難以滿足大語言模型對于硬件資源的要求;另一方面,面對專業(yè)領(lǐng)域,大語言模型的能力仍然有所不足。
面對專業(yè)領(lǐng)域的問題,大語言模型的生成結(jié)果可能缺乏真實性和準(zhǔn)確性,甚至?xí)a(chǎn)生“幻覺事實”。為了增強大語言模型應(yīng)對專業(yè)領(lǐng)域問題的能力,很多工作采取數(shù)據(jù)微調(diào)的方式修改模型參數(shù),從而讓大模型具有更高的專業(yè)能力。然而一些文獻(xiàn)指出這些數(shù)據(jù)微調(diào)的方法會產(chǎn)生災(zāi)難性遺忘(catastrophic forgetting)[10],致使模型原始對話能力喪失,甚至在處理非微調(diào)數(shù)據(jù)時會出現(xiàn)混亂的結(jié)果。為了應(yīng)對這些問題,本文結(jié)合大語言模型與知識圖譜,設(shè)計了一種應(yīng)用于專業(yè)領(lǐng)域的問答系統(tǒng)。該問答系統(tǒng)通過將知識庫(knowledge base,KB)中的文本知識、知識圖譜的結(jié)構(gòu)化知識、大語言模型中的參數(shù)化知識三者融合,生成專業(yè)問答結(jié)果,因此無需使用數(shù)據(jù)微調(diào)的方式修改模型參數(shù),就能夠理解用戶語義并回答專業(yè)領(lǐng)域的問題。同時,通過采用類似于ChatGLM-6B這樣對硬件資源要求較低的模型,以降低硬件對系統(tǒng)的約束。
另外,隨著大語言模型技術(shù)的發(fā)展,認(rèn)知智能范式的轉(zhuǎn)變將是接下來的研究重點,如何將大語言模型與知識圖譜進(jìn)行有效結(jié)合是一個值得研究的課題。因此,本文參照研究問答系統(tǒng)的形式,進(jìn)一步研究“大語言模型+知識圖譜”的智能信息系統(tǒng)新范式,探索知識圖譜與大語言模型的深度結(jié)合,利用專業(yè)性知識圖譜來增強LLM的生成結(jié)果,并利用LLM理解語義抽取實體對知識圖譜進(jìn)行檢索與增強。
本文的主要貢獻(xiàn)有兩點:
(1)提出大語言模型+專業(yè)知識庫的基于提示學(xué)習(xí)(prompt learning)的問答系統(tǒng)范式,以解決專業(yè)領(lǐng)域問答系統(tǒng)數(shù)據(jù)+微調(diào)范式帶來的災(zāi)難性遺忘問題。在提升大模型專業(yè)能力的同時,保留其回答通用問題的能力。在硬件資源不足的情況下,選擇較小的大模型部署專業(yè)領(lǐng)域的問答系統(tǒng),實現(xiàn)能和較大的大模型在專業(yè)領(lǐng)域相媲美甚至更好的效果。
(2)探索了大語言模型和知識圖譜兩種知識范式的深度結(jié)合。實現(xiàn)了將大語言模型和知識圖譜的雙向鏈接,可以將易讀的自然語言轉(zhuǎn)換為結(jié)構(gòu)化的數(shù)據(jù),進(jìn)而和知識圖譜中的結(jié)構(gòu)化數(shù)據(jù)匹配,以增強回答專業(yè)性;可以將KG中的結(jié)構(gòu)化知識轉(zhuǎn)換為更易讀的自然語言知識來方便人們理解。
本文相關(guān)代碼開源在https://github.com/zhangheyi-1/llmkgqas-tcm/。
隨著以ChatGPT 為代表的大語言模型表現(xiàn)出令人震驚的能力,國內(nèi)諸多廠商紛紛投入構(gòu)建中文大語言模型,并涌現(xiàn)出了一系列的模型,如百度的文心一言、阿里的通義千問、華為的盤古大模型等。這些模型雖然具有一定的問答能力,但是正如上文所言,它們在專業(yè)領(lǐng)域都有著巨大的局限性。GLM(general language model)[11]是清華提出的預(yù)訓(xùn)練語言模型,它的底層架構(gòu)是通用語言模型,在超過4 000億個文本標(biāo)識符上進(jìn)行預(yù)訓(xùn)練。本文系統(tǒng)的應(yīng)用示例同樣是基于GLM。
在垂直領(lǐng)域存在很多的工作,它們主要采用的方法仍然是數(shù)據(jù)+微調(diào)的范式,即使用不同的專業(yè)數(shù)據(jù)對預(yù)訓(xùn)練語言模型進(jìn)行微調(diào),如P-tuning[12]、Ptuning v2[13]等,以獲取語言模型在相應(yīng)領(lǐng)域的專業(yè)能力。通過更新少量參數(shù),減少了對硬件資源的要求。雖然減弱了微調(diào)產(chǎn)生的災(zāi)難性遺忘問題,但是此問題仍然存在。PMC-LLaMA[14]提出一種基于生物醫(yī)學(xué)文獻(xiàn)的預(yù)訓(xùn)練語言模型,通過對LLaMA模型進(jìn)行微調(diào),注入醫(yī)療知識以增強其在醫(yī)療領(lǐng)域?qū)I(yè)的能力,從而提高其在醫(yī)療問答基準(zhǔn)測試中的表現(xiàn)。Med-PaLM[15]針對醫(yī)療領(lǐng)域,提出了MultiMedQA 醫(yī)學(xué)問題回答基準(zhǔn),涵蓋了醫(yī)學(xué)考試、醫(yī)學(xué)研究和消費者醫(yī)學(xué)問題?;贔lan-PaLM 進(jìn)行指令微調(diào)(instruction tuning),在多個方面縮小了與臨床醫(yī)生的差距,證明了指令提示調(diào)整的有效性。ChatDoctor[16]使用醫(yī)療領(lǐng)域知識對LLaMA 模型進(jìn)行微調(diào)獲取醫(yī)療聊天模型,其根據(jù)在線醫(yī)療咨詢網(wǎng)站的10萬真實世界患者-醫(yī)生對話,對模型進(jìn)行了微調(diào),添加了自主知識檢索功能,通過構(gòu)建適當(dāng)?shù)奶崾驹诖笳Z言模型中實現(xiàn)具體檢索功能。華佗(本草)[17]基于中文醫(yī)學(xué)知識的LLaMA 微調(diào)模型,采用了公開和自建的中文醫(yī)學(xué)知識庫,主要參考了中文醫(yī)學(xué)知識圖譜CMeKG(https://github.com/king-yyf/CMeKG_tools)。DoctorGLM[18]是基于ChatGLM-6B 的中文問診模型,由ChatGPT生成與醫(yī)學(xué)知識內(nèi)容與邏輯關(guān)系相關(guān)的若干問題構(gòu)建訓(xùn)練數(shù)據(jù),再通過“文本段-問題”對的方式讓ChatGPT回答問題,使ChatGPT生成含有醫(yī)學(xué)指南信息的回答,保證回答的準(zhǔn)確性。從以上工作可以總結(jié)出,垂直領(lǐng)域的范式還是通過不同來源的數(shù)據(jù)+不同的模型基座進(jìn)行微調(diào),仍然無法避免微調(diào)的固有缺陷,而本文使用的專業(yè)知識庫+大語言模型的新范式能夠解決這一問題。
LangChain(https://www.langchain.com/)是一 個強大的框架,旨在幫助開發(fā)人員使用語言模型構(gòu)建端到端的應(yīng)用程序,可以為LLM 的開發(fā)利用提供有力支撐。它提供了一套工具、組件和接口,可以簡化創(chuàng)建由LLM 或聊天模型提供支持的應(yīng)用程序的過程。LangChain可以輕松管理與大語言模型的交互,將多個組件鏈接在一起,并集成額外的資源。利用LangChain,本文設(shè)計的問答系統(tǒng)可以輕松建立知識庫與大語言模型間的鏈接,將知識注入到大語言模型當(dāng)中。
本文提出的專業(yè)問答系統(tǒng)基于大語言模型與知識圖譜,旨在探索大語言模型+專業(yè)知識庫的問答系統(tǒng)范式,探索大語言模型與知識圖譜的深度結(jié)合,以實現(xiàn)專業(yè)的垂直領(lǐng)域問答效果,并為用戶提供專業(yè)問答服務(wù)和友好交互服務(wù)。
基于以上目標(biāo)系統(tǒng)實現(xiàn)了以下功能:信息過濾、專業(yè)問答、抽取轉(zhuǎn)化。
為了實現(xiàn)這些功能,系統(tǒng)基于專業(yè)知識與大語言模型,利用LangChain 將兩者結(jié)合,設(shè)計并實現(xiàn)了大語言模型與知識圖譜的深度結(jié)合新模式。
信息過濾模塊旨在減少大語言模型生成虛假信息的可能性,以提高回答的準(zhǔn)確性。專業(yè)問答模塊通過將專業(yè)知識庫與大語言模型結(jié)合,提供專業(yè)性的回答。這種方法避免了重新訓(xùn)練大語言模型所需的高硬件要求和可能導(dǎo)致的災(zāi)難性遺忘后果。
抽取轉(zhuǎn)化是指從自然語言文本抽取出知識圖譜結(jié)構(gòu)化數(shù)據(jù),將知識圖譜結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)化為自然語言文本,是為了進(jìn)一步探索問答系統(tǒng)新范式而設(shè)計的。一方面基于大語言模型提取出專業(yè)知識,將知識圖譜結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)化為自然語言文本,易于用戶理解;另一方面利用知識抽取出三元組和知識圖譜對比驗證,可以增強大語言模型回答的專業(yè)性,同時抽取出的三元組在經(jīng)專家驗證后可以插入知識圖譜中以增強知識圖譜。除此之外,本系統(tǒng)還實現(xiàn)了用戶友好的交互服務(wù)。
如圖1所示,系統(tǒng)交互流程如下:(1)用戶向系統(tǒng)提出問題,問題通過信息過濾后,與知識庫中的相關(guān)專業(yè)知識組成提示,輸入到專業(yè)問答模塊中得到答案;(2)信息抽取模塊從回答中提取出三元組,與知識圖譜進(jìn)行匹配,獲取相關(guān)節(jié)點數(shù)據(jù);(3)這些節(jié)點數(shù)據(jù)經(jīng)用戶選擇后,同樣以提示的形式輸入專業(yè)問答模塊得到知識圖譜增強的回答。這種雙向交互實現(xiàn)了大語言模型和知識圖譜的深度結(jié)合。
圖1 問答系統(tǒng)流程圖Fig.1 Flow chart of Q&A system
總而言之,本文提出的專業(yè)問答系統(tǒng)通過大語言模型與知識圖譜深度結(jié)合,實現(xiàn)了專業(yè)的垂直領(lǐng)域問答效果,并且提供用戶友好的交互服務(wù)。系統(tǒng)的信息過濾模塊減少了虛假信息生成的可能性,專業(yè)問答模塊提供了專業(yè)性的回答,抽取轉(zhuǎn)化模塊進(jìn)一步增強了回答的專業(yè)性,并可以對結(jié)構(gòu)化數(shù)據(jù)進(jìn)行解釋,降低用戶理解難度,同時可用專家確認(rèn)無誤的知識進(jìn)一步增強知識圖譜。這種新的問答系統(tǒng)范式為用戶提供了更準(zhǔn)確、更專業(yè)的答案,同時保持了用戶友好的交互體驗。
本文從數(shù)據(jù)構(gòu)造與預(yù)處理、信息過濾、專業(yè)問答、抽取轉(zhuǎn)化四方面,以中醫(yī)藥方劑領(lǐng)域的應(yīng)用為例,介紹如何構(gòu)建系統(tǒng)。
本文針對專業(yè)領(lǐng)域,收集相關(guān)領(lǐng)域數(shù)據(jù)進(jìn)行預(yù)處理,設(shè)計流程來訓(xùn)練一套易于部署的專業(yè)領(lǐng)域問答系統(tǒng),并探索大語言模型與知識圖譜的融合。
圖2 以中醫(yī)藥方劑專業(yè)領(lǐng)域為例展示了該系統(tǒng)的問答流程。首先,對輸入的中醫(yī)藥方劑相關(guān)問題文本進(jìn)行信息過濾,即文本分類,判斷出該文本是否與中醫(yī)藥方劑相關(guān)。其次,通過LangChain在知識庫中檢索與文本相關(guān)的知識,以提示的方式和問題一起輸入大模型,如:ChatGPT、ChatGLM 等,大模型通過推理生成具備專業(yè)知識的答案。然后,對該回答進(jìn)行知識抽取,從回答中抽取出三元組。將抽取出的三元組和已有的方劑知識圖譜進(jìn)行匹配,以驗證回答的專業(yè)性,同時將知識圖譜中的節(jié)點以問題的形式輸入大模型,獲取易讀的自然語言解釋,從而實現(xiàn)了大模型和知識圖譜的雙向轉(zhuǎn)換。
圖2 大語言模型融合知識圖譜問答流程示例Fig.2 Example of question-answer process for integrating knowledge graph in a large language model
本系統(tǒng)的實現(xiàn)需要收集整理專業(yè)數(shù)據(jù)集,以支持系統(tǒng)的實現(xiàn)。本文基于多種數(shù)據(jù)構(gòu)造系統(tǒng)所需的數(shù)據(jù)集、知識庫,并對這些數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理。
(1)基于已有的專業(yè)領(lǐng)域數(shù)據(jù)集。本文直接搜集專業(yè)領(lǐng)域已有的相關(guān)數(shù)據(jù)集,參考其構(gòu)成,從中整理篩選出所需的數(shù)據(jù)。對于中醫(yī)藥方劑領(lǐng)域,參考MedDialog[19]、CBLUE[20]、COMETA[21]、CMeKG 數(shù) 據(jù)集,整理并構(gòu)建相關(guān)專業(yè)數(shù)據(jù)。相關(guān)介紹如表1所示。
表1 相關(guān)專業(yè)數(shù)據(jù)集Table 1 Related professional datasets
(2)權(quán)威數(shù)據(jù)。權(quán)威數(shù)據(jù)從專業(yè)書籍或權(quán)威網(wǎng)站收集。這部分?jǐn)?shù)據(jù)來自于相關(guān)領(lǐng)域的專業(yè)書籍和權(quán)威網(wǎng)站,用于構(gòu)建知識庫,為大模型的回答提供專業(yè)知識支撐。對于中醫(yī)藥方劑領(lǐng)域,主要基于方劑學(xué)等專業(yè)書籍構(gòu)建了中醫(yī)藥方劑專業(yè)知識庫,同時從NMPA(國家藥品監(jiān)督管理局)、藥融云-中醫(yī)藥數(shù)據(jù)庫群、TCMID中醫(yī)藥數(shù)據(jù)庫、中醫(yī)藥證候關(guān)聯(lián)數(shù)據(jù)庫等專業(yè)權(quán)威網(wǎng)站收集中醫(yī)藥方劑領(lǐng)域的相關(guān)數(shù)據(jù)知識。
(3)問題數(shù)據(jù)。問題數(shù)據(jù)用來訓(xùn)練信息過濾模型。由于某些專業(yè)領(lǐng)域存在問題數(shù)據(jù)缺失的情況,本文設(shè)計了一種基于提示的方法,使用大模型生成問題數(shù)據(jù)(圖3 所示)。首先從相關(guān)數(shù)據(jù)中選擇一條數(shù)據(jù)用來生成提示,將提示輸入大模型生成一條數(shù)據(jù),重復(fù)以上述步驟,直到相關(guān)數(shù)據(jù)被選完。
圖3 基于LLM生成數(shù)據(jù)方法Fig.3 Method for generating datasets based on LLM
算法1基于LLM生成數(shù)據(jù)
輸入:相關(guān)文本D,LLM(如ChatGPT)的API_KEY。
輸出:基于LLM生成的問題數(shù)據(jù)R。
其中D表示所有的相關(guān)數(shù)據(jù),d表示一條相關(guān)數(shù)據(jù),R表示所有生成的問題數(shù)據(jù),r表示一條生成的數(shù)據(jù)。create 根據(jù)用戶提供的API_KEY 創(chuàng)建與LLM(如ChatGPT)的鏈接,select表示選擇一條數(shù)據(jù),P表示根據(jù)數(shù)據(jù)生成合適的提示,llmresult表示獲取LLM 生成的回復(fù),abstract 表示從生成回復(fù)中提取出問題數(shù)據(jù)并進(jìn)行匯總。
在中醫(yī)藥方劑領(lǐng)域,如表2中P1所示,將提示P1輸入LLM 中,生成相關(guān)問題。中醫(yī)藥方劑領(lǐng)域問答系統(tǒng)的問題數(shù)據(jù),80%來自于現(xiàn)有的問答數(shù)據(jù)集,如MultiMedQA[15]、CMRC2018[22]、CMedQA-System[23]、cMedQA2(https://github.com/zhangsheng93/cMedQA2)等,本文從中整理相關(guān)問題,并按照是否為中醫(yī)藥方劑專業(yè)領(lǐng)域添加標(biāo)簽。20%的中醫(yī)藥方劑相關(guān)問題使用大模型生成的方式構(gòu)建。
表2 提示示例Table 2 Prompt example
(4)激活知識抽取能力的微調(diào)數(shù)據(jù)。如圖3 所示,使用基于提示的方法,通過讓LLM 回答問題,生成合適的微調(diào)數(shù)據(jù)。提示如表2 中P2所示,結(jié)合信息抽取示例,將P2輸入LLM 生成25 條微調(diào)數(shù)據(jù),利用這些數(shù)據(jù)微調(diào)大模型以激活大模型的信息抽取能力。
系統(tǒng)使用(1)、(2)中的數(shù)據(jù)構(gòu)建知識庫,知識庫支持多種形式的數(shù)據(jù),包括txt、html、pdf 等格式。使用(3)中的數(shù)據(jù)訓(xùn)練信息過濾模型。使用(4)中的數(shù)據(jù)訓(xùn)練知識抽取模型。
針對專業(yè)領(lǐng)域的問答,大語言模型無需回答其他領(lǐng)域的問題,為此本系統(tǒng)添加了基于BERT(bidirectional encoder representations from transformers)[24]的文本過濾器對問題進(jìn)行過濾,以限制大模型可以回答的問題范圍。
其他模型在面對專業(yè)領(lǐng)域的邊界問題或交叉問題時往往會產(chǎn)生微妙的幻覺事實,生成錯誤文本。盡管使用微調(diào)的形式同樣也可以使得大模型具備一定的問題甄別能力,但是這種能力在面對與微調(diào)數(shù)據(jù)集中相似的其他問題時,仍然會被迷惑,甚至對于原本可以正確回答的問題也會生成錯誤的答案。因此需要單獨設(shè)計文本過濾器以對信息進(jìn)行過濾。
假設(shè)可輸入大模型的所有的問題集合為Q,大模型在某一專業(yè)領(lǐng)域可以回答的問題集合為R,可以生成專業(yè)回答的問題集合為D,顯然有Q>R>D。使用微調(diào)方式限制將使得R→D,會讓模型回答能力減弱1)>表示包含關(guān)系,若A>B,則A →B 表示集合A 的范圍向集合B 的范圍縮小。。而使用過濾器的形式,使得Q→R,將盡可能保證詢問的問題在R的范圍之內(nèi),雖然會有部分R之外的數(shù)據(jù)進(jìn)入大模型,但是由于本文設(shè)計的專業(yè)增強問答系統(tǒng)仍然保留一定的通用能力,對R之外的問題也可以進(jìn)行無專業(yè)驗證的回答。
信息過濾將保證本系統(tǒng)盡可能回答在系統(tǒng)能力范圍以內(nèi)的問題,以減少產(chǎn)生幻覺事實的可能。
訓(xùn)練過程如圖4所示,將訓(xùn)練數(shù)據(jù)輸入BERT,再將BERT的結(jié)果輸入全連接層(fully connected layer,F(xiàn)CL)得到對本文的分類結(jié)果[CLS]。根據(jù)數(shù)據(jù)集中的標(biāo)簽,訓(xùn)練時只需要更新全連接層的參數(shù)即可。
圖4 信息過濾模型的訓(xùn)練過程Fig.4 Training process of information filtering model
一般來說使用BERT進(jìn)行文本分類任務(wù),會采用BERT 結(jié)果的分類詞向量H,基于softmax 做一個簡單的分類器,預(yù)測類別的標(biāo)簽L的概率:
這里W是分類任務(wù)的參數(shù)矩陣,最終通過最大化正確標(biāo)簽的對數(shù)概率來微調(diào)BERT 和W中的所有參數(shù)。將其修改為使用全連接層得到每個標(biāo)簽的概率:
訓(xùn)練時輸入全連接層的向量維度為768,具有兩個隱藏層,維度分別為384、768,輸出維度為類別個數(shù),這里是一個二分類任務(wù),因此為2。最終選擇概率更大的標(biāo)簽作為分類的結(jié)果[CLS]。在中醫(yī)藥方劑學(xué)領(lǐng)域中,[CLS]為問題是否與中醫(yī)藥方劑相關(guān),通過過濾問題,減少生成幻覺事實的可能,并同檢索結(jié)果一起判斷能否進(jìn)行專業(yè)回答。
為了使得大模型知識圖譜問答系統(tǒng)的回答更具備專業(yè)性,本文通過提示的方式注入知識庫中專業(yè)知識,增強回答的專業(yè)性。通過檢索知識庫,大模型可以回答其本身能力之外的專業(yè)問題,使得大語言模型支持的問題邊界擴(kuò)大。這種方式和引入專業(yè)數(shù)據(jù)的微調(diào)方法對比,無需重新訓(xùn)練就可以部署一個專業(yè)領(lǐng)域大語言模型。
如圖5 所示,在中醫(yī)藥方劑領(lǐng)域,本文使用LangChain+LLM,生成更具備專業(yè)知識的回答。本系統(tǒng)基于LangChain 在知識庫中檢索與問題相關(guān)的專業(yè)知識,然后專業(yè)知識和問題文本一起構(gòu)成P4(表2 所示)輸入LLM,最終得到答案文本。這里可以選擇使用ChatGLM-6B、ChatGPT等作為大模型。
圖5 基于LangChain+LLM的問答流程圖Fig.5 Question-answer flow chart based on LangChain+LLM
假設(shè)知識庫中的第i個文件為Fi(i=1,2,…,n),基于LangChain 進(jìn)行檢索會將各個文件中的文本進(jìn)行分塊,Dij(i=1,2,…,n;j=1,2,…,m)表示第i個文件的第j個文本塊。然后對每一塊文本建立向量索引Vi(i=1,2,…,n×m),在檢索時將問題文本向量化,得到問題文本向量Q,最后通過向量相似度計算出和Q最相似的k個向量索引,并返回對應(yīng)的文本塊。將匹配到的專業(yè)知識文本D和問題文本以P4的形式拼接,最終輸入LLM 中得到大模型生成的專業(yè)回答。該過程的偽代碼如下所示:
算法2向量化索引檢索問答
輸入:問題文本q,知識庫文件f。
輸出:大模型的回答文本result。
算法中q表示問題文本,f表示知識庫文件,d表示知識文本塊,Q表示問題文本向量,V表示文本塊的向量索引,split表示劃分文本塊的過程,trans表示從文本轉(zhuǎn)化為向量,de_trans表示從向量轉(zhuǎn)化為文本,score 將返回k個最相似的向量索引,model(P4(q,dk))表示將問題文本和專業(yè)知識文本以P4形式輸入大模型ChatGLM-6B。
本節(jié)探索大語言模型和知識圖譜的深度結(jié)合。大模型的回答是易讀的自然語言數(shù)據(jù),而知識圖譜的數(shù)據(jù)是結(jié)構(gòu)化的知識。為了將兩者交互結(jié)合,需要實現(xiàn)兩者的相互轉(zhuǎn)換:(1)實現(xiàn)對自然語言的結(jié)構(gòu)化;(2)可將結(jié)構(gòu)化的知識轉(zhuǎn)換為自然語言。前者是信息抽取的任務(wù),后者可以通過提示的方式輸入大模型轉(zhuǎn)換成自然語言文本。
以中醫(yī)藥方劑領(lǐng)域的應(yīng)用為例進(jìn)行分析:
(1)對于信息抽取,使用P-tuning v2 微調(diào)的方式強化LLM 的信息抽取能力。具體來說,在語言模型的每一層上將l個可訓(xùn)練的注意力鍵和值嵌入連接到前綴上,給定原始的鍵向量K∈Rl×d和值向量V∈Rl×d,可訓(xùn)練的向量Pk、Pv將分別與K和V連接。注意力機制頭的計算就變?yōu)椋?/p>
其中,上標(biāo)(i)代表向量中與第i個注意力頭對應(yīng)的部分,本文通過這種方法來微調(diào)大語言模型,第3.1 節(jié)描述了如何構(gòu)建微調(diào)數(shù)據(jù)。如圖1所示,將大模型生成的自然語言答案文本,輸入經(jīng)過信息抽取增強微調(diào)后的大模型中,提取出結(jié)構(gòu)化的三元組信息,并與知識圖譜進(jìn)行匹配,在專家驗證后,可以存儲到方劑知識圖譜中。
(2)對于結(jié)構(gòu)數(shù)據(jù)的易讀化,使用提示的方式(提示構(gòu)造如表2的P3所示),將知識圖譜相關(guān)節(jié)點轉(zhuǎn)換為P3后,再將P3輸入大模型得到自然語言的回答。
本文嘗試將專業(yè)知識圖譜與大語言模型結(jié)合,利用大模型生成自然語言回答,抽取出專業(yè)的結(jié)構(gòu)化知識,并和已有的專業(yè)方劑知識圖譜進(jìn)行知識匹配,以進(jìn)行專業(yè)驗證。同時可以將知識圖譜中的結(jié)構(gòu)化知識轉(zhuǎn)化成易讀的自然語言。
本章為系統(tǒng)的效果提供了實驗證據(jù),分為三部分:(1)不同模型回答效果展示;(2)性能評估;(3)大語言模型和知識圖譜的相互轉(zhuǎn)換。本文實驗?zāi)P筒捎肅hatGLM-6B 在MindSpore1.10.1 環(huán)境下,基于Ascend910硬件運行。
表3 是不同模型對相同中醫(yī)藥方劑相關(guān)問題的一些回答結(jié)果。ChatGPT沒有開源,也沒有透露任何訓(xùn)練細(xì)節(jié),因此無法保證評估數(shù)據(jù)是否被用于訓(xùn)練它們的模型,從而它們的結(jié)果在這里只能作為參考,而不應(yīng)該被用來進(jìn)行公平的比較[14]。
表3 不同模型結(jié)果對比Table 3 Comparison of results of different models
對于問題1,由于知識庫中存在相關(guān)的知識,專家問答系統(tǒng)可以進(jìn)行專業(yè)回答,ChatGLM 則無法生成方劑學(xué)的專業(yè)回答,相比于ChatGPT的回答,專家問答系統(tǒng)更精細(xì),不僅有方劑名稱,適用范圍還有具體的方劑信息。對于問題2,此問題是數(shù)學(xué)和方劑學(xué)的交叉問題,知識庫中并沒有相關(guān)信息,直接由ChatGLM 回答,會生成幻覺事實。專業(yè)問答系統(tǒng)可以判斷無足夠?qū)I(yè)知識進(jìn)行回答,進(jìn)而避免生成幻覺事實。這些結(jié)果表明,本文設(shè)計的系統(tǒng)具備良好的專業(yè)回答能力,同時也能對自身無法專業(yè)回復(fù)的問題表示拒絕。專業(yè)問答系統(tǒng)仍然保留ChatGLM本身的能力,能對一些繞過信息過濾的問題進(jìn)行回答,這種能力能夠保證在面對專業(yè)領(lǐng)域邊界問題或交叉問題時可以進(jìn)行較好的回答。
為了評估系統(tǒng)的性能,本節(jié)從主觀評估與客觀評估兩方面驗證了在中醫(yī)藥方劑學(xué)領(lǐng)域的專業(yè)效果,并通過消融實驗驗證了各個模塊都具備相應(yīng)的提升系統(tǒng)性能的能力。
4.2.1 主觀評估
本實驗請三個中醫(yī)藥方面的專家對不同模型的回答進(jìn)行評估,用以驗證系統(tǒng)效果。將100個問題分別輸入三個不同的模型生成答案,然后把來自不同模型的每個問題的結(jié)果,交給專家進(jìn)行評估,比較對于同一個問題,專家更喜歡哪一個模型的回答。如圖6所示,橫坐標(biāo)表示不同的專家,縱坐標(biāo)表示最滿意問題所占問題總數(shù)的比例。模型1 是本文所提專業(yè)問答系統(tǒng),模型2表示ChatGLM,模型3表示ChatGPT。由于是對比三個模型的結(jié)果,因此只需專家最滿意比例大于總體1/3 就可以證明專業(yè)問答系統(tǒng)的回答更好。專家們對模型1 的回答結(jié)果最滿意總個數(shù)分別是37、42、42,都超過總問題個數(shù)的1/3,因此本文設(shè)計的系統(tǒng)更受專家喜歡。
圖6 專家評估Fig.6 Expert evaluation
實驗過程中,問題被分為兩類,一種是普通問題,另一種是專業(yè)問題,兩者分別有50個問題,共100個問題。普通問題是相對常見的問題,對專業(yè)知識需求較低;專業(yè)問題是考驗式問題,類似于考試題,回答專業(yè)問題需要具備更多的知識。專家總體評估如圖6(a),簡單問題評估如圖6(b),專業(yè)問題評估如圖6(c)。
在圖6(a)中,模型1 取得了最高的滿意率,可以看出本系統(tǒng)提出的方法更受中醫(yī)藥專家的喜歡。對于簡單問題,如圖6(b)所示,遠(yuǎn)遠(yuǎn)優(yōu)于其他兩個模型,對于專業(yè)問題,如圖6(c)所示,雖然ChatGPT 取得最優(yōu)的結(jié)果,但是模型1相對于模型2仍更受專家喜歡。相對于其他模型,模型1 的回復(fù)更加詳細(xì),會補充更多專業(yè)知識。但是當(dāng)問題難度上升,回答問題需求知識更多,當(dāng)知識庫中沒有這部分知識時,模型1 的回答專業(yè)性就不如ChatGPT。這可能是因為ChatGPT 訓(xùn)練時所用的語料中涉及專業(yè)問題,所以ChatGPT在回答專業(yè)問題時更具備優(yōu)勢。
結(jié)果表明,總體上本文所提系統(tǒng)更受專家喜歡。雖然面對復(fù)雜問題時,表現(xiàn)不如ChatGPT,但是相對基線模型ChatGLM-6B仍保持更高的滿意率,表明了本文所提系統(tǒng)的有效性。
4.2.2 客觀性能評估
為了客觀驗證系統(tǒng)的問答性能,讓系統(tǒng)回答專業(yè)相關(guān)的選擇題,可以客觀驗證系統(tǒng)性能。此實驗收集并整理了50 條方劑學(xué)不同難度的選擇題,讓不同模型進(jìn)行回答,計算不同模型對不同問題的得分情況,以評估系統(tǒng)的客觀性能。
實驗過程中,問題按照問題的難度分為三類,分別為簡單題(simple question,SQ)、中等題(medium question,MQ)、困難題(difficult question,DQ)。準(zhǔn)確率以正確問題個數(shù)除以總問題個數(shù)進(jìn)行計算。
在表4中,小括號中的數(shù)字表示正確回答問題的個數(shù)。從其中結(jié)果看,顯然隨著問題難度提升,回答的正確率依次下降。對于平均正確率而言,專業(yè)問答系統(tǒng)顯著高于ChatGLM-6,略低于ChatGPT。說明專業(yè)問答系統(tǒng)能夠顯著提升大模型的專業(yè)能力,甚至能夠達(dá)到和ChatGPT相媲美的結(jié)果。
表4 選擇題客觀性能評估Table 4 Objective evaluation of multiple choice question
結(jié)果表明,和ChatGLM-6B相比專業(yè)問答系統(tǒng)答對題目的數(shù)量更多,從客觀上驗證了系統(tǒng)的性能。
4.2.3 消融實驗
本文進(jìn)行消融實驗,進(jìn)一步驗證信息過濾、專業(yè)問答、知識抽取與知識圖譜相互轉(zhuǎn)換三個模塊的功能。
對于信息過濾模塊而言,其作用并非是增強回答專業(yè)性,而是對問題進(jìn)行過濾,減少生成幻覺事實的可能性,因此為了驗證其能力,需要使用問題數(shù)據(jù)集單獨進(jìn)行測試;對于專業(yè)問答模塊,其本質(zhì)是利用知識庫增強回答專業(yè)性,因此對該模塊需要測試性能;對于知識抽取與知識圖譜相互轉(zhuǎn)換模塊,可以通過去除和知識圖譜交互重新生成答案部分,以驗證增強回答專業(yè)性,同樣需要測試性能。因此在消融實驗中,對信息過濾模塊單獨使用問題數(shù)據(jù)集驗證其信息過濾能力,對后兩者使用客觀性能評估的數(shù)據(jù)集驗證性能提升。
實驗過程中,為了驗證信息過濾模塊的能力,將輸入的問題按照相關(guān)程度劃分為三種類型的問題,分別為無關(guān)問題(completely unrelated question,CUQ)、部分相關(guān)問題(some related question,SRQ)、完全相關(guān)問題(completely related question,CRQ)。對于部分相關(guān)問題,是在無關(guān)問題的基礎(chǔ)上增加相關(guān)的信息或在相關(guān)問題的基礎(chǔ)上增加無關(guān)信息,作為干擾。通過將無關(guān)信息和相關(guān)信息混合的方式制造部分相關(guān)問題,可以驗證信息過濾的魯棒性。準(zhǔn)確率使用正確過濾問題個數(shù)除以問題總個數(shù)進(jìn)行計算。
在表5 中,RIF(remove information filter)表示去除信息過濾,RKB(remove knowledge base)表示去除知識庫,RKG(remove knowledge graph)表示去除知識圖譜交互。去除信息過濾模塊后,專業(yè)問答系統(tǒng)可以通過合適的提示機制進(jìn)行信息過濾,從結(jié)果看,專業(yè)問答-RIF的過濾準(zhǔn)確率低于專業(yè)問答系統(tǒng)的過濾準(zhǔn)確率,說明了去除信息過濾模塊后系統(tǒng)的信息過濾能力有所降低,驗證了信息過濾模塊的有效性。對于簡單問題的回答,專業(yè)問答-RKB的準(zhǔn)確率與ChatGLM-6B 基本相同,專業(yè)問答-RKG 的準(zhǔn)確率與專業(yè)問答系統(tǒng)基本相同,說明對于SQ,大模型本身具備一定的回答能力,其增幅主要依靠知識庫,知識圖譜進(jìn)行交互增強不明顯。對于困難問題,專業(yè)問答-RKB和專業(yè)問答-RKG的準(zhǔn)確率低于專業(yè)問答系統(tǒng),高于ChatGLM-6B,可見對于MQ、DQ,通過知識圖譜進(jìn)行交互發(fā)揮一定的作用,猜測這可能是因為知識圖譜能夠注入相關(guān)知識或輔助大模型進(jìn)行推理,激活大模型的邊緣知識??傮w來說RKB、RKG都會使得專業(yè)問答系統(tǒng)的回答準(zhǔn)確率下降,并且高于ChatGLM-6B的準(zhǔn)確率,由此驗證了系統(tǒng)各個模塊均發(fā)揮作用。
對于簡單問題知識圖譜作用不明顯,這是由于回答問題相對簡單時,所需要知識是孤立的,無需通過深度推理得出,當(dāng)不存在相應(yīng)知識時,就無法通過知識圖譜輔助推理得到正確的答案,因此知識圖譜交互對回答的增強不明顯。
本實驗通過展示系統(tǒng)的用戶界面截圖,體現(xiàn)了系統(tǒng)用戶交互服務(wù),同時還體現(xiàn)了本文所設(shè)計的系統(tǒng)具備的大語言模型與知識圖譜之間的交互能力。
本文實現(xiàn)了知識圖譜與大模型的雙向鏈接,探索了大語言模型和知識圖譜的深度結(jié)合。用戶向系統(tǒng)提出問題,系統(tǒng)進(jìn)行回答,并通過圖的方式,展示知識圖譜相關(guān)數(shù)據(jù)節(jié)點,用戶可以選擇其中相關(guān)節(jié)點,再次輸入大模型得到更多的解釋。
圖7 來自系統(tǒng)界面截圖,展示了系統(tǒng)問答、圖譜數(shù)據(jù)易讀化、自然語言回答結(jié)構(gòu)化的效果。左上角的問答截圖是用戶向系統(tǒng)發(fā)出提問,系統(tǒng)生成答案,然后對答案進(jìn)行結(jié)構(gòu)化,生成三元組,并和已有的知識圖譜進(jìn)行匹配后,展示出右上角的知識圖譜節(jié)點。如圖7 右下角所示,用戶可以選擇相關(guān)節(jié)點,系統(tǒng)將其轉(zhuǎn)化為問題再次生成答案,最終兩個答案相結(jié)合就是系統(tǒng)的回復(fù)。這樣既為用戶提供了良好的交互服務(wù),也實現(xiàn)了大語言模型與知識圖譜的雙向交互。
圖7 中醫(yī)藥方劑大模型回答與知識圖譜相互轉(zhuǎn)換Fig.7 Mutual transformation between large model answer and knowledge graph of traditional Chinese medicine formulas
在中醫(yī)藥方劑領(lǐng)域,系統(tǒng)生成的回復(fù)有一定的參考價值,但是由于中醫(yī)藥方劑領(lǐng)域本身的一些特性,系統(tǒng)還具有很多可以改進(jìn)的地方,比如加入中醫(yī)如何開方的數(shù)據(jù)和相關(guān)問診的多模態(tài)數(shù)據(jù),如患者的舌苔、脈象、氣色等。該系統(tǒng)針對不同的領(lǐng)域,需有相應(yīng)的調(diào)整。
在大模型時代,激活大模型中的“涌現(xiàn)”能力并將其適配到具體領(lǐng)域場景是未來在垂直領(lǐng)域建立競爭力的關(guān)鍵,其中高質(zhì)量領(lǐng)域數(shù)據(jù)與知識不可或缺。垂直領(lǐng)域的數(shù)據(jù)與知識可以有兩種利用方式:(1)在LLM預(yù)訓(xùn)練過程中,注入垂直領(lǐng)域知識并進(jìn)行相應(yīng)架構(gòu)與工程的優(yōu)化,或者使用微調(diào)方法修改模型參數(shù)向其中注入專業(yè)知識;(2)結(jié)合垂直領(lǐng)域數(shù)據(jù)與知識圖譜,設(shè)計合適的提示機制,充分激發(fā)基座大模型的能力,實現(xiàn)垂直領(lǐng)域任務(wù)能力的“躍遷”。本文從第二種方式開始,研究大語言模型+專業(yè)知識庫的問答系統(tǒng)范式,探索將專業(yè)知識圖譜與大語言模型深度結(jié)合,實現(xiàn)了大語言模型與知識圖譜的雙向交互,同時實現(xiàn)了文本知識庫、知識圖譜、大語言模型三種知識的融合。
大模型知識圖譜問答系統(tǒng)是對大模型與知識圖譜結(jié)合的探索工程,仍然存在著很多值得完善的部分。在該系統(tǒng)中目前僅實現(xiàn)了在中醫(yī)藥方劑領(lǐng)域的應(yīng)用,其設(shè)計思路還可以應(yīng)用在不同的領(lǐng)域,如法律、金融、教育等垂直領(lǐng)域。除此之外,在系統(tǒng)效果的驗證方面還缺少一項標(biāo)準(zhǔn)的評估系統(tǒng)專業(yè)能力的基準(zhǔn),因此在后續(xù)工作中,將開發(fā)一個專門用于評估垂直領(lǐng)域問答系統(tǒng)性能的基準(zhǔn)。