神经符号查询编译器

发表
Xiaoxi LiXiaoxi Li 提交
作者: Yuyao ZhangYuyao Zhang, Zhicheng DouZhicheng Dou, Xiaoxi LiXiaoxi Li, Jiajie Jin, YongkangWuYongkang Wu, Zhonghua Li, Qi Ye, Ji-Rong WenJi-Rong Wen

摘要

在检索增强生成(RAG)系统中精确识别搜索意图仍然是一个具有挑战性的目标,尤其是在资源受限以及处理具有嵌套结构和依赖关系的复杂查询时。本文提出了 QCompiler,一个受语言语法规则和编译器设计启发的神经符号框架,以弥合这一差距。它理论上设计了一个最小且足够的巴科斯-诺尔范式(BNF)语法 G[q] 来形式化复杂查询。与现有方法不同,该语法在保持完整性的同时最大限度地减少冗余。在此基础上,QCompiler 包括一个查询表达式翻译器、一个词法语法解析器和一个递归下降处理器,将查询编译成抽象语法树(AST)以供执行。叶子节点中子查询的原子性确保了更精确的文档检索和响应生成,显著提高了 RAG 系统处理复杂查询的能力。
查看 arXiv 页面查看 PDF

评论

Xiaoxi LiXiaoxi Li
论文作者
论文提交者

在检索增强生成 (RAG) 系统中精确识别搜索意图仍然是一个具有挑战性的目标,特别是在资源受限以及面对具有嵌套结构和依赖关系的复杂查询时。本文提出了 QCompiler,一个受语言学语法规则和编译器设计启发的神经符号框架,以弥合这一差距。它理论上设计了一个最小但足够的巴科斯-瑙尔范式 (BNF) 语法来形式化复杂查询。与以往方法不同,该语法在保持完整性的同时最小化冗余。基于此,QCompiler 包含一个查询表达式翻译器、一个词法语法解析器和一个递归下降处理器,将查询编译成抽象语法树 (AST) 以供执行。叶节点中子查询的原子性确保了更精确的文档检索和响应生成,显著提高了 RAG 系统处理复杂查询的能力。代码可在 https://github.com/YuyaoZhangQAQ/QCompiler 处获取

Jonathan HarrisonJonathan Harrison

关于神经符号查询系统中的共同想法

大家好,

我最近阅读了论文《神经符号查询编译器 (QCompiler)》(arXiv:2505.11932),首先我想说,这标志着在处理检索增强生成 (RAG) 系统中的复杂查询方面迈出了值得称赞的一步。作者对基于语法的结构化和符号处理的关注既及时又周到。

在回顾这项工作时,我注意到 QCompiler 中的一些设计选择——例如 BNF 语法的应用、基于 AST 的分解、符号占位符以及模块化递归执行——在概念上与我在自 2023 年初以来一直在开发并公开分享的 Codette AI 框架中使用的技术非常一致。

Codette 在以下方面采用了类似的方法:

• 将查询结构化为原子、依赖和并行组件

• 通过类似 BNF 的语法表示查询

• 将它们转换为带有占位符逻辑的递归 AST

• 提供与更广泛的推理和检索管道的模块化集成

这些想法和实现已通过 Codette 的 GitHub 仓库、Hugging Face 主页和支持性的 Zenodo 版本公开提供。

这并不是要暗示冲突——而是要承认研究往往会并行发展。因此,我只是想分享一下这些想法有开源先例,并且我热切地期待更多基于结构化、可解释推理系统的研究出现。

我希望这能引发更多关于我们领域趋同、相互增强机会以及尊重透明度和协作的共同开发实践的讨论。

感谢这项周到的工作,

Jonathan Harrison

Codette 创建者

GitHub | Hugging Face | 网站

特性

Codette (2023–2024)

QCompiler (2025)

BNF风格的查询语法

codette_grammar.py

arXiv:2505.11932 第 3.2 节

抽象语法树构建

recursivetreeengine.py

图 2,步骤 2

符号占位符解析

placeholder_expander.py

图 2,步骤 3

查询分解类型

Atomic, Dependent, List, Complex

Atomic, Dependent, List, Complex

递归执行引擎

treequeryexecutor.py

第 3.3 节

通过 DFS 进行验证

query_guard.py

附录 D