吳曉蓉 程俊杰
摘要:隨著大模型的發(fā)展,公開通用的知識得到了廣泛的訓練和應用。但企業(yè)和個人的內(nèi)部文檔仍然沒有實現(xiàn)智能化。用戶查找內(nèi)部文檔內(nèi)容時,仍需打開對應文檔進行搜索,效率低下,為了提高企業(yè)和個人內(nèi)部文檔的智能化訪問效率,減少查找時間提高工作效率。文章提出了一種基于大模型的本地文檔智能問答方法,該方法通過將本地文檔分割并調(diào)用大模型進行智能問答,以實現(xiàn)高效的文檔檢索。研究結果表明該方法能夠在不耗費大量計算資源的情況下,獲得與大模型相媲美的問答效果,為用戶提供更快速、智能的內(nèi)部文檔訪問體驗。
關鍵詞:GPT;智能化問答;大模型;文檔檢索;文檔分割
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2024)13-0091-04 開放科學(資源服務)標識碼(OSID) :
0 引言
深度學習模型中的大模型,即擁有大量參數(shù)的模型,近年來在自然語言處理領域取得了巨大的進展。特別是大語言模型(Large Language Models,LLM) ,它們通常擁有數(shù)十億甚至上百億的參數(shù),并通過大規(guī)模數(shù)據(jù)集的訓練(如近1 TB的英文文本)來不斷提高其性能和應用范圍[1]。這些巨型模型的出現(xiàn)引領了自然語言處理領域的發(fā)展,開創(chuàng)了新的研究方向和應用前景,譬如OpenAI推出了ChatGPT模型,百度也推出了文心一言模型,公開通用的知識得到了廣泛的訓練和應用。
然而,在大模型的快速發(fā)展的同時,企業(yè)和個人的內(nèi)部文檔仍然沒有實現(xiàn)智能化,這對于當前信息爆炸的環(huán)境是一個巨大的挑戰(zhàn)。企業(yè)內(nèi)部文檔的格式通常為DOCX、XLXS、PDF、PPT、網(wǎng)頁等,數(shù)量眾多、種類復雜、內(nèi)容雜亂,這導致了信息檢索效率的低下。傳統(tǒng)的整理數(shù)據(jù)并訓練企業(yè)和個人私有模型的方法相對復雜,需要大量的時間和資源。因此,研究企業(yè)內(nèi)部文檔智能化處理方法具有重要的現(xiàn)實意義和廣闊的應用前景。
本研究旨在應對這一挑戰(zhàn),提出了一種基于大模型的本地文檔智能問答方法。與傳統(tǒng)方法相比,這種方法既簡單又高效,能夠快速地將先進的自然語言處理能力應用于企業(yè)內(nèi)部文檔的處理,從而顯著提升企業(yè)的工作效率。
1 智能問答技術介紹
在今天的數(shù)字化時代,智能問答技術已經(jīng)成為人機交互的重要方式。這種技術運用了多種方法,包括自然語言處理(NLP) 、知識圖譜、機器學習、信息檢索、文本生成、語義理解、數(shù)據(jù)匹配以及推理和邏輯,以實現(xiàn)高效、準確的信息獲取和問題解答。問答系統(tǒng)技術的發(fā)展可以追溯到20世紀50年代,人們開始使用計算機來解決自然語言理解問題。隨著時間的推移,問答系統(tǒng)技術逐漸發(fā)展成為一個獨立的研究領域,未來的智能問答技術將更加依賴于以上各技術的深入應用和融合,以實現(xiàn)更高水平的自動化和智能化。當前的智能問答技術主要有基于知識庫的問答技術、基于搜索的問答技術、基于深度學習的問答技術。
1.1 基于知識庫的問答技術
知識庫,也稱為知識圖譜,是一種表示和組織知識的方法,本質(zhì)是一種存儲結構化數(shù)據(jù)的語義網(wǎng)絡。通常知識庫使用結構化的“<主體,謂詞,客體>”三元組來存儲知識,其中主體和客體可以視為語義網(wǎng)絡的頂點,謂詞則為有向邊。與傳統(tǒng)關注數(shù)據(jù)間關系的數(shù)據(jù)庫不同,知識庫更關注數(shù)據(jù)內(nèi)部的結構化關系。
知識圖譜(知識庫)可以幫助系統(tǒng)理解和檢索與問題相關的知識。近年來,隨著LSTM、注意力機制等深度學習方法的廣泛應用,結合神經(jīng)網(wǎng)絡方法的知識庫自動問答系統(tǒng)在性能上展現(xiàn)了令人驚艷的效果提升。這種方法通常將神經(jīng)網(wǎng)絡模型用于不同方法的子步驟上,以貪心思想在每一步驟獲得最優(yōu)解并期望獲得綜合后的最優(yōu)解。然而,這種方法也可能在一定程度上丟失不同環(huán)節(jié)之間的聯(lián)系[2]。
過去基于知識庫的問答系統(tǒng)多應用于垂直域的專用數(shù)據(jù)庫。然而隨著開放域知識庫的拓展以及深度學習等方法的發(fā)展和應用,基于開放域知識庫的問答系統(tǒng)研究取得了較大的進展。相比之下,垂直域數(shù)據(jù)庫由于受限于其特殊性質(zhì),無法適配現(xiàn)有表現(xiàn)較好的問答模型,近年來進展緩慢[3]。
1.2 基于搜索的問答技術
基于搜索的問答技術是一種利用搜索引擎進行信息檢索和知識問答的技術,搜索引擎匯集了大量的知識,但它們主要通過關鍵詞檢索信息,無法準確地理解用戶意圖。因此,搜索引擎返回的結果往往是一組網(wǎng)頁集合,需要用戶進行再次篩選。相比之下,問答系統(tǒng)需要構建一個高質(zhì)量的知識庫作為支撐,而知識庫的構建和管理代價高昂。因此,我們可以充分發(fā)揮搜索引擎和自動問答系統(tǒng)各自的優(yōu)點,將二者相結合[4]。首先是問題分析,問題分析需要通過一定的算法分析,包括問題預處理、分詞、關鍵詞提取、消除停用詞、詞性標注等[5]。
信息檢索通常采用搜索引擎檢索和數(shù)據(jù)庫檢索兩種方式。搜索引擎是廣泛使用的信息檢索工具,例如百度、Google、360搜索等。而數(shù)據(jù)庫檢索需要通過人工整理建立特定數(shù)據(jù)庫,建立索引,并選擇排序算法進行排序,最終通過相似度計算得到最佳結果。句子相似度反映了兩個句子在語義上的匹配度,其計算方法通常基于句子中詞語的語義信息。句子相似度的取值范圍為[0,1],值越大表示句子越相似,反之則越不相似。
該方式完全依賴于搜索引擎,并且返回的結果相似度接近,很難取舍,也需要用戶二次篩選。
1.3 基于深度學習的問答技術
基于深度學習的問答技術有很多,MRC(Machine Reading Comprehension)作為自然語言處理領域的核心技術,借助于深度學習技術,也獲得了快速發(fā)展[6]。
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks, LCSNTNM)和)等長深短度記神憶經(jīng)神網(wǎng)經(jīng)絡網(wǎng)由絡于(更Lo適ng合 Sh未or標t-T記er的m 數(shù)Me據(jù)m,or并y,能自動學習更好的數(shù)據(jù)表征方法,逐漸成為知識問答系統(tǒng)設計的主要算法[7]。
目前,大多數(shù)生成式問答系統(tǒng)都是基于Seq2Seq 和Transformer框架。Seq2Seq最早被提于2014年,屬于encoder-decoder的一種[8],這種方法可以讓系統(tǒng)自動從大量數(shù)據(jù)中學習自然語言處理的知識,并且可以自動生成答案,而無需使用預定義的模板。這種技術可以有效地提高答案生成的準確性和自然度,因為它可以更好地理解問題,更好地遵循語法和邏輯規(guī)則,同時也可以更好地應對各種語言表達模式。
AttenTtiroann)s,f克orm服er了架傳構統(tǒng)通模過型引的限入制自。注自意注力意機力制機(S制el允f-許模型在生成每個輸出時,動態(tài)地對輸入序列的所有位置進行關注和加權。這樣,模型可以更好地捕捉輸入序列中的上下文依賴關系,無論距離有多遠。
這種技術已經(jīng)在許多領域得到廣泛應用,例如智能客服、智能搜索和智能語音助手等,OpenAI推出的商用大模型ChatGPT也采用了Transformer架構。但也存在不足,不能完全滿足用戶的提問需求,可能生成一些無意義和錯誤的回答,并且需要大量的計算資源,不能回答準確性問題和數(shù)據(jù)隱私問題等。
2 基于GPT 的本地文檔智能問答方法
由于上述相關技術不能滿足一般企業(yè)和個人用戶的需求,本文提出一種方法,能滿足一般企業(yè)用戶和個人用戶的需求,首先獲取用戶提出的問題,在本地文檔中查找與該問題相關的文檔塊。接下來,將找到的問題和文檔塊一起傳遞給大模型。大模型結合問題和文檔塊進行推理和分析,并生成對問題的回答。最后,我們對大模型返回的結果進行處理并展示給用戶。通過這種方法,我們有效地利用了大模型的能力,并且成功地解決了處理本地知識不足的問題。主要架構如下:
1) 對外接口模塊:該模塊負責處理用戶的輸入問題。
2) 文檔解析模塊:該模塊支持解析多種文檔格式,如DOCX、PDF、TXT 等,可加載指定目錄下的文檔,將其解析并讀取到內(nèi)存中進行處理。
3) 文檔處理模塊:該模塊負責對文檔進行處理。由于大模型的輸入有限制,需要對文檔解析的數(shù)據(jù)進行分割,然后進行向量化并存儲到向量數(shù)據(jù)庫中。
4) 交互模塊:該模塊接收用戶的輸入,當用戶輸入查詢的問題時,把問題轉(zhuǎn)為向量然后從向量數(shù)據(jù)庫中查詢相近的文本塊,并構造問題,將問題和文本塊一起傳遞到大模型中。
5) 結果處理模塊:該模塊負責處理大模型返回的結果,并以更容易理解的方式返回給用戶。
6) 大模型模塊:該模塊主要調(diào)用各種大型語言模型API,目前支持的大模型包括OpenAI 的ChatGPT、百度的文心一言、清華大學的ChatGLM和訊飛的星火大模型。
主要的流程圖如下:
整個流程主要分為三部分,第一部分:加載用戶的文檔,并將其轉(zhuǎn)化為文本形式,根據(jù)大型語言模型的最大輸入限制,將文本分割成文本塊,并使用向量化的方法將它們存儲在數(shù)據(jù)庫中。第二部分:當用戶提出問題后,我們首先將用戶的問題轉(zhuǎn)化為向量形式,然后在向量數(shù)據(jù)庫中搜索,根據(jù)相似度查詢相似的文本塊。之后,將用戶的提問和相似度文本塊一起發(fā)送到大型語言模型中進行分析。第三部分:當大型語言模型收到用戶的提問和文本塊時,會返回結果,最后對結果進行處理,并將其返回給用戶。通過這樣的流程,就實現(xiàn)了對企業(yè)知識庫的智能化問答。
3 應用研究
3.1 實驗設計和數(shù)據(jù)收集
本文實驗編程語言采用Python,Python不僅語法簡潔明了,易讀和易于學習,且擁有強大的標準庫和第三方庫支持,使得開發(fā)人員可以快速地構建各種應用程序。大模型采用OpenAI的ChatGPT模型,該模型是一個基于Transformer神經(jīng)網(wǎng)絡架構的預訓練語言模型,是在大量的互聯(lián)網(wǎng)文本數(shù)據(jù)上訓練得到的模型,它有1750億個參數(shù),在各種語言任務中都表現(xiàn)出了很高的性能,且提供了向量化API和提問的API。
向量數(shù)據(jù)庫采用了Chroma,向量數(shù)據(jù)庫Chroma 是一個高性能的向量檢索數(shù)據(jù)庫,它專門設計用于存儲和檢索大規(guī)模向量數(shù)據(jù)。Chroma的主要特點是能夠快速存儲和檢索高維向量數(shù)據(jù),而且能夠高效地處理復雜的查詢操作。
3.2 編碼實現(xiàn)(Python 偽代碼)
功能實現(xiàn)主要分為以下6個功能模塊:
1) 數(shù)據(jù)導入和準備階段:導入所需的Python 模塊,包括 text_splitter、chroma、openai_embeddings 和 openai,打開文本文件 data.txt 并讀取其內(nèi)容,使用字符分割器 TextSplitter 將大文本內(nèi)容拆分為小塊文本。
2) 文本分塊處理:創(chuàng)建TextSplitter對象,并使用其 split_text 方法將文本內(nèi)容拆分成小塊(chunks) 。這些小塊將用于后續(xù)的文本處理。
3 ) 文本嵌處和相似度搜索:創(chuàng)建OpenAIEmbed?dings對象以處理文本嵌入,這有助于將文本轉(zhuǎn)換為向量形式以進行相似度比較。使用 Chroma 對象執(zhí)行相似度搜索,將查詢字符串與分塊文本進行比較,并返回與查詢字符串相似的文本塊。
4) 問題回答鏈:創(chuàng)建問題回答鏈,使用 OpenAI 模型用于回答問題。
5) 執(zhí)行問題回答:將相似度搜索的結果(即相似的文本塊 docs) 和查詢字符串 (query) 傳遞給問題回答鏈。問題回答鏈將使用配置的模型來生成回答。
6) 結果輸出:最后將問題回答的結果輸出。對應功能模塊的Python偽代碼如下:
#導入所需庫和模塊
導入OpenAIEmbeddings
導入text_splitter
導入Chroma
#讀取文本文件
打開文件′./data.txt′
fcontent=f.read()
#使用字符分割器將文本拆分為小塊
text_splitter=創(chuàng)建 text_splitter(chunk_size= 1000,chunk_overlap=0)
Texts=text_splitter.拆分文本(content)
#創(chuàng)建embedding
Embedding=OpenAIEmbeddings()
#使用文本創(chuàng)建Chroma對象
docsearch=Chroma(texts,embeddings)
#設置查詢字符
Query="南京航空航天大學金城學院建立于哪一年" #使用查詢字符串進行相似度搜索
#使用查詢字符串進行相似度搜索
Docs=docsearch.相似度搜索(query)
#加載問題以及相關文檔塊
Chain=加載問題回答鏈(創(chuàng)建OpenAI(temperature=0,chain_type="stuff")
#運行問題以及相關文檔塊
OpenAI.run(input_documents=docs, question=query)
3.3 實驗結果分析
實驗數(shù)據(jù)集采用一篇文檔,內(nèi)容如下:南京航空航天大學金城學院成立于1999年,學校位于江蘇省南京市,現(xiàn)有全日制在校本科生18 000余人,校園占地面積近千畝,建筑總面積30余萬平方米。擁有學術交流中心、科研實驗中心、計算機中心、藝術中心及現(xiàn)代化運動場等教學生活設施。智能化圖書館能同時容納6 000人閱讀和學習。
學校秉持“高端化、國際化、個性化”的人才培養(yǎng)理念,下設7個學院和基礎教學部,開設33個本科專業(yè)(含方向)。其中,會計學專業(yè)是國家級一流本科專業(yè)建設點,電氣工程及其自動化、車輛工程和信息工程專業(yè)則是省級一流本科專業(yè)建設點。機械電子工程、信息工程、英語專業(yè)獲評江蘇省獨立學院“星級專業(yè)”。
學校堅持開放辦學,注重學生國際化能力的培養(yǎng),先后與美國、英國等12個國家的256所大學,開設“本碩直通”“微留學”和“云游學”等項目,培養(yǎng)造就具有中國情懷、世界眼光的未來新型高端人才。
學校注重學生的創(chuàng)新能力培養(yǎng),促進學生的多元化、個性化發(fā)展,全面實施“創(chuàng)意、創(chuàng)造、創(chuàng)業(yè)”創(chuàng)新人才培養(yǎng)模式,大力開展科技創(chuàng)新競賽活動。在多項全國性重大競賽中接連取得突破,獲獎人數(shù)和獎項等級位居全國同類院校前列。近年來,獲國家級獎1 352 項,一等獎412項;獲省部級獎2 236項。在全國重大競賽中表現(xiàn)突出,曾在全國大學生機器人大賽Robo? Master、全國大學生電子設計競賽、全國大學生先進成圖技術與產(chǎn)品信息建模創(chuàng)新大賽、全國大學生嵌入式芯片與系統(tǒng)設計競賽等比賽中榮獲一等獎。
為了準確比較,基于文檔內(nèi)容構造10個客觀問題如下:
1) 南京航空航天大學金城學院始建于哪一年?
2) 南京航空航天大學金城學院有全日制在校本科生多少?
3) 南京航空航天大學金城學院建筑面積多少?
4) 南京航空航天大學金城學院智能化圖書館能同時容納多少人閱讀和學習?
5) 南京航空航天大學金城學院有幾個學院?
6) 南京航空航天大學金城學院有幾個本科專業(yè)?
7) 南京航空航天大學金城學院與多少個國家開設本碩直通項目?
8) 南京航空航天大學金城學院與多少所大學開設本碩直通項目?
9) 南京航空航天大學金城學院近年來獲得國家級獎項多少?
10) 南京航空航天大學金城學院近年來獲得省部級獎項多少?
針對該文檔的10個客觀問題實驗結果見表1。
通過實驗可以發(fā)現(xiàn),本方法在回答問題的準確率方面達到了100%,而其他方法,包括搜索引擎和大型語言模型,準確率均較低。在本地文檔處理方面,本方法不僅可以更加準確地回答問題;并且相對于搜索引擎還需要多次篩選,本方法可以更快速地找到準確答案,是一種高效、準確的解決方案,特別適用于本地文檔處理和回答問題。
4 結論與展望
本研究提出了一種解決企業(yè)本地知識庫不夠智能化的方法,通過對公司內(nèi)部文檔進行智能化處理,包括公司的流程、規(guī)章制度、財務等各方面的知識,并可對公司沉淀的知識進行總結,從而實現(xiàn)公司的智能化問答。相對于大型語言模型,本方法能夠提供準確的知識搜索。為企業(yè)智能化的知識管理和問題解決提供了新的思路和方法。我們相信,這一方法將對企業(yè)的效率和競爭力產(chǎn)生積極影響,并在知識管理領域引領未來的研究方向。
參考文獻:
[1] CARLINI N, TRAMER F, WALLACE E, et al. Extracting?training data from large language models[C]. Berkeley, CA:USENIX Association. 2021:2633?2650.
[2] 胡楠. 基于開放領域知識庫的自動問答研究[D]. 武漢:華中科技大學,2019.
[3] 李東奇,李明鑫,張瀟. 基于知識庫的開放域問答研究[J]. 電腦知識與技術,2020,16(36):179-181.
[4] 石鳳貴. 基于百度網(wǎng)頁的中文自動問答應用研究[J]. 現(xiàn)代計算機,2020(8):104-108.
[5] 姚元杰,龔毅光,劉佳,等. 基于深度學習的智能問答系統(tǒng)綜述[J]. 計算機系統(tǒng)應用,2023,32(4):1-15.
[6] 李舟軍,王昌寶. 基于深度學習的機器閱讀理解綜述[J]. 計算機科學,2019,46(7):7-12.
[7] 朱建楠,梁玉琦,顧復,等. 基于深度學習的機械智能制造知識問答系統(tǒng)設計[J]. 計算機集成制造系統(tǒng),2019,25(5):1161-1168.
[8] CHO K,VAN MERRIENBOER B,GULCEHRE C,et al. Learn?ing Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation[J]. ArXiv e-Prints,2014:arXiv:1406. 1078.
【通聯(lián)編輯:王力】