首页 > 教程攻略 > ai资讯 >映射心智:知识图谱增强检索KGAR

映射心智:知识图谱增强检索KGAR

来源:互联网 时间:2026-08-22 14:05:57

大型语言模型(LLM)的能力毋庸置疑,但它们也有自己的“阿喀琉斯之踵”:上下文窗口有限,知识库静态不变。为了补上这块短板,检索增强生成技术(RAG)应运而生。不过,很多RAG方案只是简单检索与问题语义相似的小片段,这就好比盲人摸象,很难把握一个更宏大的主题或精妙的观点。

1 关键信息

导师:安娜·戈尔迪
外部合作者:无
共享项目:否

2 简介

知识图谱是一种用图结构来表示实体和关系的数据模型。节点代表实体,边代表关系。举个例子,如果在《哈利·波特》系列上构建一个知识图谱,那里面就会有一个代表“哈利”的节点,通过不同的边连接着他与其他角色的行动、关系和观点。这种结构化的信息,查询和查找起来非常高效。

相比之下,LLM是在自己的参数中,以一种参数化的形式来“记忆”知识。它们在处理广义知识和语言任务上很在行,但涉及到特定领域或最新的信息时,就容易掉链子。更麻烦的是,它们还会“幻觉”,而且很难溯源。早期给LLM“投喂”外部知识的做法,是进行额外的微调,但模型越来越大,微调时间越来越长,数据还在不断更新,这条路就慢慢走不通了。

于是,RAG登场了。它通过根据问题检索相关文档,并在推理时把这些文档作为额外上下文提供给LLM,从而注入外部知识。经典的RAG会把文档切成小块,以便适应LLM有限的上下文窗口。检索时,根据文档与问题的语义相似度来获取。对于像“给我讲讲哈利·波特”这样直接、单一主题的问题,RAG表现得很出色。

斯坦福大学 CS224N 深度学习与自然语言处理

比如说,搜索“哈利·波特”相关的文档块,LLM就能利用这些信息来回答问题。

但问题也随之而来。切块会丢失语义,块与块之间缺乏整体理解,而且有些问题压根儿就检索不到相关文档。对于那些需要跨多个概念和想法进行复杂推理的问题,RAG要给出扎实、准确的结果就很吃力。想象一下这个查询:“总结哈利·波特在所有书中的行为后果。”要回答它,得先检索所有描述哈利行为的文档,再找出每种行为的后续影响——这些信息可能散布在整部作品中。没有对文档的全局理解,仅靠相似性检索,这是几乎不可能完成的任务。

这就引出了一个很自然的想法:LLM和知识图谱,一个擅长推理,一个精于存储,正好可以互补。这篇文章提出了一个新颖的RAG框架,把由知识图谱数据库和LLM驱动的组件糅合在一起。目标是整合两方优势,解决现有RAG技术和LLM各自的问题——具体来说,就是将LLM强大的泛化推理能力,与知识图谱高效、扎实的信息存储结合起来。

这个框架的实现思路是:先把查询分解成若干子查询,然后用这些子查询去预先构建好的知识图谱数据库里找相关的实体。基于知识图谱的查询结果,会返回一个结构化的实体属性和外部关系列表。接着,总结这些结构化信息,并生成候选的邻居节点,以便继续遍历。从候选节点出发,继续遍历和查询,直到达到设定的深度。每一步遍历中,都会总结结构化信息,并对相关文档进行向量搜索。最后,结合收集到的节点总结、相关文档和子查询,让LLM回答最初的问题。图1总结了整个流程。

映射心智:知识图谱增强检索KGAR

图1:方法的完整流程。

3 相关工作

3.1 摘要型RAG

传统RAG把长文档切割成固定块,导致对整个文档内容的理解受限。为了应对这一点,摘要方法应运而生,旨在提供对整个文档的全面理解。通过摘要摘录或递归地摘要块,这些方法能按顺序捕获更广泛的主题。为了捕获文档中可能不相邻但更宏大的主题或想法,RAPTOR是一种较新的思路,它递归地对语义相似的文档文本块进行摘要。不过,仅靠聚类语义相似的块,会忽略那些在概念上相关但缺少语义相似性的想法。理想情况下,我们应该跨整个块组合空间进行摘要,但这在计算上非常昂贵。

