LangChain+LLM实战---使用知识图谱和大模型来实现多跳问答

news2024/11/24 14:26:03

原文:Knowledge Graphs & LLMs: Multi-Hop Question Answering

可以使用检索增强方法来克服大型语言模型(Large Language Models, llm)的局限性,比如幻觉和有限的知识。检索增强方法背后的思想是在提问时引用外部数据,并将其提供给LLM,以增强其生成准确和相关答案的能力。

1_zydD2GKzjpEyvL-d_cP0vA

当用户提出问题时,智能搜索工具会在提供的知识库中查找相关信息。例如,您可能遇到过在pdf文件或公司文档中搜索相关信息的情况。这些例子中的大多数使用向量相似性搜索来识别哪些文本块可能包含准确回答用户问题的相关数据。实现相对简单。

1_oMLZ5s8OHftzqPEVreTd_g

pdf文件或文档首先被分割成多个文本块。一些不同的策略包括文本块应该有多大,以及它们之间是否应该有重叠。在下一步中,使用任何可用的文本Embedding模型生成文本块的向量表示。这就是在查询时执行向量相似性搜索所需的所有预处理。剩下的唯一步骤是在查询时将用户输入编码为向量,并使用余弦或任何其他相似性来比较用户输入和嵌入文本块之间的距离。最常见的是,您将看到返回前三个最相似的文档,为LLM提供上下文,以增强其生成准确答案的能力。当向量搜索可以产生相关的文本块时,这种方法非常有效。

然而,当LLM需要来自多个文档甚至多个块的信息来生成答案时,简单的向量相似性搜索可能是不够的。

例如,考虑以下问题:

OpenAI的前员工中有谁创办了自己的公司吗?

如果你仔细想想,这个问题可以分为两个问题。

  • 谁是OpenAI的前雇员?

  • 他们中有人开了自己的公司吗?

1_rFlThhafYxQ-Q2z2rfJyQA

回答这些类型的问题是一个多跳问答(可在文末查看什么是多跳问题)任务,其中单个问题可以分解为多个子问题,并且可能需要向LLM提供大量文档以生成准确的答案。

上述简单地将文档分块和Embeddings到数据库中,然后使用纯向量相似度搜索的工作流程可能会遇到多跳问题,原因如下:

  • 前N个文档中的重复信息:所提供的文档不保证包含回答问题所需的补充和完整信息。例如,排名前三的类似文件可能都提到shaariq曾在OpenAI工作,并可能成立了一家公司,而完全忽略了所有其他成为创始人的前员工

  • 缺少引用信息:根据块大小,您可能会丢失对文档中实体的引用。这可以通过块重叠部分解决。但是,也有引用指向另一个文档的例子,因此需要某种形式的共同引用解析或其他预处理。

  • 很难定义理想的检索文档数量:有些问题需要向LLM提供更多的文档才能准确地回答问题,而在其他情况下,大量提供文档只会增加噪音(和成本)。

1_vrvcRRrsVrtAK8L_zye5Rg

因此,简单的向量相似性搜索可能会遇到多跳问题。然而,我们可以采用多种策略来尝试回答需要来自不同文档的信息的多跳问题。

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

如果您非常关注LLM空间,那么您可能会想到使用各种技术来压缩信息,以便在查询期间更容易地访问信息。例如,您可以使用LLM提供文档摘要,然后嵌入并存储摘要而不是实际文档。使用这种方法,您可以消除大量噪声,获得更好的结果,并且不必担心prompttoken空间。

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

同样的方法也可以应用于总结会话历史,以避免遇到token限制问题。

我还没有看到任何关于将多个文档合并和汇总为单个记录的文章。问题可能是我们需要合并和总结的文档组合太多了。因此,在摄取时处理所有文档组合的成本可能太高。
然而,知识图谱在这里也可以提供帮助。

从非结构化文本中提取实体和关系形式的结构化信息的过程已经存在了一段时间,更广为人知的是信息提取管道。将信息提取管道与知识图相结合的好处在于,您可以单独处理每个文档,并且当构建或丰富知识图时,来自不同记录的信息可以连接起来。

