graphrag学习总结

学习视频:b站链接

项目链接

GraphRAG 的基本概念

  • Document(文档):系统中的输入文档。这些文档要么代表CSV中的单独行,要么代表单独的txt文件。

  • TextUnit(文本块):要分析的文本块。这些块的大小、重量以及它们是否遵守任何数据边界可以在下面配置。一个常见的用例是设置 CHUNK_BY_COLUMNS 为 id,以便文档和TextUnits之间存在一对多关系,而不是多对多关系。

  • Entity(实体):从TextUnit中提取的实体。这些实体代表人物、地点、事件或您提供的其他实体模型。

  • Relationship(关系):两个实体之间的关系。这些关系由协变量生成。

  • Covariate(协变量):提取的声明信息,其中包含可能受时间限制的实体的陈述。

  • Claim(声明):代表具有评估状态和时间限制的积极事实陈述,以协变量(Covariates)的称呼在各处使用。

  • Community Report(社区报告):一旦生成实体,我们就对它们执行层次社区检测,并为该层次结构中的每个社区生成报告。

  • Node(节点):包含已被聚集的实体和文档的呈现图形视图的布局信息。

总体流程:
在这里插入图片描述

文档转换为 TextUnits

说明:

  • 概念 -> 追溯原文
  • 文档和文本单元之间存在严格的一对多关系
    在这里插入图片描述

切换技巧:

  • 切换大小 chunk size: 1200 token
  • 较大的块会导致输出保真度较低,参考文本意义较小;使用较大的块可以大大缩短处理时间。

图表:

  • 图表显示不同 chunk sizegleanings 的数量对实体引用检测的影响。
  • 600 token、1200 token、2400 token 的 chunk size 对比。
  • 在这里插入图片描述

图提取

功能:

分析每个文本单元并提取图形基元:实体、关系和声明

实体和关系提取:

  • 使用 LLM 从原始文本中提取实体和关系,包含具有名称、类型和描述的实体列表,以及具有源、目标和描述的关系列表。

实体和关系摘要:

  • 通过 LLM 为每个实体和关系提供简短的摘要描述。

Claim Extraction & Emission:

  • 声明代表具有评估状态和时间限制的积极事实陈述,以协变量(Covariates)的称呼在各处使用。

在这里插入图片描述

图增强(构建社区)

社区检测:

  • 使用分层莱顿算法生成实体社区的层次结构,此方法将对我们的图应用递归社区聚类,直到达到社区规模阈值。
  • 这将使我们能够了解图的社区结构,并提供一种在不同粒度级别上导航和总结图的方法。

图嵌入:

  • 使用 Node2Vec 算法生成图的向量表示。
  • 这将使我们能够理解图的隐式结构,并提供额外的向量空间,以便在查询阶段搜索相关概念。

在这里插入图片描述

社区总结

功能:

基于社区数据并为每个社区生成报告,这让我们可以从多个粒度点对图表有一个高层次的了解。例如,如果社区 A 是顶级社区,我们将获得有关整个图表的报告。如果社区是较低级别的,我们将获得有关地集群的报告。

生成社区报告:

使用 LLM 生成每个社区的摘要,引用社区子结构中的关键实体、关系和声明。

总结社区报告:

每个社区报告都会通过 LLM 进行总结,以供速记使用。

社区嵌入:

通过生成社区报告、社区报告摘要和社区报告标题的文本嵌入来生成我们的社区的向量表示。

在这里插入图片描述

文档处理

链接到 TextUnits:

将每个文档链接到第一阶段创建的文本单元,了解哪些文档与哪些文本单元相关。

文档嵌入:

文档切片的平均嵌入来生成文档的向量表示,能够理解文档之间的隐式关系。

在这里插入图片描述

local查询

在这里插入图片描述

Local 查询流程

