如果你用过 RAG 系统,大概率遇到过这种情况:明明知识库里有正确答案,系统就是答不对。问题不在模型不够大,也不在数据不够多——而是知识图谱里堆满了“正确的废话”。
一篇来自东北大学的论文 EvoRAG 发现:在 KG-RAG 的所有错误回答中,不相关事实、推理路径过长和过时信息这三类问题加在一起,占了总错误的一半以上。换句话说,知识图谱不是“没有知识”,而是“有用的知识被淹没了”。
知识图谱 RAG 的三大“致命伤”
先说清楚 KG-RAG 是什么。简单讲,就是把外部文本构建成结构化的知识图谱(实体-关系-实体的三元组网络),然后当用户提问时,从图谱里找出一条条推理路径喂给大模型,帮它答得更好。
听起来很美,但现实很骨感。作者分析了现有最优方法 KRAG 在两个数据集上的错误,归纳出三类主要问题:
- 不相关事实(17.9%):你问“Bob 在哪里上班”,它把“Bob 住在 Niva”也检索出来了。语义相关,但跟答案无关。
- 推理路径太长(20.7%):正确答案需要 3 跳推理,但检索策略只配了 2 跳,关键路径直接丢失。
- 过时信息(11.9%):知识图谱里还存着“Bob 在 Zelo 上班”,但这公司 2020 年就倒闭了。
这三类问题加起来超过 50%,而且有一个共同特征:它们都是“知识图谱本身的问题”,不是模型的问题。你换 GPT-4、换 Qwen、加更多数据,该错还是错。
EvoRAG 的核心思路:把“反传”搬进知识图谱
EvoRAG 做了一件很巧妙的事:借鉴了深度学习中“反向传播”的思想,把用户反馈一层层传回知识图谱里的每一个三元组。
整个过程分三步:
第一步:收集反馈。 用户提问后,系统用 LLM 对生成的回答打分(1-5 分),或者用人工评分、与标准答案对比。这个分数就是“反馈信号”。
第二步:路径评分。 反馈是给整个回答的,但回答可能用了很多条推理路径。EvoRAG 用 LLM 从三个维度评估每条路径的贡献:这条路径是支持了回答还是误导了回答(Supportiveness)、它对回答的贡献有多大(Fidelity)、它跟回答有没有矛盾(Conflict)。
第三步:梯度反传。 这是最关键的一步。每条路径的“效用分”被反向传播到路径里的每一个三元组上,更新它的“贡献分数”。经常出现在好答案路径里的三元组,分数越传越高;经常出现在坏答案路径里的,分数越压越低。
这个过程跟神经网络的梯度下降非常像——只不过优化的不是模型参数,而是知识图谱里每个三元组的“可信度权重”。
知识图谱怎么“进化”
有了每个三元组的贡献分数,EvoRAG 做了两件事来改造知识图谱:
关系融合: 如果一条多跳路径上的三元组贡献分都很高(超过均值+标准差),就在起点和终点之间直接加一条“捷径边”,下次检索就不用绕远路了。这解决了推理路径过长的问题。
关系抑制: 贡献分持续偏低的三元组,检索时会被降权。不是直接删除——如果其他查询需要它,它还有机会“翻身”。这解决了不相关事实和过时信息的干扰。
经过这样一轮一轮的迭代,知识图谱就变成了一个“越用越准”的活系统。
实验结果:稳定且全面的提升
作者在三个数据集(RGB、MultiHop、HotpotQA)上做了对比实验,基线包括微软 GraphRAG、LightRAG 和当前最优的 KRAG,以及各种知识图谱精炼方法。
准确率提升
EvoRAG 平均比现有 KG-RAG 框架准确率高 7.34%,比加了精炼方法的版本高 13.80%。准确率(ACC)、精确匹配(EM)和 F1 分数在三个数据集上全面领先。
而且好消息是:大约 6 轮迭代后性能就稳定了。在 RGB 数据集上,83% 的问题三元组被成功清理。
不仅更准,还更快
因为低质量三元组被过滤掉了,喂给大模型的 prompt 变短了。EvoRAG 的 prompt 长度平均只有其他方法的 1/4.6,这意味着推理更快、成本更低。
一个真实案例
以 HotpotQA 数据集里的一个问题为例:在原始检索中,一条包含事实错误的路径因为语义相似度高,排名靠前,导致正确路径被压制。经过 8 轮反馈迭代后,EvoRAG 逐步压低了错误三元组的贡献分,同时抬高了正确路径的权重,最终系统给出了正确答案。
论文与代码:
EvoRAG: Making Knowledge Graph-based RAG Automatically Evolve through Feedback-driven Backpropagation
https://arxiv.org/abs/2604.15676
https://github.com/iDC-NEU/EvoRAG
如果你是这类技术的实践者,不妨到 云栈社区 和更多开发者交流心得。