概述

Microsoft 的 GraphRAG 和基于 Neo4j 的 RAG(通常称为 Neo4j Graph RAG 或与 LangChain/LlamaIndex 等框架集成)都是图增强的 Retrieval-Augmented Generation (RAG) 方法,旨在克服朴素 RAG 的局限性,例如对复杂、相互连接查询的处理能力差。GraphRAG 由 Microsoft Research 开发,是一个独立的框架,使用大型语言模型 (LLM) 从非结构化文本中提取实体和关系,构建知识图谱以改善推理和摘要。 另一方面,Neo4j Graph RAG 利用 Neo4j 作为图数据库后端来存储和查询知识图谱,通常集成来自 GraphRAG 或自定义提取的输出,使其更像是图基 RAG 的基础设施,而不是一个完整的端到端框架。 虽然 GraphRAG 强调 LLM 驱动的图构建和分层摘要,但 Neo4j 强调可扩展存储、遍历和混合检索,使它们互补——Neo4j 经常用于增强或持久化 GraphRAG 的输出。

架构和核心机制

  • Microsoft GraphRAG:从输入文档的分块开始,然后使用 LLM(例如 GPT-4)提取实体、关系和属性,形成知识图谱,其中节点代表实体,边表示关系。 它使用社区检测算法(例如 Leiden)来识别相关实体的集群,并通过 LLM 提示生成分层摘要(局部和全局)。输出存储在 parquet 文件中,可用于检索查询。查询涉及局部搜索(针对特定查询的实体基图遍历)或全局搜索(针对数据集范围洞察的社区摘要聚合),通过结构化上下文减少幻觉。
  • Neo4j Graph RAG:依赖 Neo4j 作为图数据库来存储预提取或导入的图数据(例如,从 GraphRAG 的 parquet 文件通过 CSV 导入)。 实体成为节点(例如 __Entity____Community__),关系成为边(例如 RELATEDHAS_ENTITY),并添加嵌入(例如来自 OpenAI 的 text-embedding-3-small)用于向量搜索。与 LangChain 或 LlamaIndex 的集成启用自定义检索器:局部检索器使用 Cypher 查询进行实体的向量相似性搜索,随后通过图遍历获取相关块、摘要和关系;全局检索器在指定分层级别上应用 map-reduce 对社区摘要进行处理。 社区检测可以使用 Neo4j 的内置算法,如 Leiden 或 Louvain。

关键架构差异:GraphRAG 是以 LLM 为中心的,用于从零开始动态构建图,而 Neo4j 是以数据库为中心的,擅长现有图的持久存储和高效查询,通常作为 GraphRAG 类似管道的后端。

功能和能力

  • GraphRAG
    • 实体提取和图构建:基于 LLM,产生结构化输出,如实体描述和协变量。
    • 社区检测和摘要:分层(例如从实体级别到全局),启用多跳推理。
    • 查询模式:局部(针对目标问题通过实体导航)和全局(通过摘要聚合进行广泛概述)。
    • 集成:独立但可导出到数据库;支持自定义提示用于领域特定调整。
  • Neo4j Graph RAG
    • 图存储和遍历:使用 Cypher 进行复杂查询,支持向量索引和图算法(例如 Leiden 用于社区)。
    • 混合检索:结合向量搜索(例如在 Weaviate 或 Neo4j 中)与图模式来检索实体、关系、块和摘要。
    • 可视化和分析:Neo4j Browser 用于检查图;适用于大规模数据集的可扩展性。
    • 框架集成:LangChain 用于 map-reduce 链;LlamaIndex 用于元数据增强节点和检索器。

Neo4j 添加了原生 GraphRAG 中缺失的持久性和可扩展性功能,例如实时更新和可视化,而 GraphRAG 提供更自动化的 LLM 驱动提取。

应用和用例

  • GraphRAG:适用于研究、商业智能和内容分析,其中从非结构化数据构建图是关键,例如从报告或新闻语料库中合成洞察,用于复杂查询如“气候报告中的相互连接因素是什么?” 它在无需预现有数据库的情况下,需要分层摘要的场景中表现出色。
  • Neo4j Graph RAG:理想用于需要持久图的企业应用,例如知识管理、推荐系统,或在金融(例如分析合同)或医疗保健等领域的混合 RAG。 它用于扩展 GraphRAG,通过存储输出用于重复查询、可视化或与生产系统集成。

优势和局限性

  • 相似性:两者在多跳和全局查询上都优于朴素 RAG,通过利用关系和社区,提高准确性和可解释性。 它们在某些情况下通过摘要减少令牌成本,并更好地处理碎片化信息。
  • GraphRAG 优势:自动化端到端管道,适用于临时图创建,实体中心索引用于细微响应。局限性:提取的高 LLM 成本、无内置持久性(依赖文件)、密集图的可扩展性问题,以及更新需要重新索引。
  • Neo4j Graph RAG 优势:高效遍历和存储,支持增量更新、可视化工具,以及与多个框架集成用于混合设置。局限性:需要预先图导入(不如 GraphRAG 的提取自动化)、Cypher 查询的潜在复杂性,以及对外部工具的依赖用于初始实体提取。

总之,Microsoft 的 GraphRAG 是一个强大的框架,用于从文本构建和查询图,而 Neo4j Graph RAG 提供了一个稳健的数据库层,用于存储和增强此类图,通常在生产环境中一起使用以获得最佳结果。