【RAG探索第4讲】KG+RAG丨基于知识图谱优化大型语言模型方法

原文链接:【RAG探索第4讲】KG+RAG丨基于生物医学知识图谱优化的大型语言模型提示生成方法

一、现有问题:

LLMs在处理特定领域或高度专业化查询时缺乏专业知识,导致回答不够准确和可靠。
LLMs可能会产生事实错误(即幻觉)和过时的知识。
如何在减少与LLMs的交互次数的同时,将用户输入与高质量的结构化知识对齐,并过滤掉检索到的信息中的噪声。

PS:针对上述问题,一般有两种解决方向

一是采用预训练和领域特定微调的解决方案,即利用特定领域的数据集对预训练好的模型进行微调。

二是采用将相关知识构建prompt提示工程,将用户提问涉及到的相关知识进行组合连同问题一起输入到大模型中,这种方式相较于预训练微调的方法而言计算量更小,而且泛化性更强。

二、论文成果:

这篇论文的作者提出了一种KG-RAG框架,这个KG-RAG框架涉及从用户提示中识别实体,从知识图谱中提取生物医学概念,提示感知上下文生成,转换成自然语言,提示组装和答案检索,并且作者对这种方法的性能在不同的场景下进行了广泛测试。实验结果表明KG-RAG框架将生物医学知识图谱SPOKE与大型语言模型相结合,有效的提升了LLM在医疗领域的问答效果。
在这里插入图片描述

三、KG-RAG框架工作原理:

在这里插入图片描述
KG-RAG框架的工作原理包括以下步骤:
1实体识别:从用户输入的query中识别出疾病实体,然后在SPOKE知识图谱中找到相应的节点。
2上下文提取:从SPOKE知识图谱中提取与疾病节点相关的上下文信息,并将其转换为自然语言。
3提示组装:将提取的上下文与原始prompt结合。
4文本生成:使用LLM(如Llama-2-13b、GPT-3.5-Turbo或GPT-4)生成有意义的生物医学文本。

3.1实体识别:

传统的命名实体识别都是用专门的小模型去做NER(如BI-LSTM-CRF),KG-RAG是使用LLM识别实体。

实体抽取

在KG-RAG框架中,实体抽取是通过零样本提示(zero-shot prompting)实现的。研究人员设计了一个高效的抽取prompt,引导大型语言模型(如GPT-3.5-Turbo)从输入文本中提取疾病实体,并将结果以JSON格式返回。
在这里插入图片描述

DISEASE_ENTITY_EXTRACTION如下:You are an expert disease entity extractor from a sentence and report it as JSON in the following format:  Diseases: <List of extracted entities>  Please report only Diseases. Do not report any other entities like Genes, Proteins, Enzymes etc.

实体链接

疾病实体抽取出来后,下一步就是将这些实体与SPOKE知识图谱中的疾病实体进行匹配,也就是传统NLP任务中的实体链接,KG-RAG这个框架中采用的方法是用语义相似度的方式来做。

(1)实体embedding计算:首先,使用Embedding模型(作者使用的是’all-MiniLM-L6-v2’)为SPOKE知识图谱中的所有疾病概念节点计算embedding向量

(2)将计算出的疾病embedding存储在向量数据库(作者使用的是’Chroma’)中,以便快速检索。

(3)语义搜索匹配:将LLM提取的疾病实体与向量数据库中的疾病实体进行比较,选择最相似的(向量相似度计算)

PS:实体识别时零样本方法未能识别出疾病实体,采取的办法是直接拿原始query去匹配,取top 5。

最终,实体匹配过程会输出与输入文本提示中的疾病实体最相关的SPOKE知识图谱节点。这些节点及其相关信息将用于后续的上下文提取和文本生成步骤。通过这种方法,KG-RAG框架能够有效地从专业文本中提取和识别疾病实体,并将其与丰富的生物医学知识库相连接,从而生成准确、可靠的生物医学相关信息。

