知识图谱和 LLM:多跳问答

检索增强生成(RAG)应用程序通过将外部来源的数据集成到 LLM 中,擅长回答简单的问题。但他们很难回答涉及将相关信息之间的点连接起来的多部分问题。这是因为 RAG 应用程序需要一个数据库,该数据库旨在存储数据,以便轻松找到回答这些类型问题所需的所有内容。

知识图谱非常适合处理复杂的多部分问题,因为它们将数据存储为节点网络及其之间的关系。这种连接的数据结构允许 RAG 应用程序有效地从一条信息导航到另一条信息,从而访问所有相关信息。

使用知识图谱构建 RAG 应用程序可以提高查询效率,尤其是在处理连接的数据时,并且您可以将任何类型的数据(结构化和非结构化)转储到图中,而无需重新设计架构。

这篇博文探讨了:

  • RAG 应用程序的内部运作
  • 知识图谱作为一种高效的信息存储解决方案
  • 结合图和文本数据以增强洞察力
  • 应用思维链问答技术

RAG 的工作原理

检索增强生成(RAG)是一种通过从外部数据库检索相关信息并将其合并到生成的输出中来增强 LLM 响应的技术。

RAG 过程很简单。当用户提出问题时,智能搜索工具会在提供的数据库中查找相关信息:

图片

LLM 申请的检索增强方法

您可能使用过*“与 PDF 聊天”*等工具来搜索所提供文档中的信息。这些工具大多数使用向量相似性搜索来识别包含与用户问题相似的数据的文本块。实现很简单,如下图所示。

图片

使用向量相似性搜索的 RAG 应用程序

PDF(或其他文档类型)首先被分割成多个文本块。您可以根据文本块的大小或文本块之间是否存在重叠来使用不同的策略。然后,RAG 应用程序使用文本嵌入模型来生成文本块的向量表示。

这就是在查询时执行向量相似性搜索所需的所有预处理。最后,RAG 在查询时将用户输入编码为向量,并使用余弦等相似性算法来比较用户输入和嵌入文本块之间的距离。

通常,RAG 会返回三个最相似的文档,为 LLM 提供背景信息,从而增强其生成准确答案的能力。当矢量搜索可以识别相关的文本块时,这种方法效果相当好。

然而,当 LLM 需要来自多个文档甚至多个文本块的信息来生成答案时,简单的向量相似性搜索可能不够。例如,考虑以下问题:

OpenAI 的前员工是否创办了自己的公司?

这个问题是多部分的,因为它包含两个问题:

  • OpenAI 的前员工有哪些?
  • 他们中有人创办了自己的公司吗?

图片

信息跨越多个文档

回答这些类型的问题是一个多跳问答任务,其中单个问题可以分解为多个子问题,而获得准确的答案需要检索大量文档。

简单地在数据库中对文档进行分块和嵌入,然后使用简单的向量相似性搜索不会达到多跳问题的目标。原因如下:

  • **前 N 个文档中的重复信息:**所提供的文档不能保证包含完整回答问题所需的所有信息。例如,排名前三的类似文件可能都提到 ShariqOpenAI 工作过,并可能创立了一家公司,而忽略了所有其他成为创始人的前员工。
  • **缺少参考信息:**根据块大小,某些块可能不包含完整的上下文或对文本中提到的实体的引用。重叠块可以部分缓解丢失引用的问题。还有一些引用指向另一个文档的示例,因此您需要共同引用解析或预处理技术。
  • **很难定义理想的 N 个检索文档:**有些问题需要更多文档才能使 LLM 准确,而在其他情况下,大量文档只会增加噪音(和成本)。

在某些情况下,相似性搜索将返回重复的信息,而其他相关信息由于检索到的信息数量或嵌入距离较低而被忽略。

图片

相似性搜索可能返回重复信息的示例,而其他相关信息可能由于检索到的信息数量或嵌入距离较低而被忽略

很明显,普通向量相似性搜索无法满足多跳问题。但我们可以采用多种策略来回答需要来自不同文档的信息的多跳问题。

知识图谱作为压缩信息存储

如果您密切关注 LLM 领域,您可能已经看到了压缩信息以使其在查询时更易于访问的技术。例如,您可以使用 LLM 提供文档摘要,然后嵌入和存储摘要而不是实际文档。使用这种方法,您可以消除大量噪音,获得更好的结果,并且不用担心提示令牌空间。