1_N-TVTbRffy_VQ0DPcx0JKg

知识图使用节点和关系来表示数据。在这个例子中,第一份文件提供了Dario和Daniela曾经在OpenAI工作的信息,而第二份文件提供了他们的Anthropic创业公司的信息。每条记录都是单独处理的,但知识图表示将数据连接起来,并使回答跨多个文档的问题变得容易。

大多数使用大语言模型来回答我们遇到的多跳问题的新方法都侧重于在查询时解决任务。然而,我们相信许多多跳问答问题可以通过在摄取数据之前对其进行预处理并将其连接到知识图中来解决。信息提取管道可以使用大语言模型或自定义文本域模型来执行。

为了在查询时从知识图中检索信息,我们必须构造一个适当的Cypher语句。幸运的是,大语言模型非常擅长将自然语言转换为Cypher图查询语言。

1_mkYvs8_TmzLhUUI1CShNfw

在本例中,智能搜索使用LLM生成适当的Cypher语句,以便从知识图中检索相关信息。然后将相关信息传递给另一个LLM调用,该调用使用原始问题和提供的信息生成答案。在实践中,您可以使用不同的大语言模型来生成Cypher语句和答案,或者在单个LLM上使用各种prompts。

结合图形和文本数据

有时,您可能希望结合文本和图形数据来查找相关信息。例如,考虑以下问题:

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

在本例中,您可能希望使用知识图结构识别Prosper Robotics创始人,并检索提到他们的最新文章。

1_J9LkK_WuH5z00hLJi97_Hw

要回答关于Prosper Robotics创始人的最新消息的问题,您可以从Prosper Robotics节点开始,遍历到其创始人,然后检索提到他们的最新文章。

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

我们相信,检索增强生成应用的未来是利用结构化和非结构化信息来生成准确的答案。因此,知识图是一个完美的解决方案,因为您可以存储结构化和非结构化数据,并将它们与明确的关系连接起来,从而使信息更易于访问和查找。

1_AH05dvGA_7db_EMySc9AAw

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

在思维链流中使用知识图谱

围绕大语言模型的另一个非常令人兴奋的发展是所谓的思维链问答,特别是LLM代理。LLM代理背后的思想是,它们可以将问题分解为多个步骤,定义计划,并使用所提供的任何工具。在大多数情况下,代理工具是api或知识库,代理可以访问它们来检索其他信息。让我们再考虑一下这个问题:

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

1_xPSKLXVQUyoOhzv1AYDszA

假设在它们提到的文章和实体之间没有明确的联系。文章和实体甚至可以在不同的数据库中。在这种情况下,使用思维链流的LLM代理将非常有帮助。首先,agent将问题分解为子问题。

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

现在,代理可以决定使用哪个工具。假设我们为它提供一个知识图访问,它可以使用它来检索结构化信息。因此,代理可以选择从知识图谱中检索Prosper Robotics公司创始人的信息。正如我们所知,Prosper Robotics的创始人是shaariq Hashme。现在第一个问题已经回答了,代理可以将第二个子问题重写为:

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

代理可以使用任何可用的工具来回答随后的问题。这些工具的范围包括知识图、文档或矢量数据库、各种api等等。对结构化信息的访问允许LLM应用程序在需要聚合、过滤或排序的情况下执行各种分析工作流。考虑以下问题:

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

纯向量相似性搜索可能难以解决这些类型的分析问题,因为它搜索的是非结构化文本数据,因此很难对数据进行排序或聚合。因此,结构化和非结构化数据的组合可能是检索增强LLM应用程序的未来。此外,正如我们所看到的,知识图也非常适合表示连接的信息,因此也适合多跳查询。

虽然思维链是大语言模型的一个引人入胜的发展,因为它显示了LLM如何进行推理,但它并不是最用户友好的,因为由于多个LLM调用,响应延迟可能很高。然而,我们仍然非常兴奋地了解更多关于将知识图合并到各种用例的思维链流中的知识。

总结

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

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

使用知识图的另一个优点是它能够存储结构化和非结构化信息。这种灵活性使其适用于广泛的语言模型(LLM)应用程序,因为它可以处理各种数据类型和实体之间的关系。图结构提供了知识的可视化表示,促进了开发人员和用户的透明性和可解释性。

