如果你熟悉和图数据库 NebulaGraph,可以直接跳到 “RAG 具体实现” 章节。如果你不熟悉 NebulaGraph,请继续往下读。
知识图谱是一种使用图结构的数据模型或拓扑来集成数据的知识库。它是一种表示现实世界实体及其相互关系的方式。知识图谱常用来实现搜索引擎、、社交网络等业务场景。
知识图谱一般有两个主要组成部分:
三元组是知识图谱的基本数据单元,由三个部分组成:
在下面的三元组示例中,“Philadelphia Phillies” 是主体,“compete in” 是谓词,“Major League baseball” 是客体。
而图数据库通过存储三元组来高效地存储和查询复杂的图数据。
Cypher 是由图数据库支持的一种声明性图查询语言。通过 Cypher,我们告诉知识图谱我们想要什么数据,而不是如何得到结果数据。这使得 Cypher 查询更易读、更好维护。此外,Cypher 易上手使用,且能够表达复杂的图查询。
以下,是一个 Cypher 的简单的查询示例:
该查询语句将找到与棒球队 “Philadelphia Phillies” 相关的所有实体。
是市面上最好的图数据库之一。它是开源、分布式的,并且能处理包含万亿条边和顶点的大规模图,而延迟仅为毫秒级。很多大公司在广泛地使用它,进行各种应用开发,包括社交媒体、推荐系统、欺诈检测等。
3.1 安装 NebulaGraph
要实现 Philadelphia Phillies 的 RAG,我们需要在本地安装 NebulaGraph。借助 Docker Desktop 安装 NebulaGraph 是最便捷的方式之一。详细的安装说明可以在 中找到。
如果你不了解 NebulaGraph,强烈建议去熟悉下文档。
3.2 知识图谱 RAG 具体实现
NebulaGraph 的首席布道师古思为,以及 LlamaIndex 团队精心撰写了一份关于。从这本指南中我学到了很多知识,我建议你在读完本文之后也去读下这个指南。
现在,利用我们从指南中学到的知识,开始逐步地介绍使用 LlamaIndex、NebulaGraph 和 GPT-3.5 构建 Philadelphia Phillies RAG。
源码可参考我的 GitHub 仓库:,当中包括了项目完整的 JupyterNote。
实现第 1 步:安装和配置
除了 LlamaIndex,我们还要安装一些库:
我们还要设置 OpenAI API 密钥并配置应用程序的日志记录:
实现第 2 步:连接到 NebulaGraph 并新建图空间
假设你已经在本地安装了 NebulaGraph,现在我们可以从 JupyterNote 连接它(注意:不要尝试从 Google Colab 连接到本地的 NebulaGraph,由于某些原因,它无法工作)。
按照下面的步骤和代码片段来操作下:
创建新的图空间后,再来构建下 。参考下面的代码段:
实现第 3 步:加载数据并创建 KG 索引
是时候加载数据了。我们的源数据来自 Philadelphia Phillies 的维基百科页面和一个关于 Trea Turner 在 2023 年 8 月收到 standing ovation 的 YouTube 视频。
为了节省时间和成本,我们先检查下本地 来加载 KG 索引。如果存在索引,我们就加载索引。如果不存在索引(例如初次访问应用程序时),我们需要加载这两个源文档(上文提到的维基百科页面和 YouTube 视频),再构建 KG 索引,并在项目 root 目录的本地 storage_graph 中持久化地存储 doc、index 和 vector。
在构建 KG 索引时,需要注意以下几点:
实现第 4 步: 通过查询来探索 NebulaGraph
现在,让我们跑一个简单的查询。
比如说,告知一些 Philadelphia Phillies 队的信息:
这是从 Philadelphia Phillies 队的维基百科页面中得到的概述,是个非常不错的简述:
再用 Cypher 查询下:
该查询将匹配与 Philadelphia Phillies 相关的所有实体。查询结果将会返回与 Philadelphia Phillies 队相关的所有实体、它们与 Philadelphia Phillies 队的关系,以及 Philadelphia Phillies 队实体本身的列表。
现在,让我们在 Jupyter Notebook 中执行下这个 Cypher 查询:
可以看到,结果返回了 9 条数据。
下面,运行 包中的 命令,它能在一个单独的 HTML 文件中渲染 NebulaGraph 查询的结果;我们得到了以下的图形。以 Philadelphia Phillies 节点为中心,它延伸出 9 个其他节点,每个节点代表 Cypher 查询结果中的一行数据。连接每个节点到中心节点的是边,表示两个节点之间的关系。
非常酷的是,你还可以拖动节点来操作图形!
现在,我们对 NebulaGraph 的基本知识有了初步的了解,让我们深入一点。
3.3 图探索的 7 种方式
下面根据 KG 索引,让我们使用不同的方法查询知识图谱并观察它们的结果。
图探索的方法 1:KG 基于向量的检索
这种方法通过向量相似性查找 KG 实体,获取连接的文本块,并选择性探索关系。是 LlamaIndex 基于索引构建的默认查询方式。它非常简单、开箱即用,不用额外的参数。
图探索的方法 2:KG 基于关键词的检索
这个查询用了关键词来检索相关的 KG 实体,来获取连接的文本块,并选择性地探索关系以获取更多的上下文。而参数 指定了本次检索采用关键词形式。
图探索方法 3:KG 混合检索
通过设定 ,指定查询引擎为基于向量的检索和基于关键词的检索二者的混合方式,从知识图谱中检索信息,并进行去重。KG 混合检索方式不仅使用关键词找到相关的三元组,它也使用基于向量的检索来找到基于语义相似性的相似三元组。所以,本质上,混合模式结合了关键词搜索和语义搜索,并利用这两种方法的优势来提高搜索结果的准确性和相关性。
基于关键词的检索和混合检索二者主要区别,在于我们从知识图谱中检索信息的方法:基于关键词的检索使用关键词方法,而混合检索使用结合 Embedding 和关键词的混合方法。
图探索方法 4:原生向量索引检索
这种方式完全不处理知识图谱。它基于向量索引,会先构建文档的向量索引,再从向量索引构建向量查询引擎。
图探索方法 5:自定义组合查询引擎(KG 检索和向量索引检索的组合)
LlamaIndex 构建了一个 。如上所示,你可以看到它的具体实现。它用来进行知识图谱搜索和向量搜索。默认的 保证了两种搜索结果的并集,结果是包含了这两个搜索方式的结果,且进行了结果去重:
图探索方法 6:KnowledgeGraphQueryEngine
到目前为止,我们已经探索了使用 KG 索引构建的不同查询引擎。现在,来看看另一个由 LlamaIndex 构建的知识图谱查询引擎——。看下面的代码片段:
是一个可让我们用自然语言查询知识图谱的查询引擎。它使用 LLM 生成 Cypher 查询语句,再在知识图谱上执行这些查询。这样,我们可以在不学习 Cypher 或任何其他查询语言的情况下查询知识图谱。
接收 , 和 ,并构建一个知识图谱查询引擎,其中 作为 。
图探索方法 7:KnowledgeGraphRAGRetriever
是 LlamaIndex 中的一个 ,它在知识图谱上执行 Graph RAG 查询。它接收一个问题或任务作为输入,并执行以下步骤:
一个下游任务,如:LLM,可以使用这个上下文生成一个反馈。看下下面的代码片段是如何构建一个 KnowledgeGraphRAGRetriever:
好了,现在我们对 7 种查询方法有了不错的了解。下面,我们用一组问题来测试下它们的效果。
使用 3 个问题测试 7 种图查询
问题 1:告诉我 Bryce Harper 相关信息
下图展示了 7 种查询方式对这一问题的回复,我用不同的颜色对查询语言进行了标注:
这是我基于结果的一些看法:
问题 2:Trey Turner 收到的 standing ovation 是如何影响他的赛季表现?
这个问题是特意设计的,来自 ,这个视频专门讲述了这个 standing ovation 事件——Philly 的粉丝们对 Trea Turner(因为 YouTube 把他的名字误写为 “Trey” 而不是“Trea”,所以我们在问题中使用“Trey”)的支持。
看下 7 种查询方法的回答列表:
这是我基于结果的一些看法:
小结下:如果将全面的上下文数据正确地加载到知识图谱中,KG 基于向量的检索似乎比上述任何其他查询引擎做得更好。
问题 3:告诉我一些 Philadelphia Phillies 当前球场的事实。
看下 7 种查询方法的回答列表:
这是我基于结果的一些看法:
索引结果对比
基于上面 3 个问题在 7 个查询引擎上的实验,比较了 7 个查询引擎的优点和缺点:
哪个查询引擎最适合,将取决于你的特定使用情况。
小结
我们在这篇文章中探讨了知识图谱,特别是图数据库 NebulaGraph,是如何结合 LlamaIndex 和 GPT-3.5 为 Philadelphia Phillies 队构建了一个 RAG。
此外,我们还探讨了 7 种查询引擎,研究了它们的内部工作,并观察了它们对三个问题的回答。我们比较了每个查询引擎的优点和缺点,以便更好地理解了每个查询引擎设计的用例。
以上就是本篇文章【NebulaGraph7 种查询(关键词、向量、混合检索),Graph RAG 探索知识图谱】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/8327.html 资讯 企业新闻 行情 企业黄页 同类资讯 首页 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多