您还可以在摄取时或查询期间执行上下文摘要。查询期间的上下文压缩更具指导性,因为它选择与所提供的问题相关的上下文。但查询期间的工作负载越重,用户延迟预计就越差。我们建议将尽可能多的工作负载转移到摄取时间,以改善延迟并避免其他运行时问题。

可以应用相同的方法来总结对话历史记录,以避免遇到令牌限制问题

我还没有看到任何有关将多个文档组合和汇总为单个记录的文章。我们可以合并和总结的文档组合可能太多,因此在摄取时处理所有文档组合的成本太高。知识图谱克服了这个问题。

信息提取管道已经存在了一段时间。这是从非结构化文本中提取结构化信息的过程,通常以实体和关系的形式。将其与知识图谱结合起来的美妙之处在于您可以单独处理每个文档。当知识图谱被构建或丰富时,来自不同记录的信息就被连接起来。

图片

从文本中提取实体和关系以构建知识图谱

知识图谱使用节点和关系来表示数据。在此示例中,第一个文档提供了 DarioDaniela 曾经在 OpenAI 工作的信息,而第二个文档提供了有关他们的 Anthropic 初创公司的信息。每条记录都是单独处理的,但知识图谱表示连接数据,从而可以轻松回答跨多个文档的问题。

大多数回答多跳问题的较新的 LLM 方法都侧重于在查询时解决任务。事实上,许多多跳问答问题可以通过在摄取之前预处理数据并将其连接到知识图谱来解决。您可以使用 LLM 或自定义文本域模型来执行信息提取管道。

为了在查询时从知识图谱中检索信息,我们必须构建适当的 Cypher 语句。幸运的是, LLM 非常擅长将自然语言翻译为 Cypher 图查询语言。

图片

使用知识图谱的 RAG 的 LLM 应用

智能搜索使用 LLM 生成适当的 Cypher 语句,以从知识图谱中检索信息。然后,该信息被传递到另一个 LLM 调用,该调用使用原始问题和提供的信息来生成答案。在实践中,您可以使用不同的 LLM 来生成 Cypher 语句和答案,也可以在单个 LLM 上使用各种提示。

结合图形和文本数据

有时,您需要结合图形和文本数据来查找相关信息。例如,考虑这个问题:

关于 Prosper Robotics 创始人的最新消息是什么?

在此示例中,您希望 LLM 使用知识图谱结构识别 Prosper Robotics 创始人,然后检索提及他们的最新文章。

图片

结构化信息和非结构化文本之间具有明确链接的知识图谱

在知识图谱中,您可以从 Prosper Robotics 节点开始,遍历到其创始人,然后检索提及他们的最新文章。

知识图谱表示有关实体及其关系的结构化信息,以及作为节点属性的非结构化文本。您还可以使用命名实体识别等自然语言技术将非结构化信息连接到知识图谱中的相关实体,如 MENTIONS 关系所示。

图片

使用 Cypher 和向量相似性搜索从知识图谱中检索相关信息

当知识图谱包含结构化和非结构化数据时,智能搜索工具可以使用 Cypher 查询或向量相似度搜索来检索相关信息。在某些情况下,您还可以结合使用两者。例如,您可以从 Cypher 查询开始来识别相关文档,然后应用向量相似性搜索来查找这些文档中的特定信息。

在思维链中使用知识图谱

围绕 LLM 的另一个令人着迷的发展是思维链问题回答,尤其是 LLM 代理。

LLM 代理可以将问题分为多个步骤,定义计划,并利用任何提供的工具生成答案。通常,代理工具由代理可以查询以检索附加信息的 API 或知识库组成。

让我们再次考虑同样的问题:

关于 Prosper Robotics 创始人的最新消息是什么?

图片

知识图谱实体和非结构化文本之间没有明确的链接

假设您在文章和它们提到的实体之间没有明确的连接,或者文章和实体位于不同的数据库中。在这种情况下,使用思维链流程的 LLM 代理将非常有帮助。首先,代理会将问题分成子问题:

  • Prosper Robotics的创始人是谁?
  • 关于创始人的最新消息是什么?