总的来说,在检索增强生成应用程序中利用知识图提供了一些好处,比如提高查询效率、多跳推理能力以及对结构化和非结构化信息的支持。

附加

多跳问题(来源于《一文带你入门知识图谱多跳问答》)

通俗来说,多跳问题 (Multi-hop Questions) 指的是那些需要知识图谱 「多跳推理」 才能回答的问题。例如,若要回答 ”成龙主演电影的导演是哪些人?“ 这一问题,则需要多个三元组所形成的多跳推理路径 <成龙,主演,新警察故事>, <新警察故事,导演,陈木胜> 才能够回答。

这种类型的问题在实际应用中十分普遍,但想要构建出一个高准确率的知识图谱多跳问答系统却并非易事。下图展示了一个谷歌搜索中的 Bad Case。

WX20230619-171827

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

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

相关文章

ok-解决qt5发布版本,直接运行exe缺少各种库的问题

已实验第二种方法可用。 工具&#xff1a;电脑必备、QT下的windeployqt Qt 官方开发环境使用的动态链接库方式&#xff0c;在发布生成的exe程序时&#xff0c;需要复制一大堆 dll&#xff0c;如果自己去复制dll&#xff0c;很可能丢三落四&#xff0c;导致exe在别的电脑里无法…

【漏洞复现】Metinfo6.0.0任意文件读取漏洞复现

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现代码审计漏洞点 1.5、深度利用EXP编写 1.6、漏洞挖掘1.7修复建议 1.1、漏洞描述 漏洞名称&#xff1a;MetInfo任意文件…

抖音极速版app拉新一手申请渠道 附快手极速版app拉新申请资料

抖音极速版app拉新一手申请渠道 附快手极速版app拉新申请资料 通过“聚量推客”申请&#xff0c;价格更高 抖音极速版app拉新是地推百搭项目&#xff0c;部分团队作为主打项目推广&#xff0c;流程简单只需要新设备即可&#xff0c;如果你能做次留或者7日留存价格还是很可观的…

VulnHub jarbas

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

S4.2.4.5 Fast Training Sequence (FTS)

一 本章节主讲知识点 1.1 FTS的用途和实现注意 二 本章节原文翻译 Fast Training Sequence (FTS) 主要用于在L0s->L0跳转的过程中&#xff0c;让Receiver 检测到电气空闲退出&#xff0c;以及实现bit 和 symbol lock。 2.1 Gen1 and Gen2 速率 对于Gen1/2 FTS的组成如下…

循环语句--JAVA

循环语句 for循环结构 范例 执行流程 while循环结构 格式 范例 流程 for和while的区别 条件控制语句所控制的自增变量,在for循环结束后,就不可以继续使用了 条件控制语句所控制的自增变量,在while循环结束后,还可以继续使用了 数据类型 基本数据类型 char byte boolean …

python爬虫(数据获取——selenium)

环境测试 from selenium import webdriverchromedriver_path r"C:\Program Files\Google\Chrome\Application\chromedriver.exe" driver webdriver.Chrome()url "https://www.xinpianchang.com/discover/article?fromnavigator" driver.get(url)drive…

Type-C接口详解

USB接口发展史 USB接口历经Type-A→Type-B→Type-C五次大的更新换代&#xff1b;目前Type-A Standard作为标准USB接口形式&#xff0c;仍然在大范围应用&#xff0c;而Micro-A以及Type-B系列已经慢慢谈出人们的视野&#xff0c;逐渐被新型的Type-C代替。 Type-C接口 24PIN Typ…

asp.net人事管理信息系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 人事管理信息系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net 人事管理系统1 应用技术…

Wpf 使用 Prism 实战开发Day04

一.菜单导航实现 1.首先创建出所有的页面(View)及对应的页面逻辑处理类(ViewModel) IndexView(首页)-----------------IndexViewModelToDoView(待办事项)------------ToDoViewModelMemoView(忘备录)--------------MemoViewModelSettingsView(设置)--------------SettingsViewMo…

