跳过内容

GraphRAG 简介

关于 GraphRAG

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

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

那么,GraphRAG 到底是什么?

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

GraphRAG Overview

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

如果您想了解 RAG 的介绍,请查看 什么是检索增强生成 (RAG)?

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

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

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

GraphRAG 基本模式

GraphRAG 高级模式

知识图谱模型

主题分类

根据 Gao 等人的说法,RAG 有三种范式:朴素 RAG、高级 RAG 和模块化 RAG

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

高级 RAG 系统的阶段

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

在这里,我们想重点关注*检索阶段*,并汇编一份最常引用的 GraphRAG 检索模式及其所需图模式的目录。请注意,这里的模式并非详尽无遗。

如何使用 GraphRAG

如果您希望使用 neo4j-graphrag 包LangChainLlamaIndex 实现此处讨论的检索器,请查看它们的 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

延伸阅读

我在哪里?
© . This site is unofficial and not affiliated with Microsoft.