利用AI大模型,将任何文本语料转化为知识图谱,可本地运行!

几个月前,基于知识的问答(KBQA)还是一个新奇事物。

现在,对于任何 AI 爱好者来说,带检索增强生成(RAG)的 KBQA 就像小菜一碟。看到自然语言处理(NLP)的可能性领域由于大型语言模型(LLMs)的发展而如此迅速扩展,真是令人着迷。

而且,它每天都在变得更好。

01 摘 要

知识图谱(KG)或任何图谱由节点和边组成。知识图谱的每个节点代表一个概念,每条边是这样一对概念之间的关系。

在这篇文章中,我将分享一种将任何文本语料库转换成概念图的方法。我在这里将“概念图”(GC)一词与知识图谱这个术语交替使用,以更好地描述我在这里演示的内容。

我在这个实现中使用的所有组件都可以在本地设置,因此这个项目可以轻松地在个人机器上运行。我在这里采用了无 GPT 方法,因为我相信较小的开源模型。

我正在使用出色的 Mistral 7B Openorca instruct 和 Zephyr 模型。这些模型可以通过 Ollama 在本地设置。

(编者注:Mistral 7B 是一个基于 GPT 架构的大型语言模型,专门优化以理解和执行用户指令,适用于多种自然语言处理任务)

像 Neo4j 这样的数据库使得存储和检索图形数据变得容易。在这里,我使用内存中的 Pandas 数据框和 NetworkX Python 库,以保持简单。

我们的目标是将任何文本语料库转换成概念图(GC)并像本文的精美横幅图像一样进行可视化。我们甚至将通过移动节点和边缘、放大和缩小以及改变图的物理特性来与网络图进行交互,以满足我们的心愿。

这是 Github 页面链接,展示了我们正在构建的结果:

https://rahulnyk.github.io/knowledge_graph/

但首先,让我们深入了解知识图谱的基本概念以及我们为什么需要它们。如果你已经熟悉这个概念,请跳过下一节。

02 知识图谱

考虑以下文本:

玛丽有一只小羊羔,
你以前听说过这个故事;
但你知道她传递了她的盘子,
又多吃了一点!

(我希望孩子们没有读到这个😝)

这是将文本表示为知识图谱的一种可能方式。

在这里插入图片描述

本文作者使用 draw.io 创建的图表

IBM 在一篇文章中恰当地解释了知识图谱的基本概念:

知识图谱,也称为语义网络,代表了现实世界实体——即对象、事件、情境或概念——之间的网络,并展示了它们之间的关系。这些信息通常存储在图形数据库中,并以图形结构的形式可视化,因此得名知识“图谱”。

为什么要用知识图谱?

知识图谱在多种方式上都很有用。我们可以运行图算法并计算任何节点的中心性,以了解一个概念(节点)对于整个作品的重要性。

我们可以分析概念的连接集和断开集,或计算概念社区以深入理解主题。我们可以理解看似不相关概念之间的联系。

我们还可以使用知识图谱来实现图形检索增强生成(GRAG 或 GAG),并与我们的文档进行聊天。

这可以给我们带来比老旧版本的 RAG 更好的结果,后者有几个缺点。例如,仅使用简单的语义相似性搜索来检索与查询最相关的上下文并不总是有效的。

特别是当查询没有提供足够的上下文来说明其真实意图,或者当上下文跨越大量文本片段时。

例如,考虑这个查询——

“告诉我《百年孤独》书中关于 José Arcadio Buendía 家族史的信息。”

这本书记录了 7 代人的家族史,其中一半的角色都叫。如果使用简单的 RAG 管道,即使可能,回答这个查询也将是相当的挑战。

RAG 的另一个缺点是它不能告诉你该问什么。很多时候,提出正确的问题比得到答案更重要。

图形增强生成(GAG)可以在一定程度上解决 RAG 的这些缺点。更好的是,我们可以混合搭配,构建一个图形增强检索增强生成管道,以获得两全其美的效果。

所以现在我们知道图形很有趣,它们可以非常有用,它们看起来也很美。

03 创建概念图

如果你问 GPT 如何从给定文本创建知识图谱?它可能会建议如下过程:

  1. 从作品中提取概念和实体。这些是节点。
  2. 提取概念之间的关系。这些是边。
  3. 在图形数据结构或图形数据库中填充节点(概念)和边(关系)。
  4. 可视化,至少是为了视觉上的满足感。

