Graph-CoT
让大模型在知识图谱上按需探索,逐步推理求证,显著减少幻觉并提升多跳问答准确率
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让大模型在知识图谱上按需探索,逐步推理求证,显著减少幻觉并提升多跳问答准确率
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下,你问一个问答助手:"ACL 2023 论文《In-Context Learning》的一作为什么获得了 NeurIPS 2022 的最佳论文奖?" 普通 RAG 系统会把整篇论文的文本塞给 LLM,然后期待它从噪声中找到答案——但它很可能一本正经地胡说八道,因为它根本不知道论文引用关系、作者身份和奖项之间的结构化关联。
这就是大模型在知识密集型任务中的典型困境:幻觉(Hallucination)。LLM 擅长流畅生成文本,却缺乏对结构化知识的"感知"能力——现实世界中的知识从来不是孤立存在的,而是以图(Graph)的形式互联:论文引用作者、作者隶属于机构、药物作用于基因、症状关联疾病……
ACL 2024 论文 Graph Chain-of-Thought(Graph-CoT) 正是为解决这一问题而生,由宾州州立大学、UIUC 等机构的研究者联合提出,被录用于 ACL 2024 Findings。
Graph-CoT 的核心思想极为优雅:不让 LLM 直接看图,而是让它像人一样,沿着图的边一步步走,走到找到答案为止。
这借鉴了 Agent 架构中经典的"思考-行动-观察"(Thought-Action-Observation)循环范式。在 Graph-CoT 中,LLM 在图的每一步迭代中经历三个子步骤:
1. Reasoning(推理):LLM 根据当前已掌握的信息,判断"我已经知道了什么,还需要知道什么?"
2. Interaction(交互):LLM 生成具体的图查询指令,比如"找到论文节点 X 的作者"或"查看论文 Y 的被引用论文"。
3. Execution(执行):这些查询被发送给图数据库执行,返回结果后 LLM 将新信息纳入上下文,继续下一轮思考。
这个过程迭代进行,直到 LLM 认为有足够信息给出最终答案。与传统 RAG 直接将整个子图塞入上下文不同,Graph-CoT 通过"按需探索"大幅降低上下文长度的同时提升了答案的准确性。

图1:Graph-CoT 的迭代推理框架。LLM 在每一步迭代中依次经历推理、交互、执行三个阶段,逐步在知识图谱上定位关键信息。
光有方法不够,还需要公平的评测舞台。研究团队构建了 GRBench(Graph Reasoning Benchmark),这是目前最全面的图增强 LLM 评测基准,包含:
GRBench 的评测结果揭示了一个关键洞察:即使是最强的 GPT-4,在没有 Graph-CoT 增强时,面对需要多跳推理的问题时准确率下降显著,而 Graph-CoT 在所有数据集上均带来了稳定提升。

图2:GRBench 覆盖的 5 大领域及数据规模。
从代码结构来看,Graph-CoT 的实现围绕 GraphAgent 核心类展开,采用了典型的 Agent 架构:
GraphAgent.py(约 11KB) — 整个系统的核心引擎。初始化时接收 LLM 配置(支持 GPT-3.5/4 和开源模型 Llama-2-13B、Mixtral-8x7B)和图数据文件,然后维护一个 scratchpad(草稿本)记录 Thought-Action-Observation 全程。关键设计:
tiktoken 令牌计数,防止上下文溢出pipeline + torch.float16 混合精度)graph_fewshots.py(约 36KB) — Few-shot 示例库,为每个数据集提供 Chain-of-Thought 推理示范,这是提升效果的关键。
tools/graph_funcs.py — 图操作函数封装,提供 check_neighbours、get_node_feature 等图查询原语。
retriever.py(约 13KB) — 节点检索器,使用 sentence-transformers 嵌入 + FAISS GPU 加速最近邻搜索,将自然语言查询映射到图节点。
eval.py — 评测脚本,计算 EM(精确匹配)、BLEU、ROUGE 以及 GPT-4 作为裁判的打分。
Graph-CoT 融合了当前 NLP 领域最主流的技术组件:
| 组件 | 技术选型 | 作用 |
|---|---|---|
| LLM 推理 | OpenAI API / HuggingFace Transformers | 核心推理引擎 |
| 图操作 | LangChain + 自定义 graph_funcs | Agent 工具集 |
| 向量检索 | sentence-transformers + FAISS-GPU | 节点语义检索 |
| 嵌入缓存 | 本地磁盘缓存 | 加速重复查询 |
| 评测指标 | BLEU / ROUGE / EM / GPT-4 Judge | 多维度效果评估 |
值得注意的是,项目依赖 langchain==0.1.0(2024 年初的早期版本),若在最新环境中部署可能存在版本兼容性问题。此外,代码中大量使用了已弃用的 langchain_community 模块,升级需要一定工作量。
Graph-CoT 的部署难度主要来自三个方面:
1. CUDA 环境要求严格:代码指定 cudatoolkit=11.3,且 torch==1.12.1,这是一套 2022 年的老版本 CUDA 生态。在当前机器上直接安装可能遇到驱动兼容性问题。
2. 外部数据分散在多处:图环境文件(graph.json)需要从 Google Drive 下载,QA 数据集在 HuggingFace,数据下载流程在 README 中有描述但需要手动操作,对自动化部署不友好。
3. 依赖冲突风险高:LangChain 0.1.0 时期与当前主流 Python 环境存在包版本冲突,建议使用 conda 独立环境隔离。
好消息是:没有 Docker/Compose 支持也意味着如果你能解决 Python 环境问题,运行推理本身并不需要额外的容器层。Web UI 不存在,纯命令行交互。
Graph-CoT 代表的不仅是一个具体方法,更是一种范式转变的信号:LLM 与结构化知识的深度融合正在成为 2024 年后的主流研究方向。
从增长曲线看,ACL 2024 收录图增强 LLM 相关工作已超过 20 篇,Graph-CoT 作为早期代表作之一,其"按需探索图"的思想被后续多个工作(KGP、Think-on-Graph 等)继承和发展。
对于 RAG 系统的工程实践者而言,Graph-CoT 的启发在于:不要把所有知识一股脑塞给 LLM,让它"主动查询"往往比"被动阅读"效果更好,尤其在多跳推理场景下。
max_steps=15,复杂多跳问题可能还未收敛就已终止。项目来源:ACL 2024 Findings · 数据集:GRBench on HuggingFace