嬴图 | LLM+Graph:大语言模型与图数据库技术的协同
前言
2022年11月以来,大语言模型席卷全球,在自然语言任务中表现卓越。尽管存在一系列伦理、安全等方面的担心,但各界对该技术的热情和关注并未减弱。
本文不谈智能伦理方面的问题,仅集中于Ulitpa嬴图在应用中的一些探索与实践,看看大模型+图技术 是如何相互辅助、互相促就的。当然,从最终的易用性和体验上来说,企业(客户)才是这两项技术在珠联璧合后的最终受益者!
01 大模型的局限性
先进的大语言模型(Large Language Model,以下简称大模型),如GPT系列,规模庞大,拥有数百甚至数千亿的参数,在许多复杂任务中展示出巨大的潜力。它们在大量的文本数据上经历了广泛的预训练(Pre-Training),这一过程会耗费大量资源和时间。
很容易理解的是,模型的知识受限于它所训练的数据。训练数据都有一个截止日期(Cutoff Date)。例如,GPT-3.5是使用截止到2021年9月的数据进行训练的,GPT-4目前仅涵盖至2022年1月。跟进实时知识和全球事件对大模型来说是很大的挑战,而且成本相当可观。

比起承认你提出的问题不在知识库中更糟的是,大模型会给出听起来十分肯定,但实际上并非事实的回应,也就是所谓的幻觉(Hallucination)。与此同时,大模型作为黑盒模型,它们以参数的形式隐式地表示知识。由于大模型生成的结果中没有包含任何来源或参考,我们很难解释或验证其可信度。这严重影响了大模型的应用,尤其是在医疗诊断、金融咨询和法律判断等高风险的场景中。另一个挑战在于,大模型是为了一般用途而训练的,企业专有、保密或敏感的未公开数据并不在它们的知识范围内。
一种改善大模型性能的简单方法是提示工程(Prompt Engineering)。通过在提问时提供清晰的指示和背景信息,大模型可以生成更准确的回应。然而,为了获得最佳结果,这个过程可能需要一定的写作技巧和反复迭代,同时伴随着因文本长度增加而上升的成本。
02 检索增强生成和微调
在将大模型引入业务环境时,出现了两种显著的技术:检索增强生成(Retrieval Augmented Generation)和微调(Fine-Tuning)。
检索增强生成是一种将大模型与外部知识库检索相结合的一种框架。它从特定的外部数据库(区别于大模型的内部知识库)中检索出相关的文档,然后将这些文档与用户的输入一起传递给预训练的大模型,生成最终结果。
典型的检索增强生成应用的策略是:
-
将知识库中的文档按策略切分成较短的片段,为这些文本片段分别生成向量表示。
-
运行期间,将用户的输入文本也嵌入为一个向量,将该向量与知识库的文本向量进行相似性比较后,检索出前N个(例如,前3个)相关文档。
-
随后,大模型基于用户输入和相关文档生成最终结果。

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

检索增强生成和微调都能在一定程度上减轻预训练大模型的幻觉问题,同时使大模型更适配于企业。选择检索增强生成或微调取决于特定的场景,这两种技术也能够结合使用。但无论如何,为了充分发挥大模型的潜力,图技术是不容忽视的。
03 大模型也需要图能力
处理深度推理和关联任务时,大模型的限制更加明显。当我们提出一些大胆的问题时,经常会遇到有趣的情景。例如,Ultipa CEO 孙宇熙曾受到一次广播讨论的启发,提出了一个引人入胜的问题:东方著名征服者成吉思汗和西方卓越的科学家艾萨克·牛顿之间有什么联系? 【更多阅读:图数据库知识点2 | 图思维方式 / / 专访 | Ultipa 孙宇熙:从成吉思汗到牛顿再到图数据库】
ChatGPT 无法回答这个问题,因为“两者在历史上存在的时间和地理位置相隔很远”。

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