上下文提取

子图查询

在得到具体的实体后,紧接着就是从KG中去查询这个实体关联的子图,这些信息通常以三元组(Subject, Predicate, Object)的形式存在,表示不同的生物医学关系。通常情况下,可以查询1~3跳内的三元组信息,这里借助图数据库可以比较容易的实现。

得到的三元组信息,LLM可能不太能比较好的理解,这里就需要将三元组(主体、谓词、客体)转换成自然语言(英语),以便与输入提示结合并用于后续的文本生成。如:

(Disease hypertension, ASSOCIATES_DaG, Gene VHL) → Disease hypertension associates Gene VHL
PS:这里作者预先定义了三元组转成自然语言的转换规则。

上下文剪枝

在KG-RAG框架中,Context Pruning(上下文剪枝)是一个关键步骤(这里的剪枝就是减少给LLM的信息,减少token数量)可以过滤掉一些无用信息,提升LLM回答的精确性。

作者使用的剪枝方法是使用embedding模型计算三元组和query的cos相似度,然后根据下面的规则进行选择:

条件一:上下文关联的余弦相似度必须大于包含所有与所选疾病节点相关的上下文的相似度分布的75%分位(相似度75%以上)
条件二:余弦相似度的最小值必须达到0.5

通过这个0.5 和 75%,可以有效减少给LLM的无效信息,有助于提高后续文本生成的准确性和相关性。

提示组装

将用户提问和提取到的上下文信息组合为propmt,再加上SYSTEM_PROMPT,送给LLM回答:

在这里插入图片描述
SYSTEM_PROMPT如下:

# One-Hop Validation  
SINGLE_DISEASE_ENTITY_VALIDATION: |  You are an expert biomedical researcher. For answering the Question at the end, you need to first read the Context provided.  Then give your final answer by considering the context and your inherent knowledge on the topic. Give your answer in the following JSON format:  {Compounds: <list of compounds>, Diseases: <list of diseases>}  # Two-Hop Validation  
TWO_DISEASE_ENTITY_VALIDATION: |  You are an expert biomedical researcher. For answering the Question at the end, you need to first read the Context provided.  Then give your final answer by considering the context and your inherent knowledge on the topic. Give your answer in the following JSON format:  {Nodes: <list of nodes>}

问答生成:

作者使用了三个预训练的聊天模型:Llama-2-13b,GPT-3.5-Turbo和GPT-4。具有130亿参数和4096个标记大小的Llama模型被下载并部署在Amazon Elastic Compute Cloud(EC2)GPU P3实例中。通过OpenAI API访问GPT模型。由于GPT模型的参数数量比Llama更高,提供了比较KG-RAG性能作为LLM大小函数的机会,以其参数数量为准。在这项研究中,对于所有LLM,设置了控制LLM输出中随机性水平的“温度”参数为0。

HyKGE: A Hypothesis Knowledge Graph Enhanced Framework for Accurate and Reliable Medical LLMs Responses
在这里插入图片描述

HyKGE整体模型

在这里插入图片描述
HyKGE框架的核心思想是在检索前阶段利用LLMs的零样本(zero-shot)能力和丰富知识来扩展KGs中的探索方向,并通过精心设计的提示(prompt)增强LLMs回答的密度和效率。具体来说,HyKGE包含以下几部分:

  • 假设输出模块(HOM):利用LLMs生成假设输出,补偿用户查询的不完整性。
  • 命名实体识别模块(NER Module):从假设输出和用户查询中提取医疗实体。
  • 知识图谱检索模块:使用提取的实体作为锚点,搜索知识图谱中的推理链。
  • HO片段粒度感知重排模块:在检索后阶段,通过使用假设输出的片段和用户查询来重排和过滤检索到的知识,以保持多样性和相关性的平衡。(过滤噪声知识)

