论文学习:基于知识图谱的RAG进行客服问答

1.简介

文章名称: Retrieval-Augmented Generation with Knowledge Graphs for Customer Service Question Answering(基于知识图谱的RAG进行客服问答)

2.摘要ABSTRACT

在客户服务技术支持中,迅速准确地检索相关的过往问题对于有效解决客户查询至关重要 【1.前景提要】。在大型语言模型(LLMs)的检索增强生成(RAG)中,传统的检索方法将大量过往问题跟踪工单视为普通文本,忽略了关键的问题内部结构和问题间关系,从而限制了性能 【2.老方法】。我们引入了一种新颖的客户服务问答方法,将RAG与知识图谱(KG)相结合。我们的方法从历史问题中构建知识图谱以用于检索,保留了问题内部结构和问题间关系 【3.新方法】。在问答阶段,我们的方法解析消费者查询,并从知识图谱中检索相关子图以生成答案。这种知识图谱的整合不仅通过保存客户服务结构信息提高了检索准确性,还通过减轻文本分割的影响提高了回答质量。 【4.新方法的过程和好处】 通过在我们的基准数据集上进行实证评估,利用关键检索(MRR、Recall@K、NDCG@K)和文本生成(BLEU、ROUGE、METEOR)指标,我们的方法在MRR方面比基准线提高了77.6%,在BLEU方面提高了0.32。我们的方法已在领英的客户服务团队中部署了大约六个月,将单个问题的中位解决时间缩短了28.6%。

摘要内容: 利用知识图谱增强RAG检索增强的能力,主要过程是对用户的Query进行解析,然后将解析到的实体通过知识图谱进行检索生成答案。【通过Query的关键词检索内容,提高了准确性以及减轻了文本分割提高了回答质量(因为有些内容是无需分割的,分割关键内容即可)】

3.引言INTRODUCTION

在客户服务中,有效的技术支持是产品成功的基石,直接影响客户满意度和忠诚度。鉴于客户查询经常与先前解决的问题相似,快速准确地检索相关的过往实例对于高效解决此类询问至关重要。最近,嵌入式检索(EBR)、大型语言模型(LLMs)和检索增强生成(RAG)的进步显著提升了技术支持客户服务的检索性能和问答能力。这一过程通常分为两个阶段:首先,将历史问题票据视为纯文本,分段为较小的块以适应嵌入模型的上下文长度约束;然后,将每个块转换为嵌入向量以进行检索。第二,在问答阶段,系统检索最相关的块,并将其作为上下文提供给大型语言模型,以生成对查询的答案。尽管这种方法显得简单直接,但仍存在一些限制。【原RAG的流程】

“限制1 - 由于忽略结构而导致检索准确性受损:问题跟踪文档,如Jira,具有固有结构,并且彼此之间相互连接,其引用如“问题A与问题B相关/复制自/由问题B引起”。将文档压缩成文本块的传统方法导致关键信息的丢失。我们的方法将问题工单解析为树状结构,并进一步连接单个问题工单以形成一个互相关联的图形,维护了这些实体之间的固有关系,从而实现了高检索性能。【将问题解析为树的结构,形成一个互相关联的图形,提高检索能力】

• 限制2 - 由于分段而导致答案质量降低:将庞大的问题工单分割为固定长度的段以适应嵌入模型的上下文长度限制可能导致相关内容的断开,从而造成回答不完整。例如,一个问题工单描述了问题的开始和解决方案的结尾,在文本分段过程中可能会被分割,导致解决方案的关键部分被遗漏。我们的基于图形的解析方法通过保持工单部分的逻辑连贯性来克服这一问题,确保提供完整高质量的回复。【由于嵌入模型的上下文长度限制,问题如果较长会背分割成固定长度的段落,可能会导致相关内容被分开,导致语义出现错误,这里利用LLMs或者模板方法解析语义的关键部分并在图谱中检索】

引言总结: 通过知识图谱构建树的结构增强检索效果,并通过语义关键词拆分与匹配增强检索内容的匹配性。

4.相关工作

