
RAG vs. GraphRAG:谁才是 AI 问答的终极答案?
一、为什么需要 RAG 和 GraphRAG 技术?
1.1 大模型的局限性
大型语言模型(LLMs, Large Language Models)虽然在生成文本方面表现出色,但它们存在一些固有缺陷。比如,LLMs 容易出现“幻觉”现象,即生成不准确或虚构的内容。此外,LLMs 的上下文窗口有限,无法处理过长的文本,还存在隐私泄露的风险。为了弥补这些不足,检索增强生成(RAG, Retrieval-Augmented Generation)技术应运而生。RAG 通过从外部数据源检索相关信息,显著提升了模型的准确性和鲁棒性。例如,在医疗领域,RAG 可以帮助医生快速检索最新的医学文献,从而提高诊断的准确性。
1.2 结构化数据的挑战
尽管 RAG 在文本数据上表现优异,但对于结构化数据(如知识图谱),传统的 RAG 方法显得力不从心。知识图谱(KGs, Knowledge Graphs)等图结构数据蕴含丰富的关联信息,而 GraphRAG 则专门用于从图数据中检索信息。然而,随着研究的深入,人们发现将文本数据转化为图结构后,GraphRAG 在文本任务中也能发挥重要作用。例如,在社交网络分析中,GraphRAG 可以通过分析用户之间的关系,帮助识别潜在的社交圈层。
1.3 RAG 与 GraphRAG 的互补性
RAG 和 GraphRAG 各有优劣:RAG 擅长处理单跳问题和细节信息,而 GraphRAG 在多跳问题和推理任务中表现更佳。为了充分发挥两者的优势,我们需要系统地评估和比较它们在广泛文本任务中的表现,并探索如何将它们结合起来以提升整体性能。例如,在法律领域,RAG 可以用于检索具体的法律条文,而 GraphRAG 则可以帮助律师分析案件之间的关联性,从而提供更全面的法律建议。
二、RAG与GraphRAG
图片
2.1 RAG:文本检索的利器
RAG(Retrieval-Augmented Generation,检索增强生成)的核心思想是将文本分割成小块(chunks),并通过语义搜索或词法搜索从外部数据源中检索相关信息。具体来说,RAG 会将查询和文本块映射到同一个特征空间,计算它们的相似度,从而找到最相关的文本块。这种方法特别适合处理单跳问题和需要详细信息的任务。
举个例子,假设你正在使用一个问答系统,询问“谁发明了电话?”RAG 会从大量的文本数据中检索出与“电话”和“发明”相关的文本块,然后生成一个准确的答案:“亚历山大·格拉汉姆·贝尔”。这种检索方式不仅提高了答案的准确性,还能有效减少大语言模型(LLMs)的“幻觉”问题,即生成不准确或虚构的信息。
RAG 的实现通常依赖于语义相似性计算。比如,使用 OpenAI 的 text-embedding-ada-002 模型将文本块和查询映射到同一个向量空间,然后通过计算余弦相似度来找到最相关的文本块。
2.2 GraphRAG:图结构的智慧
GraphRAG 则专注于从图结构数据中检索信息。它首先将文本转化为知识图谱(Knowledge Graph, KG),然后通过遍历图中的节点和边来获取相关信息。GraphRAG 有两种主要方法:
- •基于知识图谱的 GraphRAG:从文本中提取三元组(实体、关系、实体),并通过多跳邻居检索信息。例如,如果你询问“爱因斯坦的导师是谁?”,GraphRAG 会从知识图谱中找到“爱因斯坦”这个节点,然后通过“导师”关系找到“赫尔曼·闵可夫斯基”这个实体。
- •基于社区的 GraphRAG:在知识图谱的基础上构建层次化社区,并从社区中检索信息。这种方法特别适合处理多跳问题和需要全局视角的任务。例如,在处理“爱因斯坦的导师的导师是谁?”这样的多跳问题时,基于社区的 GraphRAG 能够通过社区的层次结构,逐步检索出“爱因斯坦”的导师的导师:“卡尔·弗里德里希·高斯”。
GraphRAG 的优势在于它能够捕捉到文本中的复杂关系,特别适合处理需要多步推理的任务。比如,在处理“爱因斯坦的导师的导师是谁?”这样的问题时,RAG 可能会因为信息分散在多个文本块中而表现不佳,而 GraphRAG 则能够通过图结构的关系链,准确地找到答案。
2.3 开源实现
- •RAG:可以使用 LlamaIndex 等开源工具实现。LlamaIndex 是一个高效的检索增强生成工具,支持将文本分割成块并进行语义搜索,特别适合处理单跳问题和需要详细信息的任务。
- •GraphRAG:微软的 GraphRAG 项目提供了基于社区的 GraphRAG 实现。该项目通过构建层次化社区,能够有效地处理多跳问题和需要全局视角的任务,特别适合在复杂推理任务中应用。
通过结合 RAG 和 GraphRAG 的优势,可以在不同的任务中实现更高效的检索和生成。例如,在处理单跳问题时使用 RAG,而在处理多跳问题时使用 GraphRAG,从而在问答、摘要生成等任务中取得更好的效果。
三、RAG 和 GraphRAG 的应用效果评估
3.1 问答任务的表现
图片
在问答任务中,RAG(Retrieval-Augmented Generation,检索增强生成)和 GraphRAG(图检索增强生成)展现了明显的互补性。RAG 在处理单跳问题和细节信息任务时表现优异。例如,在 Natural Questions(NQ)数据集上,RAG 的准确率显著高于 GraphRAG。这是因为 RAG 通过语义搜索直接从文本中检索相关信息,适合回答直接且具体的问题。
图片
相比之下,GraphRAG 在多跳问题和推理任务中表现更佳。例如,在 HotPotQA 数据集上,基于社区的 GraphRAG(Local)的 F1 得分比 RAG 高出 5%。这是因为 GraphRAG 利用图结构捕捉实体之间的关系,能够更好地处理需要跨多个文档或实体进行推理的复杂问题。
3.2 查询摘要任务的表现
图片
在查询摘要任务中,RAG 和 GraphRAG 的表现因任务类型而异。RAG 在多文档摘要任务中表现最佳,能够捕捉到更多的细节信息。例如,在 ODSum-story 数据集上,RAG 生成的摘要更接近真实答案,因为它直接从多个文档中提取关键信息。
GraphRAG 则在全局摘要任务中表现更佳,能够生成更多样化和多角度的摘要。例如,在 QMSum 数据集上,GraphRAG 通过分析文档的全局结构,生成更全面的摘要,适合需要整体视角的任务。
如果你需要总结一篇关于“气候变化”的多篇研究报告,RAG 可以提取每篇报告的具体数据,而 GraphRAG 则可以从整体上分析这些报告之间的关系,生成更宏观的摘要。
3.3 性能提升策略
为了结合 RAG 和 GraphRAG 的优势,提出了两种策略:选择策略和集成策略。
• 选择策略(RAG vs. GraphRAG Selection)根据查询的特性动态选择 RAG 或 GraphRAG。例如,事实类查询使用 RAG,推理类查询使用 GraphRAG。
• 集成策略( RAG and GraphRAG Integration)则同时使用 RAG 和 GraphRAG 检索信息,并将结果合并生成最终答案。集成策略在大多数任务中表现更佳,但计算成本较高。
本文转载自大语言模型论文跟踪,作者:HuggingAGI