第 3 步和第 4 步听起来可以理解。但你如何实现第 1 步和第 2 步?

这是我设计的从任何给定文本语料库中提取概念图的方法流程图。它类似于上述方法,但有一些小的不同:

  1. 将文本语料库分割成块。为每个块分配一个 chunk_id。
  2. 对于每个文本块,使用 LLM 提取概念及其语义关系。我们给这种关系分配一个 W1 的权重。同一对概念之间可以有多重关系。每一种关系都是一对概念之间的边。
  3. 考虑在同一文本块中出现的概念,也通过它们的上下文邻近性相关联。让我们为这种关系分配一个 W2 的权重。请注意,同一对概念可能出现在多个块中。
  4. 将相似的对分组,合计它们的权重,并连接它们的关系。因此,现在我们在任何不同的概念对之间只有一条边。这条边具有一定的权重,并带有一系列关系作为其名称。

如下图所示:

在这里插入图片描述

本文作者使用 draw.io 创建的图表 / 活水智能 编译

你可以在本文分享的 GitHub 仓库中,查看 Python 代码。

让我们在接下来的几节中简要介绍实现的关键方法。

为了在这里演示该方法,我使用了在 PubMed/Cureus 上发表的文章(编者注:文章见文末),文章遵循 CC BY 版权使用协议。

Mistral 及提示词

上述流程图的第 1 步很简单。Langchain 提供了大量的文本分割器,我们可以使用它们将文本分割成块。

第 2 步是真正有趣的开始。为了提取概念及其关系,我使用了 Mistral 7B 模型。在确定最适合我们目的的模型变体之前,我尝试了以下几种:

Mistral Instruct

Mistral OpenOrca

Zephyr(从 Mistral 衍生的 Hugging Face 版本)

我使用了这些模型的 4 位量化版本——这样我的 Mac 就不会开始讨厌我了——通过 Ollama 在本地托管。

这些模型都是经过指令调整的模型,带有系统提示和用户提示。如果我们告诉它们,它们都能很好地遵循指令,并整齐地以 JSON 格式格式化答案。

经过几轮尝试和错误后,我最终选择了 Zephyr模型 和以下提示:

在这里插入图片描述

如果我们用这个提示传递我们的(不适合)童谣,这是结果。
在这里插入图片描述

注意,它甚至猜到了“食物”作为一个概念,这在文本块中并没有明确提到。这不是很棒吗!

如果我们将这个过程应用于我们示例文章的每个文本块,并将 json 转换为 Pandas 数据框,这是它的样子。

在这里插入图片描述

这里的每一行代表一对概念之间的关系。每行是我们图中两个节点之间的一条边,同一对概念之间可以有多条边或关系。

上述数据框中的计数是我任意设置为 4 的权重。

上下文邻近性

我假设在文本语料库中彼此靠近出现的概念是相关的。我们称这种关系为“上下文邻近性”。

为了计算上下文邻近性边缘,我们将数据框融化,使得 node_1 和 node_2 合并成一个列。

然后我们使用 chunk_id 作为键对这个数据框进行自连接。因此,具有相同 chunk_id 的节点将彼此配对,形成一行。

但这也意味着每个概念也会与自己配对。这称为自环,其中边缘起始和结束于同一个节点。为了移除这些自环,我们将从数据框中删除 node_1 与 node_2 相同的每一行。

最终,我们得到一个与原始数据框非常相似的数据框。

图片

这里的 count 列是 node_1 和 node_2 一起出现的块数。列 chunk_id 是所有这些块的列表。

所以我们现在有两个数据框,一个带有语义关系,另一个带有文本中提到的概念之间的上下文邻近性关系。我们可以将它们结合起来形成我们的网络图数据框。

我们已经完成了为我们的文本构建概念图的工作。但在这一点上就结束将是一项相当不令人满意的练习。

我们的目标是像本文开头的特色图像一样可视化图表,而我们离目标不远了。

04 创建概念网络

NetworkX 是一个使处理图变得非常容易的 Python 库。

如果你还不熟悉这个库,请点击链接了解更多:https://networkx.org/?source

将我们的数据框添加到 NetworkX 图中只需要几行代码:

在这里插入图片描述

这是我们可以开始利用网络图的力量的地方。NetworkX 为我们提供了大量现成的网络算法供我们使用。