快速解决mfc140u.dll丢失问题,找不到mfc140u.dll修复方法分享

在计算机使用过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之一就是某些dll文件丢失。最近&#xff0c;我就遇到了一个关于mfc140u.dll丢失的问题。mfc140u.dll是Microsoft Foundation Class&#xff08;MFC&#xff09;库中的一个动态链接库文件&#xff0c;它包…

yolov8+动物+姿态识别(训练教程+代码)

本文关键词&#xff1a; 关键点检测 关键点估计 姿态估计 YOLO 动物姿态估计是计算机视觉的一个研究领域&#xff0c;是人工智能的一个子领域&#xff0c;专注于自动检测和分析图像或视频片段中动物的姿势和位置。目标是确定一种或多种动物的身体部位&#xff08;例如头部、四…

spring-cloud-starter-dubbo不设置心跳间隔导致生产者重启no Provider问题记录

版本 spring-cloud-starter-dubbo-2.2.4.RELEASE 问题描述 生产者重启后&#xff0c;正常注册到注册中心&#xff0c;但是消费者调用接口是no provider&#xff0c;偶现&#xff0c;频繁出现 解决办法 先说原因和解决办法&#xff0c;有兴趣可以看下问题的排查过程。 原因…

ELK搭建以及使用教程(多pipiline)

1、环境准备 服务器&#xff1a;Centos7 Jdk版本&#xff1a;1.8 Es版本&#xff1a;7.12.1 kibana版本&#xff1a;7.12.1 logstash版本:7.12.1 IP地址安装软件192.168.50.211Es&#xff0c;Kibana&#xff0c;logstash 2、安装docker 安装步骤参考&#xff1a;https:…

【KVM】KVM介绍及功能概述

前言 大家好&#xff0c;我是秋意零。 今天介绍的内容是KVM的概述&#xff0c;以及它所支持的基本功能。 &#x1f47f; 简介 &#x1f3e0; 个人主页&#xff1a; 秋意零&#x1f525; 账号&#xff1a;全平台同名&#xff0c; 秋意零 账号创作者、 云社区 创建者&#x1f…

安吉寻梦桃花原

安吉——西湖边的那片竹海 安吉县&#xff0c;地处浙江西北部&#xff0c;湖州市辖县之一&#xff0c;北靠天目山&#xff0c;面向沪宁杭。建县于公元185年&#xff0c;县名出自《诗经》“安且吉兮”之意。 安吉县生态环境优美宜居&#xff0c;境内“七山一水二分田”&#xf…

多线程与高并发实战

什么是进程&#xff1f; OS操作系统分配CPU资源的基础单位为进程 OS操作系统调度&#xff08;执行&#xff09;CPU资源的基础单位为线程 单核CPU设定多线程是否有意义&#xff1f; 线程数是不是设置的越大越好&#xff1f; 线程切换也要消耗资源 工作线程数&#xff08;线程…

浅谈前端出现率高的设计模式

目录 六大原则&#xff1a; 23 种设计模式分为“创建型”、“行为型”和“结构型” 前端九种设计模式 一、创建型 1.构造器模式&#xff1a;抽象了对象实例的变与不变(变的是属性值&#xff0c;不变的是属性名) 2. 工厂模式&#xff1a;为创建一组相关或相互依赖的对象提…

普通人快速逆袭的一个路径:AI赛道+早+下场干

昨天参加去参加了一场AI峰会&#xff0c;几点收获&#xff1a; 1、要早 无界AI300万用户&#xff0c;2022年5月就已经入场干 黄小刀出版最早的ChatGPT书籍和最早的ChatGPT训练营 浙工大团队也是2022年最早的使用AI绘画 2、要快速下场干 最早的知道这个事情没用&#xff0c;…

1067 试密码

一.问题&#xff1a; 当你试图登录某个系统却忘了密码时&#xff0c;系统一般只会允许你尝试有限多次&#xff0c;当超出允许次数时&#xff0c;账号就会被锁死。本题就请你实现这个小功能。 输入格式&#xff1a; 输入在第一行给出一个密码&#xff08;长度不超过 20 的、不…