本文将探索属性图及其在提升数据表示和检索中的作用,同时借鉴 Ravi Theja(LlamaIndex AI 工程师和布道师)关于属性图的系列内容。通过这篇文章,我们将对如何使用 LlamaIndex 实现 GraphRAG 有一个清晰的理解,并附上一份实践指南,助您入门。
以下为译文:
01 进化:从知识图谱到属性图谱
首先,让我们回顾下知识图谱(KG)的概念。知识图谱使用主体、对象和谓语的三元组结构来定义关系,就像一个基础的家谱。它展示了人与人之间的关系,但没有个人的详细信息。
来源:LlamaIndex
每个节点(绿色和蓝色)有“标签”,承载了诸如类别的特定信息。它们就像家庭聚会的姓名标签,告诉你约翰是个人,旧金山是一个城市。谓语(边)定义了这些节点之间的关系(和方向)。
进入属性图(PG):PG 结构不仅包含主体、客体和谓语,还包含了每个实体附加的属性,比如名称/属性值对等。就像是从一个只包含姓名标签的基础家谱,升级为带有每个家庭成员的详细资料的详细版家谱。
来源:LlamaIndex
在这个详细版家谱中,约翰不仅仅是一个人,还记录了他今年 30 岁的年龄信息。旧金山也不仅仅是一个城市,是一座人口有 850 万的城市。有趣的是,甚至是谓语也可以有自己的属性,让实体之间的联系都有了细节。比如,约翰与旧金山是什么关系?我们可以添加“约翰从 2006 年就住在旧金山”的信息。这就像是在家谱上添加便签,详细描述所有细节。
OpenSPG 是一个语义增强的可编程知识图谱,GitHub地址如下,欢迎大家Star关注~
https://github.com/OpenSPG/openspg
02 如何构建属性图谱
那么,如何将我们的基础家谱升级为这个信息翔实的网络呢?仅需要两步:PG 构建和查询。下面让我们逐步讲解:
来源:LlamaIndex
2.1 第一步:图谱提取(构建阶段)
有三种方法:
1. ImplicitPathExtractor:
这就像整理书架,你不需要阅读每一本书,只是按顺序排列。在下面的图中,大文本 E 被分为小块的文本 A,B 和 C。这三个部分之间的关系定义为 A 在 B 之前,B 又在 C 之前,它们都属于源文本 E。所以,ImplicitPathExtractor 将原始文档分割成一个有序的块(节点)列表,以及它们之间的节点关系,作为词汇图。而且这个过程不需要 LLM 的参与。
2. SimpleLLMExtractor:
使用一个 LLM 从文本片段中提取实体和关系,这就像是,你有一个非常聪明的朋友阅读一本书,然后告诉你书中所有的人物及其关系。在下面的例子中,我们使用 LLM 从文本片段中抽取出 4 个实体(太阳、猫、窗户和垫子),以及它们之间的关系。这里的 LLM 可以是像 Llama3 这样的开源版本,因为我们不需要调用原生函数。请注意,所有节点都使用相同的节点标签,每个文本片段都通过“提及”关系与其它实体相关联,这些实体之间还可以有进一步的关系。
来源:LlamaIndex
3.SchemaLLMPathExtractor:
SchemaLLMPathExtractor 和 SimpleLLMExtractor 类似,但它使用预定义的 Schema,可以提前定义待提取的实体、节点标签和关系。这就像是给你的“聪明朋友”提供了一份在书中查找特定内容的问题清单,比如“告诉我这本书中的主角、反派和背景设定”等问题。还是以之前的文本片段为例,如果把问题限定在“垫子”这个实体及其关系中,属性图将被截断,如下所示。还有一点不同在于,SchemaLLMPathExtractor 最适合配合 LLM 使用,支持函数调用,且节点可以有不同的节点标签。
来源:LlamaIndex
2.2 幕后英雄:实体消歧
创建属性图后,下一个步骤应该是检索,其实中间还有一个经常被忽视的重要步骤,就是“实体消歧”。这一步骤类似于 ETL (Extract-Transform-Load) 流程中的数据清洗,通过文本嵌入相似度和词汇距离来移除潜在的重复项。再拿家谱的例子来说,这个步骤可以确保你不会混淆家谱中两个同名的人。比如,约翰叔叔和堂兄弟约翰是同一个人吗?这个步骤有助于澄清这一点。
来源:Neo4j
2.3 第二步:图检索器(查询阶段)
现在我们已经建好了这个详细的家谱,如何在里面查找信息呢?我们有四种工具:
来源:LlamaIndex
1.LLMSynonymRetriever:
顾名思义,它根据用户的查询生成同义词和关键词,以找到最近的节点及其邻居。唯一的缺点是,它使用关键词搜索,不太可靠。这就像是向你的姨妈询问家族历史,她可能会跑题,但你也会得到一些有趣的相关信息。
2.VectorContextRetriever:
这个检索器使用嵌入和余弦相似性,进行向量相似性搜索,以检索相关的节点。它可以直接用于图数据库,或者是图和向量数据库的组合。值得注意的是,它不适合需要聚合响应的全局查询,更像是用于你的家谱的搜索引擎。适合特定问题,但不适用于“告诉我关于家族的历史”的查询。
来源:LlamaIndex
3.Text2Cypher:
这里使用 LLM 根据用户查询生成 Cypher 语句,然后从图数据库中获取数据。Text2Cypher 适用于需要聚合的全局查询。这就像是有一个翻译,他可以把你的问题转化为你的家谱能理解的语言。当然 LLM 生成的 Cypher 语句并不总是准确,但我们正在以准确度换取灵活性,所以在这里建议使用微调的本地模型。
来源:LlamaIndex
4.CypherTemplateRetriever:
在此,我们可以使用带有特定参数的 Cypher 模板。对于用户查询,我们会使用 LLM 来填充这些参数,以创建用于检索的 Cypher 查询。这在很大程度上解决了 LLM 生成错误 Cypher 语句的问题,就像预先写好问题的框架,你只需要填空就好了,降低了提出家谱无法理解的问题的可能性。
来源:LlamaIndex
03 整合:GraphRAG 开始工作
实际上,GraphRAG 就好比把你家详细的家谱,交给一个超级智能的家族历史学家。传统的 RAG(检索增强生成)系统经常在回答宽泛主题的问题上遇到困难。这是因为这类问题需要对整个数据集有全面的理解,而不仅仅是检索特定信息。
所以,GraphRAG 在以下场景中表现出色:
- 在大型数据集中识别核心主题
- 理解不同主题之间的关联
- 全面了解复杂的信息架构
感谢 Ravi Theja,我们现在有了使用 LlamaIndex 实现 GraphRAG 的教程。
教程链接:https://github.com/run-llama/llama_index/blob/main/docs/docs/examples/cookbooks/GraphRAG_v1.ipynb
从知识图谱到属性图谱,再到 GraphRAG 的发展,标志着我们对数据的理解和交互方式发生了重大转变。GraphRAG 在揭示隐藏模式和回答开放性问题方面展现出潜力,但也只是我们工具箱中的众多工具之一,其真正的价值要通过实际应用和持续研究来确定。
如何系统的去学习AI大模型LLM ?
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料
包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
阶段1:AI大模型时代的基础理解
- 目标:了解AI大模型的基本概念、发展历程和核心原理。
- 内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践 - L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
- 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
- 内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例 - L2.2 Prompt框架
- L2.2.1 什么是Prompt
- L2.2.2 Prompt框架应用现状
- L2.2.3 基于GPTAS的Prompt框架
- L2.2.4 Prompt框架与Thought
- L2.2.5 Prompt框架与提示词 - L2.3 流水线工程
- L2.3.1 流水线工程的概念
- L2.3.2 流水线工程的优点
- L2.3.3 流水线工程的应用 - L2.4 总结与展望
- L2.1 API接口
阶段3:AI大模型应用架构实践
- 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
- 内容:
- L3.1 Agent模型框架
- L3.1.1 Agent模型框架的设计理念
- L3.1.2 Agent模型框架的核心组件
- L3.1.3 Agent模型框架的实现细节 - L3.2 MetaGPT
- L3.2.1 MetaGPT的基本概念
- L3.2.2 MetaGPT的工作原理
- L3.2.3 MetaGPT的应用场景 - L3.3 ChatGLM
- L3.3.1 ChatGLM的特点
- L3.3.2 ChatGLM的开发环境
- L3.3.3 ChatGLM的使用示例 - L3.4 LLAMA
- L3.4.1 LLAMA的特点
- L3.4.2 LLAMA的开发环境
- L3.4.3 LLAMA的使用示例 - L3.5 其他大模型介绍
- L3.1 Agent模型框架
阶段4:AI大模型私有化部署
- 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
- 内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
学习计划:
- 阶段1:1-2个月,建立AI大模型的基础知识体系。
- 阶段2:2-3个月,专注于API应用开发能力的提升。
- 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
- 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
全套 《LLM大模型入门+进阶学习资源包》↓↓↓ 获取~