这是我们可以在图上运行的算法列表的链接:https://networkx.org/documentation/stable/reference/algorithms/index.html

在这里,我使用社区检测算法为节点添加颜色。社区是一组节点,它们彼此之间的连接比与图的其余部分更紧密。概念社区(Communities of concepts)可以让我们很好地了解文本中讨论的广泛主题。

Girvan Newman 算法在我们正在处理的审查文章中,检测到了 17 个概念社区。这是其中一个概念社区。

在这里插入图片描述

这立即让我们了解到审查论文中讨论的健康技术的广泛主题,并使我们能够提出问题,然后我们可以用我们的 RAG 管道来回答。这不是很棒吗?

让我们也计算图中每个概念的度数。节点的度数是它连接的边的总数。所以在我们的案例中,概念的度数越高,它对我们文本的主题就越中心。我们将在可视化中使用度数作为节点的大小。

05 图形可视化

可视化是这个练习中最有趣的部分。它有一种特质,能给你带来艺术上的满足感。

我使用 PiVis 库来创建交互式图表。Pyvis 是一个用于可视化网络的 Python 库。

Pyvis 内置了一个 NetworkX 助手,可以将我们的 NetworkX 图转换为 PyVis 对象。所以我们不需要更多的编码……耶!!

记住,我们已经计算了每条边的权重(边的粗细),节点的社区(颜色),以及每个节点的度(大小)。

复制链接打开,即可看到交互式知识图谱:https://rahulnyk.github.io/knowledge_graph/

我们可以随意放大和缩小,移动节点和边缘。页面底部还有一个滑块面板,可以改变图的物理特性。看看图表如何帮助我们提出正确的问题,更好地理解主题内容!

我们可以进一步讨论我们的图如何帮助我们构建图形增强检索,以及这如何帮助我们构建更好的 RAG 管道。但我认为最好留到另一天。

我们已经实现了本文的目标!■

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/26330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CP AUTOSAR标准中文文档链接索引(更新中)

AUTOSAR标准的核心组件包括通信、诊断、安全等,这些组件通过模块化结构进行组织。系统被划分为多个模块,每个模块负责特定的功能。模块之间通过接口进行通信,接口定义了模块之间的交互规则。AUTOSAR标准支持模块的配置,可以根据不…

基于BP神经网络对鸢尾花数据集分类

目录 1. 作者介绍2. 关于理论方面的知识介绍2.1 BP神经网络原理2.2 BP神经网络结构 3. 关于实验过程的介绍,完整实验代码,测试结果3.1 鸢尾花数据集介绍3.2 代码演示3.3 结果演示 4. 问题与分析 1. 作者介绍 侯硕,男,西安工程大学…

【动态规划算法题记录】70. 爬楼梯——递归/动态规划

题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 题目分析 递归法(超出时间限制) 递归参数与返回值 void reversal(int i, int k) 每次我们处理第i个台阶到第k个…

白酒:茅台镇白酒的品牌故事与传奇色彩

茅台镇,这个位于中国贵州省遵义市仁怀市的小镇,因为出产的白酒品质卓着,被誉为“世界名酒之乡”。在这片神奇的土地上,云仓酒庄以其豪迈白酒,书写了一段段品牌故事与传奇色彩。 云仓酒庄豪迈,酿造于茅台镇的…

Vue23-过滤器

一、效果图 二、好用的时间戳三方工具 该三方工具比较大 推荐使用 dayjs的用法: 三、过滤器的使用 3-1、计算属性实现 3-2、methods函数实现 3-3、过滤器filters属性实现 过滤器的本质就是函数!!! 1、过滤器-未传参 默认将管道…

TIM—通用定时器高级定时器

通用/高级定时器的功能 在基本定时器功能的基础上新增功能: 通用定时器有4个独立通道,且每个通道都可以用于下面功能。 (1)输入捕获:测量输入信号的周期和占空比等。 (2)输出比较:产…

自动化办公03 用xlrd和xlwt库操作excel.xls文件(老版本)

目录 一、读操作 二、写操作 三、设置单元格格式 0.综合案例 1.设置行高和列宽 2.设置字体样式 3.设置边框样式 4.设置对齐方式 5.设置背景颜色 6.合并单元格 四、 xlutils修改Excel⽂件内容 1.安装 2.使用 一、读操作 import xlrd# 1. 打开excel文件 wb xlrd.op…

Flarum 安装和使用教程