3.2 基于图的RAG

基于知识图谱的RAG方法在最近一年里得到了广泛探索。Neo4j提出了一种基于图的RAG方案,除了基于查询相似性返回相关文档之外,还会简单地返回查询的知识图谱信息。这相当于,返回的文档仍然是标准RAG技术的结果,但附带上了知识图谱提供的背景信息。最近,微软研究的GraphRAG利用知识图谱,基于语义相似的聚类来创建摘要,解决了前面提到的那些问题。这种方法能考虑语义结构,并在多个文档之间提供更高层次的视图。不过,对节点和文档进行聚类并递归创建摘要,随着文档规模的扩大,成本会变得非常昂贵。我们的思路与GraphRAG和RAPTOR不同,我们认为,在推理过程中,可能并不需要在聚类或块之间进行预摘要。

3.3 查询

思维链引导是一种提升LLM推理能力的方法,它引导模型逐步回答问题。通过综合子问题的答案,LLM应该能生成更符合逻辑的回应。类似地,多查询检索会提示LLM生成多个子查询,再用这些子查询去检索文档。通过生成子查询,目的是构建语义更明确、更专业的查询,以检索到更相关的文档。这个理念在检索时能实现更细致的分工,也被我们用作查询系统的一部分。

4 方法论

4.1 概述

我们对RAG的处理涉及两个不同阶段。首先,必须对文档进行预处理,以构建知识图谱数据库。这一步是对现有库和实现的调整,稍加修改以包含更广泛的实体和关系。构建完知识图谱后,第二阶段才能开始查询。这一步从头实现,利用langchain库来构建提示链、结构化输出生成、图搜索和相似性搜索。

4.2 预处理信息

在查询之前,需要从文档中构建知识图谱数据库。具体做法是:先将每个文档切分成200 tokens左右的小块。切分时按字符递归进行,以保留句子和段落的语义。切分完成后,用GPT-4作为LLM来解析这些块,提取任何真实世界中的人物、对象实体和关系。虽然这里用的是GPT-4,但成本考虑下,也可以换成更小的模型。有了提取的节点和边,接着填充知识图谱数据库。要注意的是,除了提取的节点和边,还使用知识图谱数据库来存储原始文档块及其相应的向量嵌入。

图2:使用LLMs构建知识图

图2:使用LLMs构建知识图。

4.3 查询

有了构建好的知识图谱数据库,可以定义查询过程。使用GPT-4作为LLM进行查询的过程包含以下步骤:

1. 首先,用思维链提示来查询LLM,生成一系列回答问题所需的子查询,重点保证每个提示的多样性。设定一个最大子查询数量参数。对每个生成的子查询,提取相关实体节点,并查询知识图谱,以生成结构化的节点关系信息。

2. 接下来,对每个子查询的结构化输出进行总结,并寻找可能有助于回答问题的相邻节点。将这个总结和原始子查询组合成一个字符串,并利用OpenAI Embeddings将其转换为向量嵌入。然后,用原始文档块的向量存储执行向量相似度搜索。使用的评分指标是余弦相似度分数(当然也可以换成别的)。返回最相似的k个文档(top_k是设定参数)。同时,返回下一个相邻节点。

3. 为了高效存储和查找,文档和下一个相邻节点作为单独的集合来维护。对于下一个相邻节点,根据设定的max_depth参数,重复步骤2和3。例如,max_depth=2意味着需要额外完成一次遍历。

最后,将子查询、节点关系摘要和原始文档作为上下文返回给LLM,让它回答最初提出的问题。

5 实验

5.1 数据

考虑到评估的是文档检索能力,实验选用QuALITY数据集。这个数据集包含英文长篇章节(约2000-8000词),每个章节附带一系列多项选择题和答案对,这让我们可以用准确性来评估,而不是用BLEU或METEOR这类相似度指标。

图3:来自知识图谱查询的检索管道的样本结构化输出

图3:来自知识图谱查询的检索管道的样本结构化输出

5.2 评估方法

评估使用准确率作为指标,答案选项是多项选择。为了生成答案,利用结构化输出的LLM调用,为每个答案选项生成一个整数。使用开发集进行评估,因为测试集不包含带注释的真实标签。定性评估则利用架构每个步骤的记录输出。评估过程针对不同的架构选择进行消融研究。