现在代理可以决定使用哪个工具。假设它基于知识图谱,这意味着它可以检索结构化信息,例如 Prosper Robotics 创始人的名字。

代理发现 Prosper Robotics 的创始人是 Shariq Hashme。现在,智能体可以使用第一个问题中的信息重写第二个问题:

  • 关于 Shariq Hashme 的最新消息是什么?

代理可以使用一系列工具来生成答案,包括知识图谱、向量数据库、API 等。对结构化信息的访问允许 LLM 应用程序执行需要聚合、过滤或排序的分析工作流程。考虑这些问题:

  • 哪家单独创始人的公司估值最高?
  • 谁创办的公司最多?

普通向量相似性搜索很难回答这些分析问题,因为它搜索非结构化文本数据,从而很难对数据进行排序或聚合。

虽然思维链展示了 LLM 的推理能力,但它并不是最用户友好的技术,因为由于多次 LLM 调用,响应延迟可能会很高。但我们仍然非常兴奋地了解更多有关将知识图谱集成到许多用例的思想流中的信息。

图片

中途关于成立调查委员会的想法。

为什么将知识图谱用于 RAG 应用程序

RAG 应用程序通常需要从多个来源检索信息以生成准确的答案。虽然文本摘要可能具有挑战性,但以图格式表示信息有几个优点。

通过单独处理每个文档并将它们连接到知识图谱中,我们可以构建信息的结构化表示。这种方法可以更轻松地遍历和导航互连文档,从而实现多跳推理来回答复杂的查询。此外,在摄取阶段构建知识图谱可以减少查询期间的工作量,从而改善延迟。

RAG 应用程序将越来越多地使用结构化和非结构化数据来生成更准确的答案。知识图谱可以轻松吸收所有类型的数据。这种灵活性使其适用于广泛的用例和 LLM 应用程序,特别是涉及实体之间关系的应用程序(例如欺诈检测、供应链、主数据管理等)。

通读 GitHub 存储库上有关此项目的文档。

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++ 里如何检测内存泄露:比如用了 new ,但没有用 delete