随着开源社区的日益繁荣,人们对社区品质的要求也越来越高。传统的 BBS 论坛模式已经难以满足现代用户对美观、便捷、互动性的需求。搭建一个现代化的高品质社区,成为许多网站管理者的迫切需求和共同挑战。 今天就给大家安利一款现代化的、优雅的开源论坛…

立创·天空星开发板-GD32F407VE-Timer

本文以 立创天空星开发板-GD32F407VET6-青春版 作为学习的板子,记录学习笔记。 立创天空星开发板-GD32F407VE-Timer 定时器基本定时器示例 定时器 定时器是嵌入式系统中常用的一种外设,它可以产生一定的时间间隔、延时、定时等功能,广泛应用于…

网络安全等级保护基本要求 第1部分:安全通用要求

基本要求 第三级 安全物理环境 物理位置选择 a) 机房场地应选择在具有防震、防风和防雨等能力的建筑内; b) 机房场地应避免设在建筑物的顶层或地下室,否则应加强防水和防潮措施 物理访问控制 a) 机房出入口应配置电子门禁系统,控制、鉴…

Java项目:100 springboot共享汽车管理系统

作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本共享汽车管理系统有管理员和用户。 管理员功能有个人中心,用户管理,投放地区管理,汽车信息管理,汽车…

用 KV 缓存量化解锁长文本生成

很高兴和大家分享 Hugging Face 的一项新功能: KV 缓存量化 ,它能够把你的语言模型的速度提升到一个新水平。 太长不看版: KV 缓存量化可在最小化对生成质量的影响的条件下,减少 LLM 在长文本生成场景下的内存使用量,从而在内存效率和生成速度…

基于STM32和人工智能的智能交通管理系统

目录 引言环境准备智能交通管理系统基础代码实现:实现智能交通管理系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景:智能交通管理与优化问题解决方案与优化收尾与总结 1. 引言 随着城市化进程的加快&#xff0…

算法第六天:力扣第977题有序数组的平方

一、977.有序数组的平方的链接与题目描述 977. 有序数组的平方的链接如下所示:https://leetcode.cn/problems/squares-of-a-sorted-array/description/https://leetcode.cn/problems/squares-of-a-sorted-array/description/ 给你一个按 非递减顺序 排序的整数数组…

【C++】STL中stack和queue(适配器版)的模拟实现

前言:在此之前我们讲到了stack和queue还有deque的常见的使用方法,并且也在数据结构的时候用C语言去实现过栈和队列,今天我们将进一步的用C去模拟实现stack和queue 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 …

vue 之 vuex

目录 vuex 是什么 Vuex管理哪些状态呢? Vuex 页面刷新数据丢失怎么解决 1. 使用浏览器的本地存储 2. 使用 Vuex 持久化插件 3. 使用后端存储 注意事项 Vuex 为什么要分模块并且加命名空间 vuex 是什么 vuex 是专门为 vue 提供的全局状态管理系统&#xff0c…

【应用案例】如何解决无人驾驶车辆的动力转向问题

埃尔朗根-纽伦堡大学名称为高能赛车运动队(High-Octane Motorsports e.V.)的学生方程式车队都设计、构建和制造具有创新意义且独特的赛车。然后,他们将参加三种不同类别的大学生方程式比赛;该项赛事中的参赛队伍来自于世界各地。 电动、无人驾驶和燃油车…

Windows 11 24H2版首发体验!附详细更新升级安装教程

Windows 11 24H2 版首发体验!这是微软2024年的大版本更新,新增超多新功能,以下会给你细细道来。这个版本目前小编亲测,使用非常流畅,没有什么明显问题。系统是已经集成了VB6/VC2005/VC2008/VC2010/VC2012/VC2013/VC201…

Dorkish:一款针对OSINT和网络侦查任务的Chrome扩展

关于Dorkish Dorkish是一款功能强大的Chrome扩展工具,该工具可以为广大研究人员在执行OSINT和网络侦查任务期间提供强大帮助。 一般来说,广大研究人员在执行网络侦查或进行OSINT信息收集任务过程中,通常会使用到Google Dorking和Shodan&…

2024年高考:计算机相关专业还值得选择吗?

🍎个人博客:个人主页 🏆个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 行业竞争现状 市场饱和与新兴技术的影响 如何保持竞争力 专业与个人的匹配度判断 专业核心课程与技术能力 个人兴趣与职业…