本發(fā)明涉及人工智能和自然語(yǔ)言處理領(lǐng)域,特別是涉及一種基于大語(yǔ)言模型的長(zhǎng)文檔問(wèn)答生成方法及系統(tǒng)。
背景技術(shù):
1、隨著自然語(yǔ)言處理任務(wù)的復(fù)雜性不斷增加,處理長(zhǎng)文檔和長(zhǎng)對(duì)話的需求日益突出。然而,傳統(tǒng)的transformer模型在處理長(zhǎng)序列時(shí)面臨著嚴(yán)重的計(jì)算效率和內(nèi)存使用問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述背景技術(shù)中存在的技術(shù)問(wèn)題,本發(fā)明提供了一種基于大語(yǔ)言模型的長(zhǎng)文檔問(wèn)答生成方法,有助于避免傳統(tǒng)transformer模型在處理長(zhǎng)序列時(shí)面臨的嚴(yán)重的計(jì)算效率和內(nèi)存使用問(wèn)題。
2、為了實(shí)現(xiàn)上述技術(shù)方案,第一方面,本發(fā)明提供了一種基于大語(yǔ)言模型的長(zhǎng)文檔問(wèn)答生成方法,包括以下步驟:
3、步驟一:構(gòu)建提示工程模版;
4、步驟二:獲取用戶問(wèn)題,將用戶問(wèn)題插入所構(gòu)建的提示工程模版,并將插入用戶問(wèn)題的提示工程模版轉(zhuǎn)換為問(wèn)題token序列;
5、步驟三:記錄問(wèn)題token序列的長(zhǎng)度qlen;
6、步驟四:對(duì)問(wèn)題token序列進(jìn)行嵌入,以得到嵌入向量序列e;
7、步驟五:基于得到的嵌入向量序列e,在大語(yǔ)言模型中逐層執(zhí)行前向傳播計(jì)算,并對(duì)最后一層的計(jì)算結(jié)果執(zhí)行標(biāo)準(zhǔn)化,以生成標(biāo)準(zhǔn)化層輸出向量序列;
8、步驟六:基于得到的標(biāo)準(zhǔn)化層輸出向量序列,生成token的概率分布,并根據(jù)token概率分布選擇一個(gè)token,來(lái)添加到問(wèn)題token序列中;
9、步驟七:判斷是否滿足以下停止條件中的至少一項(xiàng),若是,則收集所有的token,以構(gòu)成回答文本,若否,則重復(fù)步驟二至步驟七;
10、步驟八:對(duì)構(gòu)成的回答文本進(jìn)行處理,以生成最終回答。
11、進(jìn)一步地,所述步驟一之前還包括:預(yù)先構(gòu)建hnsw索引和位置索引。
12、進(jìn)一步地,所述步驟五包括:
13、c1:將得到的嵌入向量序列e輸入到大語(yǔ)言模型的第一層,在第一層中執(zhí)行前向傳播計(jì)算,以得到層輸出向量序列out1并輸入到大語(yǔ)言模型的第二層;
14、c2:針對(duì)第m層,其中,?m≥2,m為正整數(shù);則基于大語(yǔ)言模型的第m-1層輸出的向量序列,執(zhí)行向前傳播計(jì)算,以得到層輸出向量序列outm;
15、c3:判斷大語(yǔ)言模型的第m層是否為大語(yǔ)言模型的最后一層,若是,則對(duì)層輸出向量序列outm進(jìn)行標(biāo)準(zhǔn)化,以得到標(biāo)準(zhǔn)化層輸出向量序列out,若否,則將層輸出向量序列outm作為m+1層的輸入,在m+1層中繼續(xù)執(zhí)行向前傳播計(jì)算。
16、進(jìn)一步地,所述預(yù)先構(gòu)建hnsw索引和位置索引包括:
17、接收用戶輸入的長(zhǎng)文檔;
18、構(gòu)建提示工程模版,并將接收到的用戶輸入的長(zhǎng)文檔內(nèi)容輸入到所創(chuàng)建的提示工程中,將插入長(zhǎng)文檔內(nèi)容的提示工程轉(zhuǎn)換為文檔token序列,記錄文檔token序列的長(zhǎng)度len;
19、基于轉(zhuǎn)換來(lái)的文檔token序列,在大語(yǔ)言模型中逐層進(jìn)行注意力計(jì)算,以創(chuàng)建文檔token序列中每個(gè)token的三元組,其中,每個(gè)token的三元組為(ki,vi,?i),其中,i表示文檔token序列中的第i個(gè)token;?ki表示第i個(gè)token對(duì)應(yīng)的key向量,vi表示第i個(gè)token對(duì)應(yīng)的value向量;
20、為大語(yǔ)言模型的每一層創(chuàng)建三元組存儲(chǔ)列表;
21、基于大語(yǔ)言模型每一層的三元組存儲(chǔ)列表,構(gòu)建hnsw索引和位置索引。
22、進(jìn)一步地,所述步驟c2包括:
23、接收上一層的輸出向量序列outm-1,使用層標(biāo)準(zhǔn)化函數(shù)ln對(duì)輸出向量序列outm-1進(jìn)行標(biāo)準(zhǔn)化,以得到標(biāo)準(zhǔn)化向量序列em,其中,em=ln(outm-1);
24、對(duì)標(biāo)準(zhǔn)化向量序列em執(zhí)行自注意力計(jì)算,并將計(jì)算出的自注意力進(jìn)行線性變換,以得到經(jīng)線性變換的層輸出向量序列outm。
25、進(jìn)一步地,所述對(duì)標(biāo)準(zhǔn)化向量序列em執(zhí)行自注意力計(jì)算,并將計(jì)算出的自注意力進(jìn)行線性變換,以得到經(jīng)線性變換的層輸出向量序列outm包括:
26、對(duì)標(biāo)準(zhǔn)化向量序列em進(jìn)行線性變換,以生成用戶問(wèn)題的查詢向量矩陣qm、鍵向量矩陣km和值向量矩陣vm;
27、使用查詢向量矩陣qm中的最后一列的查詢向量在從預(yù)先構(gòu)建的第m層的hnsw索引結(jié)構(gòu)中,檢索出最相似的top?-n個(gè)key向量;
28、獲取上述top?-n個(gè)key向量所對(duì)應(yīng)的token的位置;
29、使用位置索引結(jié)構(gòu),獲取與每個(gè)key向量相對(duì)應(yīng)的token位置最大鄰居數(shù)m范圍內(nèi)的所有value向量和key向量;
30、按照每個(gè)key向量對(duì)應(yīng)的token在token序列中的位置順序,將檢索到的所有key向量拼合在一起,得到矩陣km_hist,以及將檢索到的所有?value向量拼合在一起,得到矩陣vm_hist;
31、將得到的矩陣km_hist與鍵向量矩陣km進(jìn)行拼接,得到矩陣k'm,并將得到的矩陣vm_hist與值向量矩陣vm進(jìn)行拼接,得到vm';
32、使用旋轉(zhuǎn)位置編碼為查詢向量矩陣qm和矩陣k'm添加位置信息,以得到查詢向量矩陣q'm和矩陣k'm;
33、基于矩陣v'm以及添加位置信息的查詢向量矩陣q'm和矩陣k'm,進(jìn)行注意力計(jì)算,并對(duì)注意力計(jì)算結(jié)果進(jìn)行線性變換,得到線性變換向量序列om;
34、基于得到的線性變換向量序列om和標(biāo)準(zhǔn)化向量序列em,進(jìn)行殘差連接,以得到殘差向量序列am;
35、對(duì)得到的殘差向量序列am進(jìn)行標(biāo)準(zhǔn)化,以得到標(biāo)準(zhǔn)化殘差向量序列xm;
36、通過(guò)以下公式對(duì)標(biāo)準(zhǔn)化殘差向量序列xm進(jìn)行兩層前饋神經(jīng)網(wǎng)絡(luò)線性計(jì)算;
37、
38、將前饋神經(jīng)網(wǎng)絡(luò)的輸出與標(biāo)準(zhǔn)化殘差向量序列am相加,得到層輸出向量序列outm。
39、第二方面,本發(fā)明提供了一種基于大語(yǔ)言模型的長(zhǎng)文檔問(wèn)答生成系統(tǒng),包括:
40、人機(jī)交互模塊,用于接收用戶輸入的長(zhǎng)文檔和用戶問(wèn)題,以及顯示最終回答;
41、序列轉(zhuǎn)換模塊,用于將插入有用戶問(wèn)題和文檔內(nèi)容的提示工程模塊轉(zhuǎn)換為問(wèn)題token序列和文檔token序列,并記錄問(wèn)題token序列的長(zhǎng)度和文檔token序列的長(zhǎng)度;
42、問(wèn)題嵌入模塊,用于對(duì)問(wèn)題token序列進(jìn)行嵌入,以得到嵌入向量序列e;
43、傳播計(jì)算模塊,用于基于得到的嵌入向量序列e,在大語(yǔ)言模型中逐層執(zhí)行前向傳播計(jì)算,并對(duì)最后一層的計(jì)算結(jié)果執(zhí)行標(biāo)準(zhǔn)化,以生成標(biāo)準(zhǔn)化層輸出向量序列;
44、判斷模塊,用于判斷是否滿足停止條件;
45、回答文本生成模塊,用于收集所有的token,以構(gòu)成完整的回答文本;
46、回答文本處理模塊,用于對(duì)構(gòu)成的回答文本進(jìn)行處理,以生成最終回答;
47、提示工程模版構(gòu)建模塊,用于構(gòu)建提示工程模版。
48、進(jìn)一步地,所述系統(tǒng)還包括:
49、hnsw索引和位置索引構(gòu)建模塊,用于構(gòu)建hnsw索引和位置索引。
50、第三方面,本發(fā)明提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括存儲(chǔ)的程序,其中,在程序運(yùn)行時(shí)控制計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)所在設(shè)備執(zhí)行以上所述的基于大語(yǔ)言模型的問(wèn)答生成方法。
51、本發(fā)明的有益效果在于:
52、(1)本發(fā)明為大語(yǔ)言模型的每一層構(gòu)建獨(dú)立的向量數(shù)據(jù)庫(kù),存儲(chǔ)(k,?v,i)三元組。使用hnsw(hierarchical?navigable?small?world)算法,以k向量為索引構(gòu)建高效的近似最近鄰搜索結(jié)構(gòu)。同時(shí)創(chuàng)建基于位置的數(shù)字索引,實(shí)現(xiàn)快速的位置檢索,使得能夠加快搜索速度,而且可擴(kuò)展性強(qiáng),適合處理大規(guī)模數(shù)據(jù),能夠在o(log?n)?時(shí)間復(fù)雜度內(nèi)完成近似最近鄰搜索,大大提高了后續(xù)檢索的效率。
53、(2)通過(guò)hnsw索引中進(jìn)行近似最近鄰搜索,檢索出最相關(guān)的n個(gè)三元組,使得能夠在常數(shù)時(shí)間內(nèi)檢索出與當(dāng)前token最相關(guān)的歷史信息,而不是線性掃描整個(gè)序列,并對(duì)檢索出的三元組中每個(gè)位置,獲取其周圍固定大小窗口(如[-m,?+m])內(nèi)的所有(k,?v)對(duì),通過(guò)上下文窗口擴(kuò)展,保證了局部連貫性,避免了僅依賴單點(diǎn)檢索可能帶來(lái)的信息碎片化;通過(guò)將檢索和擴(kuò)展得到的(k,?v)對(duì)與當(dāng)前輸入序列的k、v矩陣拼接,形成新的k'和v'矩陣,使用標(biāo)準(zhǔn)的縮放點(diǎn)積注意力機(jī)制,計(jì)算注意力,并僅保留對(duì)應(yīng)于輸入問(wèn)題序列的向量,既保證了全局視野,又避免了不必要的計(jì)算,從而解決在處理長(zhǎng)序列時(shí)面臨的嚴(yán)重的計(jì)算效率和內(nèi)存使用問(wèn)題。