神经符号查询编译器

摘要
评论

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