嬴图 | LLM+Graph:大语言模型与图数据库技术的协同

2023-11-07 10:12

本文主要是介绍嬴图 | LLM+Graph:大语言模型与图数据库技术的协同,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

2022年11月以来,大语言模型席卷全球,在自然语言任务中表现卓越。尽管存在一系列伦理、安全等方面的担心,但各界对该技术的热情和关注并未减弱。

本文不谈智能伦理方面的问题,仅集中于Ulitpa嬴图在应用中的一些探索与实践,看看大模型+图技术 是如何相互辅助、互相促就的。当然,从最终的易用性和体验上来说,企业(客户)才是这两项技术在珠联璧合后的最终受益者!

01 大模型的局限性

先进的大语言模型(Large Language Model,以下简称大模型),如GPT系列,规模庞大,拥有数百甚至数千亿的参数,在许多复杂任务中展示出巨大的潜力。它们在大量的文本数据上经历了广泛的预训练(Pre-Training),这一过程会耗费大量资源和时间。 

很容易理解的是,模型的知识受限于它所训练的数据。训练数据都有一个截止日期(Cutoff Date)。例如,GPT-3.5是使用截止到2021年9月的数据进行训练的,GPT-4目前仅涵盖至2022年1月。跟进实时知识和全球事件对大模型来说是很大的挑战,而且成本相当可观。 

图片
图:ChatGPT截图

比起承认你提出的问题不在知识库中更糟的是,大模型会给出听起来十分肯定,但实际上并非事实的回应,也就是所谓的幻觉(Hallucination)。与此同时,大模型作为黑盒模型,它们以参数的形式隐式地表示知识。由于大模型生成的结果中没有包含任何来源或参考,我们很难解释或验证其可信度。这严重影响了大模型的应用,尤其是在医疗诊断、金融咨询和法律判断等高风险的场景中。另一个挑战在于,大模型是为了一般用途而训练的,企业专有、保密或敏感的未公开数据并不在它们的知识范围内。 

一种改善大模型性能的简单方法是提示工程(Prompt Engineering)。通过在提问时提供清晰的指示和背景信息,大模型可以生成更准确的回应。然而,为了获得最佳结果,这个过程可能需要一定的写作技巧和反复迭代,同时伴随着因文本长度增加而上升的成本。

图片

02 检索增强生成和微调

在将大模型引入业务环境时,出现了两种显著的技术:检索增强生成(Retrieval Augmented Generation)和微调(Fine-Tuning)。 

检索增强生成是一种将大模型与外部知识库检索相结合的一种框架。它从特定的外部数据库(区别于大模型的内部知识库)中检索出相关的文档,然后将这些文档与用户的输入一起传递给预训练的大模型,生成最终结果。 

典型的检索增强生成应用的策略是:

  • 将知识库中的文档按策略切分成较短的片段,为这些文本片段分别生成向量表示。

  • 运行期间,将用户的输入文本也嵌入为一个向量,将该向量与知识库的文本向量进行相似性比较后,检索出前N个(例如,前3个)相关文档。

  • 随后,大模型基于用户输入和相关文档生成最终结果。

图片
图:检索增强生成应用的基本工作流 

微调是指以一个预训练大模型为基础,使用特定数据集进一步训练模型调整其参数的过程。用于微调的数据集通常比预训练时所需的数据集小,但准备该数据集仍需大量的工作,并且必须与特定的任务目标(如问答、翻译和情感分析)保持一致。最终微调后的大模型会比预训练的大模型在特定任务中有更优秀的表现。 

图片
图:微调应用的基本工作流

检索增强生成和微调都能在一定程度上减轻预训练大模型的幻觉问题,同时使大模型更适配于企业。选择检索增强生成或微调取决于特定的场景,这两种技术也能够结合使用。但无论如何,为了充分发挥大模型的潜力,图技术是不容忽视的。

03 大模型也需要图能力

处理深度推理和关联任务时,大模型的限制更加明显。当我们提出一些大胆的问题时,经常会遇到有趣的情景。例如,Ultipa CEO 孙宇熙曾受到一次广播讨论的启发,提出了一个引人入胜的问题:东方著名征服者成吉思汗和西方卓越的科学家艾萨克·牛顿之间有什么联系? 【更多阅读:图数据库知识点2 | 图思维方式 / / 专访 | Ultipa 孙宇熙:从成吉思汗到牛顿再到图数据库】

ChatGPT 无法回答这个问题,因为“两者在历史上存在的时间和地理位置相隔很远”。

图片
图:大模型无法实现(或替代)图数据库的深层检索

但如果我们在一个百科知识图谱中进行检索(您可以使用维基百科进行此操作),搜索成吉思汗(节点)和艾萨克·牛顿(节点)之间的路径时,可以找到许多结果。以下是其中之一:成吉思汗发动了蒙古西征,间接导致了黑死病在欧洲的爆发。这场瘟疫在欧洲肆虐了几个世纪,影响了其发展。在伦敦大瘟疫爆发时,牛顿正值年少时,由于学校关闭,他被遣散到乡下,避免了瘟疫。 

这个关联成吉思汗和牛顿的4跳因果关系横跨东西方,跨越了400年的历史。通过图的深度穿透和因果关系搜索,生动地呈现在我们眼前。 

图片
图:成吉思汗与牛顿跨越400年东西时空的关联路径

现实世界的许多场景都可以用[1] 扩展阅读:文库 | 图数据库基础知识—壹来建模,包括金融网络、交通网络、供应链网络、社交网络、生物网络和各种知识图谱等。图因其互相连接、可追溯和明确的表示方式而久负盛名。许多问题其实都可以视为图的问题: 

  • 如何监控证券公司的交易和代理行为,避免因监管机构处罚使客户和股东遭受损失? 

  • 根据客户的帐户状况,哪种投资选项适合他们? 

  • 现有一系列光源,如何铺设电力传输线最为经济? 

  • 基于与我有类似观影行为的用户,有哪些电影推荐给我? 

  • 最近发生在缅甸的罢工将如何影响我们在伦敦的生产线? 

  • 如何在一片广阔的水域中放置传感器,才能及时检测到污染物? 

  • 如何根据蛋白质之间相互作用的强度将它们进行分组研究? 

这些分析和算法问题都超越了基于的文本查询或生成。虽然目前大模型在很多领域表现出色,但它们连面对基本的数学问题时都经常遇到困难,比如下面的最短路径问题。 

图片
图:ChatGPT截图

图片
图:最短路径在图中就非常清晰,即A→F→E,总长500米

我们要认识到,大模型原本并不是为了这些类型的任务而设计的。然而,在为业务目的构建智能系统时,解决这类问题的能力往往是不可或缺的。 

04 融合方案:大模型+图技术

许多研究人员已经认识到大模型图技术之间固有的互补性。通过结合大模型的文本理解能力和图的结构化推理能力,能够整体增强AI系统的功能性、智能性和可解释性。 

下面,我们将讨论Ultipa嬴图已经实现的两个应用,以展现大模型和图之间的相互增强关系。

使用大模型构建图 

将结构化数据,例如表格数据,转化为图的过程相对简单。通过设计适当的图模型(包括节点和边的类型和属性),就可以进行明确地映射和数据迁移。

然而,从非结构化的文本数据创建图则是一项复杂的任务,一般需要先进的自然语言处理技术协助,如命名实体识别、关系提取和语义解析等。但这些方法可能需要大量的规则或监督训练,性能也取决于训练数据的质量和数量。 

大模型在处理大规模非结构化文本数据中的实体发现、指代消解和关系提取方面表现出色,它们为自动化快速地构建图提供了令人兴奋的可能性,见下图。 

图片

Graph Extractor是专为从用户输入文本中提取实体和关系信息并直接可视化为图而设计的插件,见下图。 

图片

我们输入了一篇关于联觉(Synesthesia)和自闭症(Autism)之间遗传联系的文章——《A Genetic Link Between Synesthesia And Autism Has Just Been Revealed》[2] 来测试它的性能。在检查结果时我们发现,大模型提取的信息大部分都是准确的,然而整个图尽管不大,却存在7个连通分量,这可能导致信息流断裂。例如,核心的发现“(联觉) - [共享遗传根源] -> (自闭症)”与相关的研究“(研究人员) - [检查] -> (2,131对双胞胎)”是隔离开的。 

为了解决这个问题,或许我们可以对大模型进行一些标准实体和关系类型的微调或指导。例如,(@发现) - [@包含] -> (@现象),和(@研究) - [@支持] -> (@发现)。这种方法可以改善图的整体结构和可读性,确保相关信息得到适当的连接和呈现。 

图片
图:使用Graph Extractor提取出的图(截图来自Ultipa Manager)

  “图上 问 答  

图上问答旨在基于存储在图中的结构化事实来查找自然语言问题的答案。大模型能够充当自然语言问题与图数据之间的桥梁。 

ChatGraph插件能帮助用户以对话的方式与图数据进行互动。鉴于大模型能够很好地理解自然语言,我们利用它从自然语言问题中提取信息,并将问题转化为准确的UQL(Ultipa图查询语言)语句。 

图片

我们在一个电力网络中使用这个插件。我们输入问题:“如何能够连接KANAWHA和TAZEWELL这两个位置?”系统迅速使用AB路径查询[3]【详细阅读:Ultipa官网-文档-UQL-Query(查询)-Find paths(找路径)】检索了连接这两个位置的所有可行路径: 

图片

此外,我们提出另一个问题:“如何最有效率地从KANAWHA到TAZEWELL?” 系统识别这为最短路径问题,并迅速找到了该路径: 

图片

05 小结:展未来

在不断发展的信息技术领域,出现了两个强大的催化剂,从根本上改变了我们处理和分析数据的方法——大语言模型和图数据库。虽然大模型在理解和生成自然语言方面展示出了优秀的能力,但围绕它们的担忧和批评也使它们在严肃商业环境中的适用性蒙上了阴影。 

图以显式、明确和结构化的方式表示知识,大模型和图之间的协同合作有望减轻大模型的种种限制。在未来,这两种技术的整合有望发挥强大的优势,创造更多的商业价值。 【文/ Pearl C 、Jason Z】

图片

【1】图数据库; https://www.ultipa.cn/document/ultipa-graph-query-language/basic-concepts/v4.0

【2】https://www.sciencealert.com/a-genetic-link-between-synesthesia-and-autism-has-just-been-revealed.

【3】https://www.ultipa.com/document/ultipa-graph-query-language/a-to-b-path/v4.3

这篇关于嬴图 | LLM+Graph:大语言模型与图数据库技术的协同的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/362932

相关文章

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Python+PyQt5实现MySQL数据库备份神器

《Python+PyQt5实现MySQL数据库备份神器》在数据库管理工作中,定期备份是确保数据安全的重要措施,本文将介绍如何使用Python+PyQt5开发一个高颜值,多功能的MySQL数据库备份工具... 目录概述功能特性核心功能矩阵特色功能界面展示主界面设计动态效果演示使用教程环境准备操作流程代码深度解

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区