大模型外挂图数据库

简介: 解决机器幻觉问题,可以将知识库的内容分段,然后向量化存入向量数据库。

前言

大模型有个很严重的问题就是在面对其不知道的问题时,会“胡说八道”(机器幻觉),并且它不知道自己在“胡说八道”。就算是最强大GPT4模型也没能彻底解决这个问题,只能说模型越强大,出现“胡说八道”的情况越少。目前比较主流的做法是外挂向量数据库。

大致流程如下所示:就是将知识库的内容分段,然后向量化存入向量数据库。当有用户提出一个问题是,也对用户提出的问题进行向量化,然后通过向量相似度从向量数据库中召回出和用户问题相关的内容片段。最后,设计一些prompt,让大模型同时根据用户的问题和召回的内容对用户给出答案,大模型有了额外知识的输入,能大大缓解“胡说八道“的问题。但是实际应用的时候,效果有时候并不是很好,因为通过向量召回的内容有时候和用户的输入并不是很相关,尤其是在非对称检索的时候,简单来说就是文本向量化模型很难将问题和答案映射到同一向量空间,它更擅长的是将两句字面意思差不多的句子映射到同一向量空间。本文接下来介绍的通过图数据的为大模型提供额外知识的方式会比利用向量数据的方式复杂一些,但是效果应该会更好。

大模型外挂图数据库的pipeline如下图所示,主要分为3部分。第一部分表示用户和一个chatbot进行语言交互。chatbot可能需要一些额外的知识来回答用户的问题,需要从图数据库中获取。如果想从图数据库中提取数据,需要用到图查询语言,比如cypher。可以利用市面上比较强的大模型的few shot learning的能力,根据用户的问题生成相关的图查询语句,然后去图数据库中提取相关数据,chatbot根据查询回来的数据以及用户问题,给用户回复答案。至于将文本数据转换为图数据,我们可以通过搭建一个涉及到实体识别、关系抽取等多个环节的NLP pipeline或者利用chatgpt将外挂的文档进行图结构化。

文本数据图结构化

因为chatbot需要根据用户问题从图数据库中查询到相关文本信息,所以我们需要将文本信息先转化为图数据,然后存入到图数据库中。图数据由两个元素构成:结点和边。每个结点表示一个实体,连接两个结点的边表示两个实体之间的关系。举个例子,如下图,有个句子是“I am so happy that John Snow worked at NASA”,句子中的两个实体是John Snow和NASA,通过图结构化转化两个结点,而John Snow和NASA属于“被雇佣”关系,所以图中这两个结点有边连接。至此,文本数据图结构化的问题转换为如何抽取文本中的实体以及关系。

对于GPT3、ChatGPT等大模型来说,有很好的few shot learning能力。我们能否借助ChatGPT,通过设计一些prompt,让ChatGPT帮忙将自然语言进行图结构化呢?接下来举个例子:

上图是chatgpt从文本中抽取信息的结果,chatgpt也成功的从句子中抽取到了boris和“英国”的关系了,同时也能够识别出he指的是上文的Boris,但是chatgpt没能用同一个标识表示“英国”,而是仅从字面上分别用UK和United Kingdom表示“英国”这个词,也就是说,chatgpt并不能很好的进行“实体统一”。一种解决方式是利用维基百科的python接口,将表示同一个意思的多个单词映射到一个相同的id上,如UK和United Kingdom都会被映射到“Q145”这个id上。

chatgpt等大模型虽然很强大,但是在特定任务上未必比专用模型强,在上面例子中,chatgpt也未能自动完成“实体统一”。自然语言处理领域有专门用来做实体抽取、关系抽取等任务的模型,我们其实也可以搭建一个包含多个环节的pipeline,每个环节分别用一个专用模型或策略,将自然语言更好的进行图结构化。一种可能的pipeline如下所示:

1.指代消解:句子中往往会存在“你我他”这样的代词,需要将这些代词替换为句子中真实的所指的词。比如有个句子是“王翠花穿了裙子,她很漂亮”,可以转化为“王翠花穿了裙子,王翠花很漂亮”。这样处理可以方便后续做实体识别。可以直接使用的pyhton包有neuralcoref等。

2.实体识别:图上的每个节点代表自然语言中的一个实体,因此需要用算法识别出句子中有哪些实体,可以用的模型有BLINK模型等。

3.实体统一:很多时候,不同的名称的实体可能代表同一个东西,比如西红柿和番茄,所以需要把二者用相同的标实表示,将有相同意思的不同单词映射到一个id。有一些模型在实体识别之后可以自动将实体映射到wiki的id,比如BLINK模型,那么pipeline中就可以跳过这步啦。

