前言
随着大型语言模型(LLMs)在各种应用中的广泛使用,如何提升其回答的准确性和相关性成为一个关键问题。检索增强生成(RAG)技术通过整合外部知识库,为 LLMs 提供了额外的背景信息,有效地改善了模型的幻觉、领域知识不足等问题。然而,仅依靠简单的 RAG 范式存在一定的局限性,尤其在处理复杂的实体关系和多跳问题时,模型往往难以提供准确的回答。
将知识图谱(KG)引入 RAG 系统为解决这一问题提供了新的路径。知识图谱通过结构化的方式呈现实体及其关系,能够在检索过程中提供更为精细的上下文信息。通过利用 KG 的丰富关系性数据,RAG 不仅能够更精准地定位相关知识,还能更好地处理复杂的问答场景,如对比实体间的关系或回答多跳问题。
然而,当前的 KG-RAG 还处在早期的探索阶段,行业对相关技术路线还未达成统一共识。比如,如何有效检索知识图谱中的相关 entities 和 relationships,如何将向量相似性搜索和图结构结合起来,目前没有形成统一的范式。
现有的方案如微软的 From Local to Global 使用大量的 LLM 访问将子图结构以汇总成社区摘要,但这一过程消耗大量的 LLM tokens,使这一方法昂贵且不切实际。HippoRAG 使用 Personalized PageRank 重新更新图节点的权重,以找到重要的 entities,但这种以 entity 为中心的方法很容易受到 NER 遗漏的影响,而忽略了上下文中的其它信息。IRCoT 使用多步 LLM 请求来逐步推理得到最终的回答,但这种方法将 LLM 引入多跳查找过程,导致回答问题的时间过长,很难实际应用。
我们发现,实际上用一个简单的多路召回然后 rerank 的 RAG 范式,就能够很好的处理复杂的多跳 KG-RAG 场景,而并不需要过多的 LLM 开销和任何图算法。

尽管使用很简单的架构,但我们的方法显著超过目前 state-of-the-art 的解决方案,比如 HippoRAG,并且仅仅需要用到向量存储和少量的 LLM 开销。我们首先引入我们方法的理论基础,然后介绍具体方法过程。
理论
我们观察到在实际的 KG-RAG 场景中,存在跳数有限性假设:在 KG-based RAG 中,实际问的 query 问题的查询路由只需要在知识图谱中进行有限的,且很少的跳数(如少于 4 跳)的查询,而并不需要在其中进行非常多次跳数。
我们的跳数有限性假设基于两点很重要的观察:1. query 复杂度有限性,2. '捷径'的局部 dense 结构。
Query 复杂度有限性
用户的一个提问 query,不太可能涉及到非常多的 entities,或者引入复杂的 relationships。否则这个问题会显得非常奇怪和不切实际。
正常的 query:'爱因斯坦获得诺贝尔奖的时间是哪一年?'
In which year did Einstein win the Nobel Prize?
知识图谱中的查询路径:
- 找到节点'爱因斯坦'。
- 跳转到与'爱因斯坦'相关的'诺贝尔奖'节点。
- 返回奖项颁发的年份信息。
跳数:2 跳
古怪的 query:'相对论的发现者获得诺贝尔奖的年份与他们在一个以银行保密法和阿尔卑斯山壮丽风景而闻名的国家发明的专利数量之间有什么关系?'
What is the relationship between the year the discoverer of the theory of relativity received the Nobel Prize and the number of patents they invented in a country famous for its bank secrecy laws and the magnificent scenery of the Alps?



