Awesome-Text2GQL:圖查詢微調語料的自動生成框架

過去一年,GraphRAG技術發展如火如荼,尤其是基于關鍵詞、向量驅動的知識檢索方法不勝枚舉。然而通過子圖召回的檢索方式,對用戶真實查詢意圖的定位仍缺乏足夠的準確度。我們需要更直接的方式,將自然語言查詢直接翻譯為圖查詢語句,即Text2GQL。在文章《ChatTuGraph:通過大模型“與圖對話”》中我曾闡述,由于圖查詢語言的標準普及仍在起步階段,圖查詢微調語料的收集和獲取仍是困難重重,為此我們提出了基于“語法制導的圖查詢語料生成”的方法,以自動化的方式合成圖查詢微調語料數據集。
來自中國科學技術大學的TuGraph社區開源貢獻者龐紅玉同學,在OSPP(開源之夏)項目中,基于Awesome-Text2GQL開源項目完成了Text2GQL微調語料自動生成框架的搭建與優化,并獲得了“開源之夏2024最佳質量獎”。語料生成框架的代碼當下已全部開源,歡迎業內同仁共建圖查詢語料數據集。
同時,TuGraph團隊也基于DB-GPT-Hub項目構建了Text2GQL的整體微調鏈路與效果評估(準確率92%以上),并開放了微調數據集和微調模型,歡迎大家體驗使用。
接下來,就由龐同學向大家介紹在Awesome-Text2GQL中完成的具體工作。
1. 引言
通過智能體Agent與DBMS交互完成數據查詢和系統運維調優等工作是未來的技術趨勢,其中重要的一環是Text2SQL/Text2GQL(GQL,Graph Query Language)類的任務。在面向圖數據庫的Text2GQL任務中,我們需要解決訓練數據少、數據標注成本高的問題,由于圖查詢語言標準ISO GQL剛剛發布,行業內多種查詢語法并存,標準語料數據匱乏的問題格外嚴峻。
2. Text2GQL
Text2GQL任務與Text2SQL任務類似,每條語料主要由兩部分組成:
l Question:人類可閱讀的自然語言,表明數據庫操作人員的操作意圖。
l Query:查詢語句GQL (??Graph Query Language)Query,圖數據庫可理解的查詢語言。
不同于Text2SQL,在Text2GQL領域,由于圖查詢語言尚未統一,各類圖查詢語言的訓練語料嚴重缺乏,當務之急是基于少量的人工標注語料,找到一種低成本的方法快速生成各類圖查詢語言對應的訓練語料。

語法制導的語料生成策略
TuGraph在《ChatTuGraph:通過大模型“與圖對話”》中創新性的提出了基于語法制導的語料生成策略,并在TuGraph-Analytics上進行了測試。這種策略將表達式模板(Query模板)與提示詞模板(Question模板)作為輸入,通過表達式實例(Query)生成器與提示詞實例(Question)生成器,結合實際的schema批量生成出大量的表達式實例和對應的提示詞實例。生成的提示詞實例也可以借助LLM進一步泛化生成多樣的自然語言提示詞文本,來確保大模型能夠識別同一個查詢問題的多樣化自然語言表達方式。
Awesome-Text2GQL項目基于這一策略在TuGraph-DB上構建了基于Cypher語言的語料生成,證明了TuGraph提出的這一策略可以快速的在不同圖查詢語言間遷移,同時在上述策略的基礎上進行了進一步的升級,增加了表達式實例生成的隨機性,并優化了提示詞實例的可讀性。
3. Awesome-Text2GQL
Awesome-Text2GQL旨在實現一個用于生成面向Text2GQL任務的大語言模型微調(Large Language Models Fine-tune)語料數據集的語料生成框架。Awesome-Text2GQL使用基于語法制導的語料生成策略構建了一條端到端的語料生成->語料泛化->語料測試->構造數據集->大語言模型微調->應用的端到端的語料生成-LLM微調-應用全鏈路。
本篇文章將為讀者簡要介紹Awesome-Text2GQL語料生成框架的整體架構,并將在后續推文中帶領大家深入語料生成框架實現細節與使用方法,通過Awesome-Text2GQL+DB-GPT+TuGraph-DB實現與圖數據庫對話。
3.1 框架設計

Awesome-Text2GQL語料生成框架架構圖
語料生成框架由基于Antlr4的語料生成模塊(Corpus Generation Module based on Antlr4)和基于LLMs的語料泛化模塊(Corpus Generalization Module based on LLMs)兩部分組成:
語料生成模塊:TuGraph-DB中的查詢語言的詞法和語法基于Antlr4在.g4語法文件中進行描述,因此我們基于Antlr4生成語法文件對應的詞法分析器和語法分析器,輸入的Query模板在經過詞法分析、語法分析后將得到AST,訪問其中的節點進行語義分析,獲取查詢的模式后結合schema與實際數據集就可以對Query模板進行替換,生成豐富的Query實例和Question實例。
基于大語言模型的語料泛化模塊:通過借助大語言模型的能力,對現有的語料進一步泛化得到多樣的自然語言樣本Question實例,也可以借助大語言模型自身的翻譯能力對輸入的Query實例進行翻譯生成對應的Qusetion實例。
Awesome-Text2GQL語料生成框架具有乘法增加能力,框架可生成語料數為:
n_template、n_schema、n_match_pattern分別為Query模板數量、schema數量和每個schema中能夠匹配Query模板查詢模式的實例數。k則指的是手動設定的語料泛化模塊中對一個Query實例對應的Question實例的泛化倍數。
整體來看,語料生成框架包含Query實例生成(框架圖中橙色星號1)、Question實例生成(框架圖中橙色星號2)、Question實例泛化(框架圖中橙色星號3)三大功能,并使用了多種方式來實現語料的Question生成和Question泛化兩個功能來滿足不同場景下的功能需求。
對于Question實例生成:
-
在最初構造語料模板時
模板中缺少Query對應的Question,此時我們可以直接利用大語言模型的能力來快速生成對應的Question,再通過少量的人工清洗和標注來構造符合條件的語料模板(對應語料泛化模塊的功能一)。
-
在生成語料 Question時
設計了語料模板輔助大模型生成的方法,以提取Query的高層語義信息(對應語料泛化模塊的功能四)。
-
在處理預訓練大語言模型沒有學習過的語法的情況時
基于解析的翻譯式Question生成方法也可以作為可行方案(對應語料生成模塊的翻譯器Translator)。
對于Question實例泛化:
-
在泛化相對簡單的Question實例時
直接泛化Question實例(對應語料泛化模塊的功能二)。
-
在泛化相對復雜的Question實例時
在泛化Question實例時將Query實例提供給大模型,確保大模型在泛化Question實例時不會損失關鍵信息(對應語料泛化模塊的功能三)。
3.2 基于Antlr4的語料生成