假设输出模块:
利用LLMs的零次学习(zero-shot)能力,生成与查询相关的假设输出,这些假设输出可以作为在知识图谱中探索新知识的起点。此模块设计了细致的提示(Prompt)格式,引导LLMs逐步深入思考问题,以弥补用户查询可能存在的信息不全。例如,提示会要求模型“作为医疗专家,缓慢思考,逐步理解并回答问题,不跳过关键步骤,全面分析问题”。通过这种方式,模型能够根据问题要求,发挥其强大的推理能力,探索与问题相关的医学知识,从而生成高质量的假设输出。这个本身要求LLM对医疗知识就有着比较强的推理能力,这里可以通过fine-tune 做知识迁移到医疗领域。
在这里插入图片描述
命名实体识别模块(NER模块):
作者这里是直接引入了一个专门针对医疗领域的命名实体识别模型,这个模型是利用CMEEE数据集训练的。
知识图谱检索模块:
利用匹配的实体在知识图谱中检索相关的知识路径,作者是使用密集检索方法将潜在实体链接到KG,使用GTE嵌入模型(作者说这事目前检索领域表现最好的文本向量嵌入模型)。
HOFragment粒度感知重排模块:
通过检索模块后,可以获得大量的推理链(知识图谱中的路径),然后再进行去噪(和上一篇论文的剪枝相似),这个是作者的一大创新点,这个模块主要是根据知识的相关性和多样性对检索结果进行重排,以过滤掉噪声信息,同时保持知识的多样性和相关性之间的平衡。HyKGE采用HO片段(假设性回答)重排名机制,通过分片假设性回答和用户问句,去除低密度文本,然后进行知识重排名,过滤噪声知识,保留相关且多样的检索知识。根据每条推理连的相关性,一致性和信息性进行排序。最终得到topK个推理链。作者是使用bge_reranker_large模型,通过非对称指令调优的大规模文本对进行训练,将文本映射到低维密集向量以重新排序,作者的创新在于重排时不仅考虑推理链和Q(用户查询)的相关性,同时考虑推理链和HO(假设性回答)的相关性。

在这里插入图片描述

总结

  1. 基于生物医学知识图谱的提示生成优化方法研究 本文提出了一种名为KG-RAG的框架,以解决大型语言模型(LLMs)在处理专业领域查询时缺乏准确性和可靠性的问题。KG-RAG框架通过识别用户提示中的实体,从知识图谱中提取相关上下文信息,并将其转换为自然语言提示供LLMs生成回答。实验表明,结合SPOKE知识图谱与LLMs(如Llama-2-13b、GPT-3.5-Turbo、GPT-4)可以有效提升医疗领域的问答效果,减少事实错误和过时信息的产生。该方法在计算开销和模型泛化能力上表现优异,为专业领域问答提供了高效、可靠的解决方案。
  2. HyKGE: 提升医疗LLM响应准确性与可靠性的假设知识图谱增强框架 HyKGE框架通过整合大型语言模型(LLMs)的零样本能力和知识图谱(KGs),在检索前扩展知识探索方向,显著提升了医疗领域问答系统的响应质量。该框架包括假设输出模块(HOM),通过精心设计的提示生成高质量的假设输出;命名实体识别模块(NER),从假设输出和用户查询中提取医疗实体;知识图谱检索模块,通过匹配实体搜索知识图谱中的推理链;以及HO片段粒度感知重排模块,过滤噪声知识并保持相关性与多样性的平衡。实验结果表明,HyKGE框架在提升医疗问答系统的准确性和可靠性方面具有显著优势。

相关阅读

【RAG探索第4讲】KG+RAG丨基于生物医学知识图谱优化的大型语言模型提示生成方法
【RAG探索第3讲】LlamaIndex的API调用与本地部署实战
【RAG探索第2讲】大模型与知识图谱的融合之路:优势互补与协同发展
【RAG探索第1讲】通过大模型读取外部文档的创新探索与自适应策略
大模型名词扫盲贴
RAG实战-QAnything
提升大型语言模型性能的新方法:Query Rewriting技术解析
一文带你学会关键词提取算法—TextRank 和 FastTextRank实践

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

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

