从“一本正经地胡说八道”到“更懂你”:Graph RAG 如何让 AI 真正拥有知识?

技术

picture.image

picture.image

picture.image

点击上方蓝字关注我们

picture.image

一、前言

大模型技术在经过一年多的飞速迭代和发展,以 ChatGPT 为代表的大语言模型(LLM)凭借其强大的文本生成能力,在各个领域掀起了一场 AI 应用的革命。然而,狂欢过后,人们逐渐意识到 LLM 并非无所不能。由于训练数据的限制, LLM 常常会“一本正经地胡说八道”,给出过时、不准确甚至完全虚构的信息

为了解决这个问题, 检索增强生成(RAG) 技术应运而生。RAG 就像为 LLM 配备了一个外部“知识库”,让 AI 在回答问题时不再局限于自身的“记忆”,而是能够参考最新的、更全面的信息。

然而, 传统的 RAG 技术仍然依赖于文本匹配,无法真正理解文本背后的语义和逻辑关系,在处理复杂查询、捕捉细微差别等方面依然存在不足 。想象一下,如果只是把一堆文件扔给学生,而不教给他们如何理解和分析,他们真的能找到问题的答案吗?

为了打破这一瓶颈, Graph RAG 应运而生。Graph RAG 将知识图谱(KG)引入 RAG 体系,就像为 AI 构建了一张清晰的“ 知识地图 ”。知识图谱能够表达 实体之间的复杂关系 ,例如父子关系、朋友关系、因果关系等等,从而让 AI 不仅能够“查到”信息,更能够“理解”信息之间的逻辑,给出更准确、更智能的答案。

从依赖自身记忆到检索外部信息,再到利用知识图谱进行深度理解,Graph RAG 代表着 AI 问答技术的一次重大飞跃。 它将如何赋能 LLM,开启人机交互的新纪元?让我们拭目以待!

二、RAG:让 AI 学会“查资料”

传统的 LLM 就像一个博览群书的学者,知识储备丰富,但缺点是“学识”停留在某个时间节点,容易“跟不上时代”。这就好像,你问一个古代的学者“什么是互联网”,他肯定是一脸懵圈的。😂

为了解决这个问题,专家们想出了一个办法:让 AI 也学会“查资料”!这就是 RAG 技术的核心思想。

简单来说,RAG 就像为 LLM 配备了一个实时更新的搜索引擎,让 AI 在回答问题时不再局限于自身的“记忆”,而是能够随时查阅最新的资料。

具体是怎么做的呢?

第一步,检索信息。 当用户提出问题时,RAG 系统会先从海量的外部知识库中,找出与问题相关的文档或片段。这就好比你在搜索引擎里输入关键词,然后找到一堆相关的网页。

第二步,生成答案。 找到相关信息后,RAG 系统会把这些信息“喂”给 LLM,辅助其生成更准确、更全面的答案。这就好比你参考了搜索结果,再加上自己的理解,最终形成对问题的答案。

有了 RAG 技术,LLM 就不再是那个“两耳不闻窗外事”的学者,而是变成了一个“学富五车、与时俱进”的知识达人!

picture.image

三、RAG 真的完美无缺吗?

虽然 RAG 让 AI 学会了“查资料”,但它也并非完美无缺。就像学生查资料也会遇到难题一样,RAG 在实际应用中也面临着一些挑战:

首先,信息检索的准确性问题。 RAG 需要从海量的外部知识库中找到最相关的资料,但这可不是一件容易的事!不同的知识库可能格式各异、内容质量参差不齐,就像你要在一堆乱七八糟的书籍和文件中找到想要的信息一样困难。

其次,处理复杂查询的能力不足。 有些问题需要结合上下文才能理解,例如“苹果公司的创始人是谁”和“苹果多少钱一斤”,这两个“苹果”可不是一回事儿。传统的 RAG 技术主要依赖关键词匹配,对这类需要深度语义理解的复杂查询,就显得力不从心了。

