本發(fā)明涉及文本轉(zhuǎn)為數(shù)據(jù)庫(kù)的結(jié)構(gòu)化查詢語(yǔ)言,特別是涉及一種基于view和llm的兩階段text-to-sql生成方法。
背景技術(shù):
1、文本轉(zhuǎn)sql(也稱text-to-sql也稱?text2sql)任務(wù)是將文本轉(zhuǎn)為數(shù)據(jù)庫(kù)的結(jié)構(gòu)化查詢語(yǔ)言(structured?query?language,?sql),?該技術(shù)能使用戶在不會(huì)sql的情況下,通過(guò)自然語(yǔ)言與數(shù)據(jù)庫(kù)進(jìn)行交互。由于用戶問(wèn)題表達(dá)方式的多樣性、數(shù)據(jù)庫(kù)表結(jié)構(gòu)和sql的復(fù)雜性,從自然語(yǔ)言問(wèn)題中生成準(zhǔn)確的sql是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。
2、傳統(tǒng)的text-to-sql系統(tǒng)通常基于規(guī)則和深度學(xué)習(xí)網(wǎng)絡(luò)的方法,?雖然取得了不錯(cuò)的性能,?但基于規(guī)則的方法依賴于人工,?因此成本昂貴。而傳統(tǒng)基于神經(jīng)網(wǎng)絡(luò)的方法需要不斷地根據(jù)業(yè)務(wù)的領(lǐng)域來(lái)微調(diào)模型,?在數(shù)據(jù)庫(kù)越來(lái)越復(fù)雜的當(dāng)下,?非常不靈活。
3、近年來(lái),隨著大語(yǔ)言模型(large?language?models,llm,也稱大模型)的流行,基于llm的text-to-sql成為了廣受關(guān)注的探索方向。llm憑借強(qiáng)大的語(yǔ)言理解能力,可以在不需要微調(diào)的情況下,僅憑借提示詞就獲得不錯(cuò)的效果?;诖笳Z(yǔ)言模型的text-to-sql雖然相比于之前的方法取得了突破,但由于數(shù)據(jù)庫(kù)本身的設(shè)計(jì)模式是出于數(shù)據(jù)保存考慮的,而非方便大語(yǔ)言模型理解,使得大語(yǔ)言模型難以對(duì)數(shù)據(jù)庫(kù)信息進(jìn)行準(zhǔn)確地利用。例如:數(shù)據(jù)庫(kù)中的外鍵能維護(hù)兩個(gè)表之間的數(shù)據(jù)一致性和關(guān)聯(lián)性,但大語(yǔ)言模型在使用外鍵對(duì)多張表進(jìn)行join操作后,可能在select操作或where操作時(shí),將表和字段進(jìn)行錯(cuò)誤的搭配。
4、因此,為了避免大語(yǔ)言模型對(duì)數(shù)據(jù)庫(kù)模式理解錯(cuò)誤導(dǎo)致text-to-sql任務(wù)性能下降的問(wèn)題,提供一種基于view和llm的兩階段text-to-sql生成方法以解決現(xiàn)有技術(shù)不足甚為必要。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于避免現(xiàn)有技術(shù)的不足之處而提供一種基于view和llm的兩階段text-to-sql生成方法,能夠提高大語(yǔ)言模型理解和查詢的準(zhǔn)確性,提高處理效率。
2、本發(fā)明的目的通過(guò)以下技術(shù)措施實(shí)現(xiàn)。
3、提供一種基于view和llm的兩階段text-to-sql生成方法,包括:
4、第一階段:?將用戶查詢請(qǐng)求、view的描述信息填充到第一prompt中,將第一prompt輸入到大語(yǔ)言模型中,由大語(yǔ)言模型生成view查詢語(yǔ)句;
5、第二階段:?將預(yù)處理階段中view的創(chuàng)建語(yǔ)法和第一階段中生成的view查詢語(yǔ)句填充到第二prompt中,將第二prompt輸入到大語(yǔ)言模型中,由大語(yǔ)言模型將查詢view的語(yǔ)法還原為查詢數(shù)據(jù)庫(kù)原始表的sql。
6、優(yōu)選的,上述的基于view和llm的兩階段text-to-sql生成方法,在第一階段之前還設(shè)置有預(yù)處理階段:為數(shù)據(jù)庫(kù)創(chuàng)建view,同時(shí)得到view的創(chuàng)建語(yǔ)法。
7、優(yōu)選的,上述的基于view和llm的兩階段text-to-sql生成方法,預(yù)處理階段,為數(shù)據(jù)庫(kù)創(chuàng)建view,使得通過(guò)view,查詢需求時(shí)不需使用join操作。
8、優(yōu)選的,上述的基于view和llm的兩階段text-to-sql生成方法,預(yù)處理階段,為數(shù)據(jù)庫(kù)創(chuàng)建view的標(biāo)準(zhǔn)是消除外鍵。
9、優(yōu)選的,上述的基于view和llm的兩階段text-to-sql生成方法,在第一階段,當(dāng)用戶提問(wèn)時(shí),將用戶的問(wèn)題轉(zhuǎn)為向量,用該問(wèn)題向量在數(shù)據(jù)庫(kù)中匹配“sql示例”、“view描述”,將匹配到的信息和用戶問(wèn)題填充到第一prompt中,將第一prompt輸入到大語(yǔ)言模型,由大語(yǔ)言模型生成view查詢語(yǔ)句。
10、優(yōu)選的,上述的基于view和llm的兩階段text-to-sql生成方法,第一prompt?設(shè)置為格式模板。
11、優(yōu)選的,上述的基于view和llm的兩階段text-to-sql生成方法,第二階段,將預(yù)處理階段中view的創(chuàng)建語(yǔ)法和第一階段中生成的view查詢語(yǔ)句填充到第二prompt中并輸入給大語(yǔ)言模型,由大語(yǔ)言模型將查詢view的語(yǔ)法還原為查詢數(shù)據(jù)庫(kù)原始表的sql。
12、優(yōu)選的,上述的基于view和llm的兩階段text-to-sql生成方法,第二階段,由大語(yǔ)言模型將查詢view的語(yǔ)法還原為查詢數(shù)據(jù)庫(kù)原始表的sql的方法是:先用view的查詢語(yǔ)句和view的創(chuàng)建語(yǔ)句對(duì)原表進(jìn)行架構(gòu)鏈接schema?linking,確定出要查詢的表和表中字段;
13、然后將view查詢語(yǔ)句、view創(chuàng)建語(yǔ)句、架構(gòu)鏈接(schema?linking)后的表描述、用戶問(wèn)題填充到prompt中并將prompt輸入大語(yǔ)言模型,得到查詢數(shù)據(jù)庫(kù)原始表的sql。
14、優(yōu)選的,上述的基于view和llm的兩階段text-to-sql生成方法,第二prompt?設(shè)置為格式模板。
15、本發(fā)明一種基于view和llm的兩階段text-to-sql生成方法,第一階段:?將用戶查詢請(qǐng)求、view的描述信息填充到大語(yǔ)言模型中,由大語(yǔ)言模型生成view查詢語(yǔ)句;第二階段:?將預(yù)處理階段中view的創(chuàng)建語(yǔ)法和第一階段中生成的view查詢語(yǔ)句填充到大語(yǔ)言模型中,由大語(yǔ)言模型將查詢view的語(yǔ)法還原為查詢數(shù)據(jù)庫(kù)原始表的sql。本申請(qǐng)的基于llm解決復(fù)雜表格text-to-sql的方案,提出了一種基于view和llm的sql生成方案,本方案借助view對(duì)數(shù)據(jù)庫(kù)重新進(jìn)行描述,降低了大語(yǔ)言模型理解數(shù)據(jù)庫(kù)模式的難度。然后根據(jù)view的創(chuàng)建語(yǔ)句,對(duì)生成的view查詢語(yǔ)句進(jìn)行轉(zhuǎn)換,由大語(yǔ)言模型將查詢view的語(yǔ)法還原為查詢數(shù)據(jù)庫(kù)原始表的sql,避免了依靠view查詢時(shí)查詢效率低和與直接查詢數(shù)據(jù)庫(kù)結(jié)果可能不一致的問(wèn)題。能夠提高提高大語(yǔ)言模型理解和查詢的準(zhǔn)確性,提高響應(yīng)時(shí)間,提高處理效率。
1.一種基于view和llm的兩階段text-to-sql生成方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的基于view和llm的兩階段text-to-sql生成方法,其特征在于:在第一階段之前還設(shè)置有預(yù)處理階段:為數(shù)據(jù)庫(kù)創(chuàng)建view,同時(shí)得到view的創(chuàng)建語(yǔ)法。
3.根據(jù)權(quán)利要求2所述的基于view和llm的兩階段text-to-sql生成方法,其特征在于:預(yù)處理階段,為數(shù)據(jù)庫(kù)創(chuàng)建view,使得通過(guò)view,查詢需求時(shí)不需使用join操作。
4.根據(jù)權(quán)利要求3所述的基于view和llm的兩階段text-to-sql生成方法,其特征在于:預(yù)處理階段,為數(shù)據(jù)庫(kù)創(chuàng)建view的標(biāo)準(zhǔn)是消除外鍵。
5.根據(jù)權(quán)利要求1至4任意一項(xiàng)所述的基于view和llm的兩階段text-to-sql生成方法,其特征在于:在第一階段,當(dāng)用戶提問(wèn)時(shí),將用戶的問(wèn)題轉(zhuǎn)為向量,用該問(wèn)題向量在數(shù)據(jù)庫(kù)中匹配“sql示例”、“view描述”,將匹配到的信息和用戶問(wèn)題填充到第一prompt中,將第一prompt輸入到大語(yǔ)言模型中,由大語(yǔ)言模型生成view查詢語(yǔ)句。
6.根據(jù)權(quán)利要求5所述的基于view和llm的兩階段text-to-sql生成方法,其特征在于:第一prompt?設(shè)置為格式模板。
7.根據(jù)權(quán)利要求5所述的基于view和llm的兩階段text-to-sql生成方法,其特征在于:第二階段,將預(yù)處理階段中view的創(chuàng)建語(yǔ)法和第一階段中生成的view查詢語(yǔ)句填充到第二prompt中并輸入給大語(yǔ)言模型,由大語(yǔ)言模型將查詢view的語(yǔ)法還原為查詢數(shù)據(jù)庫(kù)原始表的sql。
8.根據(jù)權(quán)利要求6所述的基于view和llm的兩階段text-to-sql生成方法,其特征在于:第二階段,由大語(yǔ)言模型將查詢view的語(yǔ)法還原為查詢數(shù)據(jù)庫(kù)原始表的sql的方法是:先用view的查詢語(yǔ)句和view的創(chuàng)建語(yǔ)句對(duì)原表進(jìn)行架構(gòu)鏈接,確定出要查詢的表和表中字段;
9.根據(jù)權(quán)利要求8所述的基于view和llm的兩階段text-to-sql生成方法,其特征在于:第二prompt?設(shè)置為格式模板。