(1 方法一) 用 MFC 框架的 F5 不带断点的调试。可以在输出窗口提示是否有内存泄露。 (2 方法二) ,在 main 函数中添加如下代码,用 F5 不带断点的调试: int main() {_CrtSetDbgFlag( _CRTDBG_A…

JAVA 集合+对象复制工具类

JAVA 集合对象复制工具类 import jakarta.annotation.Nullable;import java.util.ArrayList; import java.util.List; import java.util.function.BiFunction; import java.util.function.Consumer;public class BeanUtil extends cn.hutool.core.bean.BeanUtil {/*** 数据拷贝…

Linux高并发服务器开发(十三)Web服务器开发

文章目录 1 使用的知识点2 http请求get 和 post的区别 3 整体功能介绍4 基于epoll的web服务器开发流程5 服务器代码6 libevent版本的本地web服务器 1 使用的知识点 2 http请求 get 和 post的区别 http协议请求报文格式: 1 请求行 GET /test.txt HTTP/1.1 2 请求行 健值对 3 空…

SQL索引事务

SQL索引事务 索引 创建主键约束(primary key),唯一约束(unique),外键约束(foreign key)时,会自动创建对应列的索引 1.1 查看索引 show index from 表名 现在这个表中没有索引,那么我们现在将这几个表删除之后创建新表 我们现在建立一个班级表一个学生表,并且学生表与班级表存…

EVM-MLIR:以MLIR编写的EVM

1. 引言 EVM_MLIR: 以MLIR编写的EVM。 开源代码实现见: https://github.com/lambdaclass/evm_mlir(Rust) 为使用MLIR和LLVM,将EVM-bytecode,转换为,machine-bytecode。LambdaClass团队在2周…

无人机水运应用场景

航行运输 通航管理(海事通航管理处) 配员核查流程 海事员通过VHF(甚高频)系统与船长沟通核查时间。 无人机根据AIS(船舶自动识别系统)报告的船舶位置,利用打点定位 功能飞抵船舶上方。 使用…

大型能源电力集团需要什么样的总部数据下发系统?

能源电力集团的组织结构是一个复杂的系统,包括多个职能部门和子分公司。这些子分公司负责具体的电力生产、销售、运维等业务。这些部门和公司协同工作,确保电力生产的顺利进行,同时关注公司的长期发展、市场拓展、人力资源管理、财务管理和公…

SCI一区级 | Matlab实现BO-Transformer-LSTM多特征分类预测/故障诊断

SCI一区级 | Matlab实现BO-Transformer-LSTM多特征分类预测/故障诊断 目录 SCI一区级 | Matlab实现BO-Transformer-LSTM多特征分类预测/故障诊断效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现BO-Transformer-LSTM特征分类预测/故障诊断&…

winform2

12.TabControl 导航控制条 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace zhiyou_…

发现CPU占用过高,该如何排查解决?

1.使用top命令 查看cpu占用最多的进程 2.使用 top -H -p pid 发现有两个线程占用比较大 3.将线程id转换为16进制 使用命令 printf 0x%x\n pid 4.使用 jstack pid | grep 线程id(16进制) -A 20 (显示20行) 根据代码显示进行错误排查

2024年7月5日 (周五) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键,实现一键唤起、一键隐藏的 Windows 工具,并且支持窗口动态绑定快捷键(无需设置自动实现)。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《乐高地平线大冒险》为何不登陆…

娱乐圈惊爆已婚男星刘端端深夜幽会

【娱乐圈惊爆!已婚男星刘端端深夜幽会,竟是《庆余年》二皇子“戏外风云”】在这个信息爆炸的时代,娱乐圈的每一次风吹草动都能瞬间点燃公众的热情。今日,知名娱乐博主刘大锤的一则预告如同投入湖中的巨石,激起了层层涟…

关于下载obsidian SimpRead Sync中报错的问题

参考Kenshin的配置方法,我却在输入简悦的配置文件目录时多次报错。 bug如下: 我发现导出来的配置文件格式如下: 然后根据报错的bug对此文件名进行修改,如下: 解决。

Java数据结构-树的面试题

目录 一.谈谈树的种类 二.红黑树如何实现 三.二叉树的题目 1.求一个二叉树的高度,有两种方法。 2.寻找二叉搜索树当中第K大的值 3、查找与根节点距离K的节点 4.二叉树两个结点的公共最近公共祖先 本专栏全是博主自己收集的面试题,仅可参考&#xf…

暑假前端知识速成【CSS】系列一

坚持就是希望! 什么是CSS? CSS 指的是层叠样式表* (Cascading Style Sheets)CSS 描述了如何在屏幕、纸张或其他媒体上显示 HTML 元素CSS 节省了大量工作。它可以同时控制多张网页的布局外部样式表存储在 CSS 文件中 *:也称级联样式表。 CSS语法 在此例…

微信小程序的智慧物流平台-计算机毕业设计源码49796

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3研究方法 1.4开发技术 1.4.1 微信开发者工具 1.4.2 Node.JS框架 1.4.3 MySQL数据库 1.5论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 用户登录流程 2.2.2 数据删除流程 2.3 系统功能分…

Windows 上帝模式是什么?开启之后有什么用处?

Windows 上帝模式是什么 什么是上帝模式?Windows 上帝模式(God Mode)是一个隐藏的文件夹,通过启用它,用户可以在一个界面中访问操作系统的所有管理工具和设置选项。这个功能最早出现在 Windows Vista 中,并…

【K8s】专题六(4):Kubernetes 稳定性之初始化容器

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号! 目录 一、基本介绍 二、主要特点 三、资源清单(示例) 一、基本介绍 初…

小学英语语法

目录 a和an的用法名词的单复数be动词和人称代词(主格)指示代词形容词物主代词名词所有格双重所有格方位介词some,any和no的用法How many和How much的用法情态动词can的用法祈使句人称代词(宾格)常见实义动词的用法一般…

【MySQL备份】Percona XtraBackup总结篇

目录 1.前言 2.问题总结 2.1.为什么在恢复备份前需要准备备份 2.1.1. 保证数据一致性 2.1.2. 完成崩溃恢复过程 2.1.3. 解决非锁定备份的特殊需求 2.1.4. 支持增量和差异备份 2.1.5. 优化恢复性能 2.2.Percona XtraBackup的工作原理 3.注意事项 1.前言 在历经了详尽…