使用知识图谱(KG)进行问题回答(QA)可以被广泛分类为检索型基于模板语义解析型方法。检索型方法利用关系提取或分布表示从知识图谱中获取答案,但在涉及多个实体的问题上面临困难。基于模板的策略依赖于手动创建的模板来编码复杂查询,但受可用模板范围限制。语义解析方法将文本映射到包含知识图谱中谓词的逻辑形式。最近大型语言模型(LLMs)与知识图谱(KGs)的整合取得了显著进展。Jin等人对此整合进行了全面回顾,将LLMs的角色分类为预测器、编码器和对齐器。针对基于图的推理,Think-on-Graph和Reasoning-on-Graph通过整合知识图谱提升LLMs的推理能力。Yang等人提出利用知识图谱跨多个训练阶段增强LLMs的事实推理。对于基于LLM的问题回答,Wen等人的Mindmap和Qi等人利用知识图谱在医学和食品等专业领域增强LLMs的推理能力。这些贡献突显了LLM与KG组合在增强信息检索和推理任务中的日益有效性。(总结一下相关工作里的具体内容)

相关工作的内容:

  • 基于模板的方法:预先设计好一系列的模板,来处理和回答用户的查询。这些模板是一些固定的模式或格式,可以填入特定的信息来生成答案。
    在这里插入图片描述
  • 语义解析方法:将用户的自然语言查询转换为计算机可以理解的逻辑形式。这种方法利用知识图谱中的谓词(关系和属性)来解析和回答问题。
    在这里插入图片描述
    总结:
  1. 基于模板的方法:通过预先设计的模板快速生成答案,简单高效但受模板数量限制。
  2. 语义解析方法:将自然语言查询解析为逻辑形式,灵活强大但实现复杂,需要高质量的知识图谱和解析算法。

5.方法Methods

我们介绍了一种基于LLM的客服问答系统,它将召回增强生成(RAG)与知识图谱(KG)无缝集成在一起。我们的系统(见图1)包括两个阶段:首先,在知识图谱构建阶段,我们的系统从历史客服问题工单中构建一个全面的知识图谱。它将每个问题构建成树状结构表示,并基于关系上下文相互链接。它还为每个节点生成嵌入以便后续语义搜索。其次,在答疑阶段,我们的方法解析消费者查询以识别命名实体和意图。然后在知识图谱中导航以找到相关子图来生成答案。

图1知识图谱增强RAG流程
第一阶段:知识图谱构建
在这个阶段,我们的系统从历史客户服务问题工单中构建一个全面的知识图谱。具体流程如下:

  • 树状结构表示:将每个问题构建成树状结构表示,保留问题的层次结构和详细信息。
  • 问题间链接:基于关系上下文将不同的问题相互链接。例如,一个问题可能是从另一个问题克隆而来,或者与其他问题相似。
  • 节点嵌入生成:为每个节点生成嵌入,这些嵌入用于后续的语义搜索,帮助系统在回答问题时快速找到相关信息。

第二阶段:问答
在这个阶段,我们的方法解析消费者查询【核心在于解析Query->实体+意图】,以识别命名实体和意图。具体流程如下:

  • 实体检测:系统首先检测查询中的关键命名实体。
  • 意图分类:确定查询的意图,例如是想要了解问题的解决步骤。
  • 子图导航:在知识图谱中导航,找到与查询相关的子图。这些子图包含了回答查询所需的关键信息。
  • 答案生成:根据找到的相关子图,生成并提供答案给消费者。

总结: 图1展示了这个系统的详细流程。左侧部分是知识图谱的构建过程,包括如何将历史问题工单解析成树状结构并进行链接,以及如何生成嵌入。右侧部分展示了问答过程,包括解析查询、导航知识图谱和生成答案的步骤。

3.1 知识图谱结构

3.1.1 图结构定义。在为历史问题表示定义知识图结构时,我们采用一个双层架构,将问题内部和问题间关系分开,如图1所示。问题内部树T𝑖(N,E,R)将每个工单𝑡𝑖建模为一棵树,其中每个节点𝑛∈N,由唯一组合(𝑖,𝑠)标识,对应于工单𝑡𝑖的不同部分𝑠,每个边𝑒∈E和𝑟∈R表示这些部分之间的层次连接和关系类型。问题间图G(T,E,R)代表不同工单之间的连接网络,包括显式链接Eexp(在问题跟踪工单中定义)和隐式连接Eimp(由工单标题间语义相似性导出)。对于隐式连接,我们利用工单标题嵌入向量的余弦相似度,这种方法可以适用于特定用例。例如,图1描述了工单ENT-22970作为树结构,节点表示诸如摘要、描述和优先级等部分。它展示了与PORT-133061的直接克隆关联,表示显式的克隆关系。此外,由于语义相似性,它与ENT-1744和ENT-3547隐式连接。【总结:主要讲述了利用双层架构进行图结构的定义,通过双层架构将问题内部的树状结构(节点包括工单的摘要、描述等)和问题间的连接(工单之间的连接)分开处理,保留了工单的层次信息和问题间的关系。】