现实世界的许多场景都可以用图[1] 【扩展阅读:文库 | 图数据库基础知识—壹】来建模,包括金融网络、交通网络、供应链网络、社交网络、生物网络和各种知识图谱等。图因其互相连接、可追溯和明确的表示方式而久负盛名。许多问题其实都可以视为图的问题:
-
如何监控证券公司的交易和代理行为,避免因监管机构处罚使客户和股东遭受损失?
-
根据客户的帐户状况,哪种投资选项适合他们?
-
现有一系列光源,如何铺设电力传输线最为经济?
-
基于与我有类似观影行为的用户,有哪些电影推荐给我?
-
最近发生在缅甸的罢工将如何影响我们在伦敦的生产线?
-
如何在一片广阔的水域中放置传感器,才能及时检测到污染物?
-
如何根据蛋白质之间相互作用的强度将它们进行分组研究?
这些分析和算法问题都超越了基于的文本查询或生成。虽然目前大模型在很多领域表现出色,但它们连面对基本的数学问题时都经常遇到困难,比如下面的最短路径问题。


我们要认识到,大模型原本并不是为了这些类型的任务而设计的。然而,在为业务目的构建智能系统时,解决这类问题的能力往往是不可或缺的。
04 融合方案:大模型+图技术
许多研究人员已经认识到大模型和图技术之间固有的互补性。通过结合大模型的文本理解能力和图的结构化推理能力,能够整体增强AI系统的功能性、智能性和可解释性。
下面,我们将讨论Ultipa嬴图已经实现的两个应用,以展现大模型和图之间的相互增强关系。
使用大模型构建图
将结构化数据,例如表格数据,转化为图的过程相对简单。通过设计适当的图模型(包括节点和边的类型和属性),就可以进行明确地映射和数据迁移。
然而,从非结构化的文本数据创建图则是一项复杂的任务,一般需要先进的自然语言处理技术协助,如命名实体识别、关系提取和语义解析等。但这些方法可能需要大量的规则或监督训练,性能也取决于训练数据的质量和数量。
大模型在处理大规模非结构化文本数据中的实体发现、指代消解和关系提取方面表现出色,它们为自动化快速地构建图提供了令人兴奋的可能性,见下图。
Graph Extractor是专为从用户输入文本中提取实体和关系信息并直接可视化为图而设计的插件,见下图。
我们输入了一篇关于联觉(Synesthesia)和自闭症(Autism)之间遗传联系的文章——《A Genetic Link Between Synesthesia And Autism Has Just Been Revealed》[2] 来测试它的性能。在检查结果时我们发现,大模型提取的信息大部分都是准确的,然而整个图尽管不大,却存在7个连通分量,这可能导致信息流断裂。例如,核心的发现“(联觉) - [共享遗传根源] -> (自闭症)”与相关的研究“(研究人员) - [检查] -> (2,131对双胞胎)”是隔离开的。
为了解决这个问题,或许我们可以对大模型进行一些标准实体和关系类型的微调或指导。例如,(@发现) - [@包含] -> (@现象),和(@研究) - [@支持] -> (@发现)。这种方法可以改善图的整体结构和可读性,确保相关信息得到适当的连接和呈现。

“图”上 问 答
图上问答旨在基于存储在图中的结构化事实来查找自然语言问题的答案。大模型能够充当自然语言问题与图数据之间的桥梁。
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:大语言模型与图数据库技术的协同
前言 2022年11月以来,大语言模型席卷全球,在自然语言任务中表现卓越。尽管存在一系列伦理、安全等方面的担心,但各界对该技术的热情和关注并未减弱。 本文不谈智能伦理方面的问题,仅集中于Ulitpa嬴图在应用中的一些探索与实践&a…...

