Skip to content

GraphRAG 简介

关于GraphRAG

GraphRAG 是使用知识图谱的检索增强生成(RAG)。

你是否曾在探索检索增强生成(RAG)系统的世界中偶然遇到GraphRAG这个术语?如果是这样,你并不孤单。这个术语正在引起轰动,但其含义可能难以捉摸。有时,它是一种特定的检索方法;其他时候,它是一个完整的软件套件,比如微软的GraphRAG“数据管道和转换套件”。由于用途如此多样,难怪即使是RAG讨论的最忠实追随者也会感到有些迷茫。

那么,GraphRAG到底是什么?

对我们来说,这是一组利用图结构进行检索的RAG模式。每种模式都需要一个独特的数据结构或图模式才能有效运作。

GraphRAG Overview

在本网站上,我们将深入探讨GraphRAG模式的细节,分解每个模式的属性和策略。

如果您正在寻找RAG的介绍,请查看什么是检索增强生成(RAG)?

我们展示的每个模式都直接链接到其GraphRAG 模式目录条目。 该目录是一个开源项目,旨在及时了解最新的模式演变。

注意:我们刚刚开始收集模式,肯定还缺少很多。请帮助我们建立一个全面的GraphRAG模式目录,并加入GraphRAG Discord频道的讨论。

为了让你更清楚地了解,本文解释的模式包括:

基本GraphRAG模式

高级GraphRAG模式

知识图谱模型

主题分类

根据高等人所述,有三种RAG范式:朴素RAG、高级RAG和模块化RAG:

在高级RAG范式中,预检索和后检索阶段被添加到简单的RAG范式中。 模块化的RAG系统包含更复杂的模式,这些模式需要对用户查询进行编排和路由。

高级RAG系统的阶段:

  • 预检索 — 查询重写、查询实体提取、查询扩展等。
  • 检索相关上下文
  • 检索后处理:重新排序、剪枝等。
  • 答案生成

在这里,我们想专注于检索阶段,并编制一个最常引用的GraphRAG检索模式及其所需图模式的目录。 请注意,这里的模式并不是一个详尽的列表。

如何实现GraphRAG

如果你想使用neo4j-graphrag packageLangChainLlamaIndex来实现这里讨论的检索器,请查看它们的GraphRAG检索器集成。

这里我们关注有趣的部分:使用retrieval_query来实现我们讨论的GraphRAG模式。每个模式的细节将包括相应的查询。

请记住,在构建查询时,有一个不可见的“第一部分”执行搜索操作以找到进入图的入口点(可以是向量、全文、空间、混合或过滤器)。 搜索部分返回找到的节点及其相似度分数,然后您可以在检索查询中使用这些节点和分数来执行进一步的遍历。

以下是一个可能看起来像这样的示例(示例来自LangChain Neo4j Vector文档):

retrieval_query = """
RETURN "Name: " + node.name AS text, score, {source:node.url} AS metadata
"""
retrieval_example = Neo4jVector.from_existing_index(
OpenAIEmbeddings(),
url=url,
username=username,
password=password,
index_name="person_index",
retrieval_query=retrieval_query,
)
retrieval_example.similarity_search("Jon Snow", k=1)

在上述示例中,使用用户输入 "Jon Snow" 在现有索引 person_index 上执行向量相似性搜索,并返回最佳匹配节点 (k=1)namescore 和一些 metadata

进一步阅读