相关文章

【计算机视觉】siamfc论文复现

什么是目标跟踪 使用视频序列第一帧的图像(包括bounding box的位置)&#xff0c;来找出目标出现在后序帧位置的一种方法。 什么是孪生网络结构 孪生网络结构其思想是将一个训练样本(已知类别)和一个测试样本(未知类别)输入到两个CNN(这两个CNN往往是权值共享的)中&#xff0…

深入理解PHP基础【代码审计实战指南】

文章目录 基础语法单双引号的区别前后端分离数据类型PHP常量函数var_dump函数count函数print_r函数**readfile&#xff08;&#xff09;函数****file_get_contents()函数****file_put_contents()函数**header函数fopen函数fread 函数rename函数copy&#xff08;&#xff09;函数…

OCR识别采购单小程序管理助手

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货、宠物等连锁店使用。 详细介绍请…

Qt开发网络嗅探器01

引言 随着互联网的快速发展和普及&#xff0c;人们对网络性能、安全和管理的需求日益增 长。在复杂的网络环境中&#xff0c;了解和监控网络中的数据流量、安全事件和性能 问题变得至关重要。为了满足这些需求&#xff0c;网络嗅探器作为一种重要的工具被 广泛应用。 网络嗅探…

【Godot4.2】SVGParser - SVG解析器函数库

概述 这是一个基于GDScript内置XMLParser编写的简易SVG文件解析函数库。 目的就是可以将SVG文件解析为GDSCript可以处理的字典或DOM形式&#xff0c;方便SVG渲染和编辑。 目前还只是一个简易实现版本。还需要一些改进。 函数库源码 # # 名称&#xff1a;SVGParser # 类型…

AI算法23-决策树ID3算法Iterative Dichotomiser 3 | ID3

目录 决策树ID3算法概述 决策树ID3算法简介 决策树ID3算法的原理 决策树ID3算法的核心 决策树ID3算法的本质 决策树ID3算法的基本流程 决策树ID3算法计算过程 步骤1 步骤2 步骤3 决策树ID3算法的代码实现 决策树ID3算法的优缺点 优点 缺点 决策树ID3算法的应用场…

ue5笔记

1 点光源 聚光源 矩形光源 参数比较好理解 &#xff08;窗口里面&#xff09;环境光混合器&#xff1a;快速创造关于环境光的组件 大气光源&#xff1a;太阳光&#xff0c;定向光源 天空大气&#xff1a;蓝色的天空和大气 高度雾&#xff1a;大气下面的高度感的雾气 体积…

【HarmonyOS】HarmonyOS NEXT学习日记:五、交互与状态管理

【HarmonyOS】HarmonyOS NEXT学习日记&#xff1a;五、交互与状态管理 在之前我们已经学习了页面布局相关的知识&#xff0c;绘制静态页面已经问题不大。那么今天来学习一下如何让页面动起来、并且结合所学完成一个代码实例。 交互 如果是为移动端开发应用&#xff0c;那么交…

自主巡航,目标射击

中国机器人及人工智能大赛 参赛经验&#xff1a; 自主巡航赛道 【机器人和人工智能——自主巡航赛项】动手实践篇-CSDN博客 主要逻辑代码 #!/usr/bin/env python #coding: utf-8import rospy from geometry_msgs.msg import Point import threading import actionlib impor…

鸿蒙开发 03 封装 @ohos/axios (最新深度封装)

鸿蒙开发 03 封装 ohos/axios &#xff08;最新深度封装&#xff09; 1、安装 ohos/axios2、开始封装2.1 新建 utils 文件夹 和 api 文件夹2.2 在 utils 文件夹里新建 http.ts2.3 在 api 文件夹里新建 api.ets 3、页面调用4、打印结果 1、安装 ohos/axios ohpm install ohos/a…

