【AI论文精读12】RAG论文综述2(微软亚研院 2409)P4-隐性事实查询L2
AI知识点总结:【AI知识点】
AI论文精读、项目、思考:【AI修炼之路】
P1,P2,P3
四、隐性事实查询(L2)
4.1 概述
ps:P2有四种查询(L1,L2,L3,L4)的举例对比
隐性事实查询是指那些依赖于数据中未立即显现的关联,需要通过常识推理或基本逻辑推断才能得出的查询。这类信息可能分散在多个文档片段或数据段中,必须通过推理或简单推导来得出答案。这一层次的查询通常需要从数据集中多个文档中收集和处理信息,而这些所需信息的集合可能超过单次检索的能力。因此,需要将原始查询分解为多个检索操作,并将结果汇总为综合性答案。
这些查询通常涉及常识推理,无需特定领域的专业知识。常见的查询类型包括统计查询、描述性分析查询和基础聚合查询。 可能需要对多个片段进行计数、比较、趋势分析和选择性总结。
隐性事实查询(L2)定义
对于查询 q q q 及其对应的答案 a a a,一个L2 隐性事实查询的定义如下:
-
存在一组显式事实查询 { q 1 , q 2 , … , q m } ⊂ Q 1 \{q_1, q_2, \dots, q_m\} \subset Q_1 {q1,q2,…,qm}⊂Q1,每个显式查询都可以从数据集 D D D 中的特定片段中检索出来:
r D ( q ) = ⋃ i = 1 m r D ( q i ) r_D(q) = \bigcup_{i=1}^{m} r_D(q_i) rD(q)=i=1⋃mrD(qi)
其中, r D ( q i ) r_D(q_i) rD(qi) 表示检索到的满足子查询 q i q_i qi 的相关数据片段,所有这些子查询的检索结果之和(并集)构成了回答查询 q q q 所需的信息集合。 -
一个响应生成器 θ \theta θ,通常是一个提示的LLM推断,用于构建答案 a a a。通过聚合显式查询的响应 { θ ( r D ( q 1 ) ) , θ ( r D ( q 2 ) ) , … , θ ( r D ( q m ) ) } \{\theta(r_D(q_1)), \theta(r_D(q_2)), \dots, \theta(r_D(q_m))\} {θ(rD(q1)),θ(rD(q2)),…,θ(rD(qm))} 并应用常识推理来推导数据中未明确说明的答案。生成的响应 θ ( r D ( q ) ) \theta(r_D(q)) θ(rD(q)) 应该接近于答案 a a a,这表明查询 q q q 可以通过显式查询的响应聚合得到有效的答案。
示例
以下是该级别的一些查询示例:
- 有多少个实验样本的样本量大于1000?(给定实验记录集)
- 过去一个月提到最多的三个词汇是什么? (给定医学记录集)
- 公司X和公司Y的AI战略是什么? (基于公司X和公司Y的最新新闻和文章进行汇总)
总结来说,L2查询不仅仅依赖于单一片段的检索,它通过将多个显式事实组合并推理得出最终答案。这类查询通常要求模型有能力在检索和推理之间有效协调,以应对复杂问题。
4.2 挑战与解决方案
在隐性事实查询(Level-2 Queries) 中,问题仍然围绕着事实展开,但答案并不直接存在于某一单一的文本段落中。相反,回答这些问题需要将多个事实结合起来,并通过常识推理得出结论。这一层次的查询带来了以下主要挑战:
1. 检索量的适应性问题(Adaptive Retrieval Volumes)
不同的问题可能需要检索不同数量的上下文信息。
- 挑战:如果使用固定数量的检索结果,可能会导致两种情况:
- 信息噪音:检索到的上下文过多,其中包含了大量无关或冗余的信息。
- 信息不足:检索的上下文过少,导致无法获取足够的信息来准确回答问题。
- 解决方案:需要设计能够根据问题和数据集的性质动态调整检索数量的方法,以平衡信息量和噪音问题。
2. 推理与检索之间的协调(Coordination Between Reasoning and Retrieval)
推理和检索之间存在着相互依赖的关系:
-
推理:推理可以指导模型聚焦在需要检索的具体信息上。例如,通过初步的推理,可以确定哪些事实是相关的,哪些数据片段是值得检索的。
-
检索:检索到的信息可以为进一步的推理提供依据和方向。模型可以根据检索到的内容,动态调整推理策略,进行迭代推理。
-
挑战:有效的推理和检索之间需要智能整合,确保模型能灵活地从外部数据中提取关键信息,同时运用LLMs(大语言模型)固有的推理能力。
-
解决方案:需要采用高级的检索增强生成(RAG)策略,例如:
- 迭代式RAG(Iterative RAG):通过反复检索与生成,不断修正和改进答案。
- 基于图结构或树结构的RAG(RAG on Graph/Tree):使用图结构或树形结构来组织信息,帮助在复杂查询中找到相关的多跳信息。
- RAG与SQL结合(RAG with SQL):当数据结构化时,可以通过SQL查询更高效地从数据库中提取所需信息。
4.3 迭代式RAG(Iterative RAG)
隐性事实查询与多跳RAG任务有相似之处。这类方法通过动态控制多步骤的RAG过程,逐步收集或纠正信息,直到找到正确答案。迭代式RAG的关键在于分阶段地检索和生成信息,以保证答案的正确性和可靠性。
1. 基于规划的迭代方法(Planning-based Iterative Methods)
这类方法在检索前阶段或检索过程中生成一个逐步检索的计划,通过动态调整每一步的检索重点,逐步缩小检索范围,并引导系统找到答案。
-
ReAct [93]:该方法逐步更新每个步骤的检索目标,减少问题回答过程中知识上的差距。
-
IRCoT [94] 和 RAT [95]:利用思维链(Chain of Thought, CoT) 来引导RAG流程,基于之前检索到的信息做出下一步检索目标的决策。这种方法依赖每一步推理和检索之间的反馈,确保每一次的检索能够为下一个步骤提供有用的上下文信息。
-
GenGround [96]:这种方法允许LLMs在两个阶段间交替,直到获得最终答案:
- 生成一个更简单的单步问题并提供直接答案;
- 将问答对追溯回检索到的文档,验证并纠正预测中的不准确之处。
这种迭代过程确保了回答的可靠性和准确性。
2. 基于信息填补的迭代方法(Information Gap Filling-based Iterative Methods)
这种方法通过一轮又一轮的检索与生成,逐步填补已知信息中的空白,确保最终的答案涵盖了问题的所有方面。
- ITRG [97]:该框架引入了一个迭代检索-生成协作框架,首先基于已有知识生成答案,然后继续检索生成过程中未知的部分,直到答案完整。
- FLARE [50]:该方法会在每次迭代中重新审视和修改生成答案中的低概率词汇,确保答案的精确性。
- Self-RAG [92]:通过微调大模型,使其能够自主决定何时继续检索,何时停止检索并开始回答问题。这种方法让模型具备了更强的自主性,在检索与生成的过程之间取得平衡,保证了答案的准确性。
4.4 图/树结构问题回答(Graph/Tree Question Answering)
隐性事实查询通常需要从多个参考来源综合信息,而图(Graph)或树(Tree) 结构——无论是基于知识的还是数据结构化的——都能够自然地表达文本之间的关系结构,非常适合这种数据检索问题。
1. 传统知识图谱(Knowledge Graph, KG)
传统知识图谱是最初被考虑用于增强LLMs(大语言模型)效能的结构之一。在知识图谱中,每个节点代表一个实体,节点之间的边表示这些实体之间的关系。知识图谱与LLM的结合能够有效地扩展模型的推理能力。
- KG增强的LLM:将知识图谱(KG)整合到LLM的预训练和推理阶段,帮助LLM加深对已获取知识的理解【98】。
- LLM增强的KG:使用LLM进行KG任务,例如嵌入、补全、构建、图-文本生成以及问题回答等【98】。
- 协同LLM+KG:采用双向推理机制,使LLM与KG互相补充,通过数据和知识驱动的推理相互提升【98】。
例如,Rigel-KQGA模型【99】是一个端到端的知识图谱问答(KGQA)模型,它根据查询预测必要的知识图谱节点,并将这些节点与LLM结合,以推导出答案。
一些其他相关工作包括:
- Think-on-Graph【100】和KnowledgeNavigator【101】:这些方法提取查询中涉及的实体,然后在图上执行迭代的广度优先搜索(BFS),使用LLM作为推理引擎来决定最佳的探索路径并进行剪枝。
- R3模型【102】:通过LLM引入若干可能的常识性公理,依次搜索相关知识子图,直到足够的信息被收集来回答问题。
2. 数据块图/树(Data Chunk Graph/Tree)
数据块图或树结构是另一种被广泛研究的图谱构建方法,与传统知识图谱相比,LLMs具备强大的阅读理解能力,可以直接处理文本而不需要将其分解为最细粒度的实体和关系。
在这一框架下,研究人员开始尝试将文本块或数据块作为图或树上的节点,使用边表示高层次或更为复杂的关系。
-
Knowledge-Graph-Prompting【103】:讨论了三类需要从图谱中挖掘隐性事实的问题:
- 桥接问题(Bridging questions):依赖于顺序推理;
- 比较问题(Comparing questions):依赖于对不同段落的并行推理;
- 结构性问题(Structural questions):依赖于文档结构层次的内容提取。
这种方法通过实体识别、TF-IDF、KNN和文档结构层次来构建文档图,并提取子图以回答问题。
-
MoGG模型【44】:将一到两句话视为最小的语义单元,使用它们作为节点,并基于节点间的语义相似性建立边。此外,它训练一个预测器来决定回答查询所需的文本粒度,确定需要多大的子图。
-
RAPTOR模型【43】:通过聚类算法将最小的文本块进行分层聚类,在每个层次上总结新的语义信息,并在压缩后的节点树中检索最必要的信息。
-
GraphRAG模型【104】:采用了一种聚类的方法,首先根据语义相似性连接最小的文本块,然后使用社区检测算法对节点进行分组。最终,通过分析每个节点社区内的响应来总结查询的全局答案。
4.5 自然语言转SQL查询(Natural Language to SQL Queries)
在处理结构化数据时,将自然语言查询转换为SQL(NL2SQL)是一种有效的方法。工具如Chat2DB能够将用户的自然语言查询转换为数据库查询。随着大语言模型(LLM)时代的到来,文本到SQL(text-to-SQL)领域取得了显著进展【105, 106, 107, 108】。通过这些进展,我们可以利用这些工具从结构化数据库中检索信息,为LLM的生成能力提供有力的外部数据支持。
NL2SQL的作用
通过整合文本到SQL的工具【109】,LLM能够访问和利用结构化数据,从而增强其生成更准确和上下文相关的回答的能力。这种整合不仅提高了生成内容的深度和质量,还扩展了LLM的应用范围,使其能够执行更多复杂的任务,这些任务需要与数据库内容交互并解释其结果。
4.6 关于事实查询的讨论
是否需要进行微调
一些研究【110】表明,微调(fine-tuning) 过程中,LLMs在获取新事实性知识时面临挑战。这一过程可能导致LLM生成准确响应的整体表现下降,并且通常会产生更多的幻觉(hallucinations)。此外,研究【111】指出,使用新的事实性数据进行微调可能导致模型机械记忆(rote memorization) 事实陈述。然而,修改这些记忆化事实的措辞可能会使模型无法有效应用新学到的知识,这表明LLM在理解和保留新信息时仅停留在表面。这一发现揭示了现有微调过程的局限性,并强调了整合和适应新信息的更复杂方法的需求。
是否需要区分不同层次的事实查询
无论是显性事实查询(explicit fact queries) 还是隐性事实查询(implicit fact queries),它们都基于事实。然而,在构建数据增强的LLM应用之前,确定查询属于哪个层次是至关重要的。如果将显性事实查询误分类为隐性事实查询,可能会检索到大量表面看似相关但最终无助于回答问题的冗余信息,从而误导LLM并浪费计算资源。相反,如果将隐性事实查询误认为显性事实查询,则可能导致无法使用适当的方法来检索足够全面的外部辅助数据。
隐性事实查询通常需要动态整合与查询上下文相关的多维度信息,而显性事实查询通常只需要一个单一数据片段,这使得它们往往会检索到固定量的外部数据。这可能导致LLM表现不佳。因此,在理解目标任务的基础上,预先区分查询的层次将是有利的。此外,大量研究致力于训练模型自主评估所检索的信息是否足够,代表性的方法如Self-RAG【92】。这些方法通过让模型判断何时停止检索并开始回答问题,来提升模型的推理能力和对信息充足性的评估。
未完待续。。。
相关文章:
【AI论文精读12】RAG论文综述2(微软亚研院 2409)P4-隐性事实查询L2
AI知识点总结:【AI知识点】 AI论文精读、项目、思考:【AI修炼之路】 P1,P2,P3 四、隐性事实查询(L2) 4.1 概述 ps:P2有四种查询(L1,L2,L3,L4&…...

SpringBoot中间件Docker
Docker(属于C/S架构软件) 简介与概述 1.Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux …...
计算机毕设选题推荐【大数据专业】
计算机毕设选题推荐【大数据专业】 大数据专业的毕业设计需要结合数据的采集、存储、处理与分析等方面的技能。为帮助同学们找到一个适合且具有实践性的选题,我们为大家整理了50个精选的毕设选题。这些选题涵盖了大数据分析、处理技术、可视化等多个方向࿰…...
Bootstrap 4 多媒体对象
Bootstrap 4 多媒体对象 引言 Bootstrap 4 是目前最受欢迎的前端框架之一,它提供了一套丰富的工具和组件,帮助开发者快速构建响应式和移动设备优先的网页。在本文中,我们将重点探讨 Bootstrap 4 中的多媒体对象(Media Object)组件,这是一种用于构建复杂和灵活布局的强大…...
Springmvc Thymeleaf 标签
Thymeleaf是一个适用于Java的模板引擎,它允许开发者将动态内容嵌入到HTML页面中。在SpringMVC框架中,Thymeleaf可以作为一个视图解析器,使得开发者能够轻松地创建动态网页。以下是关于SpringMVC中Thymeleaf标签的详细介绍: 一、T…...

用java来编写web界面
一、ssm框架整体目录架构 二、编写后端代码 1、编写实体层代码 实体层代码就是你的对象 entity package com.cv.entity;public class Apple {private Integer id;private String name;private Integer quantity;private Integer price;private Integer categoryId;public…...

如何利用Fiddler进行抓包并自动化
首先一般使用Fiddler都是对手机模拟器进行抓包 接下来以MUMU模拟器为例 首先打开Fiddler-->tool-->options-->connection 将要打上的勾都打上,可以看到代理的端口是8888 打开HTTPS选项 把要打的勾打上,这样子才可以接收到HTTPS的包 MUMU打开…...
权重衰减与暂退法——pytorch与paddle实现模型正则化
权重衰减与暂退法——pytorch与paddle实现模型正则化 在深度学习中,模型正则化是一种至关重要的技术,它有助于防止模型过拟合,提高泛化能力。过拟合是指在训练数据上表现良好,但在测试数据或新数据上表现不佳的现象。为了缓解这一…...

MYSQL-windows安装配置两个或多个版本MYSQL
安装第一个mysql很简单,这里不再赘述。主要说说第二个怎么安装,服务怎么配置。 1. 从官网下载第二个MySQL并安装 一般都是免安装版了,下载解压到某个文件目录下(路径中尽量不要带空格或中文),再新建一个my.ini文件(或…...
6、Spring Boot 3.x集成RabbitMQ动态交换机、队列
一、前言 本篇主要是围绕着 Spring Boot 3.x 与 RabbitMQ 的动态配置集成,比如动态新增 RabbitMQ 交换机、队列等操作。二、默认RabbitMQ中的exchange、queue动态新增及监听 1、新增RabbitMQ配置 RabbitMQConfig.java import org.springframework.amqp.rabbit.a…...
【分布式微服务云原生】 探索SOAP协议:简单对象访问协议的深度解析与实践
探索SOAP协议:简单对象访问协议的深度解析与实践 摘要: 在现代分布式系统中,SOAP(简单对象访问协议)扮演着至关重要的角色,提供了一种标准化的方式来实现不同系统间的通信。本文深入探讨了SOAP的工作原理、…...

C语言题目练习2
前面我们知道了单链表的结构及其一些数据操作,今天我们来看看有关于单链表的题目~ 移除链表元素 移除链表元素: https://leetcode.cn/problems/remove-linked-list-elements/description/ 这个题目要求我们删除链表中是指定数据的结点,最终返…...

复变函数与积分变换——留数定理求拉氏逆变换
1.留数定理 若s1,s2,…,sn是F(s)的所有奇点(函数在某个点上的取值无定义或者无限大),且当s→∞时,F(s)→0,则有: 一般地: s1是一级极点,则&#…...

RabbitMQ事务模块
目录 消息分发 负载均衡 幂等性保障 顺序性保障 顺序性保障方案 二号策略:分区消费 三号策略:消息确认机制 四号策略: 消息积压 RabbitMQ集群 选举过程 RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,要么全部成功,要么全…...

Android终端GB28181音视频实时回传设计探讨
技术背景 好多开发者,在调研Android平台GB28181实时回传的时候,对这块整体的流程,没有个整体的了解,本文以大牛直播SDK的SmartGBD设计开发为例,聊下如何在Android终端实现GB28181音视频数据实时回传。 技术实现 Andr…...

AI金融攻防赛:金融场景凭证篡改检测(DataWhale组队学习)
引言 大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年10月学习赛的AI金融攻防赛学习总结文档。本文主要讲解如何解决 金融场景凭证篡改检测的核心问题,以及解决思路和代码实现过程。希望…...
华为OD机试真题---喊7的次数重排
题目描述 喊7是一个传统的聚会游戏。N个人围成一圈,按顺时针从1到N编号。编号为1的人从1开始喊数,下一个人喊的数字为上一个人的数字加1。但是,当将要喊出来的数字是7的倍数或者数字本身含有7时,不能把这个数字直接喊出来&#x…...

使用阿里巴巴的图
参考链接1 引用彩色图标可参考以下链接 (到第三步 测试图标效果 的时候 还是可以保持之前的写法:<i/sapn class“iconfont icon-xxx”>也会出现彩色的) 参考链接2 阿里巴巴字体使用 也可以直接将官网的代码复制过来到页面的css区域...

【hot100-java】排序链表
链表题。 使用归并排序法。 一图解决。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; thi…...

腾讯云视立方TRTCCalling Web 相关
基础问题 什么是 TRTCCalling? TRTCCalling 是在 TRTC 和 TIM 的基础上诞生的一款快速集成的音视频的解决方案。支持1v1和多人视频/语音通话。 TRTCCalling 是否支持接受 roomID 为字符串? roomID 可以 string,但只限于数字字符串。 环境问题 Web …...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...