5.3 实验细节

所有任务中都用GPT-4,所有设计配置的参数固定为:max_sub_queries=3,top_k=3。知识图谱是通过对QuALITY数据集中表示的长上下文段落进行预处理创建的。由于没有并行化请求,创建过程相当耗时。利用构建好的知识图谱,在几种架构选择中进行测试。结果表明,本文提出的设计范式表现最好。

图 4:从QuALITY构建的知识图

图 4:从QuALITY构建的知识图。

5.4 结果

实验先拿了GPT-4和标准RAG方法(使用余弦相似度检索相关文档)做基准,准确率是64.7%。接着测试了只包含知识图谱检索系统(没有源文件,深度为1)的情况。这意味着回答问题时,不检索或包含原始源文件作为上下文,只包含从知识图谱查询构建的摘要。深度为1意味着不会沿着任何候选下一个节点继续遍历。

这个配置的准确率显著低于基线。这说明,仅从知识图谱查询返回的信息是不够的,没有实际文档片段的支持。基于这个测试结果,继续测试了同样的配置,但增加了深度,不过准确率只有略微改善,凸显了包含文档的重要性。

下一个结果是实施整个流程后得到的。改变遍历的最大深度,当深度从1增加到3时,准确率分别为69.3%、76.1%和70.9%。这个结果有点意思,它表明增加遍历深度并不能提供提高准确性的有意义信息。可能的原因在于,上下文中加入了额外噪音,或者是所有文档中实体冲突造成的。不过,一个显著的发现是:由结构化知识图谱信息返回的额外上下文,明显提高了基准准确性。具体来说,深度为2时,准确率提高了超过10%。

表1:使用GPT-4在QuALITY数据集的开发集上的性能

表1:使用GPT-4在QuALITY数据集的开发集上的性能。

与QuALITY数据集上的准确性进行比较时,不能直接进行数据对比,因为RAPTOR的准确性是在测试数据集上或使用GPT-3在开发数据集上报告的。不过作为一种粗略比较,RAPTOR + GPT-4在测试数据集上达到了82.6%的准确性。总的来说,这些初步结果表明,在中等长度数据集上,不用对文档进行大量预处理,也能在问题和回答方面取得类似的成功。

6 分析

分析过程中,观察到了几种架构选择中代表的失败和成功模式。实验阶段会记录中间输出,这些中间输出被用于完成定性分析。

失败模式

主要问题出在检索结构化知识图谱信息并进行总结这个环节。理解为什么知识图谱方法在没有源文件的情况下会失败,关键在于:许多子查询产生的知识图谱实体和关系,根本无法回答子查询。因此,当模型使用最终上下文时,就没有具体数据来支撑潜在的声明。

在理解深度带来的错误模式时,还分析了候选节点是如何以及哪些被生成用于遍历的。对于大多数查询来说,尽管设定了最大深度为3,模型通常只完成一次遍历。这是因为会对已查询的实体进行过滤,只选择遍历新实体。这个发现有点出乎意料,它限制了知识和背景向更广阔领域扩展的可能性。

图5:中间步骤示例成功输出

图5:中间步骤示例成功输出

未来可以尝试使用不同的方法来检索一个更多样化的潜在实体集合。

成功模式

成功模式主要发生在子查询能被准确回答的情况下。但即使子查询无法从知识图谱查询和总结中检索到相关信息,它们依然能通过多查询向量化来回答问题。此外,在子查询未被回答的样本中,返回的文档可以作为上下文补充。这充分表明,同时返回结构化和非结构化数据具有很大优势。

7 结论

在这个项目中,尝试使用知识图谱来进行RAG任务的实验,主要关注对中长文档进行多项选择问题和回答的表现。结果表明,实现了与摘要型RAG技术类似的性能,而且不需要用昂贵的摘要方法对数据进行预处理。

然而,知识图谱的真正力量在于通过节点连接大量不同文档中的想法。在对中长篇文档进行测试时,可能并没有充分利用知识图谱的能力。同样,可以通过构建的LLM过滤器或自定义查询来更有效地查询知识图谱。未来工作希望能通过对多跳数据集进行评估,进一步探讨知识图谱如何帮助增强LLMs,使其具备跨越外部多样化知识库进行推理的能力。

伦理声明