基于Antlr4的語料生成模塊
語料生成模塊的主要功能有兩個:
-
實例化生成器(Instanstiator)
在解析Query得到抽象語法樹(AST)后,通過對AST實例化來生成多樣的Query。簡單的AST分支如OPTIONAL、SKIP、LIMIT可以一個小概率擴展到生成的Query中,生成的Query必須語法正確,且必須是在當前數據庫實例中可實際執行的。
-
翻譯器(Translator)
解析得到抽象語法樹(AST)后,通過對AST進一步進行語義分析,逐項翻譯生成相應的Question。
3.3 基于LLMs的語料泛化模塊

基于LLMs的語料泛化模塊
語料泛化模塊在執行時分為五個步驟:
Step1:設置本模塊的執行任務并讀取相應需要被處理的語料。
Step2:根據給定的執行任務生成具體的提示詞prompt。
Step3:調用大模型的api獲得執行后的結果,Awesome-Text2GQL目前已經支持。
Step4:經過后處理對大模型產生的結果進行格式轉換,如刪除多余的空行、多余的編號、不需要的符號如加粗符**等等。
Step5:輸出成對的訓練語料。
基于LLMs的語料泛化模塊主要可用于實現以下四個功能:
-
功能一:直接生成Question
簡單的Query語句可以直接借助大語言模型的能力,獲得相應的訓練語料的Question部分。本功能也可以用于當有一批未標注的Query語句時,直接通過大模型對這些Query進行預標注,來輔助人工標注數據,這樣僅需少量的人工清洗成本,而無需高昂的人工標注成本。
-
功能二:直接泛化Question
在泛化時,大語言模型直接對輸入的Question進行泛化。
-
功能三:根據Query泛化Question
根據輸入的Query和Question進一步泛化得到相同語義的Question。此功能在功能二的基礎上,在泛化Question時,可以通過補充Query的信息,幫助大模型進一步理解需要泛化的Question文本的含義,使得泛化的結果更貼近Query的操作執行意圖。
-
功能四:語料模板輔助大模型生成Question
根據輸入成對的Query和Question語料組成的模板,理解相同句式的Query的含義,并生成Query對應的Question。此功能在功能一的基礎上,通過給大模型提供相同句式的模板,來幫助大模型理解某類Query句子更高層次的語義含義,而不是僅僅依靠預訓練基座模型以前學習過的圖數據庫查詢的相關信息。
3.4 工作流程
整個語料生成框架可以通過排列組合來滿足不同場景下的語料生成需求,這里介紹一個典型的應用Awesome-Text2GQL語料生成框架來生成語料的工作流程:
Step1:輸入多條語料模板,使用語料生成框架中的實例化生成器Instantiator來逐模板、逐Schema地生成符合模板匹配模式的多條Query。
Step2:之后將上一步生成的Query通過語料模板輔助大模型生成Question的生成方式,來得到Query-Question語料對。
Step3:對Query-Question語料對的自然語言部分進一步進行泛化,得到多樣的語料。
Step4:對上述生成的語料進行語法檢查、生成Schema信息的自然語言表達、語料格式轉換以及數據集劃分,得到可直接用于大語言模型微調的數據集。

Awesome-Text2GQL語料生成工作流
4. 總結與展望
Text2GQL是構建圖數據庫AI Agent的第一步,既可以運用大模型技術來降低圖數據庫的學習和應用成本,也可以隨著未來Graph RAG(Retrieval Augmented Generation,檢索增強生成)技術的應用,緩解大模型推理的幻覺問題。在這里,我們也提出對Awesome-Text2GQL未來的改進方向:
-
語料質量提升
圖查詢語言在表達相同查詢意圖時,查詢語句往往具有多種寫法,而查詢引擎中針對不同寫法的優化程度時不同的,兩種表達相同語義的查詢語句的實際性能可能會有很大的差距。如何使得生成的圖查詢語句更加適應查詢引擎的能力是未來工作的一個方向。
-
支持更多圖查詢語言語法
當前圖查詢語言百花齊放,而Awesome-Text2GQL作為開源的Text2GQL語料生成框架,未來也將支持更多的圖查詢語言,并進一步降低新的查詢語言的遷移成本,為圖數據庫邁向AI時代打下堅實的基礎。
作者:Florian
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則作者保留追究法律責任的權利。
若本文對你有所幫助,您的 關注 和 推薦 是我分享知識的動力!
若本文對你有所幫助,您的 關注 和 推薦 是我分享知識的動力!

浙公網安備 33010602011771號