微信小程序下载文件和转发文件给好友总结
这段时间公司让我负责小程序的一些功能开发,回想上次开发小程序还是在上一次,这次开发小程序主要实现的功能就是转发文件给好友和下载文件,总结一下这次遇到的各种问题和解决方法。 下载文件 首先正常下载 wx.downloadFile({url: https://img.haihaina.cn/月度支出表.xls,…...

一文掌握 Apache SkyWalking
Apache SkyWalking SkyWalking是一个开源可观测平台,用于收集、分析、聚合和可视化来自服务和云原生基础设施的数据。SkyWalking 提供了一种简单的方法来保持分布式系统的清晰视图,甚至跨云。它是一种现代APM,专为云原生、基于容器的分布式系…...

外贸网站优化常用流程和一些常识
外贸网站google排名,总以为是单个网页标签的优化过程。 显然,这些观点都是错误的,九凌网络是做谷歌优化服务,九凌网络跟大家分享外贸网站Google优化常用流程和一些常识需要做以下几个步骤: 第一步:网站诊断࿰…...

Hive的时间操作函数
目录 前言函数使用介绍实际使用判断该天是星期几判断该天对应的周(包含一周开始和结束) 前言 hive 里面的时间函数有很多,今天单讲dayofweek函数,背景:有时候不仅要出日报,还要出周报,需要很多…...

【Web安全】CORS跨域资源共享漏洞
文章目录 前言一、漏洞概述二、漏洞原理三、CORS响应头类型四、漏洞挖掘五、修复建议前言 本篇文章主要介绍CORS跨域漏洞产生的原理,漏洞复现过程,挖掘手段以及如何进行修复,文章难免会有失误,烦请留下宝贵建议,谢谢! 一、漏洞概述 跨域资源共享(CORS)是一种浏览器机制…...

IntelliJ IDEA 如何修改默认Maven仓库地址
在使用idea过程中,每次新建项目或者打开项目时,maven仓库地址都会变为默认地址。如何修改默认地址,让其保持不变,如下这种方式可以简单快捷的设置。 1.打开idea,取消项目自动加载 2.点击 Customize,然后再点击 All se…...

Vue3 <script setup>是什么?作用?
结论先行: <script setup> 是 Vue3 的语法糖,简化了组合式 API 的写法,实现了 “顶层的绑定”。例如: ① 声明的属性和方法无需 return,就可以直接在模板使用; ② 引入组件的时候,会自…...

2.9 CSS 响应式布局
1.媒体:media 媒体类型: all:检测所有设备。screen:检测电子屏幕,包括:电脑屏幕、平板屏幕、手机屏幕等。print:检测打印机 媒体特性: width:检测视口宽度。max-width:…...

vue使用websocket与springboot通信
WebSocket是HTML5下一种新的协议,它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的 在很多项目中,都要用到websocket,使得前端页面与后端页进行实时通信,例如,实时查询…...

ChatGPT 实际上是如何工作的?
添加图片注释,不超过 140 字(可选) ChatGPT 操作的两个主要阶段 我们再用谷歌来打个比方。当你要求谷歌查找某些内容时,你可能知道它不会——在你提出要求的那一刻——出去搜索整个网络来寻找答案。相反,谷歌会在其数…...

【SSD1306 OLED屏幕测试程序 (开源)orangepi zero2 全志H616 】.md updata: 23/11/07
orangepi zero2 H616 SSD1306 OLED屏幕测试程序 orangepi zero2 配置wiringpi 库后,突发奇想构建一个测试oled屏幕的程序,放一个蜗牛每次移动一个像素点,实时显示蜗牛的步数,后面要显示其他内容在此代码上修改即可,如…...

【python VS vba】(5) 在python中使用xlwt操作Excel(待完善ing)
目录 1 什么是xlwt 2 导入xlwt 3 相关语法 3.1 创建新的workbook 3.2 创建新的sheet 3.3 保存workbook 4 python里表格的形式 4.1 矩阵 4.2 EXCEL的数据形式 完全等于矩阵的数字结构 4.3 python里矩阵 5 具体代码 5.1 代码 5.2 结果 5.3 要注意的问题 5.3.1 不能…...

【Redis】Redis整合SSMRedis注解式缓存Redis中的缓存穿透、雪崩、击穿的原因以及解决方案(详解)
目录: 目录 一,SSM整合redis 二,redis注解式缓存 三,Redis中的缓存穿透、雪崩、击穿的原因以及解决方案(附图) 一,SSM整合redis 1.原因: 整合SSM和Redis可以提升系统的性能、可…...

Linux文件系统的功能规划
对于运行的进程来说,内存就像一个纸箱子,仅仅是一个暂存数据的地方,而且空间有限。如果我们想要进程结束之后,数据依然能够保存下来,就不能只保存在内存里,而是应该保存在外部存储中。就像图书馆这种地方&a…...

入门 SpringCloudStream 之 RocketMq 实践全集
本文概览: 组件介绍工作流程文本消息自定义信道多主题文本消息自定义信道标签过滤获取头信息定向的异常处理与全局异常处理顺序消息 全局顺序消息局部顺序消息 事务消息 当在选取队列组件的时候,通常要结合实际情况,大数据场景Kafka可能是理…...

论文阅读:Ensemble Knowledge Transfer for Semantic Segmentation
论文地址:https://ieeexplore.ieee.org/document/8354272 项目及数据地址:https://github.com/ishann/aeroscapes 发表时间:2018年5月7日 语义分割网络通常以严格监督的方式学习,即它们在相似的数据分布上进行训练和测试。在域转…...

定义函数(简单介绍)-def
定义 函数使用关键字 def,后跟函数名与括号内的形参列表。 函数语句从下一行开始,并且必须缩进。 # 定义一个函数,不包含任何操作或返回值 通常用于占位或作为将来扩展用 def do_nothing():pass def greet(name):#定义一个打招呼的函数retu…...

Mac VsCode g++编译报错:不支持C++11语法解决
编译运行时报错: [Running] cd “/Users/yiran/Documents/vs_projects/c/” && g 1116.cpp -o 1116 && "/Users/yiran/Documents/vs_projects/c/"1116 1116.cpp:28:22: warning: range-based for loop is a C11 extension [-Wc11-extensi…...

react_12
在异步操作里为状态属性赋值,需要放在 runInAction 里,否则会有警告错误 使用 store,所有使用 store 的组件,为了感知状态数据的变化,需要用 observer 包装,对应着图中 reactions import { Input } from …...

Android Mvp案例解析
目录 后端数据接口数据格式 App客户端布局逻辑主界面布局 M(Model)V(View)P(Presenter)OkhttpRetrofitRxJava网络http请求 Mvp架构-初学者MVP架构的契约者 后端数据接口 接口地址:https://apis.…...

vue的双向绑定的原理,和angular的对比
目录 前言 Vue的双向绑定用法 代码 Vue的双向绑定原理 Angular的双向绑定用法 代码 Angular的双向绑定原理 理解 效率: 虽然Vue和Angular的双向绑定原理不同,但它们都致力于提供高效的数据更新机制。但是,由于Vue使用的是数据劫持,其…...

平衡树相关笔记
引入 二叉查找树 二叉查找树(Binary Search Tree),又名二叉搜索树。满足以下性质: 对于非空的左子树,左子树点权值小于根节点。对于非空的右子树,左子树点权值大于根节点。二叉查找树的左右子树均是二叉…...

ASP.net C# 用Aspose.pdf实现pdf合并
直接上代码,供参考,备忘! using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.SqlClient; using System.Xml; using System…...

C语言实现原码一位除
具体代码如下,直接运行即可。 #include <stdio.h> int main() {int i, a 0, b 0, c 0, flag 3; // flag相当于指针来指明Q的位置char x[6], y[6];int R[6], Q[6], yb[6], y1[6]; // yb是-y的补码,y1为绝对值yprintf("请输入X(带一位符号位四位数值位…...

three.js点滴yan(整理后)
场景、相机和渲染器 Three.js整个系统主要包含场景Scene、相机Camera和WebGL渲染器WebGLRenderer三大块,其中场景又包含模型和光源。WebGL渲染器的主要作用就是把相机对应场景渲染出来,显示在网页Cnavas画布上。 Three.js源码 Three.js各个构造函数对应…...

VMware安装CentOS最小化开发环境导引
目录 一、概要 二、介绍 三、下载 四、安装 4.1 创建虚拟机 4.2 安装CentOS 五、配置网卡 六、配置本地安装源 七、安装软件 7.1 gcc/g 7.2 C的atomic库 7.3 java 7.4 Cmake 7.5 MariaDB客户端(兼容mysql) 八、用户配置文件.bash_profile…...

服务器端编程/数据库驱动程序/RESTful API:介绍
目录 服务器端编程数据库驱动程序RESTful API 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! 服务器端编程 服务器端编程是一种计…...

Qwt QwtThermo绘制温度计
1.简介 QwtThermo 是一个基于 Qt 框架的类库,用于创建温度计控件。它提供了一些方便的功能来展示和处理温度计相关的数据。 QwtThermo 添加了特定于温度计的功能。 使用 QwtThermo,可以实现以下功能: 设置温度范围:可以通过设置…...

U_boot介绍
系统移植之前的了解的: 首先需要移植一个 bootloader 代码,这个 bootloader 代码用于启动 Linux 内核,bootloader 有很多,常用的就是 U-Boot;移植好 U-Boot 以后再移植 Linux 内核,移植完 Linux 内核以后 Linux 还不能…...