SubGraphRAG:结合LLM与知识图谱子图的推理增强框架,通过多层感知机和三元组打分优化子图检索
SubGraphRAG:结合LLM与知识图谱子图的推理增强框架,通过多层感知机和三元组打分优化子图检索
- 论文大纲
- 理解
- 解法拆解
- 提问
- 1. 通过一次性LLM推理避免了多次调用,是否存在模型推理能力不足时的风险?
- 2. 在子图大小的选择上,你提到通过动态调整Top-K来匹配不同LLM的能力,但如何处理子图中过多无关噪声的影响?
- 3. 你提出的DDE方法能有效提升多跳推理的性能,但如果结构数据本身存在缺失,DDE是否仍然能有效工作?
- 4. “无须对LLM进行微调”,是否意味着你的模型在某些领域(如医疗、法律等领域的专有知识)上无法达到最佳效果?
- 5. 在知识图谱的动态更新问题上,你提到方法易于适配动态更新KG,但实际更新过程如何避免性能下降?
- 6. 通过一次LLM推理避免了多次LLM调用,但如果问题本身涉及到非常复杂的推理链条,单次推理是否存在失败的风险?
- 7. 在子图检索的效率上,MLP结合并行三元组打分机制的设计会否在超大规模KG下导致瓶颈?
- 8. 子图大小会根据LLM的上下文窗口灵活调整,如何确保子图大小的选择不会影响最终推理的准确性?
- 9. 子图检索框架依赖于结构化信息,如何确保结构化信息不被LLM的强大自然语言处理能力覆盖而失去效果?
- 10. 图结构和LLM结合的优势,但在实际应用中,当知识图谱不包含足够的背景知识时,是否会导致LLM依赖不充分或生成无意义的回答?
- 11. 为什么计算正反扩散得到的距离信息?正距离不行吗?
论文:SIMPLE IS EFFECTIVE: THE ROLES OF GRAPHS AND LARGE LANGUAGE MODELS IN KNOWLEDGE-GRAPHBASED RETRIEVAL-AUGMENTED GENERATION
代码:https://github.com/Graph-COM/SubgraphRAG
论文大纲
├── SIMPLE IS EFFECTIVE: THE ROLES OF GRAPHS AND LARGE LANGUAGE MODELS
│ └── IN KNOWLEDGE-GRAPH-BASED RETRIEVAL-AUGMENTED GENERATION【论文题目】
│
├── 1 引言【描述背景和研究动机】
│ ├── LLMs 具备强大的推理能力【背景介绍】
│ ├── 现存局限:幻觉与知识过时【问题描述】
│ ├── RAG(Retrieval-Augmented Generation)弥补 LLM 局限【关键思路】
│ └── KG(Knowledge Graph)在组织与更新知识方面更高效【重要性】
│
├── 2 预备知识【基础概念】
│ ├── 知识图谱(KG)的三元组表示【概念定义】
│ ├── KG 与自然语言检索的差异【对比关系】
│ └── KGQA(Knowledge Graph Question Answering)任务【应用场景】
│
├── 3 SubgraphRAG 框架【核心方法】
│ ├── 3.1 高效且灵活的子图检索【方法论核心】
│ │ ├── 通过 MLP 进行并行三元组打分【检索策略】
│ │ ├── 支持可调的子图规模【弹性设计】
│ │ └── 融合方向性距离编码(DDE)提升检索效果【结构设计】
│ ├── 3.2 基于 Prompt 的 LLM 推理【推理阶段】
│ │ ├── 采用 In-Context Learning,提供线性化三元组列表【具体措施】
│ │ ├── 一次性调用 LLM,减少开销【效率优势】
│ │ └── 生成可解释的回答并降低幻觉【结果可解释性】
│ └── 模型与 KG 的解耦:无需对 LLM 额外微调【适应性】
│
├── 4 实验与结果【实证研究】
│ ├── 4.1 检索层面评估【效果验证】
│ │ ├── 与多种基线检索器(RoG、G-Retriever、GNN-RAG 等)的对比【对比实验】
│ │ ├── 多跳、多实体问题的子图覆盖率提升【复杂场景表现】
│ │ └── 速度与可扩展性的平衡【效率验证】
│ ├── 4.2 KGQA 任务表现【下游实验】
│ │ ├── 评估指标:Macro-F1、Hit@1、Hallucination Rate 等【度量标准】
│ │ ├── 在 WebQSP 与 CWQ 上达成或超越 SOTA【精度结果】
│ │ ├── 可调子图规模适配不同大小的 LLM【容量匹配】
│ │ └── 对回答进行可追溯解释【可解释性】
│ └── 消融实验与泛化性【稳健性评测】
│
├── 5 关键挑战与思考【综合讨论】
│ ├── 大规模 KG 上的检索效率【技术挑战】
│ ├── 不同规模 LLM 对子图上下文的容忍度【推理瓶颈】
│ └── 如何进一步减少幻觉并增强答案可信度【未来方向】
│
└── 6 结论【总结与展望】
├── SubgraphRAG 通过轻量级检索与灵活子图显著提升 RAG 效能【研究贡献】
├── 与不迭代、多阶段调用 LLM 的方法相比更高效【对比优势】
├── 可调子图大小能适配各类 LLM 并兼具可解释性【适配性】
└── 为未来动态、可扩展的 KGQA 场景提供思路【应用前景】
SubgraphRAG:
├── SubgraphRAG 方法核心【整体流程】
│
├── 1 输入【数据来源】
│ ├── Query (自然语言问题)【语义输入】
│ └── Knowledge Graph (KG)【结构化知识】
│ └── (h, r, t) 三元组【事实存储】
│
├── 2 子图检索阶段【处理过程】
│ ├── 2.1 Directional Distance Encoding (DDE)【特征提取】
│ │ └── 将话题实体位置扩散并编码距离信息【捕捉结构关系】
│ ├── 2.2 轻量级 MLP【判别模型】
│ │ ├── 接收 DDE 与文本向量作为输入【数据传递】
│ │ ├── 对每个三元组并行打分【并行处理】
│ │ └── 使用弱监督训练 (最短路径或伪标签)【模型学习】
│ ├── 2.3 按相关度选取 Top-K 三元组【子图生成】
│ │ ├── 多个三元组可组合成任意结构子图【灵活构造】
│ │ └── 可调 K 值适应不同 LLM 的上下文长度【弹性机制】
│ └── 2.4 输出候选子图【检索结果】
│ └── 结构紧凑且覆盖答案所需证据【满足后续推理】
│
├── 3 LLM 推理阶段【处理过程】
│ ├── 3.1 Prompt 构造【上下文融合】
│ │ ├── 将线性化子图与原始 Query 拼接【文本拼接】
│ │ └── 在 Prompt 中示例解释性推理【引导 LLM】
│ ├── 3.2 In-Context Learning【推理技术】
│ │ ├── 无需微调 LLM【适配黑盒或 API 场景】
│ │ └── 利用示例让 LLM 生成答案并附带推理过程【一次性完成】
│ └── 3.3 输出答案与解释【推理结果】
│ ├── 答案实体或最终文本【LLM 生成】
│ └── 对应子图证据的可追溯解释【可解释性保障】
│
└── 4 全流程输出【整体产出】
├── 检索到的子图【检索阶段输出】
├── 知识支撑下的答案【LLM 解答】
└── 减少幻觉并具备可解释推理文本【最终可用结果】
理解
SubgraphRAG是一个基于知识图的检索增强生成框架,通过检索子图并利用LLMs进行推理,从而解决传统RAG方法中的效率和效果问题。
该框架能够灵活调整子图的大小,适应不同的查询需求,并通过高效的MLP与三元组评分机制保证信息检索的准确性和推理的可靠性。
子图 + LLM 的图推理 > GNN 图推理能力,之前看别的论文说,GNN 会随跳数增强性能下降。
- 核心问题:图中用示例问题“哪些组织与至少一家分别由 Elon Musk、Jeff Bezos、Bill Gates 创办的公司存在业务合作关系,但这些组织本身并非由上述三人创办?”引出整个系统要解决的多跳检索与推理任务。
- 整体流程:
- Step 1:从自然语言问题中识别出关键实体(如 Elon Musk、Jeff Bezos、Bill Gates 等),即“话题实体”。
- Step 2:针对识别出的话题实体,在大规模知识图谱(KG)中检索到与问题相关的子图(红色虚线框示意部分)。
- Step 2.1:构造结构化特征(Option 1 中为 DDE 方向性距离编码,也可替换为 GNN 等其它模型)
- Step 2.2:并行地对 KG 三元组进行打分并选择 Top K 条最相关的三元组,组合成一个“可变形”的子图(可能超出简单的“路径”结构)。
- Step 3:将检索到的子图与原始问题合并,传给 LLM(如 GPT-4 或 Llama),让模型做出基于子图证据的推理与回答。
- 答案示例:图右侧给出了答案[Nvidia, Nasa],并附带了解释性推理:“Nvidia 与特斯拉、亚马逊、微软有业务合作关系,但并非由 Musk/Bezos/Gates 创办”。
- 特点:
- 检索到的子图可大可小,可以是复杂结构而非单一路径。
- 使用方向性距离编码 (DDE) 等轻量级模型来高效、可扩展地检索子图。
- LLM 仅需一次调用,即可在子图证据上进行推理并生成可解释答案。
- 在大规模知识图谱中,有成千上万个实体 (节点) 和三元组 (边),而我们的目标是“从海量节点里迅速找到哪些节点(以及相关三元组)和当前问题最相关”。
- 直觉上,距离越近,往往越相关:如果一个节点离“话题实体”特别近,极可能是我们想要的;如果离得远,多半与问题无关。
- 为了把这种“距话题实体的远近”变成可用的数字特征,就需要像图 5 那样做迭代式的“扩散”或“距离编码”。
一个节点会同时拥有“前向距离 + 逆向距离”的信息。
得到“距离特征”后,MLP 怎么用它来挑三元组?
- 目的:我们要把“节点距离”变成一个数字特征,结合节点或三元组的文本向量,一并输入一个简单的多层感知机 (MLP)。
- 做法:对于每个三元组 (h, r, t),可以把 h、t 的距离向量拼起来,再加上它们的文本向量,一起喂给 MLP;MLP 输出一个“相关性打分”。
- 若这个三元组的头尾节点都距离话题实体很近,MLP 通常会判定它更有可能和问题相关;
- 反之,如果 h、t 都离话题实体很远,分数就会很低。
- 优点:MLP 结构简单、计算快,拿到距离特征以后,就能迅速计算出成千上万条三元组的相关性分数,而无需复杂的深度网络或多轮大型模型调用。
利用这些“距离编码”,我们能用一个非常轻量的 MLP 给所有三元组并行打分,从而在大量实体里迅速选出最相关的子图。
为什么说“利用多轮正反扩散得到的距离信息,轻量级 MLP 就能有效找出那些最相关的三元组”——因为 MLP 已经拿到了一份很好的‘谁近谁远’地图,再结合文本语义,粗排出一批优质子图给 LLM,就不需要再做更多麻烦的迭代推理了。
解法拆解
子图检索(Subgraph Retrieval)过程,可被视为对庞大知识图(KG)的一次“信息压缩”——从整张大图中筛选出支持答案所必需的三元组或局部结构,用最少的事实来覆盖问题所需的推理路径。
SubgraphRAG 之所以能做到高效检索并成功“压缩”,是因为:
- 结构特征(Directional Distance Encoding, DDE)的引入:它能刻画当前三元组与问题(或主题实体)之间的相对距离与方向,让检索模型更准确地识别真正相关的三元组,从而形成足够“紧凑”的子图。
- 多层感知机(MLP)并行评分:用一个轻量模型快速判别是否保留某个三元组。它不需要全局遍历和反复迭代,直接对每个候选三元组打分;这既节省算力,也保证了检索环节的“局部最优”。
单次调用,获得完整推理:不同于多回合对话或迭代搜索,SubgraphRAG 在检索出子图后,直接将这一“压缩信息”注入到 LLM 的上下文里,让 LLM 可以做完整的多跳推理。
可解释性与减少幻觉:由于子图中只保留了与问题紧密相关的事实,模型在回答时不易被无关噪声误导,减少了“编造”信息(幻觉)的概率。LLM 得到一个简化且“无损”的知识子图,就能更稳定地给出正确且自洽的答案;同时,用户也能查看那部分“压缩内容”(子图)来追溯推理过程。
- 解法整体拆解
论文的核心目标:在知识图谱(KG)上进行检索增强文本生成(RAG),并利用大型语言模型(LLM)做推理,既要保证检索高效又要保证多跳推理效果。
论文的“解法”可以概括为一个两阶段管线(pipeline):
- 子解法 1:高效检索 —— 基于轻量级 MLP+并行三元组打分机制,从庞大的 KG 中筛选“子图”(Subgraph)。
- 子解法 2:图结构特征增强 —— 通过 Directional Distance Encoding (DDE) 融合多跳结构信息,显式利用“话题实体”(Topic Entities)到候选三元组的结构距离,提升检索准确度。
- 子解法 3:可变子图大小 —— 为了适配不同规模或上下文窗口大小的 LLM,可灵活地调节检索子图(Top-K 三元组)的数量,既减少无关噪声,又能覆盖关键证据。
- 子解法 4:一次性提示词( Prompting )推理 —— 只做“一次”LLM调用,向 LLM 提供子图三元组清单,并结合精心设计的提示词模板,让 LLM 做多跳推理与答案生成(同时产出解释)。
将上述子解法合并起来,我们可以写成一个公式形式的管线:
- 解法 = ( 子解法 1: MLP+并行打分检索 ) + ( 子解法 2: DDE 结构融合 ) + ( 子解法 3: 动态Top-K ) + ( 子解法 4: 一次Prompt + LLM推理 ) \text{解法} = (\text{子解法 1: MLP+并行打分检索}) \;+\; (\text{子解法 2: DDE 结构融合})\;+\;(\text{子解法 3: 动态Top-K})\;+\;(\text{子解法 4: 一次Prompt + LLM推理}) 解法=(子解法 1: MLP+并行打分检索)+(子解法 2: DDE 结构融合)+(子解法 3: 动态Top-K)+(子解法 4: 一次Prompt + LLM推理)
其中,每个子解法对应一个关键特征或需求:
- 之所以用子解法 1(MLP+并行三元组打分),是因为需要在大规模 KG 中快速识别潜在相关三元组,减少算力消耗。
- 之所以用子解法 2(DDE 结构编码),是因为多跳QA往往依赖结构距离(多跳路径),需要捕捉实体和关系的有向距离信息。
- 之所以用子解法 3(可变子图大小),是因为不同LLM的上下文长度有限,不同难度问题需要不同数量的三元组证据。
- 之所以用子解法 4(一次性Prompt),是因为多次LLM调用会增加时延和成本,而单次提示可让LLM基于完整子图进行推理并给出答案与解释。
举一个简单例子:
- 问题(Query):“一个和米开朗基罗同一时代的画家中,最有名的画是哪幅?”
- 检索子解法 1 + 2 + 3:
- 首先定位话题实体,如“米开朗基罗”“拉斐尔”等;
- 计算 DDE 确定多跳潜在相关三元组;
- 取 Top-K 三元组,得到若干“某某画家—创作—某某画”。
- 推理子解法 4:
- 将子图中的三元组列表 + 问句,一次性输入到 LLM;
- LLM 在提示词指导下,综合子图信息找出画家和其最有名的画,并输出答案及说明。
- 子解法的逻辑关系:决策树 / 管线式
从论文描述可见,这些子解法更像一条管线式的流程(自上而下):
┌───子解法1: 轻量级 MLP + 并行三元组打分───┐
│ ↓ │
│ 子解法2: Directional Distance Encoding │
│ ↓ │
│ 子解法3: 动态控制子图 (Top-K) │
│ ↓ │
└──────────子解法4: 一次性LLM推理───────────┘
从决策流程来看:
- 先做 MLP 并行打分(子解法 1),结合 DDE(子解法 2)来判断哪些三元组相关。
- 再根据下游 LLM 容量、问题难度等因素,决定检索到的子图大小 (子解法 3)。
- 最后一次性调用 LLM(子解法 4)。
这是一条串行的“检索→构建子图→推理”逻辑链。
- 是否有隐性方法?
3.1 隐性方法或关键步骤
论文中有一些看似简单但实则关键的“隐性”细节,可能并未在传统方法里明确归类:
-
话题实体(Topic Entities) 提取并固定中心
- 在做三元组并行打分前,会先做一个“话题实体检测”(entity linking 或类似),这一步通常视为预处理。但实际上,对子解法 2(DDE 结构编码)至关重要:
- “之所以能计算DDE距离,是因为事先找到了 Topic Entities 作为‘源’进行有向距离扩散。”
- 这个步骤在论文中虽然提到,但往往不算一个单独“子解法”,它是隐含在检索逻辑前的必须环节。
- 在做三元组并行打分前,会先做一个“话题实体检测”(entity linking 或类似),这一步通常视为预处理。但实际上,对子解法 2(DDE 结构编码)至关重要:
-
向量预计算(Embedding) 以避免检索时高代价
- 论文里提到对所有实体和关系做文本向量(semantic embedding)预先计算,这让 MLP 并行打分只需要针对本次 Query 做一次向量计算,然后与预存好的实体/关系向量拼接即可。
- 这也可以看作是一个实用但隐性的关键方法:因为若没有预计算,就无法在大规模 KG 里高效地对每个三元组评分。
-
LLM 提示词中显式要求“给出推理过程”
- 这能降低幻觉(hallucination)风险,让 LLM 尽量基于检索到的子图回答。
- 某种程度上也是一种隐性技巧:传统做法只要 LLM 给答案,不必让它把子图证据解释出来;此处“让它解释”可以有效对齐 LLM 输出与子图证据。
这些隐性方法都属于“中间关键步骤”,通常在书本/教程里不一定有对应的“标准模块”,但对解法落地很重要。
3.2 是否有隐性特征?
- 隐性特征1:问题的跳数
论文中常提到“多跳问题”,但并不总是直接显示“这是几跳问题”;DDE 其实就是用“有向距离”来编码隐性多跳信息。这种“多跳性”并不是训练数据的显性字段,而是隐含在 KG 结构中的特征。 - 隐性特征2:LLM 的上下文窗口大小
不同规模 LLM 的处理长度、推理能力差异很大,论文中为此设置“可变Top-K三元组”方案;上下文窗口或“模型能看多少三元组”并非任务本身显性的输入,而是落地时的隐性系统特征。
-
方法的潜在局限性
-
对 LLM 有较强依赖
- 如果 LLM 本身并不擅长“阅读多个三元组再推理”,即使检索效果再好,最后的结果也可能不理想。
- 对非常小的语言模型(几亿参数以下),多跳逻辑推理能力恐怕不足。
-
单次调用可能会在极复杂、多跳甚多的问题上失效
- 论文中强调“一次Prompt”优点在于效率,但若问题跨度特别大、子图极复杂时,也许需要交互式或迭代的推理机制才能做得更好(论文作者也在结尾提到这类情况不在本文讨论范围内)。
-
子图过大可能引入噪声
- 如果选取的Top-K特别大,对于中小型 LLM 反而会“lost in the middle”,即核心信息被淹没。虽然论文给出了可调策略,但在实际运用中,选多少 K 仍需要经验/调参。
-
KG 覆盖度/新知识更新
- 方法再好也依赖知识图谱本身是否及时更新。如果 KG 中缺乏问题所需的三元组,该方法也无法保证效果。
- 论文主张这种方法易适配动态更新KG,但若缺乏足够索引与并行计算资源,更新也可能变得缓慢。
综上,论文通过**(1)轻量级检索** + (2)结构特征(DDE) + (3)可调子图规模 + (4)一次LLM推理这四个子解法串联起来,实现对知识图谱问答的高效与高精度。
过程中隐藏的一些方法与特征(如话题实体提取、embedding 预计算、LLM 提示词要求解释、多跳隐含性等)共同构成了最终系统。
尽管如此,方法也在大型上下文、多跳深度、模型依赖等方面面临潜在局限。
这个思路为后续在“如何高效检索+一次性整合LLM推理”上提供了一个相对简单而有效的范式参考。
提问
1. 通过一次性LLM推理避免了多次调用,是否存在模型推理能力不足时的风险?
答案:是的,如果问题非常复杂、子图过大或包含多个跳数,单次调用可能无法有效推理。这时候模型可能会因为上下文窗口限制而无法捕捉到全部的关键信息。
2. 在子图大小的选择上,你提到通过动态调整Top-K来匹配不同LLM的能力,但如何处理子图中过多无关噪声的影响?
答案:动态调整Top-K的策略虽然能适应不同LLM的上下文窗口,但如果选取过多的三元组,可能会导致信息冗余。因此,必须精细调控每个任务的子图大小,避免噪声干扰。实际应用中,需要通过经验或调参来决定最佳的Top-K值。
3. 你提出的DDE方法能有效提升多跳推理的性能,但如果结构数据本身存在缺失,DDE是否仍然能有效工作?
答案:DDE本身依赖于结构数据的完整性,如果KG中存在缺失或不完整的多跳信息,DDE可能无法充分发挥其优势,导致推理结果不准确。
4. “无须对LLM进行微调”,是否意味着你的模型在某些领域(如医疗、法律等领域的专有知识)上无法达到最佳效果?
答案:是的,虽然无需微调可以提升模型的通用性,但在特定领域(例如医疗、法律领域)时,未经过领域微调的LLM可能无法充分理解特定术语或复杂的推理结构,因此可能无法达到最优的性能。
5. 在知识图谱的动态更新问题上,你提到方法易于适配动态更新KG,但实际更新过程如何避免性能下降?
答案:KG的动态更新可能会导致检索到的信息过时或不完整,这对性能产生影响。虽然我们的框架设计为可适配动态更新,但实际应用时,如果更新频率过高,模型可能需要依赖更高效的增量学习机制来避免性能下降。
6. 通过一次LLM推理避免了多次LLM调用,但如果问题本身涉及到非常复杂的推理链条,单次推理是否存在失败的风险?
答案:是的,单次推理虽然可以提高效率,但对于非常复杂的问题(如涉及多个推理步骤或多跳推理),LLM的单次推理可能会导致遗漏关键信息,甚至无法完全理解问题的深层次含义。
7. 在子图检索的效率上,MLP结合并行三元组打分机制的设计会否在超大规模KG下导致瓶颈?
答案:是的,尽管MLP结合并行打分机制在处理常规规模的KG时表现良好,但在超大规模KG中,计算瓶颈可能会影响效率。特别是在处理具有数百万级实体和关系的KG时,性能可能会下降。
8. 子图大小会根据LLM的上下文窗口灵活调整,如何确保子图大小的选择不会影响最终推理的准确性?
答案:子图大小的选择确实会影响推理的准确性,因此必须小心调整。如果子图过大,可能会增加噪声;如果过小,可能会遗漏关键信息。我们的方法依赖于经验和调参,以确保子图大小适应具体任务的需求,保持合理的平衡。
9. 子图检索框架依赖于结构化信息,如何确保结构化信息不被LLM的强大自然语言处理能力覆盖而失去效果?
答案:虽然LLM具有强大的自然语言处理能力,但我们的框架通过结合结构化图数据与自然语言推理,确保结构化信息在最终推理中发挥作用。特别是通过引入DDE,使得结构化数据对多跳推理起到关键作用,从而避免被LLM的语言能力所忽视。
10. 图结构和LLM结合的优势,但在实际应用中,当知识图谱不包含足够的背景知识时,是否会导致LLM依赖不充分或生成无意义的回答?
答案:是的,知识图谱中缺乏足够的背景信息时,LLM确实可能依赖不充分,导致生成无意义的回答。这种情况尤其在某些领域的知识图谱缺失时显得尤为明显。为了应对这种情况,需要更强大的知识图谱和更智能的推理机制来填补知识空白。
这些问题意在考察论文中提到的技术细节、假设和局限性,要求作者对方法进行更深层次的讨论。
11. 为什么计算正反扩散得到的距离信息?正距离不行吗?
在知识图谱中,“正反扩散”指的就是分别从话题实体到其他节点、以及其他节点到话题实体两个方向去量化距离。
直觉上,我们可能会想:“只看从话题实体出发的距离(正扩散)不就够了吗?” 但在实际的知识图谱(通常是有向图)里,仅凭“正距离”往往无法完整刻画节点与话题实体的关系,原因主要有以下几点:
- 有向边并不对称
- 在有向图中,“从 A 到 B”的路径存在,并不代表“从 B 到 A”也必然有相同的可行路径。
- 仅仅计算正向距离(从话题实体到节点)时,如果某些边方向相反,就可能漏掉本该“很近”的节点,或者相反,把明明需要多跳才能到达的节点“看作”很近。
- 通过反向扩散补充信息,能让我们知道“从节点回到话题实体”的距离,从而更准确地刻画节点在有向图中的整体位置。
- 一些关系需要“反向”才能体现
- 比如在图谱里,“创办”关系通常是某人 → 某公司,但问题可能会问“由谁创办了该公司?” 这在图结构上是反向查询。
- 如果只看正向距离,“公司”到“人”之间的边是反的,就会导致“公司”节点在正向扩散里可能看起来“很远”(甚至不可达),其实它和那位“创办者”关系很紧密。
- 有了反向距离,就能让 MLP 明白:“虽然这家公司正向边离话题实体远,但反向边可能只有 1~2 步就能回到话题实体。”
- 提高节点区分度,避免单一方向导致的信息缺失
- 当我们只用正向距离时,两个节点也许都离话题实体“2 跳远”,但其中一个可以 1 跳就回到话题实体,而另一个要 5 跳才能回到话题实体,这显然不一样。
- 通过拼接“正向距离 + 反向距离”,就能把这二者有效区分开,让 MLP 在计算相关性时拥有更丰富的结构刻画。
- 多跳推理场景更复杂
- 多跳问题往往会跨越不同方向的关系:比如先从话题实体出发,找到某实体,再追溯回一个共同祖先,最后又走到另一个分支才能得到答案。
- 只看正向可能漏掉需要反向去连接的路径,所以为了在一次检索中就能给出更多潜在相关节点(或三元组),正反距离都会计算。
总结:为什么既要“正”也要“反”
在一个有向知识图谱里,“正距离”只代表了“话题实体 → 某个节点”的最短或平均跳数,却无法体现“节点 → 话题实体”的情况。
而很多关系(尤其在多跳推理中)对“节点回到话题实体”的距离同样非常重要。
把正距离与反距离拼接起来,就相当于给 MLP 提供了节点在有向图中的双向位置,让它对节点——乃至对应的三元组——做出更准确、更鲁棒的相关性判定。
这样一来,后续只需一次轻量级并行打分就能选出优质子图,而不需要再多轮复杂的搜索或大模型推理。