LLM之RAG理论(五)| 使用知识图谱增强RAG

       知识图谱(KG)或任何图都包括节点和边,其中每个节点表示一个概念,每个边表示一对概念之间的关系。本文介绍一种将任何文本语料库转换为知识图谱的技术,本文演示的知识图谱可以替换其他专业知识图谱。

一、知识图谱

       知识图谱表示了任意两个实体之间的关系,在这个结构中,节点表示着诸如人、地点或事件之类的实体,而边表示这些实体之间的连接。知识图谱还包含了第三个元素,通常被称为谓词或边缘标签,它阐明了关系的性质。

       知识图谱就像智能网络一样,显示了现实世界中的事物是如何连接的。它存储在图形数据库中,并可视化为图形结构,形成我们所说的“知识图”。用户可以像实时聊天机器人对话一样使用graph数据进行聊天。

       知识图谱有多种用途。通过应用图算法,我们可以计算任何节点的中心度,从而深入了解一个概念在一系列工作中的重要性。分析连接和断开的概念集,或确定概念群落,可以提供对主题的全面理解。知识图谱使我们能够揭示看似不相关的概念之间的联系。

       此外,知识图谱可以用于图检索增强生成(GRAG或GAG),并促进与文档的对话交互。与具有固有局限性的传统版本的RAG相比,这种方法通常产生优越的结果。例如,依赖简单的语义相似性搜索进行上下文检索可能并不总是有效的,尤其是当查询缺乏足够的上下文时,或者当相关信息分散在庞大的文本语料库中时。

二、高级RAG体系结构

  1. 使用矢量数据库编码文档;

  2. 使用sentence transformer将查询转换为向量;

  3. 基于输入的查询从矢量数据库中检索相关上下文;

  4. 利用查询和检索到的上下文来激发LLM。

三、RAG的局限性

       RAG的一个主要缺点是它很难对复杂而细微差别的查询提供精确的响应。这种限制源于几个因素:

理解用户意图:RAG系统可能很难完全掌握用户查询背后的确切意图,这是向LLM提供准确信息的关键方面。

对矢量嵌入的依赖性:RAG在很大程度上依赖矢量嵌入来解释查询并将其与相关信息匹配。虽然这些嵌入是有效的,但它们并不是万无一失的,有时会导致理解查询上下文的不准确或过于简单化。

黑盒性质:生成和比较矢量嵌入的过程是复杂的,而且往往是不透明的。考虑到嵌入可能具有多个维度,在语义搜索中破译其结构并理解其对相似性得分的影响是一个挑战。

通用训练数据:嵌入模型通常在通用数据集上进行训练,可能会错过某些查询所必需的特定细微差别或上下文。这可能导致在不同的内容片段之间绘制出表面上的相似之处。

四、知识图的类型

百科全书式KGs:这种常见类型通过整合百科全书、数据库和专家见解等不同来源的信息来获取一般知识。例如,Wikidata汇编了维基百科文章中的大量知识,产生了大量多样的KGs,其中包含数百万个实体和多种语言的关系。

常识性KGs:这些KGs专注于日常知识,包含有关对象、事件及其关系的信息。它们有助于理解我们日常生活中使用的基本知识,通常是隐含的知识。例如,ConceptNet包括常识性的概念和关系,帮助计算机更自然地掌握人类语言。

特定领域的KGs:这些KGs针对医学、金融或生物学等特定领域量身定制,体积较小,但高度精确和可靠。例如,医学领域的UMLS包含详细的生物医学概念和关系,以满足专业知识需求。

多模态KGs:超越文本,这些KGs包含图像、声音和视频,用于图像-文本匹配或视觉问答等目的。像IMGpedia和MMKG这样的例子无缝地融合了文本和视觉信息,以实现全面的知识表示。

五、搜索引擎中的用例

       在搜索引擎领域,KGs在提高搜索精度和相关性方面起着关键作用。通过理解KGs中嵌入的关系和上下文,搜索引擎超越了单纯的关键词匹配,深入研究了用户查询背后的意图和深刻意义。这种演变导致搜索结果不仅更直观,而且与上下文相适应,从根本上改变了我们在线获取信息的方式。