4.关系提取:图上的结点(实体)需要用边连接,边表示两个实体之间的关系,实体之间的关系也需要从自然语言中推断出来,当然也有专门用来做关系提取的深度学习模型,可用的项目或模型有OpenNRE,CasRel等。

5.实体-关系入库:得到各个实体及其他们之间的关系之后,可以存入neo4j或图数据库。写入neo4j可以使用cypher语句实现,下面是创建Alice和Bob两个结点,他们之间时FRIEND关系:

CREATE (:Person {name: 'Alice', age: 30})-[:FRIEND]->(:Person {name: 'Bob', age: 35})

在实际应用中,我们也可以把文字出自哪篇文章也写成结点(结点包含文章标题,存储地址等),方便我们根据cpyher查询语句找出实体对应的文章全文,然后供chatbot当做输入内容使用。实体之间的真实关系也可以在neo4j数据库中用结点表示,方便存储一些额外的信息,如下图所示:


如果不想做上述图结构化的pipeline,也可以用diffbot这个网站接口,它能直接将自然语言进行图结构化,提供实体识别,实体统一,关系抽取等一条龙服务。

图查询语句生成

我们知道,大模型有很好的few shot learning能力,比如我们想让大模型做语言翻译,先给他几个翻译的例子,能够帮助你更好的完成翻译任务。那么同样的道理,我们这里的目标是想让大模型帮我们把自然语言转换成用于图查询到cypher语句,那么也可以给他几个例子,然后让它帮我们完成转换,下图展示了利用chatgpt进行生成cypher语句的例子。因为Chatgpt是经过”对齐“的对话模型,而不是”续写“模型,所以还需要加上如图中红框中的指令才能进行转换。其实Chatgpt已经足够强大了,即使不给他一些例子,直接让它做自然语言到cypher语句的转换他也能做到,但是如果用一些比较弱(或者是没有经过指令微调)的模型(比如博客原文中使用的gpt3),在输入中加入一些例子还是很有必要的。

小结

利用向量检索的方式帮助大模型检索和用户问题相关的知识可以理解为是一种在向量空间下的模糊检索,而利用图数据库及其查询语句则可以找出非常精确的信息。但是检索效果也会受到图结构化和图查询语句生成质量的影响,尤其是图查询语句的生成,还是比较有难度,如果有计算资源且有数据的话,专门微调一个根据自然语言生成cypher语句的大模型是个比较好的选择。


免费体验阿里云高性能向量检索服务https://www.aliyun.com/product/ai/dashvector

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
4月前
|
存储 人工智能 算法
大模型,向量数据库,prompt的关系是什么?
详细了解大模型,向量数据库,prompt三者之间的关系
|
8月前
|
人工智能 关系型数据库 分布式数据库
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
本文将带领大家来体验一下如何将“千问大模型+文本向量化模型”植入到PG|PolarDB中, 让数据库具备AI能力.
23593 18
沉浸式学习PostgreSQL|PolarDB 16: 植入通义千问大模型+文本向量化模型, 让数据库具备AI能力
|
2月前
|
存储 机器学习/深度学习 自然语言处理
社区供稿 | Yuan2.0大模型,联合向量数据库和Llama-index,助力检索增强生成技术
本文将以Yuan2.0最新发布的Februa模型为例进行测试验证,用更小规模的模型达到更好的效果。
|
3月前
|
存储 人工智能 搜索推荐
大模型时代,为什么要懂向量数据库?
大模型时代,为什么要懂向量数据库?
大模型时代,为什么要懂向量数据库?
|
3月前
|
SQL 自然语言处理 数据管理
观点 | 大模型与数据库
本文初步将探讨大模型为数据库带来的机遇,以及数据库为大模型带来的价值,并展望了未来数据库与大模型的发展趋势。
观点 | 大模型与数据库
|
4月前
|
存储 数据管理 数据库
|
4月前
|
存储 机器学习/深度学习 人工智能
|
4月前
|
机器学习/深度学习 人工智能 Kubernetes
如何拥抱大模型时代?向量数据库公司 Zilliz 从挖掘海量数据规律谈起
极客公园创新大会 2024 在北京闭幕。百度李彦宏、美国国家工程院院士张宏江、Google DeepMind 卢一峰、百川智能王小川、小鹏汽车何小鹏、向量数据库公司 Zilliz 栾小凡、钉钉叶军等 16 位创新者先后登台。
|
8月前
|
SQL 存储 人工智能
大模型与数据库:AI 时代的双向助推力
随着 AIGC 的时代到来,以 GPT 为首的大型语言模型(Large Language Model,LLM)已经成为当今人工智能领域最热门的话题之一。这些强大的模型不仅在内容创意生成、语言翻译和代码辅助等任务中表现出色,还对数据库的发展带来了革命性的影响。
419 0
|
12天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
47 2