哔哩哔哩从0到1自研智能客服IM系统的技术实践之路 |
您所在的位置:网站首页 › 哔哩哔哩客服岗位 › 哔哩哔哩从0到1自研智能客服IM系统的技术实践之路 |
本文由B端技术中心分享,原题“从0到1:哔哩哔哩智能客服系统的设计与实现”,本文有修订和改动。 1、引言本文将要分享的是哔哩哔哩从0到1自研智能客服IM系统的技术实践过程,包括整体架构设计和主要核心功能的技术实现思路等,希望带给你启发。 * 推荐阅读:《得物从0到1自研客服IM系统的技术实践之路》。 技术交流: - 移动端IM开发入门文章:《新手入门一篇就够:从零开发移动端IM》 - 开源IM框架源码:https://github.com/JackJiang2011/MobileIMSDK(备用地址点此) (本文已同步发布于:http://www.52im.net/thread-4517-1-1.html) 2、本文作者 小雄:哔哩哔哩客服业务技术负责人;乐文:哔哩哔哩资深开发工程师;镇宇:哔哩哔哩高级开发工程师;四百块:哔哩哔哩高级开发工程师;JasonQian:哔哩哔哩高级开发工程师;宇琪:哔哩哔哩资深开发工程师。 3、技术背景 3.1为什么要做新系统B站过去的客服系统是通过外部采购获得的,已经使用了几年。 然而,这个外购的系统存在一系列问题: 1)稳定性低,缺乏良好的拓展性和伸缩性,经常出现bug,难以应对突发的流量高峰;2)与B站产品体系无法打通,难以根据业务需求进行定制化;3)由于系统逻辑老旧,稳定性不佳,导致效率低下,已经不再能满足进一步提升客服效率的要求。虽然曾考虑过采购新的客服系统,但也面临一些问题。 比如: 1)昂贵的价格,特别是在当前降本增效的大背景下,这是一个重要因素;2)更重要的是,该系统仍然无法与内部系统进行良好的整合,无法支持业务定制化。因此,B站决定开展新客服系统的自研工作。 3.2怎么做新系统在面对如何打造一个全新的客服系统的挑战时,我们首先开始了调研、访谈和体验。 1)业内调研 我们访问了一些在客服系统领域表现优秀的知名公司,从业务和技术的角度进行了深入调研。 总结下来,目前客服系统比较重视以下三个关键指标: 1)智能问答拦截率(也对应人工处理率);2)用户满意度;3)平均处理时长:主要指客服人员处理一次会话所需的平均时长。对于一个客服系统来说,良好的智能问答功能至关重要: 1)提供7*24小时在线服务,无需排队等候,确保用户在任何时间都能够得到及时响应;2)对于用户频繁问到的问题,可以快速回答,提高效率,降低成本,从而实现更好的客户体验和更高效的资源利用;3)能够快速解答大部分简单问题,同时让复杂问题有机会被人工高效解决,从而提升整体解决问题的效率和效果。这些核心的指标为后续的研发指明了方向。 2)内部访谈和体验 我们对负责客服流程运营的团队以及各项功能团队(质检、舆情、机器人、工单、二线、数据等)和一线客服同学进行了访谈,同时也全面体验了现有的系统。 特别是从各个团队的访谈中,我们获得了许多细节性的宝贵经验和一系列建议,这对我们如何具体做好产品和之后推动系统的落地起到了巨大的作用。这些经验和建议将在工作台一节中详细展示,在这里就不再展开。 3.3新系统落地效果如何 在核心指标上,新客服系统都取得了显著的提升: 1)智能问答拦截率:与原有系统相比,新系统的智能问答拦截率有了巨大的提升,达到了业内先进水平;2)用户满意度:也有显著的提升,表明用户对新系统的满意度较高;3)平均处理时长:尽管新系统需要适应的过程,但平均处理时长仍有减少,这一点非常不易。(保密考虑,不暴露具体数字) 此外,新客服系统的落地还提高了客服工作效率,实现了与内部业务系统的无缝对接,优化了客服功能工具,验证了自主研发的能力。 接下来,我们将从技术角度,整体和分细节方面对新客服系统进行介绍。 4、客服系统整体架构和核心业务流程 4.1概述客服系统主要功能: 1)C端入口:进入客服的入口;2)智能问答:通过机器人与用户进行会话,解决用户的问题;3)客服坐席调度:给用户选择合适的客服人员同时兼顾客服人员的工作平衡;4)客服工作台:为客服人员提供便捷的工作界面和工具;5)知识库:汇集各类常见问题和解决方案,供客服使用;6)IM聊天基础能力:负责构建用户和客服之间的聊天,进行对话操作(发送文字、图片、视频)等;7)客服工单:用于跟踪和解决用户提出的问题和需求;8)权限管理:确保客服系统数据和功能的安全性;还有一些其他的功能如:质检系统,舆情系统,客服工时系统,监控系统等等。 4.2总体功能架构在上述描述中,我们可以认识到客服系统具有一定的复杂性。 为了帮助大家从宏观上理解客服系统,以下列出了整体功能的架构图: 4.3核心流程同时,为了帮助大家进一步了解,这里列出了客服系统的核心流程。 5、核心功能设计和实现1:用户入口首先简单看一下哔哩哔哩客服的用户入口。 当用户进入聊天框,首先会进入智能问答环节,如果智能问答无法帮助用户解决问题,用户可以选择进一步联系人工客服来解决问题。 6、核心功能设计和实现2:智能问答 6.1概述在客服的业务场景中,智能问答是一个非常重要的需求。 它具备了人工不可比拟的优势: 1)提供7*24小时的在线服务;2)高峰时期无需排队等候;3)用户频繁问到的问题,可以快速回答;4)大部分简单问题得以快速自助解决。从而从整体上提高效率,降低成本,实现更好的客户体验和更高效的资源利用。 下面,我们将简要介绍哔哩哔哩客服系统的智能问答。 6.2智能问答系统概览目前,哔哩哔哩客服系统在执行智能问答任务时,会根据匹配度的不同提供两种回答方式。 分别是: 1)当匹配度较高时,系统会直接给出答案;2)当匹配度只是中等时,系统则会提供一个“您想咨询的问题可能是”的列表。这个策略的目的是为了提供更准确、更有用的回答,以帮助用户更快地找到他们需要的信息。 6.3机器人问答技术调研机器人问答技术在实现上主要分为两种类型:检索式和生成式。 1)检索式:检索式模型通常利用神经网络技术,将大量的预训练语料数据输入到模型中进行训练。在完成训练后,模型能够对新的输入进行分类、匹配和回答问题。这种方案的实现主要依赖于大规模的预训练数据和高效的检索算法。 2)生成式:另一种类型的是生成式模型,它主要采用深度学习技术以及最新的大语言模型,通过学习大量数据来生成文本。这种方案通常使用循环神经网络(RNN)或变换器(Transformer)等结构,能够处理序列数据并生成新的序列。与检索式模型不同,生成式模型在训练过程中会直接生成目标文本,而不是通过检索匹配。 总的来说,检索式和生成式两种模型各有特点,各有优势,在机器人问答系统中都有应用。具体选择哪种模型,往往需要根据具体的应用场景和需求来决定。 方案对比: 在电商客服场景下,回答用户问题的准确性至关重要,宁可选择不回答也不能够回答错误。相比之下,生成式答案会受到多种因素的影响,导致结果不可控。而检索式答案来源于知识库,可以提供更加准确的问题解答。虽然检索式在处理一些长尾问题或者冷门领域的问题时表现不佳,但是可以通过人工干预来丰富知识库进行优化。综合考虑到这些因素,最终选择了检索式实现。 6.4向量搜索和基于Faiss实现的智能问答1)向量搜索基本原理: 给定一个向量集合: 和一个待查询的向量: 从 N 个向量里面找到距离 X 某种距离(比如 L2 距离)最近的 K个向量。 其应用包括: 1)从语料库里面找到距离某个语句最相近的一句话;2)从图片库里面找到距离某张图片最类似的一张图片;3)还能查找别的,比如视频、音频、动图、基因序列、搜索条目等。这些东西(图片、词语、句子、视频等)都可以用向量表示出来,如下图: 这个事情看起来很简单,但是当我们的数据库变得特别大时,这件事情就变得比较困难了。因此这里就专门来研究如何做这样的向量搜索。 2)Faiss简介: Faiss(Facebook AI Similarity Search)是 Facebook AI 开发的用于高效相似性搜索和向量聚类的库。 Faiss 总体使用过程可以分为三步: 1)构建训练数据(以矩阵形式表达);2)挑选合适的 Index (Faiss 的核心部件),将训练数据 add 进 Index 中;3)Search,也就是搜索,得到最后结果。详细解释,即为:首先根据原始向量构建一个索引文件,再根据索引文件进行查询。初次查询前需要进行train和add过程,后续若要进行索引的添加可以再次使用add添加索引。 如下图所示: 3)基于Faiss实现的智能问答: 在实现检索式的过程中,主要任务是找到与用户提问语句最相似的问法,从而获取对应的答案。 这个过程包括以下步骤: 1)数据准备:建立知识库,包含标准问、相似问以及对应的答案。每个标准问有多个相似问,并对应唯一的答案: 2)文本向量化:使用BERT模型将问题和相似问转化为向量表示。BERT模型采用预训练方式,能够将输入的文本转化为对应的向量表示。公司已有基于社区数据训练的bert-embedding服务,体验效果满足需求,因此使用该服务进行文本向量化;3)相似度计算:使用Faiss库进行相似度计算。Faiss库是一种针对聚类和相似性搜索的工具,为稠密向量提供高效相似度搜索和聚类,支持十亿级别向量的搜索,是目前最为成熟的近似近邻搜索库;4)搜索匹配:将用户问题向量传入Faiss库中,使用相似度计算方法对问题进行匹配,找到最相似的TopN问题向量(或者说相似问);5)答案选取:根据相似度结果高低,直接给出问题对应的答案或者“您想咨询的问题可能是”列表。如果相似度很低,则会转接人工。基于Faiss的智能问答如下图所示: 4)Faiss索引选择实践: Faiss提供的索引很多,需要根据数据集的大小和机器的性能来选取合适的索引。 基于准确查找: 仅有IndexFlatL2索引可以提供确切的结果,但是性能上会比较差,仅适用数据量比较少的情况,通常为其他索引准确度提供基准。基于内存限制: 1)由于所有的Faiss索引都将向量存储在内存中,如果内存是限制因素,那么就需要将准确度和性能进行折衷:2)不关心内存则使用"HNSWx",通过"efSearch"参数平衡准确度和性能,该参数越大越准确,同时性能越差;3)有一点关心内存则使用"..,Flat","..."的含义是聚类,聚类后,"Flat"的含义是不压缩,存储大小与原始数据集相同,通过"nprobe"参数平衡准确度和性能;4)很关心内存则使用"PCARx,...,SQ8",PCARx指将维度降x,SQ8指将每8bit向量压缩到1bit;5)非常关心内存则使用"OPQx_y,...,PQx",PQx使用输出x-byte的量化器压缩向量。x通常 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |