大语言模型(LLM)的推理能力一直是开发者关注的焦点。早期的思维链(Chain-of-Thought,CoT)方法让LLM通过逐步推理来解决问题,就像小学生做数学题时写下计算步骤一样。这种方法确实提升了模型在数学推理等任务上的表现,但存在明显的局限性——它强制LLM按照严格的线性顺序思考,就像被限制在单行道上的车辆,无法灵活调整路线。
后来出现的思维树(Tree of Thoughts,ToT)给了LLM更多探索空间,允许模型像走迷宫时尝试不同路径。但真实的人类思考远比这复杂:我们会在不同思路间跳转,合并相似观点,甚至循环优化某个想法。这就像写作时先列大纲,再填充细节,最后反复修改润色——整个过程是网状而非线性的。
Graph of Thoughts(GoT)的创新之处在于,它首次用图结构来建模LLM的推理过程。图中每个节点代表一个"思考单元"(可以是一段文本、一组数据或代码块),边则表示思考单元间的逻辑关系。这种结构支持三种关键操作:
在实际测试中,这种架构展现出显著优势。例如在数字排序任务中,GoT比ToT的错误率降低62%,同时减少31%的计算成本。这是因为图结构允许模型先分解问题,独立解决子任务,再智能合并结果——这正是人类处理复杂问题的方式。
GoT框架将推理过程形式化为四元组(G,T,E,R):
举个例子,在文档摘要任务中:
这种表示法的灵活性体现在:
聚合转换是最具突破性的功能。如图2所示,当需要合并两个已排序的子数组时,GoT会创建新节点接收两个输入,并提示LLM:"将以下有序序列合并为一个完整的有序列表:[3,5,8]和[2,4,9]"。这与传统编程中的merge操作异曲同工。
细化转换通过自循环边实现。比如修改法律条款时,系统会反复提示LLM:"改进以下NDA条款,使其更具约束力:...(当前版本)"。每次迭代都基于前次结果,类似人类写作时的反复修订。
生成转换对应传统的思维链扩展。当探索不同解法时,会从某节点分出多个子节点,就像工程师设计产品时会考虑多种方案。关键区别在于,这些子节点后续可能被聚合或交叉影响。
GoT的工程实现包含五个核心组件(见图3):
GoT在系统设计上做了精妙权衡(见表1对比):
实测数据显示,当处理128个数字的排序时:
这种优势源于"分治-聚合"策略:先将长序列拆分为8个16数字的子任务,独立排序后再分层合并。这既避免了单次处理长序列的困难,又通过结构化合并保证最终质量。
在法律文档合并任务中,GoT展现出独特价值。假设需要整合三份保密协议,操作流程如下:
评分系统会从两个维度评估:
实测中,GoT版本的平均得分(7.8)显著高于直接合并(5.2)和人工选取(6.4),且耗时仅为人工的1/3。
在帮助开发者实现归并排序时,GoT可以:
这种工作流模拟了资深程序员的思考方式——先搭建骨架,再试验关键组件,最后打磨细节。相较于直接要求LLM生成完整代码,成功率提升约40%。
处理关键词统计任务时(如从新闻中提取国家出现频次),GoT的典型操作:
python复制# 伪代码示意GoT处理流程
def keyword_count(text):
# 1. 分割文本为段落节点
paragraphs = split_text(text)
# 2. 并行统计各段落关键词
count_nodes = [LLM_count(p) for p in paragraphs]
# 3. 聚合所有统计结果
merged = aggregate_nodes(count_nodes)
# 4. 验证并优化
while not validate(merged):
merged = refine(merged)
return merged
这种方法在测试中准确率比单次处理高22%,尤其擅长处理长文档和模糊匹配场景。