Skip to main content

GraphRAG

开源项目

  1. 微软的Graph RAG
  2. 蚂蚁开发了首个对外开源的Graph RAG框架,蚂蚁全自主的开源产品:DB-GPT[50] + OpenSPG[42] + TuGraph[46]
    1. 跨图谱零拷贝融合,连接数据孤岛:替代实现,不断推理,建立逻辑关系

    2. 深度语义上下文关联:替代实现高级抽象

    3. 知识符号化表示,与大模型双向驱动:

    4. SPG-Reasoner逻辑规则推理,通过谓词语义和逻辑规则来定义知识之间的依赖和传递

GraphRAG过程

索引构建过程
  1. 使用文本分段技术将文档进行分块
  2. 关系(LPG)提取,分析每个文本单元并提取图元素:实体、关系和协变量
    1. 把文本加上合适的prompt,喂给LLM,要求 LLM 提供简短的摘要来完成
    2. 实体消歧
    3. 协变量提取
  3. 图增强
    1. 理解图的拓扑结构,并进行分类
      1. 使用分层莱顿算法生成node group的层次结构
    2. 使用 Node2Vec算法生成图中节点的向量表示。使我们能够理解图的隐式结构,并提供额外的向量空间,以便在查询阶段搜索相关概念
  4. node group 总结
    1. LLM 生成每个社区(node group)的摘要
      1. 能够了解每个社区中包含的独特信息,并从高级或低级角度提供对图表的范围理解
      2. 这些报告包含执行概述,并引用社区子结构中的关键实体、关系和声明
    2. 生成社区报告、社区报告摘要和社区报告标题的文本嵌入来生成社区的向量表示
  5. 文件处理
    1. 链接到已经存在的TextUnits
      1. 将每个文档链接到第一阶段创建的文本单元,创建文本块之间的上下文关系
      2. 了解哪些文档与哪些文本单元相关
    2. 文档嵌入
      1. 使用文档切片的平均嵌入来生成文档的向量表示
      2. 对不重叠的块重新分块文档,然后为每个块生成嵌入
      3. 创建这些块的平均值,并按标记计数加权,并将其用作文档嵌入
      4. 能够理解文档之间的隐式关系,并帮助生成文档的网络表示
  6. 网络可视化
    1. 对于每个逻辑图,执行 UMAP降维以生成图的 2D 表示
查询过程
  1. 本地搜索
  2. 问题生成
  3. 全局搜索

 

  1. 逻辑操作的种类很多,prompt放不下

  1. 关系太简单、固定,不能真正表达内含关系
  2. 不能根据实际内容进行有目的的动态索引

  1. 图数据库
  2. 向量数据库
  3. 逻辑规则推理Reasoner