本發(fā)明涉及一種檢索增強生成技術(shù),特別涉及一種基于多級語義的檢索增強生成方法。
背景技術(shù):
1、隨著人工智能及生成式技術(shù)的發(fā)展,基于大模型(large?language?model,llm)的智能對話系統(tǒng)在電商客服,政務(wù)問答,情感陪伴及醫(yī)療咨詢等領(lǐng)域都得到了廣泛的應(yīng)用。由于大模型存在幻覺(hallucination)問題,大量垂直領(lǐng)域的智能對話系統(tǒng)都采用了檢索增強生成(retrieval-augmented?generation,rag)技術(shù)。rag主要通過從外部知識庫中檢索與用戶輸入文字相關(guān)的片段,讓llm使用檢索到的相關(guān)信息和用戶輸入信息來生成最終的結(jié)果。
2、已有技術(shù)特征:
3、現(xiàn)有的rag系統(tǒng)對于通用知識的檢索效果較好,但是當(dāng)應(yīng)用于金融,醫(yī)療和法律等專業(yè)名詞與通用知識相差較大的垂直領(lǐng)域時,rag的檢索效果就會很差,檢索出的外部知識不準(zhǔn)確會進一步導(dǎo)致llm的生成結(jié)果差。同時現(xiàn)有的rag系統(tǒng)大部分只使用外部知識,這嚴(yán)重限制了llm本身的生成能力,無法充分結(jié)合rag與llm兩者的優(yōu)勢。
4、具體來說,現(xiàn)有的rag系統(tǒng)很難對專業(yè)性較強的垂直領(lǐng)域進行有效檢索,同時無法保證對llm自身先驗知識的高效使用。
5、從圖1所示的一種普通的檢索增強生成方法的示意圖中可以知道:(1)在普通的rag系統(tǒng)中,直接使用分塊后的文本的向量表示與問題的編碼向量進行相似度計算,并據(jù)此返回相關(guān)的top-k個文本塊;(2)另外,在得到top-k個文本塊后,會直接將其作為上下文信息結(jié)合某個prompt模板1共同構(gòu)造提示文本,使用的prompt模板1的內(nèi)容類似于:“使用上下文信息回答以下問題,\n上下文信息:{文本塊}\n問題:{用戶問題}”
6、對于通用領(lǐng)域來說,步驟(1)是足夠可行的。但對于醫(yī)療等專業(yè)領(lǐng)域,例如:用戶詢問“介紹一下糖尿病視網(wǎng)膜”這種問題時,只依靠文本塊和問題的向量相似度進行檢索,會導(dǎo)致帶有“糖尿病”字段的文本塊與問題的相似度高于帶有“糖尿病視網(wǎng)膜病變”字段的文本塊與問題的相似度,導(dǎo)致檢索出的文本塊片段與問題不匹配。因此,只依靠向量索引進行相似性的檢索無法滿足醫(yī)療等專業(yè)領(lǐng)域的語義匹配需求。
7、同時關(guān)于步驟(1),由于文本塊中會包含很多無效信息,直接對整個文本塊進行向量編碼,會容易導(dǎo)致重要信息在編碼過程中受到無效信息的影響,進而導(dǎo)致計算相似度時效果較差。因此,不進行處理就直接對整個原始文本塊進行向量化也會導(dǎo)致檢索效果差。
8、同時關(guān)于步驟(1),由于需要權(quán)衡劃分文本塊粒度的大小和檢索速度,單個文本塊的長度可能在500字左右,因此單個文本塊中很可能同時包含一個以上的主題,在計算相似度時若不對此進行限制,則會導(dǎo)致檢索出的文本塊的內(nèi)容不一致,進而影響llm的生成效果。
9、同時關(guān)于步驟(1),現(xiàn)有的向量化模型往往是基于通用的大語料訓(xùn)練的,因此對專業(yè)領(lǐng)域的文本向量化的效果自然是不準(zhǔn)確的,如果直接微調(diào)這種向量化模型使之適應(yīng)專業(yè)領(lǐng)域,則會消耗大量的資源,同時還可能損害向量化模型的泛化能力,因此,直接微調(diào)現(xiàn)有的向量化模型是不合理的。
10、另外,對于用戶的提問,如果涉及的內(nèi)容是知識庫中的內(nèi)容,則步驟(2)是足夠可行的,如果涉及了知識庫之外的內(nèi)容,例如對于一個眼科的rag系統(tǒng),若用戶詢問“配眼鏡有哪些注意事項和建議呢?”,如果只依賴rag的知識庫,由于當(dāng)前關(guān)于眼科的醫(yī)學(xué)教科書,論文等語料很少有眼鏡配型相關(guān)的內(nèi)容,則無法很好回答這一問題,需借助llm自身的生成能力。
技術(shù)實現(xiàn)思路
1、針對rag系統(tǒng)很難對專業(yè)性較強的垂直領(lǐng)域進行有效檢索,同時無法保證對llm自身先驗知識的高效使用的問題,提出了一種基于多級語義的檢索增強生成方法,以提高rag對于專業(yè)領(lǐng)域檢索的準(zhǔn)確度,并充分結(jié)合并發(fā)揮rag與llm兩者的優(yōu)勢。
2、本發(fā)明的技術(shù)方案為:
3、一種基于多級語義的檢索增強生成方法,包括以下步驟:
4、步驟一:基于llm,使用專業(yè)領(lǐng)域的語料構(gòu)建知識庫;知識庫包括摘要向量庫和關(guān)鍵詞嵌入庫,進行存儲分塊,得到原始文本塊內(nèi)容及對應(yīng)的文檔來源,也包括摘要向量關(guān)聯(lián)和關(guān)鍵詞關(guān)聯(lián)信息;
5、步驟二:獲取待處理文本,獲取其向量表示及信息抽取結(jié)果;待處理文本是用戶輸入的問題,當(dāng)涉及專業(yè)領(lǐng)域時,使用語義向量模型對待處理文本進行向量化得到問題的編碼向量;使用關(guān)鍵信息抽取算法對待處理文本進行處理,得到一個包含元素數(shù)量不低于1的關(guān)鍵詞列表;
6、步驟三:根據(jù)待處理文本的向量表示及信息抽取結(jié)果,使用多級語義計算知識庫中信息與待處理文本的相似度,得到相關(guān)的原始文本塊內(nèi)容及對應(yīng)的文檔來源;
7、步驟四:根據(jù)相關(guān)參考文本對應(yīng)的源是否來自檢索白名單選擇回答是以rag外部知識或以llm自身知識為主;如果文檔來源在檢索白名單中,則以rag的外部知識為主,如果文檔來源不在檢索白名單中,則先使用llm生成一次回復(fù),以rag檢索到的外部知識為輔,再使用llm基于現(xiàn)有的rag外部知識對一次回復(fù)進行完善。
8、進一步的,步驟一中,專業(yè)領(lǐng)域的語料包括該領(lǐng)域的能夠解析出文本內(nèi)容的文檔;在解析這些語料文本時,需要把文本切分成一塊一塊,而不是把所有的文本進行一次性解析;
9、對于摘要向量庫,將每個文本塊送入提示詞prompt模板2中得到相應(yīng)的提示文本,然后送入llm得到摘要文本,對摘要文本使用語義向量模型即嵌入模型1進行向量化得到對應(yīng)的摘要向量結(jié)果;
10、對于關(guān)鍵詞庫,將每個文本塊送入提示詞prompt模板3中得到相應(yīng)的提示文本,然后送入llm得到關(guān)鍵詞列表,對列表中的每個詞使用詞嵌入模型即嵌入模型2進行向量化得到對應(yīng)的詞嵌入列表結(jié)果;
11、prompt模板2的內(nèi)容如下:“對下面的文本進行總結(jié),文本內(nèi)容:{文本塊}”;其中“{文本塊}”是詳細文本段落;
12、prompt模板3的內(nèi)容如下:“對下面的文本進行關(guān)鍵詞提取并對其要用于檢索進行優(yōu)化,文本內(nèi)容:{文本塊}”;其中“{文本塊}”是詳細文本段落;
13、對于嵌入模型1,是m3e或bge通用向量模型;
14、對于嵌入模型2,是基于專業(yè)領(lǐng)域的語料訓(xùn)練的word2vec或fasttext詞嵌入模型。
15、進一步的,步驟三中,對于通過對待處理文本進行關(guān)鍵信息抽取算法得到的關(guān)鍵詞列表,對其中每一個目標(biāo)關(guān)鍵詞,使用相似度算法1計算其與關(guān)鍵詞庫中每一個文本塊對應(yīng)的關(guān)鍵詞列表中的每一個關(guān)鍵詞的詞級別的語義相似度;
16、對于通過對待處理文本進行向量化得到的問題的編碼向量,使用相似度算法2計算其與摘要向量庫中每一個文本塊對應(yīng)的摘要向量的句子級別的語義相似度;
17、對于相似度算法1,使用余弦相似度;
18、對于相似度算法2,使用余弦相似度;
19、對于上面得到的針對待處理文本的詞級別的語義相似度,和句子級別的語義相似度,
20、在得到語義相似度度量結(jié)果后,據(jù)此進行相關(guān)性排序,使用語義的相似度值從大到小排序,返回前n大相似度top-n組文本塊及包含源文檔的信息即原始文本塊內(nèi)容及對應(yīng)的文檔來源。
21、進一步的,步驟四中,關(guān)于檢索白名單,由用戶根據(jù)自己的需求指定的文件名單;
22、對于待處理問題檢索得到的相關(guān)參考文本對應(yīng)的文檔來源,如果文檔來源在檢索白名單中,則以rag的外部知識為主,使用prompt模板1來構(gòu)造提示文本并送入llm生成最終的回答;如果文檔來源不在檢索白名單中,則先使用llm生成一次回復(fù),以rag檢索到的外部知識為輔,再使用llm基于現(xiàn)有的rag外部知識對一次回復(fù)進行完善,使用prompt模板4來構(gòu)造提示文本并送入llm生成最終的回答;
23、prompt模板1的內(nèi)容如下:“使用上下文信息回答以下問題,\n上下文信息:{文本塊}\n問題:{用戶問題}}”;
24、prompt模板4的內(nèi)容如下:“用戶的原始問題:{用戶問題}\n這是目前已經(jīng)有的答案:{llm的首次回復(fù)}\n有機會根據(jù)下面的上下文對現(xiàn)有的答案進行改進(僅在需要時):{rag檢索的外部知識};如果上下文沒有用,則返回目前已有的答案;”。
25、進一步的,步驟三中,根據(jù)以下數(shù)學(xué)模型計算其與知識庫中所有文本塊的多級語義相似度:
26、simi=(1-a)wordi+aseni
27、
28、其中,simi表示待處理文本與第i個文本塊的語義相似度;a用來控制詞級別的相似度和句子級別的相似度在整體相似度中計算的權(quán)重,是一個[0,1]之間的小數(shù);wordi表示待處理文本與第i個文本塊的詞級別的語義相似度;seni表示待處理文本與第i個文本塊的句子級別的語義相似度;t表示待處理文本抽取得到的關(guān)鍵詞列表的長度,c表示知識庫中第i個文本塊對應(yīng)的關(guān)鍵詞列表的長度,wordtc表示第t個目標(biāo)關(guān)鍵詞和第c個檢索關(guān)鍵詞的詞級別的語義相似度;refi表示第i個文本塊內(nèi)所有關(guān)鍵詞之間的語義相似度;wordkl表示同一集合中任意兩個不同詞語的詞級別語義相似度,k表示第k個關(guān)鍵詞,l表示第l個關(guān)鍵詞,l和k的范圍都是1~c;target表示待處理文本內(nèi)所有關(guān)鍵詞之間的語義相似度;這里假定待處理文本是來自用戶,所以有較高的語義相似度,因此以待處理文本的一致性作為基準(zhǔn),用知識庫文本塊的語義相似度相對于待處理文本的語義相似度作為該文本塊的詞級別的語義相似度的一致性權(quán)重,表達式是
29、優(yōu)選的,步驟二中,對于關(guān)鍵信息抽取算法,是基于專業(yè)領(lǐng)域語料訓(xùn)練得到的命名實體識別算法,還包括基于專業(yè)領(lǐng)域語料訓(xùn)練的關(guān)鍵詞提取算法、基于專業(yè)領(lǐng)域語料訓(xùn)練的主題抽取算法、同時使用基于專業(yè)領(lǐng)域語料訓(xùn)練命名實體識別算法、關(guān)鍵詞提取算法以及主題抽取算法。
30、優(yōu)選的,llm模型包括開源的chatglm類模型、閉源的chatgpt模型。
31、優(yōu)選的,文本分塊的策略,使用基于分隔符進行分割,同時保留完整的句子并含有部分重疊內(nèi)容,分塊的結(jié)果會盡量滿足所設(shè)置的塊大小上限的分塊策略;也可以選擇直接按照塊大小分割或其他分塊策略;塊的大小一般在[300,500]這個區(qū)間內(nèi)。
32、優(yōu)選的,對于相似度算法1,可選內(nèi)積,歐氏距離距離函數(shù);對于相似度算法2,可選內(nèi)積,歐氏距離距離函數(shù)。
33、優(yōu)選的,考慮到llm輸入長度的限制,n一般取不超過3的值。
34、本發(fā)明的有益效果在于:
35、通過使用詞級別和句子級別的多級語義相似度,充分利用專業(yè)領(lǐng)域語料及待處理的問題文本含有的語義信息,提高在專業(yè)領(lǐng)域的語料中檢索的文本塊的準(zhǔn)確性:
36、1、在計算詞級別的語義相似度時,使用關(guān)鍵詞列表的內(nèi)部一致性度量了文本塊中可能包含一個以上主題的問題的影響;
37、2、在計算機句子級別的語義相似度時,使用了文本塊摘要緩解了文本塊中包含無關(guān)信息問題;
38、3、同時在進行向量化和關(guān)鍵信息提取時,使用了通過專業(yè)領(lǐng)域語料訓(xùn)練的詞嵌入模型和關(guān)鍵信息提取模型,彌補了通用的向量模型的缺陷同時嵌入了專業(yè)領(lǐng)域的信息。
39、通過設(shè)置檢索白名單,判斷相關(guān)文本塊的來源,分情況決定是以rag知識為主還是以llm的先驗知識為主,充分結(jié)合并發(fā)揮rag外部知識和llm內(nèi)部先驗知識各自的優(yōu)勢。