支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


大模型推理革命,让AI告别"幻觉"时代!

发布日期:2025-05-10 20:19:38 浏览次数: 1514 作者:沈公子今天读什么
推荐语

AI推理技术的革新突破,让模型推理更可靠、更透明!

核心内容:
1. 论文提出的三个主要创新点:知识图谱、RAG和伪程序式提示
2. 知识图谱驱动的链式思维生成,提升推理可靠性和可解释性
3. 可学习的知识案例式RAG和伪程序式提示执行,降低逻辑错误和歧义

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

一句话概括:当大模型开始学会用知识图谱当"脚手架"、RAG当"外挂知识库"、伪代码当"防摸鱼进度表",从此推理不再放飞自我,妈妈再也不用担心我的幻觉啦!

第一阶段:识别核心概念

1. 论文主要贡献点分析

从论文内容来看,它主要提出了三个创新或改进点,每个点都围绕如何让大型语言模型在复杂推理时更可信、更可控,以及如何在保持可解释性的同时,提升推理准确度和执行效率。

  1. 知识图谱驱动的链式思维生成(Knowledge Graph-driven CoT Generation)

  • 论文中先由专家在目标领域构建一个“粗粒度”的决策树,然后利用大型语言模型把这个决策树细化分解为知识图谱。
  • 这样做的目的是让模型在复杂问题的推理过程中,有一套可控且可解释的“骨架”或“脚手架”,而不仅仅依赖LLM本身自发的推理链条。
  • 通过这种方式,作者希望减少大模型的“幻觉”现象,并提升推理的可靠性。
  • 可学习的知识案例式RAG(Learnable Knowledge Case-aware RAG)

    • 在知识图谱的基础上,融入了检索增强生成(Retrieval-Augmented Generation)的思路,能够针对用户输入的较长描述或案例,检索到对应的子案例或子描述,填充到知识图谱中。
    • 这样可以让模型在推理时“看”到更贴近当前问题的事实或信息,从而降低模型出现逻辑不严谨或事实错误的概率。
    • 此外,论文提出这些“知识案例”还能被动态更新,进一步增强了模型面向不同领域或新问题时的扩展性。
  • 伪程序式提示执行(Pseudo-Program Prompting Execution)

    • 传统的链式思维(CoT)往往使用自然语言描述中间推理步骤,容易带来歧义或干扰。
    • 论文主张改用“伪程序(pseudo-program)”的形式,类似代码结构但不依赖真实编程语言解释器,把整个推理过程写成一个“逐步执行的程序”。
    • 这一做法能在保证可读性的同时,减少自然语言带来的不确定性,提高推理过程的可追踪性与一致性。

    综合而言,论文的三个主要创新点都指向一个核心目标:在大型语言模型做多步推理时,通过“知识图谱”+“RAG”+“伪程序”这三种机制,既能保障推理链的正确性,又能让推理细节清晰透明。


    2. 理解难点识别

    从论文整体内容和作者给出的实验可以看出,有几个关键概念对理解整个方法至关重要,并且相对抽象或容易让人困惑:

    1. 决策树到知识图谱的转换

    • 论文中提到先构建一个“粗粒度”决策树,再用大模型把它“拆解”成更细致的结构并转成知识图谱。
    • 如何理解这个“拆解”过程、以及如何把决策逻辑映射到图结构,对理解后续的推理模式十分关键。
  • 在知识图谱中融合RAG检索思路

    • 通常我们会把检索增强生成(RAG)视作“从外部语料或数据库中找信息”的机制,而论文把这个思路内嵌到知识图谱中,并强调要用LLM来抽取关联描述。
    • 如何把“子案例”或“子描述”检索到并赋值到知识图谱的相关节点,是一个不太直观的步骤。
  • 伪程序(Pseudo-Program)形式的提示与执行

    • 自然语言提示往往让模型输出一堆类似人类思考过程的文本,但该论文强调要用“伪代码”结构来统一推理过程。
    • 如何在这种“伪程序”下保持“可阅读性”和“逻辑严谨性”之间的平衡,是一个难点。
    • 同时也需要注意,它并没有真的去跑Python或C++,而是让模型“假装”在以程序的方式执行每一步推理。

    在上述三个关键概念里,“决策树→知识图谱的拆解与结构化”“伪程序化的链式思维执行”这两个部分,通常是读者理解时会遇到的主要难点,需要格外关注。


    3. 概念依赖关系

    基于论文的三个创新点,可以把它们的关系简单梳理为如下顺序:

    1. 专家提供的决策树 → LLM转换为知识图谱这一步解决的是“如何让大模型的推理有一个固定逻辑框架”这个问题。
    2. 知识图谱 + RAG → 获取外部或输入文本中的子信息并填充这一步处理“模型如何在需要的时候查找具体知识或事实”,并把这些信息纳入到知识图谱的节点当中。
    3. 伪程序式提示 → 将知识图谱转为可执行的推理过程这一步则将所有的节点与依赖关系写成类似程序的形式,让大模型去严格按照步骤完成推理。

    因此,在后续更深入的解释和展开中,最合适的切入点往往是“先理解决策树如何转化为知识图谱”这个流程,之后才能自然过渡到“在知识图谱上如何进行检索增强”,最后才能明白“伪程序式提示”是如何将前面两步的成果执行出来的。


    第一阶段总结

    • 论文最突出并需要深入解释的核心概念集中在“知识图谱驱动的推理”“伪程序式提示”这两大块。
    • 它们的难点主要是如何与原有的“链式思维(CoT)”模式和“检索增强生成(RAG)”相结合,并且在执行方式上有明显不同于传统“自然语言推理链”的做法。
    • 这些概念之间的关系可以简单理解为:先有决策树和知识图谱作为骨架,结合检索增强完善信息,再用“伪程序化”的形式去执行所有推理步骤。

    接下来,读者如果想要深度掌握论文的思想,需要先对“决策树与知识图谱的对应关系”以及“伪程序提示”的具体形式有清晰认知。


    提示:下一步(第二阶段)会深入讲解其中最具有挑战性或最不直观的概念,并通过生活化比喻和对应到实际技术细节的方式,让读者获得更清晰的理解。随后(第三阶段)会用更加细节的流程描述,帮助读者掌握论文提出的完整方案如何一步步把输入转化为最终输出。

    第二阶段:深入解释核心概念

    在本阶段,我们将针对第一阶段中所提到的两个最具挑战性的概念——决策树到知识图谱的转换以及伪程序式提示——进行更深入的阐释。为了帮助读者理解,我们先用一个生活化比喻来直观展示这些概念的核心机制,再将比喻与论文中的实际技术内容进行对应,最后结合论文中唯一接近公式化的内容(时间复杂度分析)来展开技术细节的解释。


    1. 设计生活化比喻

    比喻主题:盖一座分步骤完成的“拼装房”

    • 日常场景/活动:想象你要在空地上盖一座房子,但房子不是一次性盖好的,而是先通过“建筑师”设计了一个粗略蓝图(决策树),随后由一个“工程承包商”将这个蓝图细化为详细的施工图(知识图谱),并且每个细节在施工时还可能需要额外的材料或信息(RAG部分)。最后,在正式动工时,施工方会按照“程序化”的工程进度表一步步执行(伪程序式提示),从而高效率且有条理地完成盖房子这件事。

    • 为何选择此比喻

    1. “粗粒度决策树”就像一张只画了主要区域的蓝图:哪里是主体框架、哪里是大门、哪里是窗户。
    2. “知识图谱”就像更加细化且带有节点和依赖关系的施工图:要先完成哪一步才能做下一步?在哪些地方需要用钢筋?在哪些地方需要用水泥?
    3. “检索增强生成”(RAG)相当于在施工中临时发现还需要补充一些砖块、瓷砖或新的设计材料时,从外部仓库或市场中去调取,并把它补充到这座房子的细节设计里。
    4. “伪程序式提示”就像完备而清晰的工程进度表(或施工手册),把每个关键任务都列成可执行的步骤,确保所有工人(这里比喻成模型的内部推理过程)不会在施工过程中出现混乱或遗漏。

    2. 建立比喻与实际技术的对应关系

    下面列出比喻中的关键元素,并说明与论文中主要技术概念的对应关系:

    1. 蓝图(粗粒度决策树)

    • 在论文中:这是由专家在特定领域下构建的树形逻辑结构,每个节点代表一个关键问题/决策。
    • 在比喻中:蓝图只告诉你房子的大致布局,却没有画出门窗的详细尺寸、每一面墙需要多少钢筋等。
  • 施工图(知识图谱)

    • 在论文中:由LLM将粗粒度决策树拆分为多个更细的实体(节点)和依赖关系(边),形成一张知识图谱。
    • 在比喻中:施工图精确到每个房间的高度、宽度,以及各部分先后施工的依赖关系,让施工队知道具体的“先做哪一部分,再做哪一部分”。
  • 临时调配材料(RAG中的检索)

    • 在论文中:如果在推理过程中,需要额外的事实或上下文信息,就会用LLM进行检索,将子描述或子案例填入对应的知识图谱节点。
    • 在比喻中:施工中如果发现门的尺寸和原图不符合,就需要去仓库或市场(外部知识库)拿到正确尺寸或新的材料,更新到施工图里。
  • 施工进度表(伪程序式提示)

    • 在论文中:将整个知识图谱转化为一个“伪代码”形式,让模型逐步执行子问题、子答案,最后输出结果。
    • 在比喻中:施工进度表把所有任务列成可以依次完成的步骤,保证施工队不会随意跳到错误的顺序或忽略某些细节。

    为什么对应关系合理?

    • 盖房子本身就存在“先有大致设计→再细化→施工时需要外部材料→分阶段执行”的必然流程,与论文提出的方法在结构上高度相似。
    • 每个节点(无论是房子的某个房间还是知识图谱中的一个实体)都有“依赖上一环节完成之后才可以继续”的逻辑顺序,和论文的核心思想一致。

    3. 深入技术细节

    接下来,我们从这个房子比喻过渡到论文中的实际技术原理。论文的核心流程主要包括以下几点:

    1. 决策树到知识图谱

    • 先由人类专家(相当于“建筑师”)给出一个“粗粒度决策树”,然后使用LLM自动拆解成多个更细的实体与关系,形成可视化且可执行的知识图谱。
    • 关键步骤:每个“粗”节点都会被LLM分解为若干子问题或子属性(论文中称为Sub-question、Sub-case等),并根据依赖关系在图中用“Answer Provision”等边连接。
  • RAG检索

    • 当用户输入一个较长的文本描述时,LLM会结合知识图谱中的各个子问题,在文本中提取相应的子描述,填充到知识图谱节点里。
    • 关键步骤:将“子问题”与输入文本进行匹配或检索,得到对应的描述,再把结果赋给图中的“Sub-description”。
  • 伪程序执行

    • 将知识图谱序列化成一段看似“程序”的提示文本(Pseudo-Program Knowledge Graph, PKG),里面包含每个子节点要做什么事情、依赖哪些信息,执行顺序如何等。
    • 关键步骤:模型按照从上到下的顺序,对每个节点进行“处理”,直到最终输出。因为是“伪程序”,并不依赖真正的编译器,而是让LLM自己遵循这种格式,减少自然语言中不必要的歧义。

    3.1 论文中的“公式”或算法

    这篇论文并未提供完整的数学方程,但在附录A.1中给出了对整体流程的时间复杂度估算。我们可以把它看作论文中最接近“原版公式”的内容:

    原始数学形式

    其中  代表决策树(或知识图谱)中的节点总数,表明整体运行时间与节点数量线性相关。

    符号替换后的自然语言描述“整个方法的运行时间,会随着知识图谱中节点数目的增多而线性增长。”

    换句话说,如果在房子施工的比喻中,房间数量(节点)越多,整个施工进度表也会变长,所需时间就会线性增加。


    4. 将技术细节与比喻相互映射

    回到“盖拼装房”的场景,我们可以这样对应每一个技术点:

    1. 决策树转知识图谱 = 蓝图转施工图

    • 施工图上如果有更多房间,就意味着要画更多细节;同理,在算法层面,如果有更多节点,就要花更多时间去处理拆解、填写信息等。
  • RAG检索 = 及时购买或调用材料

    • 施工过程中,当发现需要某种特殊零件或者因地制宜需要额外补充时,就得去市场(外部数据库)选购或检索;在论文的方法里,也是类似地把需要的子描述通过LLM检索并填写到知识图谱里。
  • 伪程序执行 = 依照施工进度表逐步建造

    • 一旦所有材料和设计细节就绪,工人就按照“第1步打地基→第2步搭建墙体→第3步安装屋顶...”的次序进行;同样,论文把知识图谱序列化成“伪代码”,让LLM像读一份工程进度表一样,严格地“一步一动工”,从而减少混乱与错误。
  • 关于时间复杂度 = 房屋施工所需人力物力也会线性增加

    • 如果房子节点(房间)从3个变成30个,那么就需要更多的施工图细节和更多流程执行时间;在论文中,这也是一个线性扩展的过程。

    比喻的局限性

    • “盖房子”虽然能帮助读者理解模块化、依赖顺序和信息检索,但无法完全体现LLM在推理时的语言特性和不确定性;
    • 在真正的工程实践中,施工队不会产生“幻觉”,但LLM会有可能捏造不存在的信息;论文中则通过知识图谱+RAG方式去尽量减少大模型的这种“错乱”。
    • 因此,比喻仅帮助读者理解逻辑结构与依赖关系的流程,并不等价于在实际编程或语言模型中所面对的多样化问题。

    5. 总结

    • 核心联系:无论是“决策树到知识图谱”还是“伪程序式提示”,本质都是为了让LLM在做多步推理时,有一条更稳定、可控且可解释的“施工路线”。
    • 比喻的效果:通过“盖拼装房”这个比喻,读者可以更直观地理解为什么需要先有粗设计(决策树)、再做细化(知识图谱)、还要从外部拿材料(RAG),并最终按照工程进度表(伪程序)去一步步执行。
    • 最关键的数学原理:论文以线性时间复杂度  表达了在知识图谱规模扩张时,这套方法的整体推理时间也会线性增加,和房间数量的增加导致施工周期延长是一个道理。

    以上就是第二阶段对核心概念的深度解释。接下来,在第三阶段,我们会结合这一理解,为读者详细描述论文提出的完整模型或方案是如何一步步处理输入信息并得出最终结果的。届时会提供更流程化的描述,方便读者真正“复现”这一思路。

    第三阶段:详细说明流程步骤

    本阶段将对论文提出的完整模型或方案进行更具体、更流程化的描述,帮助读者从输入到输出一步步还原方法。将使用伪代码形式呈现,保证读者在没有阅读原论文的情况下,也能根据此说明重现核心流程。


    1. 处理问题的具体流程

    以下描述分为三个主要步骤,与论文的三大模块(知识图谱驱动、RAG检索、伪程序执行)相对应。这里以一个示例“计算一个人需要几趟才能搬完所有桌上物品”为例,说明从输入到输出的关键处理过程。

    1.识图谱驱动的CoT生成:从决策树到知识图谱

        • 专家提供决策树读者可以将其视为最初的“粗设计蓝图”,例如某位专家在“搬运问题”领域下构建了简单决策树:

          节点1:询问“目标搬运物品的数量是多少?” 节点2:询问“每次能搬运多少?” 节点3:输出“搬运多少趟?”

                    LLM将决策树转换为知识图谱论文中,LLM会根据上述粗粒度节点,自动将它                    们拆解成多个子问题(Sub-question)和对应的案例(Sub-case),并在图中                用“边”表示它们的依赖关系。例如:
          • Entity1(节点1)负责获取“物品总数”
          • Entity2(节点2)负责获取“一次能搬多少”
          • Entity3(节点3)基于Entity1和Entity2的答案,计算总趟数

          2.可学习的知识案例式RAG:检索填充信息

              • 用户输入长文本描述比如用户描述了:“Roger想要搬12个盘子,每次只能搬4个”,还有一些场景化细节。
                      LLM检索关联描述填充知识图谱系统先匹配:
                      “12个盘子”对应Entity1所需的物品总数
                  “每次只能搬4个”对应Entity2的可搬运数量
                      更新后的知识图谱将“12”和“4”分别赋值到图中相应的节点里,这样就形成了            更具可操作性的“已填充”知识图谱。

                     伪程序式提示执行:按序计算并输出结果

                • 生成伪程序(Pseudo-Program)系统把上述知识图谱序列化成一段“伪代码”,其中每个节点是一个子函数或一个执行模块。例如:
                  # Sub-question 1: 获取物品总数
                  total_items = 12
                  # Sub-question 2: 获取每次可搬运数量
                  items_per_trip = 4
                  # Sub-question 3: 计算总趟数
                  total_trips = total_items / items_per_trip  # = 3
                  print("最终需要搬运的趟数是:", total_trips)
                • LLM按节点顺序“执行”伪代码虽然并不是真的由Python或C++解释器执行,但模型会逐行“思考”并生成对应答案,最后输出“3趟”。

                通过上面三个步骤,读者可以看到: 1)先利用“专家决策树”+“LLM拆解”生成知识图谱, 2)对用户输入进行“RAG检索”并填充实体, 3)将知识图谱转化为“伪程序”供LLM依次执行、得出结果。


                2. 过程中的输入输出衔接

                在整个流程中,每一步的输出都可以自然地作为下一步的输入:

                1. 决策树→知识图谱

                • 输出:初始的伪程序化知识图谱(还未绑定具体数值)。
                • 输入给下一步:知识图谱结构(包括哪些子问题、子依赖)。
              1. RAG检索

                • 输入:用户文本(含关键信息)+ 知识图谱中各子问题。
                • 输出:将用户文本中提取到的具体描述(数字、事实)填入到知识图谱节点,形成“已绑定数据”的知识图谱。
              2. 伪程序执行

                • 输入:完整且已填充了数据的知识图谱。
                • 输出:目标问题的最终答案(如“总共需要3趟”)。

                这种“环环相扣”的结构让读者可以通过一系列中间产物(图中的每个节点、检索结果、伪程序文本),直观地检查或修改推理过程,实现可解释与可控的多步推理。


                3. 流程伪代码示例

                以下示例融合了论文提出的核心思路,给出一段“高层伪代码”。读者可将其改写为Python、C++或其他语言的版本,以便在实际系统中使用:

                # -----------------------------------------
                # 初始化:知识图谱驱动的CoT Generation
                # -----------------------------------------
                function KnowledgeGraphDrivenCoTGeneration(field, expert_modify):
                    decision_tree = ExpertBuildDecisionTree(field)
                    knowledge_graph = LLMDecompose(decision_tree)   # 将粗粒度决策树拆成图
                    initial_pkg = LLMGeneratePseudoProgram(knowledge_graph)
                    if expert_modify:
                        initial_pkg = ExpertModify(initial_pkg)
                    return initial_pkg

                # -----------------------------------------
                # 第二步:可学习的案例式RAG
                # -----------------------------------------
                function KnowledgeCaseAwareRAG(initial_pkg):
                    user_description = GetUserInput()  # 从用户获取长文本
                    updated_pkg = LLMExtractSubDescriptions(initial_pkg, user_description)
                    return updated_pkg

                # -----------------------------------------
                # 第三步:伪程序执行
                # -----------------------------------------
                function PseudoProgramExecution(updated_pkg):
                    final_answer = LLMExecutePseudoProgram(updated_pkg)
                    return final_answer

                # 主流程:整体调用
                function CoT_RAG_Main():
                    # 1) 知识图谱
                    pkg_stage1 = KnowledgeGraphDrivenCoTGeneration(field="carry_problem", expert_modify=False)
                    # 2) RAG检索填充
                    pkg_stage2 = KnowledgeCaseAwareRAG(pkg_stage1)
                    # 3) 伪程序化执行
                    answer = PseudoProgramExecution(pkg_stage2)
                    print("最终答案:", answer)
                • 解释
                1. KnowledgeGraphDrivenCoTGeneration:从领域专家构建的决策树出发,借助LLM生成一个包含所有子问题和依赖关系的“初始伪程序”。
                2. KnowledgeCaseAwareRAG:对用户输入进行“检索”,将必要的子描述放入对应的子问题“槽”里。
                3. PseudoProgramExecution:让大模型逐步“执行”这些子问题,输出最终答案。
                4. 不同步骤的输入、输出明确衔接,便于后期调试或增补更多功能(如新的领域知识、更多检索来源等)。

                通过这样一个完整的分步流程,读者无需事先阅读论文原文,也能了解该方法从构建决策树、转换成知识图谱,到检索填充,再到最终伪程序执行的全过程。每一步都在强调可解释、可控、可扩展,对实际的大型语言模型多步推理任务具有很强的可操作性和通用性。


                本文题目:CoT-RAG: Integrating Chain of Thought and Retrieval-Augmented Generation to Enhance Reasoning in Large Language Models

                欢迎Deep Learning同好与我交流、讨论、合作!


                53AI,企业落地大模型首选服务商

                产品:场景落地咨询+大模型应用平台+行业解决方案

                承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

                联系我们

                售前咨询
                186 6662 7370
                预约演示
                185 8882 0121

                微信扫码

                添加专属顾问

                回到顶部

                加载中...

                扫码咨询