实际上,业界已有不少企业尝试基于ChatGPT来搭建智能客服机器人,主要包括有以下几种方案:
其一是微调行业大模型,采用行业数据、客户服务数据进行再训练和微调,得到垂直领域大模型;
其二是角色设定(Prompt工程),用文字来进行角色的设定,将ChatGPT设定为客服角色;
其三是嵌入(Embedding),将文本转换为一个向量,去企业向量数据库进行检索,检索出相关内容
其四是插件,识别出实体和关键词,采用外部插件,获取到相关信息部分或全部使用了这几种方法,而且对应每种方法目前也有一些开源的框架工具。
而在真实落地中,也会产生这些问题,今天读了读AIDD2023中一些工作,很有启发,整理分享出来,供大家一起参考。
一、先看现有大模型行业问答落地中存在的5个挑战
今天读到一个工作,于政老师在AIDD2023的《大语言模型下的文本数据治理》报告,其中讲到一些文本上的实践经验,十分受启发。
针对现有的垂直行业进行问答时,实际上遇到许多复杂的数据问题,这其实与领域文本数据的特点强相关。
其一,版面复杂多样。涵盖各类pdf、扫描件、图片等多种复杂文件类型;需针对页眉页脚、分栏、列表、跨页等多样化信息进行版面解析;需结合OCR能力。文档的格式多样,含有众多的图表,仅采用OCR、图片理解模型不能把所有信息识别到,通常只能保留了文本,抛弃其他内容。
其二,文本分块。目标是完整的知识点,仅采用规则来进行分块,存在知识点被分割、不完整的情况。
其三,内容复杂、组织多样。需要进行段落识别,列表关系及内容识别。
其四,多因素影响内容召回效果。例如:文档内容相似度高(专业文档细分领域、版本迭代等);
例如在规章制度场景中,对于query申请专精特新需要哪些申请材料,涉及文件版本管理:
需要结合文档各级标题信息和段落内容进行匹配;
例如,在法律场景中,对于民事诉讼的证据有哪些? 关键信息在文件名,需要针对文件名进行问答;
文档段落内容较长,影响与query核心信息匹配;
例如,对于我有国内比赛的获奖证书,可以用来申请工艺大师吗? 中涉及段落内容过长,Query与段落相似度低。
通用的向量相似度算法效果不好(问题与问题匹配 VS问题与答案匹配);召回率受文档库增大而降低。
五,有监督样本构造困难。通常需要较强的业务知识,内网数据无法利用GPT接口构建【虽然现有的很多现成的方案都有这种问题】,大模型目前存在prompt敏感,生成领域结果不准确的现象,同时推理时间长,无法支持在线的多路并发。
因此,在整个文档解析环节,需要做好文本召回优化,包括文档的版本识别和管理、文档标题等信息的有效利用、文档内容的信息压缩、并进行适用于文档内容召回的向量训练。
二、再看RAG各环节对应的一些有趣的尝试
1、向量化上的优化
对于向量化召回模型的优化上,介于传统模型是基于Query与Query训练而成的相似度检测模型,而非Query与段落的相关性。因此,训练目标优化为提升Query与段落的相关性,使得问题和相关段落的语义向量表示更接近,训练模型有sbert,cosent等。
在构造数据方面,构造<问题,匹配文档段落,不匹配文档段落>的数据结构,使用语义相似度高但不是匹配文档段落的数据作为困难负样本。
2、关键信息上的优化
其次,在文档内容的信息压缩上,进行文本关键词和摘要的提取。一般的方案有利用keybert关键词提取算法、利用prompt调用大模型生成对应关键词、对大模型进行关键词提取领域微调、对文档内容进行摘要等方案。
进一步的方案,可以采用基于成分句法分析,提取名词短语,生成关键词。具体地:
采用基于传统NLP的成分句法分析,提取名词短语,再通过短语间的依存关系,生成关键词列表。
从完整语句的Embedding,切换为关键词Embedding:知识库构建时,基于单知识点入库,入库时提取关键词列表进行Embedding,查询时,对用户的问题提取关键词列表进行Embedding后,从本地知识库命中多条记录。
相比传统Embedding,大幅提升召回精准度。支持单次交互,对多知识点进行聚合处理,使用传统NLP在专项问题处理上,相比LLM提供更好的精度和性能。减少了对LLM的交互频次;提升了交付给LLM的有效信息密度;大大提升问答系统的交互速度。
将单问句中的多知识点拆解后检索,将召回的多条记录交付给LLM整合。
3、多场景prompt上的优化
张辉《大模型落地面向企业级客户服务场景的实践》中提到了2C和2B场景下问答的区别,2B领域专业度要求高 场景更复杂,对话轮次更多。
例如用户问题专业度高,售后侧用户咨询和报修非常专业、解答难度较高,智能客服对于用户提问存在理解偏差,导致答非所问;智能客服呈现给用户的答案过于冗余,还需用户定位。
而当前chatgpt大模型还存在很明显的体验差距。
并给出了一些文档上的实践,其中面向场景的Prompt撰写和匹配很受启发。
面向场景的Prompt撰写和匹配,例如针对具体业务梳理相对独立的场景问题,每个场景问题下又有不同的分支处理流程。如,硬盘不识别问题(一个场景问题),它可能的原因是没有配Raid,没有安装驱动, 硬件设备故障(三条可能的分支)。
针对用户的单个问题(query),实际给到模型的Prompt包含四部分内容:Prompt场景描 述+问题相关背景信息+上下文信息+用户问题。其中,场景描述、问题相关背景信息这两部分是可有, 而上下文信息和用户问题是必有。
总结
本文主要介绍了行业文档问答的一些工作,主要阅读了AIDD2023的一些报告,其中提到的一些思路很具有启发性。
不过,对于落地而言,还有很多路要走,正如《大模型落地面向企业级客户服务场景的实践》中所言,
ToB的客户服务因其对于企业有极大价值,但又因其场景复杂&用户多样,是LLM最值得去探索落地、并且非常有挑战的领域。
目前落地的探索都还停留在,原有NLP解决的问题,现在用LLM再做一遍,并没有突破原有NLP的范围,未来需要更多的突破思维。
LLM固有存在的问题,如幻觉、推理时间长,并没有从根本上解决,增加知识库引入搜索,撰写prompt强化输入引导,都使得系统变的复杂、人工成本增加。未来需要探索在算法层面更大的突破。
道阻且长,行则将至。未来,LLM落地到ToB的客户服务,核心要解决的一是能够深层次的理解多模态的信息和知识,学习到专家工程师沉淀到文档、对话中的经验,能够采用合适地对话策略,像真人一样提供客户服务;二是推理成本和用户体验的问题。
供大家一起参考。
参考文献
1、于政.《大语言模型下的文本数据治理》,AIDD2023
2、张辉.《大模型落地面向企业级客户服务场景的实践》,AIDD2023
关于作者
老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
我是朋克又极客的AI算法小姐姐rumor北航本硕,NLP算法工程师,谷歌开发者专家欢迎关注我,带你学习带你肝一起在人工智能时代旋转跳跃眨巴眼