R3-NL2GQL: 大小模型协同的NL2GQL生成技术

B站影视 2025-01-14 18:19 3

摘要:图谱数据因其能够有效表示复杂的关系和模式而变得日益重要,在这种趋势下,基于图的数据库技术得到了迅速发展。图数据库利用节点、边和属性直观地描绘数据关系,为复杂数据关系的分析和处理提供了强大的支持。为了能够让训练得到的金融垂直领域大模型能够和图数据库直接交互,从而

(此论文内容来自复旦-达观金融垂域应用大模型校企联合研究中心研究成果)

背景

图谱数据因其能够有效表示复杂的关系和模式而变得日益重要,在这种趋势下,基于图的数据库技术得到了迅速发展。图数据库利用节点、边和属性直观地描绘数据关系,为复杂数据关系的分析和处理提供了强大的支持。为了能够让训练得到的金融垂直领域大模型能够和图数据库直接交互,从而实现金融风险发现和传导过程的推理总结,我们开发了一种新型的自然语言转化为图查询语言的技术(NL2GQL),旨在降低用户与复杂查询语言之间的交互障碍,自动将用户的自然语言输入转换为精确的图数据库查询指令。

近年来NL2GQL技术的发展相对缓慢,面临诸多挑战:

挑战一:图的复杂性与查询多样性。图数据库由于其复杂的节点-边结构,使得查询的构造变得复杂,但图查询语言(GQL)通过支持如子图和路径查询等多样的查询类型,增强了灵活性,如表1所示。这种组合提供了一个更丰富但更复杂的查询环境。


表格 1 SQL 和GQL 语法中关键词(nGQL 作为示例)


挑战二:GQL语法不一致性。当前不同图数据库的GQL之间缺乏统一性,与SQL的广泛采用形成对比,这需要处理各种专有语言,如Cypher 用于Neo4j,nGQL 用于 NebulaGraph,以及 Gremlin 用于 JanusGraph。这种多样性在创建数据集和设计通用模型时带来了挑战。

挑战三:资源有限,缺乏数据集。在自然语言到图查询语言(NL2GQL)的技术领域中,研究者和开发者面临着显著的资源限制,尤其是在数据集和开发工具方面的稀缺。特别是缺少专门为图查询设计的大规模、高质量数据集,这直接影响了算法的训练和评估。此外,图查询语言的开发工具和库也远未达到SQL领域的丰富和完善,这限制了快速实验和原型开发的能力。

详细技术方案

1.基于代码结构的图模式表达

为了解决自然语言转为图谱模式(schema)过程中的信息损失,本任务中设计了一种创新性的模式和查询的构造方法,如图 12 所示,包 基于代码结构的图模式表达,代码结构的GQL 骨架。

基于代码结构的图模式表达, 从自然语言描述过渡到基于代码结构的图模式表达中,需要保证实体、关系和属性的语义完整性。本文的技术方法中,这种转变将架构封装在代码结构中,并利用 Python 的语法来反映图的架构。代码结构架构采用了一种代码风格的方法,定义了各种架构结构。它主要包括两种类型:标签(tag)和边(edge),引入了子类来表示每个图的架构,利用 Python 的特性进行详细和精确的描述:1)概念名称由 Python 类表示;2)类注释提供概念内涵的深入解释;3)类继承模型描述了架构概念之间的层级关系;4)初始化函数描述标签或边的属性。 通过维护语义一致性并利用图数据与面向对象范式之间的固有对齐,代码结构化架构增强了模型的可解释性,如图1所示。

图 1纯文本模式、代码结构化模式、代码结构化骨架的示例


纯文本模式作为最基本的提示模式(prompt),用自然语言书写。代码结构化模式利用 Python 语言重新表达图的模式,目的是增强模型的推理能力。代码结构化骨架能够辅助大模型提取关键词和子句的信息,专注于GQL的构造过程。

2. 一种混合策略的 NL2GQL 方法:R³-NL2GQL

在我们的初步实验中发现,受限于网络中GQL的数据量,对小模型直接进行NL2GQL的微调很难赋予其学会陌生语法的能力。R³-NL2GQL 方法开创了一种混合策略,整合多个模型以减轻单一模型依赖的局限性,利用微调后小模型的准确性和大模型对上下文学习的泛化性进行GQL生成。如图2所示。该过程从一个经过微调的小型模型开始,该模型作为排名器(ranker),擅长将用户需求转化为所需的语法结构和模式,如CRUD 操作、子句和模式类。为了解决对齐的挑战,另一个小型模型利用小样本(few-shot)学习来获取和验证图数据库中的信息,充当重写器(rewriter)以确保数据的准确性。这些模型的输出随后由一个更大的模型进一步完善,其充当微调器(refiner),利用其复杂的泛化和综合能力,最终生成准确的GQL 查询。

图 2 R³-NL2GQL方法框架流程图

(1)排名器(ranker)

将自然语言转化为GQL存在几个特定的步骤,每个步骤都面临一些独特的挑战。第一步是需要识别自然语言输入,判断使用 CRUD 中的哪种操作,即 CRUD 关键词筛选阶段。第二步是 GQL 从句筛选,在选定了CRUD 关键词之后,需要确定使用何种从句子句(如 WHERE BY)来构建一个完整的连贯的GQL 语句。第三步是生成GQL 之后,需要准确查找到图数据库中的对应节点和边。

为了有效地处理上述步骤,我们引入了一个较小的基础模型作为排名器。利用代码预训练的优势,增强模型的推理能力,我们使用代码结构化的模式来协助排名器完成其任务。

(2)重写器(re-writer)