最后,检索效率也是一个问题。 面对海量的知识库,如何快速找到最相关的信息,是 RAG 系统需要解决的关键问题。如果检索速度太慢,用户体验就会大打折扣,就像你在图书馆里等了半天,结果图书管理员告诉你“这本书借走了”,那肯定很郁闷吧。😔

为了克服这些局限性,研究人员一直在不断改进 RAG 技术,例如 开发更先进的检索算法、优化知识库的组织结构 等等。而 Graph RAG 的出现,则为解决这些难题提供了一个全新的思路。

四、Graph RAG:当 AI 拥有了“知识地图”

前面我们说到,传统的 RAG 技术让 AI 学会了“查资料”。但实际上,RAG 并非只是简单的关键词匹配,它通常会使用更复杂的语义搜索技术,例如基于 Transformer 的语义匹配模型,来理解用户查询的意图,并找到语义相关的文档,而不是仅仅依赖于关键词的表面匹配。

但是,传统的 RAG 仍然难以真正理解文本背后的复杂逻辑和关系。为了解决这个问题,科学家们想出了一个更厉害的办法: 把知识图谱(KG)引入 RAG 系统

这是什么概念呢?想象一下,以前 AI 查资料,就像在茫茫大海中捞针,需要花费很大力气才能找到真正想要的信息。而现在,知识图谱就像一张清晰的“地图”,把各种信息和它们之间的关系都标注出来,AI 就能“按图索骥”,更快、更准确地找到目标信息了。

举个例子,当用户询问“ 苹果公司的创始人是哪个大学毕业的? ”,传统的 RAG 系统可能会被“苹果”这个词迷惑,检索出一些关于水果的信息。而 Graph RAG 则可以利用知识图谱,准确地识别出“苹果公司”是一个公司实体,“创始人”和“大学”是与之相关联的实体,从而检索出正确的信息, 比如“史蒂夫·乔布斯”和“里德学院”

Graph RAG 建立在 RAG 的基础上,并利用了知识图谱(KG)的优势。这种创新方法由 NebulaGraph 首创,通过集成图数据库,改变了 LLM 解释和响应查询的方式。Graph RAG 的工作原理是将来自知识图谱的结构化数据整合到 LLM 的处理过程中,为模型的回答提供更加细致和信息丰富的基础。

简单来说,Graph RAG 的工作原理就是: 先分析用户的查询,在知识图谱中找到相关的实体和关系,然后将这些信息“翻译”成 LLM 能够理解的语言,最后再生成答案

知识图谱是对现实世界实体及其关系的结构化表示。它们由两个主要部分组成:节点和边。节点表示独立的实体,例如人物、地点、物体或概念。而边则表示节点之间的关系,表示它们如何相互关联。

picture.image

这种结构使 LLM 能够访问精确且与上下文相关的的数据,从而极大地提高了其生成信息丰富答案的能力。Graph RAG 的创新之处在于它将图数据库与 LLM 相结合,在生成答案之前丰富了模型的上下文。

目前,已经有一些公司推出了自己的 Graph RAG 平台 ,例如 OntotextNebulaGraphNeo4j 等等,这些平台都提供了强大的图数据库和 RAG 工具,可以帮助开发者快速构建自己的 AI 知识问答系统。

五、 RAG:AI 的未来,远不止于此!

Graph RAG 的出现,为 AI 领域打开了新的大门。它不仅仅是一种技术,更是一种全新的思考方式,将深刻地改变 AI 与世界互动的方式。

未来,我们可以预见 Graph RAG 将在以下几个方面持续进化,释放更大的潜力:

1、 更强大的推理能力:

未来的 LLM 将会越来越聪明,能够理解更复杂的逻辑和关系。而 Graph RAG 就像给 LLM 配备了一副“透视镜”,让 AI 能够看透事物背后的本质,进行更深入的推理和分析。例如,在医疗诊断领域,Graph RAG 可以帮助 AI 整合患者的病史、家族遗传信息、最新的医学研究成果等信息,从而做出更精准的诊断。

2、 更动态、更无缝的知识更新:

传统的知识图谱更新起来比较麻烦,需要人工参与。而未来,Graph RAG 将会与 LLM 更加紧密地结合,实现知识的自动更新和完善。例如,LLM 可以从海量的文本数据中自动识别新的实体和关系,并将其添加到知识图谱中,让 AI 的“知识地图”越来越完善。

3、 更广泛的应用场景:

随着 AI 计算能力的提升和成本的下降,Graph RAG 将会应用于更广泛的领域,例如金融风控、智能客服、个性化推荐等等。例如,在电商领域,Graph RAG 可以根据用户的购买历史、浏览记录、兴趣爱好等信息,构建用户的个性化知识图谱,从而推荐更精准的商品。

4、 更深入的跨领域融合:

未来的 LLM 将会拥有更广泛的知识,而 Graph RAG 可以帮助 AI 将不同领域的知识进行整合和关联,从而产生新的洞察和发现。例如,将心理学知识与网络安全技术相结合,可以设计出更有效的反欺诈系统。

5、 更开放的生态系统:

随着 Graph RAG 技术的不断发展,将会出现更多标准化的知识图谱表示和交换格式,不同平台之间的数据将会更加互通,从而推动 Graph RAG 技术的快速发展和应用。

总而言之,Graph RAG 为 AI 的发展指明了新的方向,它将推动 AI 从“数据驱动”走向“知识驱动”,让 AI 真正拥有理解世界、解决问题的能力。

未来,让我们一起见证 Graph RAG 如何改变世界!🚀

picture.image

六、实战演练:手把手教你玩转 Graph RAG

说了这么多,你是不是已经迫不及待地想要体验一下 Graph RAG 的魅力了呢?

下面,我们就来一起做一个简单的 Graph RAG demo,以新加坡政府的 Govtech 开发者门户为例,看看如何利用 Graph RAG 技术构建一个智能的产品信息搜索引擎。

picture.image

6.1、搭建知识图谱

首先,我们需要将 Govtech 开发者门户的产品信息转换成 AI 能够理解的知识图谱。

  • 我们可以使用一些图数据库工具,例如 使用 Neo4j Desktop 启动 Neo4j 本地实例,来存储和管理知识图谱。

picture.image

  • 利用一些开源的 LLM 工具和提示工程技巧,我们可以自动地从产品信息文档中提取关键信息,例如产品名称、功能描述、开发团队等等,并将这些信息转换成知识图谱中的节点和关系。以下是一个提示示例:

      
          
  
# 创建知识图谱的说明  
## 概述  
你的任务是将数据组织成知识图谱。  
- **节点**: 表示实体和概念。  
- 目标是确保知识图谱简洁易懂,便于广泛使用。  
  
## 节点标记  
- **一致性**:  对节点使用简洁明了的标签。例如,将任何代表组织的实体标记为“公司”,而不是使用“Facebook”或“Amazon”等具体名称。  
- **节点标识符**:  优先使用文本或易于理解的标识符,而不是数字标识符。  
    - **允许的节点标签**: 如果存在特定的允许节点标签,请在此处列出。  
    - **允许的关系类型**: 如果存在特定的允许关系类型,请在此处列出。  
  
## 管理数字数据和日期  
- 将数字信息直接作为节点的属性。  
- **集成日期/数字**:  不要为日期或数字创建单独的节点,而是将它们作为属性附加到相关节点上。  
- **属性格式**:  使用键值对格式。  
- **避免使用引号**:  不要在属性值中使用转义引号。  
- **键命名**:  采用驼峰命名法(camelCase)来命名键,例如 `dateTime`。  
  
## 一致性  
- **实体一致性**:  确保在不同的提及或引用中对同一实体使用一致的标识。  
  
