微软开源 GraphRAG:基于图的检索增强生成技术解析
这是增强大语言模型能力的一大进步,也是一种彻底改变企业私有数据分析的技术。7 月 2 日,微软开源了 GraphRAG,一种基于图的检索增强生成 (RAG) 方法,可以对私有或以前未见过的数据集进行问答。在 GitHub 上推出后,该项目快速获得了大量关注。
通过 LLM 构建知识图谱结合图机器学习,GraphRAG 极大增强了 LLM 在处理私有数据时的性能,同时具备连点成线的跨大型数据集的复杂语义问题推理能力。普通 RAG 技术在私有数据(如企业的专有研究、商业文档)表现往往不佳,而 GraphRAG 则基于前置的知识图谱、社区分层和语义总结以及图机器学习技术可以大幅度提升此类场景的性能。
GraphRAG 的核心机制
与我们传统的 RAG 不同,GraphRAG 方法主要归结为以下步骤:
- 知识图谱提取:利用大型语言模型 (LLMs) 从来源数据中提取实体和关系,构建知识图谱。
- 社区聚类:将此图谱聚类成不同粒度级别的相关实体社区。
- 社区答案生成:对于 RAG 操作,遍历所有社区以创建'社区答案',并进行缩减以创建最终答案。
这种方法让私有数据集也能被组织成有意义的语义集群并对其进行预总结。在回应用户查询时,LLM 会使用这些聚类对主题进行总结,从而更全面地理解数据集。
![图:GraphRAG 工作流程示意图]
与基线 RAG 的对比
微软在其博客上介绍说,他们在大规模播客以及新闻数据集上进行了测试,结果显示 GraphRAG 在全面性、多样性、赋权性方面优于朴素 RAG。
连点成线的推理能力
基线 RAG(Baseline RAG)在某些情况下表现非常差,例如很难连点成线。这种情况出现在问题的回答需要通过共用属性遍历不同信息片段以提供新的综合见解时。
微软团队采用了俄罗斯和乌克兰双方新闻来源在 2023 年 6 月中的上千篇新闻报道,将其翻译为英文后建成了这份将被用于基于 LLM 检索的私有数据集。由于数据集过大无法放入 LLM 上下文的窗口,因此需采用 RAG 方法。
查询语句:'Novorossiya 是什么?' 两个系统表现都很好,这是基线 RAG 表现出色的一类查询。
查询语句:'Novorossiya 做了什么?' 基线 RAG 没能回答这一问题,根据上下文窗口的源文件来看,没有任何文本片段直接提及该实体的完整行为描述,从而导致失败。相较之下,GraphRAG 方法发现了查询语句中的实体,让 LLM 能以此为基础建立图谱,连接原始支持文本从而生成包含出处的优质答案。
完整数据集推理
基线 RAG 不擅长处理需要汇总全部数据集信息才能得出答案的查询。类似'数据中排行前五的主题是什么?'的查询表现不佳,是因为基线 RAG 依赖对数据集中语义相似文本内容的矢量搜索,而查询语句中却没有任何能引导它找到正确信息的关键词。
但 GraphRAG 却可以回答这类问题。LLM 生成的知识图谱结构给出了数据集的整体结构和其中主题,让私有数据集也能被组织成有意义的语义集群并对其进行预总结。在回应用户查询时,LLM 会使用这些聚类对主题进行总结。
从测试结果来看,GraphRAG 生成的结果与数据集整体内容更为吻合。回答中提供了五大主题及其在数据集中观察到的辅助细节。其中参考的报告是由 LLM 为 GraphRAG 根据每个语义集合预先生成,提供了对原始材料出处的对照。
![图:GraphRAG 与基线 RAG 结果对比]
信任与验证
信任和验证 LLM 所生成的结果始终是重要的。微软希望结果总是事实性正确、连贯一致,并且能准确地反映原始材料中的内容。GraphRAG 每次生成回答时总会提供出处或源基础信息,表明它的回答是以数据集为基础的。每个论断的引用来源都一目了然,人类用户能够直接对照原始材料,快速且准确地审核 LLM 的输出结果。
结果指标与评估
上述示例中表现了 GraphRAG 在多个跨领域数据集上的持续改进。微软采用 LLM 的一个评分器给 GraphRAG 和基线 RAG 的表现进行评估和对比,设定了一系列定性指标,其中包括全面性(问题指向背景框架内的完整性)、人性化(提供辅助原始材料或其他背景信息),以及多样性(提供问题回答的不同角度或观点)。初步结果显示,GraphRAG 在这些指标上始终优于基线 RAG。
除了对比评估,他们还采用 SelfCheckGPT 对 GraphRAG 进行了忠实性的测试,以验证其基于原始材料的真实且连贯的生成结果。结果显示,GraphRAG 达到了与基线 RAG 相似的忠实度水平。
局限性与挑战
但值得一提的是,所有性能改进技术都有一个缺陷:token 的使用和推理时间都会增加。构建知识图谱和进行社区聚类需要额外的计算资源,这在实际部署时需要权衡成本与收益。


