前言
Graph RAG 的工作原理是集成知识图谱到通过图遍历进行检索,最后将检索到的上下文输入到 LLM 进行生成,最终结果响应给用户。
经典RAG的局限性
\1. LLM更擅长处理结构化数据进行推理。 传统的 RAG 检索的是非结构化的信息块,并没有明确地捕捉实体之间的关系。即使检索到了正确的信息,该模型也可能难以将看似相关的事实联系起来。
\2. 跨文本块的处理能力有限。 整个检索取决于块和查询之间的余弦相似度,并且如果只有检索两个块时才能产生答案,则在极端情况下,由于余弦相似度低,重要信息可能会被遗漏。
3.无法处理复杂的查询推理。 传统的 RAG 不了解关系,完全依赖 LLM 将不同的信息块拼凑在一起,增加答案不完整或不正确的可能性。
4.在可解释性方面的挑战。检索过程是模糊的,因为检索到的块被视为独立的单元,并且系统可能无法提供明确的理由来解释为什么某些信息包含在响应中。
5.上下文重叠和冗余问题。缺乏优先级或对块之间关系的理解意味着传统的 RAG 系统通常会提供不必要或冗余的上下文,这可能会混淆 LLM 或浪费计算资源。
GraphRAG的工作流程
1.知识图谱构建
提取出的实体表示为节点,节点之间的关系表示为边。最终形成一个结构化图,当中数据不再孤立,而是相互连接,从而提供了一种自然的方式来表示数据集内数据之间的关系。
2.知识图谱摘要
将图算法应用于知识图谱来识别紧密连接的节点集群。对于每个检测到的节点集群,LLM都会生成一个简洁的摘要,其中包含关键实体、关系和主题。高级别摘要描述总体主题,而低级别摘要则突出细节。这种层次结构确保用户可以根据查询、探索到不同粒度级别的信息。
3.检索增强生成
- 查询预处理
通过分析命名实体或特定于图形的术语来映射到图形中的节点,对查询进行标记以了解其关键元素。查询还会通过编码器(如 Sentence-BERT)来生成向量表示。
- 图数据库交互
图形数据库包含节点(表示概念、实体、文档或文档块)和边(节点之间的关系,例如相似性、引用或层次结构)。
系统执行最近邻搜索或图遍历来识别最相关的节点,从与查询嵌入或相关主题匹配的节点开始,并使用连接的边遍历图形。根据预定义的标准(例如相关性、节点度、与查询节点的距离等)提取相关节点和边的子图。
- 对检索到的节点进行排序
通过计算查询嵌入和检索到的节点嵌入之间的相似度得分,根据相关性对检索到的节点进行排序。
此外,还可以考虑特定于图的指标,例如中心性或边权重,以优先考虑重要性较高的节点,或者使用元数据过滤器(例如时间、来源或内容类型)来优化实时用例的结果。
- 获取相关上下文(根据任务属性可选)
- 检索结果作为LLM的输入
检索和处理后的数据将作为上下文传递给 LLM。LLM 会结合此上下文生成对用户查询的连贯且合理的响应。