流程描述:

  1. 用户查询(User Query):用户输入查询,进入流程的起点。
  2. 提取实体(Extracted Entities):从用户查询中提取出实体,包括实体描述和嵌入信息。
  3. 候选文本单元(Candidate Text Units):通过实体和文本单元的映射,生成候选文本单元。
  4. 候选社区报告(Candidate Community Reports):通过实体和社区报告的映射,生成候选社区报告。
  5. 候选实体(Candidate Entities):通过实体-实体关系映射,生成候选实体。
  6. 候选关系(Candidate Relationships):通过实体-实体关系映射,生成候选关系。
  7. 候选协变量(Candidate Covariates):通过实体-协变量映射,生成候选协变量。

排序和过滤:

每个候选单元经过排序与过滤(Ranking + Filtering),并输出优先级结果,包括:

  • 优先级文本单元(Prioritized Text Units)
  • 优先级社区报告(Prioritized Community Reports)
  • 优先级实体(Prioritized Entities)
  • 优先级关系(Prioritized Relationships)
  • 优先级协变量(Prioritized Covariates)

响应(Response):

最终将所有优先级结果汇总,并生成响应(Response),提供给用户。

会话历史(Conversation History):

会话历史用来记录并辅助当前查询的处理,确保连续性和上下文的完整性。

Global查询流程

Global 查询流程

流程描述:

  1. 用户查询(User Query):用户输入查询,作为流程的起点。
  2. 会话历史(Conversation History):通过会话历史确保查询的上下文完整性。
  3. 社区报告批次(Shuffled Community Report Batch):将用户查询分配给不同的社区报告批次进行处理。每个批次会被洗牌处理,以确保多样性。
    • Batch 1:第一批社区报告
    • Batch 2:第二批社区报告
    • Batch N:第N批社区报告
  4. 中间响应评分(Rated Intermediate Responses, RIR):每个社区报告批次会生成中间响应,并对其进行评分。
  5. 排序与过滤(Ranking + Filtering):对中间响应的评分结果进行排序与过滤,保留最佳结果。
  6. 聚合中间响应(Aggregated Intermediate Responses):将所有评分较高的中间响应聚合在一起,作为最终输出。
  7. 最终响应(Response):将聚合的结果返回给用户,作为最终的查询响应。
### GraphRAG 流程介绍 GraphRAG 是一种利用大型语言模型 (LLM) 创建知识图谱的技术,旨在增强基于检索的生成架构(Retrieval-Augmented Generation, RAG),从而更有效地处理私有数据集中的复杂查询。以下是 GraphRAG 的工作流程: #### 1. 数据预处理阶段 在这个初始步骤中,输入语料库被解析并转换成适合构建知识图谱的形式。这通常涉及文本清理、分词和其他必要的自然语言处理操作。 #### 2. 构建知识图谱 通过应用 LLM 技术,系统会根据经过预处理的数据自动生成一个结构化的知识图谱。这个过程不仅限于简单的实体识别,还包括关系抽取以及上下文理解,使得最终形成的图能够捕捉到文档间的深层联系[^2]。 #### 3. 图形机器学习与社区摘要集成 为了进一步提升系统的性能,在此环节引入了图形机器学习算法来优化已有的知识表示;同时收集来自不同领域专家的意见形成高质量的社区摘要,两者共同作用以改进后续查询的质量和准确性。 #### 4. 查询处理机制 当接收到用户的请求时,GraphRAG 首先会在预先建立的知识图上执行高效的模式匹配查找最相关的节点集合作为候选答案源。接着结合先前准备好的社区总结材料调整这些潜在响应的内容表述方式,确保输出既精准又易于理解。 #### 5. 提示工程的应用 最后一步是在实际回复前对选定的信息片段进行微调——即所谓的“提示”。这里特别强调的是如何巧妙地组合原始资料同额外补充说明之间的平衡点,以便更好地满足特定应用场景下的需求。 ```python # Python伪代码展示部分核心逻辑 def process_query(query_string): # Step 1: Parse and preprocess the query string # Step 2: Match against knowledge graph to find relevant nodes # Step 3: Retrieve community summaries related to matched topics # Step 4: Generate refined response using retrieved information return final_response ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值