linux环境交叉编译openssl库,以使Qt支持https

一.前言 Qt若需要支持https&#xff0c;则需要openssl的支撑,并且要注意&#xff0c;Qt不同版本会指定对应的openssl版本库&#xff0c;比方我用的Qt5.15.10他要求用的openssl版本是1.1.1&#xff0c;你就不能用其他版本&#xff0c;不然基本就是失败报错。 如何查看Qt对应ope…

无人机反制技术常见的有哪些?

随着无人机技术的迅速发展和广泛应用&#xff0c;无人机在民用、军事等领域都发挥着重要作用。然而&#xff0c;无人机的滥用和非法入侵也带来了严重的安全隐患。为了维护国家安全和社会稳定&#xff0c;无人机反制技术应运而生。本文将详细介绍无人机反制技术的常见类型&#…

【Git学习 | 第2篇】在IDEA中使用Git

文章目录 在IDEA中使用Git1. IDEA中配置Git2. 获取Git仓库2.1 本地初始化仓库2.2 从远程仓库克隆 3. 本地仓库操作4. 远程仓库操作5. 分支操作 在IDEA中使用Git 1. IDEA中配置Git IDEA中使用Git&#xff0c;本质上使用的本地安装的Git软件配置步骤&#xff1a; 2. 获取Git仓库…

Unity UGUI 之 RectTransform

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 Unity - Manual: Rect Transform 1.Rect Transform是什么 2.轴心与锚点的映射关系 首先…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【29】Sentinel

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【29】Sentinel 简介熔断降级什么是熔断什么是降级相同点不同点 整合Sentinel自定义sentinel流控返回数据使用Sentinel来保护feign远程调用自定义资源给网关整合Sentinel参考 简介 熔断降…

阿里开源的音频模型_原理与实操

英文名称: FunAudioLLM: Voice Understanding and Generation Foundation Models for Natural Interaction Between Humans and LLMs 中文名称: FunAudioLLM: 人与LLMs之间自然互动的语音理解和生成基础模型 论文地址: http://arxiv.org/abs/2407.04051v3 相关论文&#xff1a;…

人话讲下如何用github actions编译flutter应用-以编译windows为例

actions的脚本看下这个&#xff0c;有简单的说明&#xff0c;有关于编译个平台的脚本&#xff1a; https://github.com/marketplace/actions/flutter-action 打开你要编译的项目点击那个Actions按钮 然后随便点击一个脚本会跳到白框编辑界面 打开上文提到的网址随便抄下就ok …

达梦数据库(一)mysql2dm

达梦数据库(一)mysql2dm 文章目录 达梦数据库(一)mysql2dm一、安装篇ForWindows二、数据库初始化篇三、数据迁移篇出现的问题找不到对应表或者视图 注意字符集模式迁移出错大小写敏感解决方案 四、 代码修改篇group_concatGROUP BY方法一方法二(最笨)方法补充 多表联查更新参考…

1.17、基于竞争层的竞争学习(matlab)

1、基于竞争层的竞争学习简介及原理 竞争学习是一种无监督学习方法&#xff0c;其中的竞争层神经元之间互相竞争以学习输入模式的表示。竞争学习的一个经典模型是竞争神经网络&#xff08;Competitive Neural Network&#xff0c;简称CNN&#xff09;&#xff0c;其核心部分是…

Linux复习02

一、什么是操作系统 操作系统是一款做软硬件管理的软件&#xff01; 一个好的操作系统&#xff0c;衡量的指标是&#xff1a;稳定、快、安全 操作系统的核心工作&#xff1a; 通过对下管理好软硬件资源的手段&#xff0c;达到对上提供良好的&#xff08;稳定&#xff0c;快…