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

news2024/11/27 0:40:19

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.coloradmin.cn/o/1875035.html

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

相关文章

爬虫笔记17——selenium框架的使用

selenium框架的使用 1、python程序安装selenium框架2、下载Chrome谷歌驱动3、selenium的基本使用4、多个标签页切换顺序混乱的问题 1、python程序安装selenium框架 # 在安装过程中最好限定框架版本为4.9.1 # pip install selenium 没有制定版本,非镜像下载也会比较…

node.js环境安装和VUE-cli脚手架搭建

简介 node.js Node.js 是一个免费、开源、跨平台的 JavaScript 运行时环境,它让开发人员能够创建服务器、Web 应用、命令行工具和脚本。 VUE-cli Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供: 通过 vue/cli 实现的交互式的项…

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

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

xlsx插件简介

1. xlsx插件 1.1. 常用属性和方法 1.1.1. 创建新的工作簿1.1.2. 从数组生成工作表1.1.3. 添加工作表到工作簿1.1.4. 从HTML表格创建工作表1.1.5. 读取Excel文件1.1.6. 导出Excel文件1.1.7. 设置单元格样式 2. vue中如何使用xlsx 2.1. vue-xlsx的特点2.2. 常用属性和方法 2.2.1…

企业级堡垒机JumpServer

文章目录 JumpServer是什么生产应用场景 Docker安装JumpServer1.Docker安装2.MySQL服务安装3.Redis服务安装4.key生成5.JumpServer安装6.登录验证 系统设置邮箱服务器用户和用户组创建系统审计员资产管理用户创建资产节点资产授权查看用户的资产监控仪表盘 命令过滤器创建命令过…

基于STM32的智能家用电力管理系统

目录 引言环境准备智能家用电力管理系统基础代码实现:实现智能家用电力管理系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景:电力管理与优化问题解决方案与优化收尾与总结 1. 引言 智能家用电力管理系统通…

EXCEL 复制后转置粘贴

nodepad 转置参考: https://editor.csdn.net/md/?articleId140014651 1. WPS复制后转置粘贴 复制-》右键-》顶部第一行-》粘贴行列转置,如下图: 2. Excel office365 本地版 2. Excel office365 在线版

Python特征工程 — 1.1 特征二值化

目录 1 特征二值化 1.1 特征二值化简介 1.2 实验数据集 2 阈值法 2.1 scikit-learn库实现阈值法二值化 2.2 pandas实现阈值法二值化 2.3 自定义函数实现阈值法二值化 3 其他方法实现二值化 3.1 中位数法 3.2 众数法 3.3 标准差法 1 特征二值化 1.1 特征二值化简介…

国产操作系统上netstat命令详解 _ 统信 _ 麒麟 _ 中科方德

原文链接:国产操作系统上netstat命令详解 | 统信 | 麒麟 | 中科方德 Hello,大家好啊!今天给大家带来一篇在国产操作系统上使用netstat命令的详解文章。netstat是网络统计(network statistics)的缩写,它是一…

力扣每日一题 6/28 动态规划/数组

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2742.给墙壁刷油漆【困难】 题目: 给你两个长度为 n 下标从 0…

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数: EXPLODE(ARRAY):将ARRAY中的每一元素转换为每一行 EXPLODE(MAP):将MAP中的每个键值对转换为两行,其中一行数据包含键,另一行数据包含值 数据样例: 1、将每天的课程&#…

vue全局方法plugins/utils

一、在src目录下创建一个plugins文件夹 test.ts文件存放创建的方法,index.ts用于接收所有自定义方法进行统一处理 二、编写自定义方法 // test.ts文件 export default {handleTest(val1: number, val2: number) {// 只是一个求和的方法return val1 val2;}, };三…

hive调优原理详解:案例解析参数配置(第17天)

系列文章目录 一、Hive常问面试函数(掌握) 二、Hive调优如何配置(重点) 文章目录 系列文章目录前言一、Hive函数(掌握)11、JSON数据处理12、炸裂函数13、高频面试题13.1 行转列13.2 列转行 14、开窗函数&a…

一些指标的学习

1.平均倒数排名(MRR) 1.定义 MRR 是衡量检索系统返回的结果列表中第一个相关结果位置的指标。具体来说,它是所有查询倒数排名的平均值。 2.计算步骤 对每个查询,找到第一个正确答案在结果列表中的排名 𝑅&#x1d44…

鸿蒙登录页面及页面跳转的设计

目录 任务目标任务分析任务实施1.新建工程项目HMLogin2.设计登录页面Index.visual3.设计第二个页面SecondPage4.修改Index.ets代码5.修改SecondPage.ets代码6.运行工程 任务目标 设计一个简单的登录页面,要求可以将第一页的登录信息,传递到第二个页面&a…

VMware ESXi 技术

目录 一、VMware ESXi安装 1. 在VMware WorkStation中创建一台虚拟机 2. 进入VMware ESXi控制台 3. 配置VMware ESXi网络 二、使用Web网页端登录管理ESXi 1. 分配许可证密钥(选做) 2. 管理ESXi 三、VMware ESXi控制台 1. 创建虚拟机 2. 定制虚拟…

静态链表详解(C语言版)

顺序表和链表的优缺点 顺序表和链表是两种基本的线性数据结构,它们各自有不同的优缺点,适用于不同的应用场景。 顺序表(Sequential List,通常指数组) 优点: 随机访问:可以通过索引快速访问任…

【Linux】服务器被work32病毒入侵CPU占用99%

文章目录 一、问题发现二、问题解决2.1 清楚病毒2.2 开启防火墙2.3 修改SSH端口2.4 仅使用凭据登录(可选) 一、问题发现 我的一台海外服务器,一直只运行一项服务(你懂的),但是前不久我发现CPU占用99%。没在…

R语言学习笔记1-介绍与安装

R语言学习笔记1-介绍与安装 简介应用领域R语言优势安装步骤(linux版本)在R脚本中绘制简单的条形图示例 简介 R语言是一种非常强大和流行的据分析和统计建模工具。它是一种开源的编程语言和环境,专门设计用于数据处理、统计分析和可视化。 应…

DP(动态规划)【2】 最大连续子列和 最长不降子序列

1.最大连续子列和 #include <iostream> #include <vector> #include <cmath> #include <string> #include <cstring> #include <queue> using namespace std; const int N10002,maxn10;int n,m,k,f[N]{0},dp[N]{0};int main() {scanf(&quo…