知识图谱KG+大模型LLM

  • LLM-based KG
    • KnowLM
    • OpenSPG
  • KG-based RAG
    • 基本原理
      • 从query出发的语义解析
        • pre-LLM方法
          • 思想:直接将问题解析为对应的逻辑表达式,然后到知识图谱中查询。
          • 方法:通常包含逻辑表达式、语义解析算法、语义解析模型训练三部分。一般步骤是将问句解析成中间表示,再将中间表示向知识库映射,获得最终的逻辑表示。
            • 逻辑表达式:lambda-calculus(支持实体,数词,函数等常量,支持多种逻辑连接词,支持\exists,\forall等存在量词,argmax,argmin等额外量词),lambda-DCS(组合语法更简单,支持最基本的实体、关系、Join/intersection操作,支持Bridging操作,可以把两个独立的语义片段组合起来,将离散语义组合为更完整的语义), 组合范畴语法CCG(由解析规则、解析算法、解析模型训练组成,解析规则由词汇、句法类型、语义类型构成,CCG支持应用、组合、类型转化、并列等操作)。
            • 语义解析的基本步骤:短语检测(识别短语的实体和关系,包括分词、词性标注POS、命名实体识别NER,依赖关系分析构造短语依存图等步骤),资源映射(grouding,包括实体链接、概念匹配、关系分类/关系抽取,目标是将问句与知识图谱上的本体匹配,可以从短语依存图出发实现),语义组合(包括句法分析,组合模型训练,语义组合等步骤),逻辑表达生成。
            • 语义解析器的训练:目标是通过大规模知识库上的问题/答案对集合训练Parser,用在语义组合阶段。以词法、语法、对齐、桥接、实体链接、关系识别为特征,以候选逻辑表达式为目标

          • 难点:1. 语义解析的Bridging操作,通常谓词不是明确表示的,导致问句中的谓词无法与知识图谱中的关系直接映射,将实体周边的谓词与问句中真正的谓词对应,即Bridging。2. 知识图谱是高度不完备的,因此需要进行问句的短语重写来匹配知识(Prapharasing),因此需要搜集高质量的语料来训练短语重写模型。

          • 缺点:最大缺点是对知识图谱中资源的利用程度不够,知识图谱中的海量知识是可以极大的增强问句的理解过程的,更好的方法应该充分深挖问句和知识图谱两方面资源所包含的信息。
        • LLM-based方法
          • 增加一路与向量库平行的KG上下文增强策略,基于模型的NL2X能力或单独的NL2X模块,将query解析为图查询语言,直接执行图查询,然后后查询的结果转换为文本片段。
      • 从图谱出发的检索排序
        • pre-LLM方法
          • 主要思路:根据query抽取实体,然后把实体作为种子节点对图进行采样(必要时,可把KG中节点和query中实体先向量化,通过向量相似度设置种子节点),然后把获取的子图转换成文本片段,针对query进行排序。
          • 关键模块:排序模型
            • 基于特征的检索排序模型:针对每个答案构造特征,常用的问题特征包括:疑问词特征、问题实体特征、问题类型特征、问题动词特征、问题上下文特征。常用的答案特征包括:谓词特征、类型特征、上下文特征。
            • 基于子图匹配的检索排序模型:从输入问题中定位问题实体,随后答案候选检索模块以该问题实体为起点按照特定规则从知识图谱中选择答案候选,接下来,答案子图生成模块为每个答案候选实体从知识图谱中抽取出一个子图,作为该答案实体的一种表示。最后答案检索排序模块计算输入问题和每个答案子图之间的相似度用来对子图对应的答案候选进行打分,从而排序得到最终答案,Wen-tau Yih, Ming-Wei Chang, Xiaodong He, Jianfeng Gao. Semantic Parsing via StagedQuery Graph Generation: Question Answering with Knowledge Base, ACL, 2015。
            • 基于向量表示的检索排序:为输入问题Q 和答案候选 A 分别学习两个稠密的向量表示f(Q)和g(A):并在向量空间中计算问题向量和答案向量之间的相似度,用于对不同的答案候选进行打分。
            • 基于记忆网络的检索排序:除问答模块之外,引入记忆网络模块,记忆网络模块负责将有限的记忆单元表示为向量,问答模块从记忆网络模块中寻找与问题有关的答案,如Key-value Memory Network将外部数据输入表示为记忆单元,通过问句与记忆单元之间的计算来寻找答案。
          • 主要难点:实体链接
            • 难点1:实体链接,在文本中对知识图谱中的命名实体进行识别和消歧的任务。标准方法使用实体对齐工具(如TagMe)来检测输入文本中提到的知识图谱实体并将它们链接到正确的知识图谱条目。但也可以将实体链接问题的两部分——识别和消歧——作为一个联合任务,使用端到端的神经网络进行优化
            • 难点2:多语言实体链接,在实际应用中,我们经常需要把多语言的文本中的实体链接到一个或多个不同语种的知识图谱上这类型的设定被称为是跨语言实体链接当语种数目足够多时,会出现低资源语种或实体对应的训练数据极少的情况,因此,需要格外关注零样本和少样本的情形。《Entity Linking in 100 Languages》
        • LLM-based方法
          • 基本方法:基于LLM进行中心实体抽取,然后从中心实体出发,获取知识图谱中有关的实体的子图,转换为自然语言作为候选答案,然后对候选答案进行向量化,根据与query的语义相似度进行排序,选出得分最高的候选答案作为上下文,输入LLM进行编排得到最终回答。
          • 实体链接实现(KG-RAG):实体识别使用LLM实现,预先将KG中的节点使用特定的embedding模型进行向量化,查询时计算抽取实体与KG节点的相似度,选择topk相似节点作为候选实体。问题:1,理论层面,没有消歧,不能解决实体异名、同名异意的问题;2. 实现层面,需要预先向量化,指定向量集合和KG数据库。
    • KAPING:直接以KG中抽取的三元组作为提示
      • 从知识图谱中抽取相关的事实三元组,并将其作为提示信息输入到大模型。因此在这一方法中,如何抽取最相关的三元组是需要解决的主要问题。所提方法分为三个模块:知识获取-知识表达-知识注入。知识获取的目标从给定问题中抽取相关的实体。本模块采用的方法为传统的实体链接方法。然而,该实体相关三元组可能规模较大,且并非所有都与问题相关。基于这一考虑,本文首先采用已有的句子表示模型,分别将三元组和问题映射到统一表示空间,选择前K个与问题语义最相似的三元组。知识表达的目标是将三元组转化为文本形式的表示。知识注入的目标是根据三元组和给定问题构建大模型提示词。构建方法为首先列出N个相关三元组,然后增加说明信息“Below are facts in the form of the triple meaningful to answer the question”。
    • Think on Graph:从KG中搜索下一步推理路径
      • 从给定问题出发,每一步推理都要经过扩展-推理的过程,每步推理都是基于问题通过大模型在知识图谱数据中搜索下一步推理的相关路径。主要步骤为首先识别输入问题中的主题实体,然后利用大模型对外部知识图谱进行探索和推理,检索相关的路径。如此循环直到达到最大步数或得到推理答案。
    • 开源项目
      • https://github.com/BaranziniLab/KG_RAG
      • https://github.com/stanford-oval/WikiChat
        • 1. 基于LLM生成从wiki百科检索的查询,发送到信息检索系统,从语料库中获取相关段落,并根据时间信息对结果进行重新排序,以获取近义词段落。再看有趣的大模型RAG问答优化策略:Wikichat七步走及KG-RAG实现范式 (qq.com)
          • 文本索引:使用WikiExtractor工具(https://github.com/attardi/wikiextractor) 从2023年4月28日获得的英文维基百科转储中提取纯文本,与ColBERT一样,将每篇文章(忽略表格和信息框)划分为不同的文本块作为段落,并在段落前加上文章标题,将段落和标题的总长度限制在120字以内。
          • 检索召回:在维基百科上使用ColBERTv2(https://github.com/stanford-futuredata/ColBERT/) 和PLAID(https://arxiv.org/abs/2205.09707) 作为检索工具。ColBERT是一种快速准确的检索模型,可在数十毫秒内对大型文本集合进行基于BERT的可扩展搜索,ColBERT的后期交互,可有效地对查询和段落之间的细粒度相似性进行评分。ColBERT是表示-交互检索模型的代表,由一个线上encoder一个线下encoder组成,encoder具体采用的是bert,而且是共享权重的。此外,encoder的输出会进入一个没有激活函数的线性层,用于缩小每个token的维度,起到加速的作用。 而且还会将document的encoder输出结果中的标点符号去掉,也是起到加速作用。

        • 2. 汇总和过滤检索到的段落,基于LLM从检索到的段落中提取相关部分,并将其归纳为要点
        • 3. 生成初始回复,提示LLM生成对对话历史的回复,这种回复通常包含有趣和有用的知识,但本质上并不可靠
        • 4. 从回复中提取声明,LLM回复被分解为多个声明(claim)。这一阶段解决共同参照问题,以减少歧义,并解决了"当前"和"去年"等相对时间信息
        • 5. 使用检索到的证据对回复中的声明进行事实检查,使用思维链提示,只有得到证据支持的声明才会被保留
        • 6. 起草最终回复,根据给定的要点清单和对话历史记录生成回复草稿
        • 7. 完善最终回复,根据相关性、自然性、非重复性和时间正确性生成反馈并完善回复
  • KG-enhanced LLM
    • 知识注入训练的LLM
      • ERNIE
      • KnowBert
      • LUKE
      • KBERT
    • 基于知识图谱微调的LLM
      • KoPA(介绍)
        • KoPA是一个两阶段的基于LLM的KGC框架。首先对给定的KG中的实体和关系进行结构嵌入预训练(上面的支路),然后然后通过结构前缀适配器将这些信息注入输入序列,用于采用指令调优来微调LLM。结构嵌入预训练:KoPA从KG中提取实体和关系的结构信息,并将其适应到LLM的文本表示空间中。使用负采样的自监督预训练目标定义得分函数 ( F(h,r,t) ) 来衡量三元组的合理性。通过最小化这种预训练损失,实体和关系的结构嵌入被优化以适应所有相关的三元组。知识前缀适配器:在完成结构嵌入预训练后,通过知识前缀适配器将结构嵌入转换为虚拟知识Token。这些Token作为输入序列的前缀,由于解码器仅在LLM中的单向注意力,所有后续的文本Token都可以看到这些前缀。这样,文本Token可以对输入三元组的结构嵌入进行单向注意,从而在微调和推理期间实现结构感知提示。

  • KG-enhanced LMM
    • Structure-CLIP:通过场景图知识增强多模态结构化表示增强CLIP
      • 出发点:CLIP模型产生的通用表征能力无法区分那些包含相同单词但在结构化知识方面存在差异的文本段落。换言之,CLIP模型表现出类似于词袋模型的特点,未能有效理解和捕捉句子中的细粒度语义。思路:通过场景图知识增强多模态结构化表示。与NegCLIP的随机交换方法不同,Structure-CLIP采用了基于场景图的引导策略来进行单词交换,以更精确地捕捉底层语义意图。此外,还提出了一种知识增强编码器,它利用场景图来提取关键的结构信息,并通过在输入层面上融合结构化知识,从而增强结构化表示的能力。
  • KG-enhanced Prompt Engineering
    • CoK:诱导LLM生成结构三元组来提高CoT推理中的依据可信度
      • 出发点:旨在解决CoT中中间生成理由错误的问题,方法是诱导LLM生成结构三元组的显式知识证据,基于此还引入F2-Verification方法,从事实性和忠实性两个方面来评估推理链的可靠性。对于不可靠的回答,可以指出错误的证据,促使LLM重新思考。主要创新点:提示格式,因为纯文本推理链不足以让LLM生成可靠而具体的推理过程。受知识库中三重结构的启发,需要用结构化特征来增强提示。事后验证。LLM通常无法检查他们所回答的答案,这就要求利用外部知识进行验证。方法:CoK由两个主要部分组成,即证据三元组(CoK-ET)和解释提示(CoK-EH)。CoK-ET代表一个由多个三元组组成的列表,每个三元组都代表从大模型那里获得的知识证据,以支持逐步思考的过程。在事实性验证上,事实性可视为每个生成的三元组证据与知识库中的基本真实知识之间的匹配度。具体来说,定义一个函数fv来表示每个证据的真实性。设计两种不同的fv策略:精确验证和隐式验证。在忠实性验证上,给定一个测试查询、一个证据三元组列表和最终答案,直接将它们连接成一个新的序列,利用预置的句子编码器SimCSE来计算新序列与先前序列之间的相似度,最后,对于每个查询,可以得到一个分数Ci(0<Ci<1),表示该理由对答案是否可靠。当LLM生成的推理链未能通过验证且可靠性得分低于阈值θ时,会在反思阶段为它们提供额外的再次生成机会。
    • BSChecker:将大模型输出分解为三元组分步进行幻觉检测
      • BSChecker其思想在于,与传统的段落或句子级别的分析方法不同,将大模型的输出文本分解成知识三元组,该工作将幻觉检测的最小单元称为一个声明(claim)。在计算方式上,不同于传统幻觉检测方法将整个输出文本分类为是否存在幻觉这两种类别标签,BSChecker对输出文本中的每一个声明都进行幻觉检测并分类。输出文本和其相应的参考文本之间的关系可以分成蕴涵(Entailment,图中绿勾✅)和矛盾(Contradiction,图中红叉❌)以及中立(图中的问号)。BSChecker具有模块化的工作流程,分为声明抽取器E,幻觉检测器C,以及聚合规则τ,将输入文本分解成一组知识三元组。每个三元组都要经过验证,验证。随后,根据预定义的规则,汇总各个结果,以确定给定文本的整体幻觉标签。本质上是以文本抽取的多个三元组为评估基准,来评估整个输出的幻觉可能。
      • Extractor使用GPT-4和Claude 2,Checker使用大量现有的ZERO-SHOT校验器,而无需额外的训练,主要考虑两种类型:基于LLM的检查器和基于NLI的检查器,在汇总阶段,得到整个输入文本的整体幻觉标签。
    • graph-guided reasoning: 通过图表示/验证步骤引导CoT
      • 包括如下几个步骤:1. 图表示,利用LLMs构建一个“问题/理由图”,该图是一个有向无环图,其中每个节点是一个问题或一个理由,每条边是一个关系。图表示的目的是将问题和理由的语义结构显式地表示出来,以便于后续的推理。2. 图验证,利用LLMs对当前的理由节点进行诊断,通过将其与现有的问题/理由图进行比较,来过滤掉无关的理由,并生成后续的问题,以获取更多的相关信息。图验证的目的是检查和纠正当前的推理路径,以避免错误或不完整的推理。3. 图补充,利用LLMs生成不包含图中提取信息的CoT路径,以表示图抽取中遗漏的上下文信息。图补充的目的是补充和完善当前的推理路径,以提高推理的全面性和鲁棒性。
      • 具体实现:问题图构建是指利用大型语言模型从问题中提取知识三元组,并将其表示为一个图结构。中间问题生成是指根据问题图中的三元组,生成一个与初始问题相关的子问题,以获取回答问题所需的信息。中间答案生成是指利用大型语言模型回答中间问题,并生成一个作为推理步骤的中间答案。在开放领域的设置中,还可以利用检索增强的方法,根据中间问题作为查询,从外部知识库中检索相关的段落,以辅助中间答案的生成。理由验证是指将生成的中间答案转换为三元组的形式,并与问题图进行匹配,以验证其是否有效和有用。如果中间答案被拒绝,就返回到中间问题生成的步骤。这个过程重复进行,直到生成的理由图与问题图匹配,或者达到重复的限制。然后,大型语言模型根据所有的中间答案,生成最终的答案。

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

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

相关文章

【Kafka】Linux本地和Docker安装Kafka

目录 Linux本地安装kafkajava环境配置Zookeeper的安装配置Kafka的安装与配置生产与消费 Docker安装kafkaZookeeper安装Kafka安装 Linux本地安装kafka java环境配置 1、上传jdk-8u261-linux-x64.rpm到服务器并安装&#xff1a; rpm -ivh jdk-8u261-linux-x64.rpm2、配置环境变…

深度学习(4)--Keras实战

一.Keras基础概念 1.1.Keras是什么 Keras是深度学习中的一个神经网络框架&#xff0c;是一个高级神经网络API&#xff0c;用Python编写&#xff0c;可以在TensorFlow&#xff0c;CNTK或Theano之上运行。 Keras优点&#xff1a; (1). 允许简单快速的原型设计&#xff08;用户…

【C++】用wxWidgets实现多文档窗体程序

一、基本步骤和示例代码 在wxWidgets中&#xff0c;要实现多文档窗体程序&#xff0c;通常会使用wxMDIParentFrame和wxMDIChildFrame类来创建一种标准的MDI&#xff08;多文档接口&#xff09;应用。以下是基本步骤和示例代码&#xff0c;演示如何使用wxWidgets创建多文档界面…

Pycharm详细安装 配置教程

继上次安装完Anaconda之后&#xff0c;现在更新最新版本的pycharm的安装和使用教程~~~ Anaconda&#xff1a;是一个开源的Python发行版本&#xff0c;其中包含了conda、Python等180多个科学包及其依赖项。【Anaconda和Pycharm详细安装 配置教程_anconda安装时clear the packag…

SpringMVC简介和SpringMVC的HelloWorld

一、SpringMVC简介 1、什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体类Bean&#xff1a…

web渗透安全学习笔记:2、HTML基础知识

目录 前言 HTML的标题 段落链接与插入图片 HTML元素 HTML属性 HTML头部 HTML与CSS HTML与JavaScript 表格与列表 HTML区块 布局 HTML表单 HTML与数据库 音频与视频 HTML事件 前言 HTML的标题 <!DOCTYPE html> <html> <head> <meta chars…

yum配置文件及NFS共享

一 yum配置文件及命令 1 /etc/yum.conf //主配置文件 2 /etc/yum.repos.d/*.repo //yum仓库文件位置 写错一个字母就不行&#xff0c;可以ping www.google.com 测试网络 3 /var/log/yum.log //日志文件 二 yum命令 1 [rootlocalhost ~…

分布式锁的产生以及使用

日常开发中&#xff0c;针对一些需要锁定资源的操作&#xff0c;例如商城的订单超卖问题、订单重复提交问题等。 都是为了解决在资源有限的情况限制客户端的访问&#xff0c;对应的是限流。 单节点锁问题 目前针对这种锁资源的情况采取的往往是互斥锁&#xff0c;例如 java 里…

【LeetCode: 295. 数据流的中位数 + 堆】

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

list列表可编辑状态

有时候list需要修改或选择属性,mfc自带的只能显示内容,基本上是不可以修改,为了实现这个功能需求,需要完成一下步骤转换. 第一步记录选择的单元格. 第二步创建一个编辑框CComboBox对象, 设置字体,窗口属性. 第三步获取选中单元格的位置信息. 第四步获取单元格内容信息. 第五步…

Leetcode3005. 最大频率元素计数

Every day a Leetcode 题目来源&#xff1a;3005. 最大频率元素计数 解法1&#xff1a;遍历 哈希 遍历数组 nums&#xff0c;统计各元素 num 的出现次数&#xff0c;存储在哈希表 cnt 中。 初始化 sum 0&#xff0c;max_freq 0。 遍历哈希表 cnt&#xff1a; 如果当前…

v34.运算符的优先级 和 结合性

1.优先级 优先级高的运算符会首先被评估。 2.结合性 当运算符的优先级相同时&#xff0c;结合性就会发挥作用。 3.优先级很重要 &#xff08;&#xff09;的优先级大于&#xff0c;所以操作数fun属于&#xff08;&#xff09; 而不是 &#xff0c;所以这个表达式看做是将函数…

基于蒙特卡洛模拟的家用电动汽车充电负荷预测(MATLAB实现)

采用蒙特卡洛模拟法&#xff0c;对家用电动汽车充电负荷进行预测&#xff0c;电动汽车分为快、中、慢三种充电功率&#xff0c;且分为一天一充、一天两充、一天三充三种类型。全部MATLAB代码在下方给出&#xff0c;可以直接运行。 %%%%%%%%%%%%%%%%%%%%%%%%输入电动汽车相关原…

Spark读取kafka(流式和批数据)

spark读取kafka&#xff08;批数据处理&#xff09; # 按照偏移量读取kafka数据 from pyspark.sql import SparkSessionss SparkSession.builder.getOrCreate()# spark读取kafka options {# 写kafka配置信息# 指定kafka的连接的broker服务节点信息kafka.bootstrap.servers: n…

集美大学“第15届蓝桥杯大赛(软件类)“校内选拔赛 D矩阵选数

经典的状态压缩DP int dp[15][(1<<14)10]; int a[15][15]; void solve() {//dp[i][st]考虑到了第i行 并且当前考虑完第i行以后的选择状态是st的所有方案中的最大值for(int i1;i<13;i)for(int j1;j<13;j)cin>>a[i][j];for(int i1;i<13;i){for(int j0;j<…

宝塔 ftp 服务器发回了不可路由的地址/读取目录列表失败

ftp连接不上&#xff1a; 1.注意内网IP和外网IP 2.检查ftp服务是否启动 &#xff08;面板首页即可看到&#xff09; 3.检查防火墙20端口 ftp 21端口及被动端口39000 - 40000是否放行 &#xff08;如是腾讯云/阿里云等还需检查安全组&#xff09; 4.是否主动/被动模式都不能连接…

相比于 Jira,极狐GitLab 的敏捷项目管理是怎样的?

本文作者 极狐GitLab 资深解决方案架构师 尹学峰 简述 写在前面的话 如果你目前没有用任何专门的项目管理软件&#xff0c;只是在使用word、excel之类的通用软件进行项目管理&#xff0c;建议直接阅读本文详述章节&#xff0c;极狐GitLab的项目管理工具将为你带来巨大的效率提…

logstack 日志技术栈-04-opensource 开源工具 Syslog-ng+Highlight.io

5. Syslog-ng Syslog-ng 是一个开源的日志管理解决方案&#xff0c;主要用于收集和处理日志数据。它可以从多种源收集日志&#xff0c;包括系统日志、网络设备日志和第三方应用日志。 然后将日志解析、分类、重写和关联到统一格式中&#xff0c;然后将其存储或安全地传输到不同…

[ tool ] Xpath选择器和selenium工具基本使用

XPath xpath介绍 是一门在XML文档中查找信息的语言 html文档准备 doc <html><head><base hrefhttp://example.com/ /><title>Example website</title></head><body><div idimages><a hrefimage1.html aabb>Name: My…

JVM工作原理与实战(二十一):内存管理

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、不同语言的内存管理 1.C/C的内存管理 2.Java的内存管理 二、垃圾回收的对比 1.自动垃圾回收与手动垃圾回收的对比 2.优点与缺点 总结 前言 JVM作为Java程序的运行环境&#…