## 遵守准则  
必须严格遵守这些说明。不遵守将导致任务终止。
      
    

我们使用 CSVLoader 和文档分割技术处理文档,并将提取的信息映射到图谱的节点和关系中。接着,我们通过提取管道处理文档,并将信息存储到 Neo4j 数据库中。

picture.image

整个过程大约需要一个小时,最终生成一个包含所有提取节点标签的列表。然而,并非所有节点标签都对我们当前的任务有意义或适用。


        
{  
  "identity": 1040,  
  "labels": [  
    "Feedbackstatus"  
  ],  
  "properties": {  
    "id": "Feedback-Success",  
    "message": "Sent. Thank you for the feedback!"  
  },  
  "elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1040"  
},  
{  
  "identity": 1582,  
  "labels": [  
    "Feedbackstatus"  
  ],  
  "properties": {  
    "id": "Feedbacksuccess",  
    "status": "Sent. Thank you for the feedback!"  
  },  
  "elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1582"  
},  
{  
  "identity": 1405,  
  "labels": [  
    "Header"  
  ],  
  "properties": {  
    "id": "Modalcardhead",  
    "class": "sgds-modal-card-head"  
  },  
  "elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1405"  
},  
{  
  "identity": 1112,  
  "labels": [  
    "Feedbackindicator"  
  ],  
  "properties": {  
    "id": "Feedbacksuccess",  
    "title": "check",  
    "message": "Sent. Thank you for the feedback!"  
  },  
  "elementId": "4:81cd2613-0f18-49c1-8134-761643e88b7a:1112"  
...
    

这个过程就像把一堆散乱的零件组装成一辆完整的汽车一样,需要一定的技术和耐心。

6.2、接入 RAG 系统

知识图谱搭建好之后,我们就可以把它接入 RAG 系统了。

  • 我们可以使用一些开源的 RAG 框架,例如 LangChain,来简化 RAG 系统的搭建和部署。
  • 通过 LangChain 提供的模板,我们可以轻松地将 Neo4j 图数据库与 LLM 连接起来,实现 Graph RAG 的功能。

6.3、测试和优化

最后,我们需要对 Graph RAG 系统进行测试和优化,确保它能够准确地理解用户的问题,并给出满意的答案。

  • 例如,我们可以尝试询问一些关于 Govtech 产品的问题,看看 Graph RAG 系统是否能够给出比传统搜索引擎更准确、更详细的答案。
  • 如果 Graph RAG 系统的效果不理想,我们还可以通过调整提示工程的策略、优化知识图谱的结构等方式来改进系统的性能。

为了优化模型,我们需要指定大语言模型 (LLM) 应该提取哪些节点标签。


        
permissible_nodes_to_extract = [  
    "Aisubfield",  
    "Application",  
    "Cloudservice",  
    "Concept",  
    "Digitalsolution",  
    "Division",  
    "Entity",  
    "Feature",  
    "Fundinginitiative",  
    "Initiative",  
    "Link",  
    "Location",  
    "Organization",  
    "Person",  
    "Platform",  
    "Policy",  
    "Program"  
    "Resource",  
    "Role",  
    "Schema",  
    "Service",  
    "Standard",  
    "Technology",  
    "Technologyplatform",  
    "Technologystack",  
    "Webframework",  
    "Webresource",  
    "Website"  
]
    

我们可以使用 Neo4j Browser 来探索构建好的知识图谱,并不断优化提取和图谱构建方法。

picture.image

一切准备就绪,让我们尝试以下查询:

问:“请详细介绍一下 AiSay,包括它的开发者、优点、应用领域以及独特之处。”

传统 RAG 的回答 :“AiSay 是新加坡政府开发的一款人工智能文档阅读器。它可以自动检测、扫描和理解各种类型的文档,包括手写笔记、印刷文章、多语言文本以及结构化/非结构化文档。与传统的 OCR 系统不同,AiSay 可以处理图像和 PDF 文件等类型的文档,并提供结构化的信息。它结合了 OCR、文档问答技术以及大语言模型来理解上下文并回答问题。AiSay 支持同步和异步调用,可以处理大文件,并可以根据需要进行扩展。它以无服务器的方式托管在云端,因此可以灵活扩展以处理大量数据。AiSay 目前仍在积极开发中,支持安全性和数据分类级别高达“受限/敏感一般” (RESTRICTED/SENSITIVE NORMAL) 的文档。未来将支持更多类型的文档。AiSay 的独特功能包括:能够处理多种文档类型并提供结构化信息、可扩展性强,以及支持安全性和数据分类。”

Graph RAG 的回答 :“AiSay 是新加坡政府开发的一款人工智能文档阅读器。它是一个文档解析器,可以提供结构化的信息,并从各种文档中提取信息并将其整合到现有系统中。AiSay 可以自动检测、扫描和理解各种类型的文档,包括手写笔记、印刷文章、多语言文本和结构化/非结构化文档。与传统的 OCR(光学字符识别)系统不同,AiSay 可以处理图像(JPEG、PNG、TFIF)和 PDF 文件等文档类型,并提供结构化信息。

AiSay 的一些主要优点包括:

  1. 减少人工错误并提高数据准确性,因为它可以自动从上传的文档中提取关键数据并填写到表单中。

  2. 改善数字服务体验,因为一旦上传文档,AiSay 就可以自动填写关键数据。AiSay 的独特之处在于它能够处理各种文档类型并提供结构化的信息,支持多种格式和语言。它还为每个任务提供置信度分数,以确定是否需要额外支持,从而最大程度地减少对高置信度任务的人工干预。此外,AiSay 采用无服务器架构托管在云端,因此可以灵活扩展以处理大文件,并支持异步提取。”

picture.image

在上面的例子中,Graph RAG 相比传统 RAG 方法的优势显而易见。

Graph RAG 的回答不仅准确,而且还包含了丰富的上下文信息和关系信息,这是传统 RAG 方法所缺乏的。

Graph RAG 的秘诀在于它能够分析用户的查询,精确定位图数据库中的相关数据,并利用这些上下文信息来指导大语言模型 (LLM) 生成更准确的回答。

这种方法可以利用传统方法可能忽略的互联信息网络,从而更深入地理解查询的含义。

让我们再尝试一些其他的例子:

问:“我需要从一些文档中删除敏感信息。Govtech 提供哪些产品可以实现这个功能?”

传统 RAG 的回答 :“Govtech 提供 Cloak 和 FileSG 产品,可以帮助用户从文档中删除敏感信息。”

Graph RAG 的回答 :“GovTech 提供了一款名为 Cloak 的产品,这是一个用于数据匿名化的集中式隐私工具包,可以确保数据处理符合相关政策。这款产品可以帮助公务员对数据集应用数据匿名化技术,并根据相关指南评估重新识别风险。”

picture.image

问:“DIAB 和 SIaC 有什么区别?”

传统 RAG 的回答 :“提供的文档中没有直接比较“开箱即用的数据基础设施” (DIAB) 和名为 SIaC 的产品或服务,也没有提到 SIaC。因此,根据现有信息,无法直接比较 DIAB 和 SIaC。

以下是 DIAB 的一些关键特性:

  1. 目的和开发 :DIAB 由 GovTech 的数据科学和人工智能部门 (DSAID) 开发,旨在加速在“政府商业云” (GCC) 上部署和维护数据基础设施。它专门用于协助政府机构设计、部署和保护数据基础设施。

  2. 专注于数据基础设施 :DIAB 强调构建一致且可扩展的数据基础设施,使政府机构在设计和实施云基础设施时能够节省时间并减少开销。这种设计理念使政府机构可以更专注于构建应用程序层。

  3. 使用基础设施即代码 (IaC) :DIAB 利用 IaC 模板和参考架构来简化数据工程方面的工作,从而简化数据基础设施的设置和管理流程。由于缺乏关于 SIaC 的信息,因此无法进行比较。DIAB 的特点表明,它是一个帮助政府机构在云端高效部署和管理数据基础设施的工具,它利用 IaC 来提高效率和可扩展性。”

Graph RAG 的回答 :“DIAB(开箱即用的数据基础设施)和 SIaC(安全基础设施即代码)都是旨在简化政府机构部署云基础设施的产品。但是,它们在具体功能和侧重点上有所不同。DIAB 旨在加速在“政府商业云” (GCC) 上部署和维护数据基础设施。它可以帮助政府机构设计、部署和保护数据基础设施,重点关注数据工程方面的工作,并提供“基础设施即代码” (IaC) 模板。DIAB 的目标是帮助政府机构构建一致且可扩展的数据基础设施,其主要优势包括易用性、效率高、内置合规性、部署灵活以及面向未来。另一方面,SIaC 提供可定制的模板,用于以安全、合规和自动化的方式部署云基础设施。它侧重于安全配置云服务提供商提供的托管服务和工具,并提供模块化且易于调整的模板。SIaC 的主要功能包括:符合新加坡政府标准、模块化设计(适用于不同用例)、与 SGTS 组件集成,以及云原生设计。总而言之,虽然 DIAB 和 SIaC 都旨在简化政府机构的云基础设施部署,但 DIAB 主要针对数据基础设施部署,重点关注数据工程和 IaC 模板,而 SIaC 侧重于安全合规的云基础设施部署,提供可定制的模板和模块化设计。”

picture.image

七、总结

从依赖自身“记忆”到学会“查资料”,再到拥有“知识地图”,Graph RAG 的出现,标志着 AI 问答技术进入了一个全新的阶段。

传统的 RAG 技术虽然能够为 LLM 提供更丰富的知识来源,但它就像一个只会“照本宣科”的学生,缺乏对知识的真正理解。而 Graph RAG 则赋予了 AI 更强大的推理能力和逻辑思维能力,让 AI 能够像人类一样理解世界、解决问题。

当然,Graph RAG 也并非完美无缺。它的性能很大程度上取决于知识图谱的质量和覆盖范围。构建一个高质量的知识图谱并非易事,需要投入大量的人力和资源。

但我们相信,随着 AI 技术的不断发展,Graph RAG 将会克服这些挑战,释放更大的潜力。未来,Graph RAG 将推动 AI 从“数据驱动”走向“知识驱动”,让 AI 真正拥有认知智能,为人类创造更美好的未来!✨

参考资料

[1]. 什么是 Graph RAG

https://www.ontotext.com/knowledgehub/fundamentals/what-is-graph-rag/

[2]. GraphRAG:解锁叙述性私有数据上的 LLM 发现

https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/

[3]. Graph RAG:利用 LLM 释放知识图谱的强大功能

https://medium.com/@nebulagraph/graph-rag-the-new-llm-stack-with-knowledge-graphs-e1e902c504ed

[4]. 嵌入的余弦相似性真的是关于相似性的吗?

https://arxiv.org/html/2403.05440v1

[5]. RAG 的知识图谱

https://www.deeplearning.ai/short-courses/knowledge-graphs-rag/

[6]. LangChain Neo4j

https://python.langchain.com/docs/integrations/providers/neo4j

[7]. Neo4j 图数据库

https://neo4j.com/product/neo4j-graph-database/

picture.image

如果你对这篇文章感兴趣,而且你想要了解更多关于AI 领域的实战技巧,可以

关注「技术狂潮AI」公众号

。在这里,你可以看到最新最热的AIGC 领域的干货文章和案例实战教程。

0
0
0
0
关于作者
相关资源
边缘云原生操作系统设计与思考
《火山引擎边缘云原生操作系统设计与思考》 徐广治 | 火山引擎边缘云资深架构师
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论