需要承认,这个架构和对知识图谱的探索是一种昂贵的解决方案,对很多人来说门槛很高。在本文的测试中,可用的token积分和企业账户让人能在没有任何速率限制的情况下进行测试。在测试其他架构(如RAPTOR)时,也需要一个具有增加速率限制和用于及时测试的非微不足道预算的账户。为了让这些方案的测试更容易,提供对先前构建的知识图谱数据库或在大型数据集上进行递归总结的文档结构的公共访问,就能让研究人员无需为构建这些结构进行财务投资即可进行测试。

拥有大型数据库和知识存储库,也存在数据集中的偏见以及不公平访问大型数据集的风险。关于偏见,RAG方法提供了引用检索文档的方式,提供了一条透明的途径来解释LLM的推理过程。但LLM可能仍会展现出自身编码在参数中的偏见,或者即使加入了上下文,也可能出现幻觉。使用RAG应用的用户,尤其是在做关键决策时,在解释响应时应保持谨慎。作为创建者和研究者,有责任实施保障措施和用户界面功能,让用户了解风险。为了解决RAG可能导致不公平访问数据的问题,现实中已经存在大型企业拥有私人数据集和文档的不公平现象。借助RAG的有效性,这会让这些机构能够访问私人信息并利用这些信息中的知识。但反过来,RAG也允许更广泛地利用外部数据库进行分析。通过整理个人数据收集,用户可以在大型文档中进行复杂的分析。总的来说,为减少不公平访问,建议机构在咨询专注于人工智能政策的第三方机构后,将大数据公开并公开可访问,确保不发布有害数据。

参考文献

Zhuo Chen, Yichi Zhang, Yin Fang, Yuxia Geng, Lingbing Guo, Xiang Chen, Qian Li, Wen Zhang, Jiaoyan Chen, Yushan Zhu, Jiaqi Li, Xiaoze Liu, Jeff Z. Pan, Ningyu Zhang, and Huajun Chen. 2024. Knowledge graphs meet multi-modal learning: A comprehensive survey.

Darren Edge, Ha Trinh, Newman Cheng, Joshua Bradley, Alex Chao, Apurva Mody, Steven Truitt, and Jonathan Larson. 2024. From local to global: A graph rag approach to query-focused summarization.

Tianyu Gao, Howard Yen, Jiatong Yu, and Danqi Chen. 2023. Enabling large language models to generate text with citations.

Yunfan Gao, Yun Xiong, Xinyu Gao, Kangxiang Jia, Jinliu Pan, Yuxi Bi, Yi Dai, Jiawei Sun, Haofen Wang. 2024. Retrieval-augmented generation for large language models: A survey.

LangChain. 2024. "https://api.python.langchain.com/en/latest/character/langchain-textsplitters.character.RecursiveCharacterTextSplitter.html".

Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Küttler, Mike Lewis, Wen tau Yih, Tim Rocktäschel, Sebastian Riedel, and Douwe Kiela. 2021. Retrieval-augmented generation for knowledge-intensive nlp tasks.

Neo4J. 2024. Knowledge graph for rag. https://neo4j.com/developer-blog/knowledge-graph-rag-application/.

Shirui Pan, Linhao Luo, Yufei Wang, Chen Chen, Jiapu Wang, and Xindong Wu. 2024. Unifying large language models and knowledge graphs: A roadmap. IEEE Transactions on Knowledge and Data Engineering, 36(7):3580–3599.

Richard Yuanzhe Pang, Alicia Parrish, Nitish Joshi, Nikita Nangia, Jason Phang, Angelica Chen, Vishakh Padmakumar, Johnny Ma, Jana Thompson, He He, and Samuel R. Bowman. 2022. Quality: Question answering with long input texts, yes!

Parth Sarthi, Salman Abdullah, Aditi Tuli, Shubh Khanna, Anna Goldie, and Christopher D. Manning. 2024. Raptor: Recursive abstractive processing for tree-organized retrieval.

Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Brian Ichter, Fei Xia, Ed Chi, Quoc Le and Denny Zhou. 2023. Chain-of-thought prompting elicits reasoning in large language models.

Jeff Wu, Long Ouyang, Daniel M. Ziegler, Nisan Stiennon, Ryan Lowe, Jan Leike, and Paul Christiano. 2021. Recursively summarizing books with human feedback.