ULTRA的杀手级功能UltraQuery任意知识图谱零样本复杂逻辑查询回答完全指南【免费下载链接】ULTRAA foundation model for knowledge graph reasoning项目地址: https://gitcode.com/gh_mirrors/ultra/ULTRAULTRA 是面向知识图谱推理的基础模型而它的杀手级功能 UltraQuery 让零样本复杂逻辑查询回答成为现实无需针对每个图谱单独训练加载一个预训练检查点就能在任意知识图谱上回答多跳投影、交集、并集、否定等 14 种复杂逻辑查询。这篇指南将带你从零上手 UltraQuery完整跑通你的第一条逻辑查询。什么是 UltraQuery为什么它是知识图谱推理的突破传统知识图谱查询系统如基于图遍历的方法只能回答直接相邻的简单问题而现实中我们常需要回答多跳复杂逻辑问题例如谁和某位导演合作过并且执导过获奖电影多跳投影 交集哪些实体不是 X 的作者否定UltraQuery 正是为此而生它在 ULTRA 的神经关系推理能力之上叠加了一套无参数模糊逻辑算子把复杂查询当作可执行程序来运行。作为零样本zero-shot方法它可以直接迁移到任何知识图谱——即使实体和关系类型都没见过。该工作已被 NeurIPS 2024 接收在 23 个查询基准上取得多项 SOTA 结果。UltraQuery 工作原理模糊逻辑算子如何驱动多跳推理理解 UltraQuery 不需要读代码记住三个核心思想即可源码见 ultra/ultraquery.py查询即程序逻辑查询被转换为后缀表达式由一个指令指针逐条执行。算子包括关系投影沿某关系扩展答案集合、交集、并集、否定执行过程像计算器一样使用栈实现见 ultra/query_utils.py。神经 模糊逻辑双引擎每执行一次关系投影ULTRA 的图神经网络会给出每个候选实体的概率得分0~1 之间的模糊集合而交集/并集/否定则用模糊逻辑精确组合——默认采用 product 系统交集相乘并集ab−ab否定1−a还支持 godel 和 lukasiewicz 两种逻辑系统见 conjunction 实现。训练时边 dropout正则化训练过程中会随机删掉部分可直达的边强迫模型学会真正的推理而非死记硬背边遍历这也是它零样本泛化能力的关键来源traversal_dropout。 一句话总结神经网络负责单跳关系扩展模糊逻辑负责多跳逻辑组合两者协同完成任意复杂度的查询。14种复杂查询类型支持清单UltraQuery 支持知识图谱查询领域全部 14 种标准查询模式定义见 ultra/datasets_query.py类型含义类型含义1p/2p/3p1/2/3 跳关系投影2i/3i2/3 路交集ip/pi交集后投影 / 投影后交集2u-DNF/up-DNF2 路并集 / 并集后投影2in/3in2/3 路含否定交集inp/pin/pni含否定的投影组合标准评测协议是仅在 10 种不含并集的模式上训练或直接零样本然后在全部 14 种模式上评测——这正是检验泛化能力的关键。快速上手UltraQuery 一键安装步骤第 1 步获取代码git clone https://gitcode.com/gh_mirrors/ultra/ULTRA第 2 步安装依赖Python 3.9 PyTorch 2.1 PyG 2.4GPU 需 CUDA 11.8conda install pytorch2.1.0 pytorch-cuda11.8 cudatoolkit11.8 pytorch-scatter2.1.2 pyg2.4.0 -c pytorch -c nvidia -c pyg -c conda-forge conda install ninja easydict pyyaml -c conda-forge第 3 步确认检查点仓库的 ckpts/ 目录自带 4 个检查点其中与 UltraQuery 直接相关的是ultraquery.pth⭐专用查询检查点在 FB15k237 复杂查询上训练 40,000 步针对多源传播问题做了调优无需分数阈值配置见 config/ultraquery/pretrain.yamlultra_3g.pth/ultra_4g.pth/ultra_50g.pth通用 ULTRA 检查点也可用于查询但必须设置--threshold 0.8及以上的分数阈值来缓解多源传播问题零样本推理运行第一条逻辑查询的完整命令使用 script/run_query.py 即可在单个数据集上跑零样本查询推理。以下命令在 FB15k237 查询数据集上运行数据集首次运行会自动下载python script/run_query.py -c config/ultraquery/transductive.yaml \ --dataset FB15k237LogicalQuery --epochs 0 --bpe null --gpus [0] \ --bs 32 --threshold 0.0 --ultra_ckpt null --qe_ckpt /path/to/ultra/ckpts/ultraquery.pth归纳式新实体场景则换成归纳式配置和数据集版本python script/run_query.py -c config/ultraquery/inductive.yaml \ --dataset InductiveFB15k237Query --version 550 --epochs 0 --bpe null \ --gpus [0] --bs 32 --threshold 0.0 --ultra_ckpt null \ --qe_ckpt /path/to/ultra/ckpts/ultraquery.pth三个关键参数速查参数作用--threshold用ultraquery.pth时设为0.0用ultra_3g/4g/50g时设为0.8或更高--qe_ckptUltraQuery 检查点路径跑原版 ULTRA 时设为null--ultra_ckpt原版 ULTRA 检查点路径跑 UltraQuery 时设为null⚠️ 由于查询数据集规模和查询复杂度较高官方建议在 GPU 上运行推理。想批量评测多个数据集用 script/run_query_many.py它会顺序执行并把结果写入 CSVpython script/run_query_many.py -c config/ultraquery/inductive.yaml \ -d InductiveFB15k237Query:550,InductiveFB15k237Query:300 \ --gpus [0] --bs 32 --threshold 0.0 --ultra_ckpt null --qe_ckpt /path/to/ultra/ckpts/ultraquery.pth23个官方查询数据集全览ultra/datasets_query.py 内置 23 个查询数据集覆盖归纳式和跨关系类型迁移两大挑战类别数据集版本归纳式 (e) × 9InductiveFB15k237Query550/300/217/175/150/134/122/113/106数字表示推理图与训练图的节点数比值归纳式 (e,r) × 11WikiTopicsQueryart/award/edu/health/infra/loc/org/people/sci/sport/tax此外还有 3 个传导式数据集FB15k237LogicalQuery、FB15kLogicalQuery、NELL995LogicalQuery均为 BetaE 格式含否定查询答案上限 100。性能实测UltraQuery 在 23 个数据集的 SOTA 表现PyG 实现使用ultraquery.pth检查点在 23 个数据集上的总平均成绩全面超越了原论文TorchDrug版本指标论文版PyG 版EPFO 平均 MRR9 种查询0.3010.309EPFO 平均 Hits100.4280.432Neg 平均 MRR5 种查询0.1520.178Neg 平均 Hits100.2640.286更亮眼的是在 FB15k 查询基准上 UltraQuery 达到0.764 MRR / 0.834 Hits10EPFO和0.567 MRR / 0.725 Hits10否定超过了 QTO 等更大更重的专用模型——而这只是一个不到 2MB 的零样本模型。⚡新手常见问题指标、阈值与调优技巧支持哪些指标除常规mrr、hits1/3/10外还新增auroc、spearmanr、mape复杂查询不支持 Mean Rank。指标出现nan怎么办这些指标由变参函数计算大 batch 下可能数值不稳定调小--bs即可。用原版 ULTRA 检查点效果差记得把--threshold调到 0.8 以上否则多源传播问题会拖累结果。能否微调进一步提升可以把--epochs设为正数即可在目标数据集上微调run_query_many.py提供--finetune快捷开关。想在自己的 KG 上做复杂查询UltraQuery 完全继承 ULTRA 的自定义数据集能力参考 ultra/datasets.py 中的TransductiveDataset/InductiveDataset基类即可接入。核心源码与配置文件导航内容路径UltraQuery 执行器模糊逻辑 栈执行ultra/ultraquery.py查询的存储、后缀转换与可视化ultra/query_utils.py23 个查询数据集定义ultra/datasets_query.py变参指标实现ultra/variadic.py传导式推理配置config/ultraquery/transductive.yaml归纳式推理配置config/ultraquery/inductive.yaml查询检查点预训练配置config/ultraquery/pretrain.yaml单数据集推理脚本script/run_query.py多数据集批量评测脚本script/run_query_many.py从一条命令到 23 个基准的零样本推理UltraQuery 让任意知识图谱 复杂逻辑问题 零训练这三者的组合第一次同时成立。装上检查点现在就去问出你的第一个多跳逻辑问题吧【免费下载链接】ULTRAA foundation model for knowledge graph reasoning项目地址: https://gitcode.com/gh_mirrors/ultra/ULTRA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考