3.1.2 知识图构建。图构建分为两个阶段:问题内部解析和问题间连接。1) 问题内部解析阶段:此阶段将每个基于文本的工单𝑡𝑖转换为树表示T𝑖。我们采用混合方法,最初利用基于规则的提取预定义字段,例如通过关键字识别的代码部分。随后,对于无法按规则解析的文本,我们使用LLM进行解析。LLM由YAML模板Ttemplate指导,该模板将客户支持常用的工单部分在图中表示。2)
问题间连接阶段:在这里,各自的树T𝑖被合并成一个综合图G。显式连接Eexp根据工单中特定指定的字段定义,例如在Jira中的指定字段。隐式连接Eimp根据工单标题之间的文本语义相似性推断,使用嵌入技术和阈值机制来识别每个问题工单的最相关工单。【总结:主要讲述的是对于Query的解析以及关键字的识别(基于模板提取/LLM解析),采用方法为:语义解析方法】

𝑡𝑖 = 𝑡𝑖,rule ∪ 𝑡𝑖,llm T𝑖 = RuleParse(𝑡𝑖,rule) +
LLMParse(𝑡𝑖,llm, Ttemplate, prompt) Eexp = {(T𝑖,T𝑗) | T𝑖 显式连接至
T𝑗} Eimp = {(T𝑖,T𝑗) | cos(embed(T𝑖),embed(T𝑗)) ≥ 𝜃"

3.2 检索和问答

3.2.1 查询实体识别和意图检测
在这一步骤中,我们从每个用户查询q中提取命名实体P(类型为Map(N → V))和查询意图集I。具体方法如下:
解析查询:将每个查询q解析成键值对,其中每个键n在查询中提及,对应于图模板Ttemplate中的元素,值v表示从查询中提取的信息。
提取意图:同时,查询意图I包括查询中提及的图模板Ttemplate中的实体。
使用LLM解析:利用大型语言模型(LLM)和合适的提示词进行解析。例如,给定查询q = “How to reproduce the login issue where a user can’t log in to LinkedIn?”,提取的实体是P = Map(“issue summary” → “login issue”, “issue description” → “user can’t log in to LinkedIn”),意图集I=Set(“fix solution”)。
这个方法展示了通过利用LLM的广泛理解和解释能力,能够灵活适应各种查询形式。

3.2.2 基于嵌入的子图检索
我们的方法从知识图谱中提取与用户提供的具体信息(如“问题描述”和“问题摘要”)以及用户意图(如“解决方案”)相关的子图。这个过程分为两个主要步骤:

  1. 基于EBR的工单识别: 步骤描述:通过利用用户查询中派生的命名实体集P,识别最相关的历史问题工单(top Kticket)。
  2. 计算相似度:对于每对实体(k, v) ∈ P,计算实体值v与所有图节点n对应于部分k的预训练文本嵌入的余弦相似度。
  3. 得分聚合:通过将属于相同工单的节点贡献得分相加,聚合这些节点级别的得分到工单级别。 LLM驱动的子图提取:
  4. 重新调整查询:系统首先重新调整原始查询q以包含检索到的工单ID;调整后的查询q’被转换为图数据库语言,例如用于问题回答的Neo4j的Cypher。
  5. 示例:例如,原始查询q=“how to reproduce the issue where user saw ‘csv upload error in updating user email’ with major priority due to a data issue”,被重新调整为"how to reproduce ‘ENT-22970’",并转化为Cypher查询MATCH (j
    {ticket_ID: ‘ENT-22970’})-[ ]->(description )-[ ]->(steps_to_reproduce
    ) RETURN steps_to_reproduce.value。
    该方法灵活性足够,可以跨越子图中不同树提取信息,无论它们来源于同一棵树还是知识图谱中的不同树。

3.2.3 答案生成
答案生成通过将检索到的数据与初始查询结合来实现。LLM作为解码器,用于根据检索到的信息生成答案。为了确保回答的健壮性,系统可以退回到基于文本的基准方法来验证生成的回答。

举个例子解释一下3.2的检索和问答

  • 步骤描述: 目的是对每个用户查询Query中提取出实体关键词和查询意图等,然后将这些特征提取出来以供于提取最相关的历史工单。
  • 计算相似度: 对每个实体(K,V)∈P,计算实体的值V与所有的图节点n计算相似度。
  • 得分聚合: 将相同工单(相似度最高那一组)的贡献得分相加,找到与之最相关的工单。【类似于多重属性附身的实体,基于它的多个属性找到实体本身,提高了精确度】
  • 重新调整查询: 找到对应的目标后用Cypher语句查询对应的Answer。

思路拓展:得分聚合的重要性
这个步骤的主要目的是将与同一个工单相关的多个节点的相似度得分进行整合,从而更准确地衡量整个工单与用户查询的相关性。【考虑到了一个事物它本身的多个维度,更加全面地反映了工单地整体情况,可靠性较高,并且更加稳健,因为综合了多个节点地信息】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新版周易测算系统源码 去授权完美运行

已经去掉授权可以完美运行 更新了三个模板市面上都是几千几千的卖 更新了三套首页新ui 自己后台切换就行 源码大小:338M 源码下载:https://download.csdn.net/download/m0_66047725/89447857 更多资源下载:关注我.

CSF视频文件格式转换WMV格式

如果大家看过一些高校教学讲解视频的话,很可能见过这样一个难得的格式,".csf ",非常漂亮 。 用暴风影音都可以打开观看,会自动下载解码。 但是一旦我们想要利用或者上传视频的时候就麻烦了,一般网站不认这…

检信智能推出我国首款Allemotion OS基于AI生理心理参数服务开发者平台

检信Allemotion OS生理心理开发者平台是根据世界人工智能高速发展的特点,为实现脑机交互的行业需求,由检信智能推出我国首款检信Allemotion OS生理心理开发者平台。检信Allemotion OS生理心理开发者平台集成了振动影像心理情绪20项情绪参数、11项生理相关参数&#…

springboot系列六: springboot底层机制实现 下

实现SpringBoot底层机制[Tomcat启动分析 Spring容器初始化 Tomcat如何关联Spring容器] 实现任务阶段1-创建Tomcat, 并启动🥦说明:创建Tomcat, 并启动🥦分析代码实现🥦完成测试 实现任务阶段2-创建Spring容器🥦说明&a…

JAVA期末速成库(10)第十一章

一、习题介绍 Check Point:P416 11.1,11.6,11.7,11.8,11.12,11.17,11.24 Programming Exercise:11.1 二、习题及答案 Check Point: 11.1 True or false? A subcl…

elementUI的搭建使用过程

Element - The worlds most popular Vue UI framework 上面是elementUI的网站,进入网站 点击右上角的组件按钮 复制这段代码到你的项目终端:npm i element-ui -S 加载完成后即可使用elementUI网站中的组件,使用它们只需要复制组件下面的代码即可

Qt自定义信号

1.Teacher类下定义信号signals: Student类下定义槽函数&#xff1a; Teacher.h #pragma once#include <QObject>class Teacher : public QObject {Q_OBJECTpublic:Teacher(QObject *parent);~Teacher(); signals:void Ask(); //老师向学生提问void Ask(QString str);…

第3章_UART 开发基础

文章目录 第3章 UART 开发基础3.1 同步传输与异步传输3.1.1 概念与示例3.1.2 差别 3.2 UART 协议与操作方法3.2.1 UART 协议3.2.2 STM32H5 UART 硬件结构3.2.3 RS485 协议 3.3 UART 编程3.3.1 硬件连接3.3.2 三种编程方式3.3.3 查询方式3.3.4 中断方式3.3.5 DMA 方式 3.4 效率最…

「C++系列」C++简介、应用领域

文章目录 一、C简介C 的主要特点&#xff1a;C 的学习建议&#xff1a; 二、C 应用领域三、C 有哪些优势四、C 初学案例1. Hello, World!2. 两数求和3. 判断奇偶4. 判断闰年5. 判断质数6. 求阶乘7. 斐波那契数列8. 延时程序&#xff08;简单示例&#xff09; 五、相关链接 一、…

vue组件全局注册

描述&#xff1a; vue组件的注册分为局部和全局注册两部分&#xff0c;局部注册相对容易&#xff0c;不做赘述&#xff1b;而不同框架的注册方法又有所不同&#xff0c;下面针对vite框架和vue-cli框架的注册分别进行说明 vue组件全局注册 一、vite框架中全局组件注册二、Vue-cl…

点云入门知识

点云的处理任务 场景语义分割 物体的三维表达方法&#xff08;3D representations&#xff09;&#xff1a; 点云&#xff1a;是由物体表面上许多点数据来表征这个物体。最接近原始传感器数据&#xff0c;且具有丰富的几何信息。 Mesh&#xff1a;用三角形面片和正方形面片拼…

计算机语言vs指令vs中央处理器cpu

计算机中如何表示数据 在计算机中&#xff0c;所有数据和指令都是用二进制表示的&#xff0c;即0和1。这些0和1实际上是电压信号的高低电平&#xff0c;0通常表示低电平&#xff08;如0伏特&#xff09;&#xff0c;1表示高电平&#xff08;如5伏特&#xff09;。 指令系统&a…

食品行业怎么用JSON群发短信

食品作为日常生活不可缺少的元素&#xff0c;市场需求是很稳定的&#xff0c;但是份额就那么多&#xff0c;商家都要来抢占的话&#xff0c;就需要运营推广各凭本事&#xff0c;市场运营中选择合适的推广方式&#xff0c;可以增加店铺销售额&#xff0c;很多实体店或商城都会建…

LLM应用开发-RAG系统评估与优化

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;在上一篇文章中&#xff0c;我们学习了如何基于LangChain构建RAG应用&#xff0c;并且通过Streamlit将这个RAG应用部署到了阿里云服务器&#xff1b;&am…

expandtabs()方法——tab符号转为空格

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 expandtabs()方法把字符串中的tab&#xff08;\t&#xff09;符号转为空格&#xff0c;tab&#xff08;\t&#xff09;符号默认的空格数是…

软考初级网络管理员__操作系统单选题

1.在Windows资源管理器中&#xff0c;假设已经选定文件&#xff0c;以下关于“复制”操作的叙述中&#xff0c;正确的有()。 按住Ctr键&#xff0c;拖至不同驱动器的图标上 按住AIt键&#xff0c;拖至不同驱动器的图标上 直接拖至不同驱动器的图标上 按住Shift键&#xff0…

普元EOS学习笔记-EOS8.3精简版安装

前言 普元EOS是优秀的高低开结合的企业应用软件开发框架。 普元&#xff1a;这是普元公司的名字&#xff0c;普元信息&#xff0c;上市公司哦&#xff0c;这里就不过多安利了。 EOS&#xff1a;普元公司的企业应用开发系统&#xff0c;开发语言是基于Java&#xff0c;技术框…

LLDP 基本原理

LLDP 简介 定义 LLDP&#xff08;Link Layer Discovery Protocol&#xff0c;链路层发现协议&#xff09;是 IEEE 802.1ab 中定义的第二层发现&#xff08;Layer 2 Discovery&#xff09;协议。 LLDP 提供了一种标准的链路层发现方式&#xff0c;可以将本端设备的主要能力、…

【51单片机入门】数码管原理

文章目录 前言共阴极与共阳极数码管多个数码管显示原理 总结 前言 在我们的日常生活中&#xff0c;数码管被广泛应用于各种电子设备中&#xff0c;如电子表、计时器、电子钟等。数码管的主要功能是显示数字和一些特殊字符。在这篇文章中&#xff0c;我们将探讨数码管的工作原理…

【详细】CNN中的卷积计算是什么-实例讲解

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、 CNN的基础卷积计算1.1.一个例子了解CNN的卷积计算是什么1.2.卷积层的生物意义 二、卷积的拓展&#xff1a;多输入通道与多输出通道2.1.多输入通道卷积2.2.多输出通道卷积 三、卷积的实现3.1.pytorch实现卷积…