本發(fā)明涉及人工智能,尤其涉及一種基于大語言模型的零樣本文本到sql的自動(dòng)解析方法。
背景技術(shù):
1、文本到sql超越了自然語言處理中的技術(shù)挑戰(zhàn),旨在讓用戶能夠輕松地使用他們的母語與數(shù)據(jù)庫進(jìn)行交互。這一目標(biāo)是由于對使廣泛的數(shù)據(jù)倉庫可供非技術(shù)用戶訪問的需求日益增長,在醫(yī)療和金融等行業(yè)具有變革潛力。圖1展示了一個(gè)典型的文本到sql任務(wù)示例。轉(zhuǎn)換過程包括:從自然語言查詢中解釋用戶意圖;分析數(shù)據(jù)庫架構(gòu)以識(shí)別相關(guān)列;生成包含適當(dāng)列、條件和函數(shù)的精確sql查詢;解決數(shù)據(jù)和語言表達(dá)中的模糊性;應(yīng)對自然語言輸入的變化;理解用于計(jì)算和數(shù)據(jù)過濾的sql語法及功能。
2、文本轉(zhuǎn)sql的方法已經(jīng)從基于規(guī)則的方式發(fā)展到更加復(fù)雜的技術(shù)。早期的基于規(guī)則的方法使用模板生成sql查詢,在特定情況下表現(xiàn)良好,但缺乏擴(kuò)展性和通用性。深度學(xué)習(xí)的興起引入了端到端模型,這些模型能夠自動(dòng)學(xué)習(xí)文本轉(zhuǎn)sql的映射,但在處理復(fù)雜查詢時(shí)表現(xiàn)不佳。
3、利用預(yù)訓(xùn)練語言模型(plms)進(jìn)行微調(diào)的方法顯示了顯著的改進(jìn)。其中值得注意的是resdsql,它通過重新排列數(shù)據(jù)庫模式信息并利用natsql的結(jié)果,在spider數(shù)據(jù)集上達(dá)到了最先進(jìn)的性能。然而,這些方法需要大量標(biāo)注數(shù)據(jù),并且容易出現(xiàn)過擬合問題。
4、最近,基于上下文學(xué)習(xí)(icl)的方法,特別是使用chatgpt和gpt-4的研究,推動(dòng)了文本轉(zhuǎn)sql翻譯的進(jìn)展。這些方法在沒有標(biāo)注數(shù)據(jù)的情況下表現(xiàn)優(yōu)異,能夠輕松擴(kuò)展到不同領(lǐng)域。然而,它們也面臨輸出不穩(wěn)定的挑戰(zhàn),即對于相同的提示可能會(huì)生成不同的sql語句。
5、零樣本學(xué)習(xí)(zero-shot?learning)是在一些開創(chuàng)性研究中提出的,已經(jīng)成為機(jī)器學(xué)習(xí)領(lǐng)域的重要分支。它允許對沒有標(biāo)注樣本的類別實(shí)例進(jìn)行分類。最近,大型語言模型(llms)如gpt-3和gpt-4的出現(xiàn),在自然語言處理領(lǐng)域顯著推動(dòng)了這一方法的發(fā)展。
6、近年來的著名方法包括meta-tuning,它通過在多個(gè)數(shù)據(jù)集上微調(diào)預(yù)訓(xùn)練的llms來優(yōu)化零樣本學(xué)習(xí)目標(biāo),以及零樣本鏈?zhǔn)酵评?zero-shot?chain?of?thought,zero-shot-cot),這是一種用于多跳推理的提示方法。此外,零樣本自適應(yīng)提示(zero-shot?adaptiveprompting)通過選擇基于模型置信度的魯棒自生成示例,改進(jìn)了預(yù)測準(zhǔn)確性。
7、早期的文本轉(zhuǎn)sql方法是基于規(guī)則的,但由于需要手動(dòng)設(shè)計(jì)規(guī)則,面臨著擴(kuò)展性問題。深度學(xué)習(xí)的興起使得端到端模型得以普及,能夠自動(dòng)生成sql,但在處理復(fù)雜查詢時(shí)仍然存在困難。最近的方法將語言模型與數(shù)據(jù)庫知識(shí)相結(jié)合,更好地理解用戶意圖,采用了預(yù)訓(xùn)練語言模型(plms),這些模型能夠生成語法正確的sql并適應(yīng)不同領(lǐng)域。
8、上下文學(xué)習(xí)利用大型語言模型(llms)通過提供定義明確的任務(wù)提示,推進(jìn)了文本轉(zhuǎn)sql技術(shù)的發(fā)展。由于llms的規(guī)模和訓(xùn)練,它們能夠更好地理解用戶查詢,使其在文本轉(zhuǎn)sql應(yīng)用中更加高效。然而,現(xiàn)有的零樣本學(xué)習(xí)方法對于文本轉(zhuǎn)sql任務(wù)的精度還不夠,現(xiàn)有的系統(tǒng)框架也尚未完全成熟,導(dǎo)致框架輸出的穩(wěn)定性、魯棒性和擴(kuò)展性不足。
技術(shù)實(shí)現(xiàn)思路
1、為解決上述技術(shù)問題,本發(fā)明提出了一種基于大語言模型的零樣本文本到sql的自動(dòng)解析方法,解決了使用大語言模型llm進(jìn)行sql查詢生成時(shí)遇到的挑戰(zhàn),確保語法正確性和語義對齊,提高了準(zhǔn)確性和可靠性。
2、為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于大語言模型的零樣本文本到sql的自動(dòng)解析方法,包括:
3、定義最優(yōu)問題,將所述最優(yōu)問題輸入零樣本文本轉(zhuǎn)sql解析模型中進(jìn)行處理,獲得目標(biāo)sql語句;
4、其中,所述零樣本文本轉(zhuǎn)sql解析模型利用預(yù)設(shè)的大語言模型將所述最優(yōu)問題轉(zhuǎn)化為若干候選sql語句,對所述候選sql語句進(jìn)行評估及自我排序,獲得排序結(jié)果,對所述排序結(jié)果進(jìn)行修正,生成所述目標(biāo)sql語句。
5、優(yōu)選地,將所述最優(yōu)問題定義為:
6、
7、式中,q為自然語言問題,s為數(shù)據(jù)庫模式信息,y*為理想查詢,f為轉(zhuǎn)換函數(shù),為損失函數(shù)。
8、優(yōu)選地,所述零樣本文本轉(zhuǎn)sql解析模型包括生成器、評估器、加權(quán)自我排序模塊和自我修正模塊;
9、其中,所述生成器:用于使用自然語言處理技術(shù),結(jié)合數(shù)據(jù)庫模式信息,將用戶的查詢意圖轉(zhuǎn)換為結(jié)構(gòu)化的sql查詢,自動(dòng)生成若干候選sql語句;
10、所述評估器:用于通過預(yù)定義規(guī)則或基于性能的指標(biāo)確定每個(gè)生成的候選sql語句是否滿足預(yù)期的查詢要求,對候選sql語句進(jìn)行評估;
11、加權(quán)自我排序模塊:用于對評估后的sql語句進(jìn)行加權(quán)排序;
12、自我修正模塊:用于完善和優(yōu)化在加權(quán)排序后導(dǎo)致空列表或冗余結(jié)果的sql語句。
13、優(yōu)選地,將所述最優(yōu)問題輸入零樣本文本轉(zhuǎn)sql解析模型中進(jìn)行處理,包括:
14、通過生成器生成若干候選sql語句;
15、基于評估器與預(yù)定義規(guī)則,評估若干所述候選sql語句,獲得評估sql語句;
16、通過加權(quán)自我排序模塊將所述評估sql語句進(jìn)行加權(quán)排序,獲取排序結(jié)果;
17、使用自我修正模塊對所述排序結(jié)果進(jìn)行修正,輸出修正后的sql語句,即所述目標(biāo)sql語句。
18、優(yōu)選地,生成若干所述候選sql語句,包括:
19、將用戶的自然語言查詢轉(zhuǎn)換為結(jié)構(gòu)化的sql語句,通過所述最優(yōu)問題的描述與數(shù)據(jù)庫模式信息結(jié)合,構(gòu)建第一提示指令,輸入所述大語言模型;
20、基于所述第一提示指令生成若干所述候選sql語句,并通過調(diào)整超參數(shù)控制生成候選sql語句的數(shù)量。
21、優(yōu)選地,將所述用戶的自然語言查詢轉(zhuǎn)換為結(jié)構(gòu)化的sql語句的方法為:
22、g:(q,s)→y(2)
23、式中,q為自然語言問題,s為數(shù)據(jù)庫模式信息,y為生成的sql語句列表,g為生成器;
24、生成若干所述候選sql語句的方法為:
25、y=g(q,s;n)(3)
26、式中,g(q,s;n)為生成器函數(shù)。
27、優(yōu)選地,對所述候選sql語句進(jìn)行評估的方法為:
28、e:y×re→a(4)
29、式中,re為包含特定sql子句限制的規(guī)則,y為生成的sql語句列表,a表示預(yù)定義規(guī)則對y的有效性,e為評估者;
30、評估者需符合式(5)的條件:
31、
32、式中,y為g生成的sql語句,contains?left?join,in,or為包含的預(yù)定義規(guī)則,e(y,re)為評估者判定的不符合預(yù)定義規(guī)則的sql語句。
33、優(yōu)選地,對所述評估后的sql語句進(jìn)行加權(quán)排序,包括:
34、將所述評估后的sql語句輸入數(shù)據(jù)庫,執(zhí)行并獲得每個(gè)sql語句的查詢結(jié)果,根據(jù)所述查詢結(jié)果對評估后的sql語句進(jìn)行聚類,獲得聚類結(jié)果;
35、構(gòu)建第二提示指令,輸入chatgpt中,獲得聚類后sql語句的排名結(jié)果,其中所述第二提示指令包含用戶的問題、數(shù)據(jù)庫模式、生成的sql語句及執(zhí)行結(jié)果;
36、通過所述聚類結(jié)果中每一類別中的sql語句數(shù)量,對每一類別內(nèi)sql語句的排名結(jié)果進(jìn)行加權(quán),獲得最終排序結(jié)果。
37、優(yōu)選地,用于完善和優(yōu)化在加權(quán)排序后導(dǎo)致空列表或冗余結(jié)果的sql語句的方法為:
38、sc:(yranked,es,q,s)→ycorrected(6)
39、式中,sc為自我修正,yranked為sql語句的執(zhí)行結(jié)果,q為自然語言問題,s為數(shù)據(jù)庫模式信息,ycorrected為修訂后的sql語句。
40、與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn)和技術(shù)效果:
41、(1)本發(fā)明解決了使用llm進(jìn)行sql查詢生成時(shí)遇到的挑戰(zhàn),確保語法正確性和語義對齊,從而提高準(zhǔn)確性和可靠性;提出了零樣本文本轉(zhuǎn)sql解析框架zest,增強(qiáng)了對復(fù)雜或模糊用戶查詢的解釋,使sql語句與用戶意圖和數(shù)據(jù)庫結(jié)構(gòu)相一致;
42、(2)本發(fā)明在zest中設(shè)計(jì)了一個(gè)集成的評估和優(yōu)化過程,用于篩選和優(yōu)化sql語句,確保其符合標(biāo)準(zhǔn)sql規(guī)范,并更好地與用戶查詢和數(shù)據(jù)庫上下文對齊;通過使用spider數(shù)據(jù)集及其變體的廣泛實(shí)驗(yàn)驗(yàn)證,展示了本發(fā)明模型在處理多樣化查詢復(fù)雜性和數(shù)據(jù)庫模式方面的能力,推動(dòng)了零樣本學(xué)習(xí)場景下文本轉(zhuǎn)sql轉(zhuǎn)換領(lǐng)域的發(fā)展。