传统 RAG 能用外部文本约束大模型回答,却很难说明中间结论究竟来自哪段证据,也不擅长系统识别用户尚未提供的必要信息。NeSy-RAG 的思路不是让模型继续生成更长的思维过程,而是把检索结果转成可执行、可检查的符号模块。
把检索文本变成 Prolog 模块
NeSy-RAG 采用模块化的神经符号架构。系统针对每个检索到的文本块生成具有语义的谓词,用来编码布尔命题;部分命题还可以依赖用户事实。随后,它利用自然语言与代码的联合嵌入检索相关谓词,再把这些谓词组合成 Prolog 查询。
这改变了生成与推理的分工:大模型负责从自然语言中合成符号表示,最终答案则来自 Prolog 查询的执行。执行结果具有确定性,并附带透明的轨迹;轨迹中的推理步骤能够链接回对应的原始文本块。相比只展示一段自然语言解释,这种归因方式更便于检查证据与结论之间的连接,但其可靠性仍取决于前置的谓词生成是否忠实。
在信息不足时先追问
论文还处理了 RAG 中常被忽视的一类错误:问题的答案取决于用户个人情况,但系统没有拿到这些事实。NeSy-RAG 通过符号化的知识缺口检测,找出哪些缺失用户事实的真假会改变查询结果,并自动触发后续交互,而不是在上下文不完整时直接给出结论。
在 ShARC 基准上,NeSy-RAG 在没有领域特定训练的情况下达到 61.1% 准确率;使用相同模型的 RAG 基线为 42.8%。这一结果表明,在涉及条件判断和信息补全的问答任务中,将检索内容组织为可执行逻辑可能比直接交给模型生成更有效。
我的判断
NeSy-RAG 的价值主要不在于为 RAG 增加一段可读解释,而在于把证据归因、条件判断和缺口检测放进同一套可执行机制。它适合规则密集、答案受用户事实影响、且需要审计推理路径的问答场景。
边界也很明确:摘要只报告了 ShARC 上的结果,尚不足以证明它能稳定处理开放域知识、模糊语义或更复杂的多跳检索。系统还依赖大模型把文本正确转换为谓词;一旦符号化阶段遗漏条件或误读命题,后续 Prolog 执行即使完全确定,也只是在确定地执行错误表示。因此,这更像一种面向可验证问答的架构选择,而非对通用 RAG 的直接替代。