六、此应用程序的业务体系结构

      数据来源于各种渠道,包括非结构化数据、平面文件、带有XML或JSON数据库的结构化数据、传统SQL数据库等。通过从这些不同的数据源提取实体和关系来构建知识图谱。与ETL传统方法不同,现在使用生成人工智能自动提取实体和关系,还可以生成Neo4j cipher查询语言。最终将这些元素自动集成到Neo4j数据库中,如下图的左侧所示。

       生成人工智能通过将这些问题转换为数据库查询语言Cipher而发挥作用。对数据库执行查询,获得结果,然后进行另一轮生成人工智能处理,将其转换回自然语言。

       在中间层,图数据库将基于语料库数据生成知识图谱schema,并使用节点和边缘将其生成概念图。当您连接这些节点时,您可以看到节点和边的关系,如下所示。

七、构建知识图

       构建知识图谱有如下四个步骤,但这将根据业务需求和用例场景而有所不同。

  1. 从内容中识别和捕获概念和实体。这些元素表示系统中的节点;

  2. 识别概念之间的关系,形成结构的边缘;

  3. 使用已识别的节点(概念)和边(关系)填充图形数据结构或图形数据库;

  4. 将构建的图形可视化,以获得分析见解和潜在的艺术享受。

      语料库数据流图如下所示,此流将根据您使用的数据库模型而有所不同。例如,如果您使用图形数据库和数据科学数据库,数据将存储在后端系统中。如果你使用内存中的占位符,那么你可以使用Pandas DataFrame等。

     在初始阶段,首先对文本语料库进行分段,每个片段被分配一个唯一的chunk_id。在此之后,使用语言模型(LLM)从每个文本块中提取概念及其语义关系,为这些关系分配W1的权重。需要注意的是,同一对概念之间可能存在多种关系。

      随后,考虑同一文本块内的上下文相关度,从而在概念之间建立权重为W2的附加关系。不同块中相同的概念对也可以建立权重为W2的附加关系。为了简化数据,对相似的对进行分组,它们的权重进行求和,并把它们的关系进行拼接。结果是一个统一的表示,每个不同的概念对都有一条边,并以特定的权重和关系列表作为其标识符。

       现在,让我们对DataFrame的每个文本块运行这个GenAI模型,并将json转换为Pandas DataFrame,如下所示。

        如果您使用的是后端数据库,那么实体如下所示:

       每一行表示一对概念之间的关系,充当连接图中两个节点的边。同一对概念之间可能存在多个边或关系。data frame的count表示权重,任意设置为4。

八、将KG与LLM-RAG集成

       知识图谱(KGs)与大型语言模型(LLM)的集成有望显著增强检索增强生成(RAG)过程,从而改进知识表示和推理。这种协作方法有助于动态知识融合,确保真实世界的知识保持最新,并与文本空间不同。因此,在推理过程中提供的信息仍然是最新的和相关的。

8.1 动态知识融合

       将知识图谱(KG)视为大型语言模型(LLM)可访问的动态数据库,用于查询最新的相关信息。事实证明,这种方法在回答问题等任务中非常有效,在这些任务中,保持最新信息至关重要。这些知识与LLM的集成是通过高级架构实现的,促进了文本标记和KG实体之间的深刻交互。这通过结构化的事实数据丰富了LLM的响应,提高了生成信息的质量。

8.2 KG增强型RAG

       使用知识图谱提升RAG技术包括在知识图谱中搜索相关事实,并将其作为上下文信息呈现给LLM。这种方法能够生成精确、多样和真实的内容。例如,当LLM的任务是对最近的事件做出回应时,它可以在制定回复之前先咨询KG了解最新的事实。

      此外,LLM在制作准确描述KG信息的高质量文本方面发挥了重要作用。这对于产生真实的叙事、对话和故事具有巨大的潜力。无论是通过利用LLM的知识还是构建广泛的KG文本语料库,这一过程都显著增强了KG到文本的生成,特别是在训练数据有限的情况下。

8.3 LLM和KGs推理

       LLM和KGs的协同效应在推理任务中变得尤为明显。使用LLM来解释文本问题并促进对KGs的推理,建立了文本信息和结构信息之间的联系,增强了可解释性和推理能力。这种连贯的方法适用于各个领域,从对话系统中的个性化建议到通过结合领域知识图来加强特定任务的培训程序。

九、图形可视化

       可视化阶段为这项练习增加了一个令人愉快的维度,提供了一种独特的艺术满足感。我们已经确定了影响其大小的边权重,为节点社区指定了颜色,并建立了节点度来确定其大小。

       探索放大和缩小、操作节点和边以及使用页面底部的滑块面板调整图形物理特性的灵活性。看看这个动态图是如何帮助提出有见地的问题并提高对主题的理解的!