为了确保生成的GQL 中图数据的节点、边和模式的准确链接,我们采用了一个较小的模型作为精确对齐的重写器。在用户查询与实际图数据对齐中,存在诸多挑战,如查询的实体与数据库中的表示不匹配,如下图所示。同时,该模型也可能创造出不在模式中的节点或边类型,这种幻觉现象将导致错误。

图 3 用户查询对齐面临的挑战


为了解决此种幻觉现象,需要将用户查询的内容对齐到图数据库中的内容。我们利用数据检索来精确匹配用户的自然语言查询与图数据库中对应的数据,解决对齐问题。 这包括两级检索和对齐过程:

① 字符级对齐: 使用莱文斯坦距离(最小编辑距离)来计算查询和数据库实体之间的相似性,定义如下:

其中,Q是用户输入的自然语言查询,而I代表图谱中的数据,如点、边信息,信息中包含属性数据。

② 语义对齐,对图谱中数据及用户查询嵌入后进行比较,定义如下:

经过两级检索后,选取综合排名靠前的Top k个信息,利用小模型的上下文学习能力对用户自然语言查询进行改写,得到对齐后的查询。

(3)修改优化器(Refiner)

在使用了排名器和重写器之后,我们最终使用一个较大的模型整合了之前较小模型的输入,增强了GQL生成。它综合了排名器识别的代码结构化模式,以及重写器调整的查询和相关检索结果。这种融合,得益于较大模型先进的零样本能力,促进了精炼GQL 查询的创建。这些模型之间的协同作用增强了系统对复杂查询的解读和响应能力,提高了准确性和连贯性。

3.构造新型的 NL2GQL 数据集

通过 300 人小时和 100 机时的共同努力,我们收集了 20,000 个英汉双语数据样本,并从中挑选出高质量的子集。与众多开源的NL2SQL 数据集(如 Spider 和KaggleDBQA)相比,GQL在大规模、多架构的数据集方面存在不足,这些数据集能够满足真实世界工业需求。大多数现有数据集主要集中在Cypher 上,这使得创建GQL 数据集变得具有挑战性。

图 4数据集构建流程图


考虑到基础模型能够较为熟练地生成Cypher, 我们选择了nGQL,一个GQL的特定类型,作为我们评估方法有效性的研究案例。我们的数据集创建包括两种主要类型:一种用于训练小型模型,另一种用于评估模型性能。这一部分详细描述了我们定义GQL 生成任务和合成数据生成策略的方法,如图3所示。我们的数据来源包括NebulaGraph 的官方nGQL 文档和从开源知识图谱衍生的专有数据资产。

构建 NL-GQL 对:在构建数据集时,我们采用了一种复杂策略,而不是直接从GQL 文档中提取NL-GQL 对, 因为后者无法捕捉复杂的人与数据库的交互。研究从手工制作样本对开始,优先考虑代码的可解释性而不是生成。这有助于实现GQL2NL 策略,利用语言模型的解码能力产生多种自然语言解释,每个GQL查询都能紧密模仿真实世界的查询。

整合模式、框架和推理:在对数据对进行细致的手工精炼之后,我们整合了模式、框架和推理方面以丰富数据集。模式通过基于代码的结构来表达,以促进精确的GQL 生成。 我们提出了一个精炼的三部分推理框架用于GQL 生成,包括:选择最适合的 CRUD 操作基于用户输入的自然语言查询中的约束;使用 LIMIT和WHERE 来满足结果约束; 根据需要从模式中识别特定的节点或边类型以构建精确的GQL。这种方法最终形成了最终的训练数据集。

指标设计及实验

我们利用了之前概述的双语数据集,选择了不同长度的样本以确保数据集的丰富多样性,这对于增强模型的泛化能力至关重要。我们将数据分为不同的架构类型,并使用 K-Center Greedy 算法从每个类别中选择数据,以识别最多样化的训练样本。这种方法允许我们在组装一个包含 5000 个样本的双语数据集时保持原始的架构分布,这些样本被分为训练集和测试集,比例为4:1。

鉴于图数据库的复杂性, 其中多种自然语言可以描述同一个GQL 反之亦然,传统的NL2SQL 评估指标如逻辑和执行准确性已不足以满足需求。GQL 的复杂结构能产生多样的查询结果,且同一自然语言查询的功能性关键词存在变异性,这需要一个量身定制的评估方法。我们通过提出以下三个关键问题来解决评估问题,每个问题都对应特定的评估指标:

• Q1:生成GQL 的语法评估。

• Q2:模型的语义理解评估。

• Q3:查询信息准确性的确定。

对于 Q1,引入了语法准确性(SA)指标,评估生成的 GQL 是否能被图数据库无语法错误地执行;对于Q2,采用理解准确性(CA)指标来衡量模型生成的GQL 与标准 GQL 之间的相似度,使用 text-embedding-ada-002 模型进行代码相似性比较,通过余弦相似性进行比较;对于Q3,提出执行准确性(EA)和内部执行准确性(IEA)指标。EA 评估全局执行准确性,而IEA 评估语法正确的GQL 之间的准确性。考虑到 GQL 结果格式的多样性,采用了改进的 Jaccard 算法和BM25 算法评估内容的完整性和语义相似性,通过平均分数进行综合评估。

最终,我们框架内较大和较小模型的协同使用证明最为有效,巧妙地综合关键信息并减少幻觉,以提供优越的结果,如表2所示。R³-NL2GQL 的EA 指标为51.09%,而其他方法的IEA 指标几乎都超过了70%,R³-NL2GQL 接近90%。


表格 2 实验结果对比

来源:知识图谱大发明家

相关推荐