四、隐性事实查询(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】。这些方法通过让模型判断何时停止检索并开始回答问题,来提升模型的推理能力和对信息充足性的评估。
未完待续。。。