10、结论

       当需要混合结构化和非结构化数据来推动RAG应用时,知识图谱被证明是非常有效的。这篇博客文章指导你在graph DB中使用语料库、医学或任何文本上的GenAI函数构建知识图。GenAI/模型功能的输出结构整齐,是提取有组织信息的理想选择。为了在图构建中获得LLM的最佳体验,请详细定义图模式,并在提取后加入实体消歧步骤。希望RAG-KG图支持图增强检索的发展,为整体RAG管道的改进做出贡献。

       将知识图谱(KGs)纳入检索增强生成(RAG)系统具有巨大的潜力。通过利用KGs中结构化和互连的数据,我们可以大大提高现有RAG系统的推理能力。这种强有力的融合有望缓解当前RAG管道中固有的局限性,提供更准确、更具上下文意识和细微差别的响应。

       KGs是LLM可访问的强大信息库,使他们不仅能够检索事实,而且能够理解与这些事实相关的关系和潜在背景。这种理解水平的提高对于人工智能系统的发展至关重要,该系统能够与用户进行更有效的交互,提供不仅相关而且深刻见解的信息。

参考文献:

[1] https://regupathit.medium.com/gen-ai-vilimiai-rag-with-knowledge-graph-8a8a6bdcd222

[2] https://knowledge.vilimin.com/

[3] https://vilimin.com/

[4] https://vilimingpt.com/

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

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

相关文章

2719. 统计整数数目

给你两个数字字符串 num1 和 num2 &#xff0c;以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件&#xff0c;我们称它是一个好整数&#xff1a; num1 < x < num2min_sum < digit_sum(x) < max_sum. 请你返回好整数的数目。答案可能很大&#xff…

【LeetCode:76. 最小覆盖子串 | 滑动窗口】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

帆软报表11.0.19增加postgres数据源方案

项目使用postgres数据库&#xff0c;帆软报表集成开发时需要手工增加该数据源。 https://help.fanruan.com/finereport/doc-view-2563.html 但增加数据源后测试报告无此驱动&#xff0c;经查看文档&#xff0c;现在是通过驱动管理来上传&#xff0c; 但新版又不允许上传驱动JAR…

走迷宫(c语言)

前言&#xff1a; 制作一个迷宫游戏是一个有趣的编程挑战。首先&#xff0c;我们需要设计一个二维数组来表示迷宫的布局&#xff0c;其中每个元素代表迷宫中的一个格子。我们可以使用不同的值来表示空格、墙壁和起点/终点。接下来&#xff0c;我们需生成迷宫。在生成迷宫的过程…

2024年【上海市安全员C3证】模拟考试题及上海市安全员C3证模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年上海市安全员C3证模拟考试题为正在备考上海市安全员C3证操作证的学员准备的理论考试专题&#xff0c;每个月更新的上海市安全员C3证模拟考试题库祝您顺利通过上海市安全员C3证考试。 1、【多选题】《上海市建设…

STC15系列单片机:定时器/计数器16位自动重装载模式

一、定时器与计数器的理解 STC15系列单片机内部有5个16位定时器/计数器&#xff0c;分别是T0、T1、T2、T3、T4。 定时器与计数器&#xff0c;东西还是同一个东西&#xff0c;只是用法和功效不一样&#xff0c;就好比黄瓜&#xff0c;既可以内服也可以外敷&#xff0c;黄瓜还是…

深入理解 go chan

go 里面&#xff0c;在实际程序运行的过程中&#xff0c;往往会有很多协程在执行&#xff0c;通过启动多个协程的方式&#xff0c;我们可以更高效地利用系统资源。 而不同协程之间往往需要进行通信&#xff0c;不同于以往多线程程序的那种通信方式&#xff0c;在 go 里面是通过…

Rust-所有权和移动语义

什么是所有权 拿C语言的代码来打个比方。我们可能会在堆上创建一个对象&#xff0c;然后使用一个指针来管理这个对象&#xff1a; Foo *p make_object("args");接下来&#xff0c;我们可能需要使用这个对象&#xff1a; use_object(p);然而&#xff0c;这段代码之…

继承、修饰符、工具类、jar包

目录 1.继承 2.修饰符 3.工具类 4.jar包的制作与使用 1.继承 是什么 1.面向对象的三大特征之一&#xff08;封装、继承、多态&#xff09; 2.可以使得子类具有父类的属性和方法&#xff0c;还可以在子类中重新定义&#xff0c;追加属性和方法。 继承的格式 public class F…

Camtasia2024最新版本如何进行电脑录制屏幕?

在现在的网络互联网时代&#xff0c;越来越多的人走上了自媒体的道路。有些自媒体人会自己在网络上录制精彩视频&#xff0c;也有一些人会将精彩、热门的电影剪辑出来再加上自己给它的配音&#xff0c;做成大家喜欢看的电影剪辑片段。相信不管大家是自己平时有独特的爱好也好、…

瑞吉外卖笔记系列(1) —— 环境配置,后台登录和退出的功能实现

本文档主要介绍软件开发整体流程和瑞吉外卖项目&#xff0c;开发环境搭建步骤&#xff0c;以及简单的后台系统功能实现 文章目录 一、软件开发整体介绍1.1软件开发流程1.2 角色分工1.3 软件环境 二、瑞吉外卖项目介绍2.1 项目介绍2.2 产品原型展示2.3 技术选型2.4 功能架构2.5 …

目标检测应用场景—数据集【NO.25】牛行为检测数据集

写在前面&#xff1a;数据集对应应用场景&#xff0c;不同的应用场景有不同的检测难点以及对应改进方法&#xff0c;本系列整理汇总领域内的数据集&#xff0c;方便大家下载数据集&#xff0c;若无法下载可关注后私信领取。关注免费领取整理好的数据集资料&#xff01;今天分享…

Stream流递归查询部门树

Java 递归查询树是很常见的功能&#xff0c;也有很多写法&#xff0c;小编这里记录stream流递归部门树写法&#xff0c;自从小编用上stream流之后&#xff0c;是爱不释手&#xff0c;的确是个不错的好东西&#xff0c;话不多说&#xff0c;直接上代码 第一步&#xff1a;先创建…

docker下载时报错 /usr/local/bin/docker-compose: 1: cannot open html: No such file

docker 下载时报错 /usr/local/bin/docker-compose: 1: cannot open html: No such file /usr/local/bin/docker-compose: 2: Syntax error: redirection unexpected&#xff0c; 在网上查找了一些解决方法都不对&#xff0c;最后&#xff0c;通过删除/usr/local/bin/docker-co…

arrow,一个神奇的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - arrow。 Github地址&#xff1a;https://github.com/arrow-py/arrow 日期和时间处理是许多应用程序中的常见任务&#xff0c;但在 Python 中&#xf…

【备战蓝桥杯】——Day1

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-xKn7nmq36s9pgUXR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

容器化postgres备份策略

文章目录 1. 策略和背景1.1 背景1.2 备份策略 2. docker-compose的修改2.1 挂载备份目录2.2 备份脚本3.3 重启容器 3. 定时任务 1. 策略和背景 1.1 背景 使用docker-compose管理的postgres数据库需要备份工作目录在 /data/postgres下 1.2 备份策略 要备份的库 shu_han 库 每…

外贸群发邮件最好的软件?群发软件哪个好?

外贸开发信群发软件推荐&#xff1f;做外贸用什么邮件群发软件&#xff1f; 在外贸业务中&#xff0c;与潜在客户建立联系并保持沟通是至关重要的。那么&#xff0c;如何快速有效地发送邮件给大量的潜在客户呢&#xff1f;这就涉及到了外贸群发邮件。蜂邮EDM来探讨一下&#x…

分类预测 | Matlab实现ZOA-CNN-LSTM-Attention斑马优化卷积长短期记忆神经网络注意力机制的数据分类预测【24年新算法】

分类预测 | Matlab实现ZOA-CNN-LSTM-Attention斑马优化卷积长短期记忆神经网络注意力机制的数据分类预测【24年新算法】 目录 分类预测 | Matlab实现ZOA-CNN-LSTM-Attention斑马优化卷积长短期记忆神经网络注意力机制的数据分类预测【24年新算法】分类效果基本描述程序设计参考…

【多线程及高并发 六】并发集合及线程池详解

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是若明天不见&#xff0c;BAT的Java高级开发工程师&#xff0c;CSDN博客专家&#xff0c;后端领域优质创作者 &#x1f4d5;系列专栏&#xff1a;多线程及高并发系列 &#x1f4d5;其他专栏&#xff1a;微服务框架系列、…