LTR:应用于电商智能客服领域知识库搜索的实践

简介:     关键词:搜索、机器学习、学习排序、Learning to Rank(LTR)   1:背景   搜索引擎排序(Ranking)的优化是搜索领域中普遍遇到的问题,通常会涉及到很多的排序策略,传统的排序方法一般通过构造相关度函数,然后按照相关度进行排序。
 
 
关键词:搜索、机器学习、学习排序、Learning to Rank(LTR)
 
1:背景
 
搜索引擎排序(Ranking)的优化是搜索领域中普遍遇到的问题,通常会涉及到很多的排序策略,传统的排序方法一般通过构造相关度函数,然后按照相关度进行排序。影响相关度的因素很多,也有很多经典算法模型来满足这一需求,但是对于传统的排序方法,有很多特征信息的情况下,单一的函数或者模型很难融合很多参数,也容易出现过拟合的现象,而机器学习方法很容易融合多种特征,能一定程度的解决稀疏、过拟合等问题。因此,以机器学习的理论基础来解决ranking问题便形成了Learning to Rank(学习排序、LTR)的方法。
 
Learning to Rank是在机器学习领域中有监督学习(Supervised Learning)的排序方法,如今已经被广泛应用于搜索场景、推荐场景、QA场景、情感分析场景中。比如传统的web search,文本挖掘,推荐系统,QA中的结果排序,机器翻译中排序候选翻译结果等等。
 
本文主要介绍LTR在限定领域知识库搜索的优化中的简单应用的过程。
 
2:客服智能辅助(IA)系统
 
随着互联网互越来越普及,作为电商平台,如何提供给大群体的买家,卖家以最优质的服务已经成了一个重点话题,也是一直在解决的难题。常见的人工智能(AI)客服系统,比如语聊机器人大部分智能解决用户QA类简单咨询问题。在我们的人工智能客服系统-阿里小蜜中,机器人智能问答是用户接触的第一层服务。当机器人遇到解决不了的复杂问题,比如流程性较强,个性化的问题时需要人工在线解决,此时用户会接触到在线人工客服,而非机器人。而本文的讨论的产品方寸就是一款应用于人工客服端,辅助人工解决用户各类问题的智能工具,致力于解决业务问题场景复杂,客服人员人数少且服务水平良莠不齐,但是要提供给客户统一优质的服务等一系列问题,以辅助越来越多未经过专业客服技能培训的人员快速上岗同时不降低服务质量,来满足越来越多的用户服务需求。本文介绍的就是方寸中的知识搜索功能。
 
3:LTR在限定领域知识库搜索优化的应用
 
在使用机器学习理论之前,方寸搜索使用的是比较传统的知识库检索的方式:使用常见的NLP算法组件为所有知识的标题做好分词和同义词后使用opensearch构建索引,检索过程中,先使用用户query item直接recall至多不超过500条数据,再对召回结果和query词做相似度排序。这种简单检索的方式慢慢无法满足我们的客服人员对于越来越多而且越来越复杂的业务知识的搜索。
 
一般行业内的搜索分为:检索、粗排、召回 (basic search),精排(advanced search)包括相关度打分,个性化特征精排,rerank 等等。LTR理论常用于搜索精排ranking,作为有监督的学习过程,学习数据来源最常见的还是标注,标注一般分为三级分数(相关,一般相关,不相关)或者五级分数(非常相关,相关,一般相关,不相关,非常不相关),但成本非常大。经过大量的数据分析,我们最终选择了非人工标注的方式-日志分析。在web search或者较复杂的搜索场景中,日志分析常用于basic search中召回的features,比如搜索,浏览,是否点击,点击后停留时间,是否换query,点击后的操作,收藏,转发,分享等交互行为,而个性化特征精排会比较倾向于用用户特征,比如性别,年龄,收入,身份,兴趣,群体甚至一些外界自然因素比如季节,天气,时间等等作为特征来标注数据分析。我们选择非标注的方式除了基于大量的数据分析之外,也和业务场景有关,在一个限定领域的知识库搜索这个场景下,user相关的上下文的用户信息特征几乎只和身份(客服人员所属部门,权限等等)相关,不太具有个人特征,而且document又是标准化的知识,因此最终决定使用日志分析的方式获得数据。
 
 
 
如上图所示,应用交互层发起搜索请求,经过opensearch的基本检索召回500条结果,之后进入rerank阶段,主要依赖LTR算法以用户的历史行为为重要特征做重排序,最终再将排序后的结果返回给用户端。
 
Learning to Rank一般有三种常见方式:Pointwise、Pairwise 和 Listwise。Pointwise是对每一个query和document的打分排序,是比较常用的方法,优点是简单,缺点是出现mismatch的时候是无法找到退而求其次的选择的。于是就有了Pairwise作为现在比较流行的一种方式,Pairwise其实并不针对用户输入,而是比较备选谁更好,不关心绝对值的得分,能有效的缩短绝对信息。但是标注的工作是比较多的,假如同一个query有A ,B,C三个备选目标,标注A比B好就是AB1,B不如C就是BC0,类似这样。目前流行的Pairwise的算法和paper还是比较多的,比如Ranking SVM,RankNet,RankBoost等等。Listwise相较于上面两类是比较不同的,个人感觉更适合作为推荐系统中的ranking,具体过程是将每个query对应的全部搜索结果作为一个训练sample,根据这个sample训练得到最优评分函数f,ranking的时候对于新的query,f对每个文档打分,然后根据得分高低排序为最终结果,本质上是学习排列组合中最高概率的方法。除了这三种主流的方式,针对不同的需求和调整,也有很多通过这三类衍生出来的方法,思路大致一致就不再一一列举。
 
通过以上简单的基础知识介绍和我们所面临的业务场景的分析,我们尝试了将Pointwise的思路运用到上文提到的限定领域的知识库搜索中。我理解的在我们应用场景中的Pointwise更像把搜索的ranking成了用户点击/没点的一个分类问题。而其他重要特征主要分为3类:1. Relevance Feature:query词的match或者overlap简单理解成字面相关性;2. 语义相关性; 3. 搜索目标本身的特性,类似于web search的page rank。因此,除了基于日志数据的是否点击,我们也做了TF-IDF的计算作为排序依据。下面举一个非常简单的例子来说明(非线上真实数据): 
 
               
Knowledge
Title
TF-IDF
(sparse)
User
Query
TF-IDF
(sparse)
Cosin
Similarity
isClick
Label
               
如何购买苹果手机
{
"54": 3.031444942462052,
"386": 5.652195124632954,
"424": 5.370483219167677,
"3811": 9.507647778572705
}
苹果
{"3811": 9.507647778572705}
0.6057588618324471
1
苹果是水果吗
{
"34": 3.0903029386139664,
"48": 3.186542310955625,
"3811": 9.507647778572705,
"16010": 11.181624212144378
}
苹果
{"3811": 9.507647778572705}
0.7517930157435532
0
如何购买苹果手机
{
"54": 3.031444942462052,
"386": 5.652195124632954,
"424": 5.370483219167677,
"3811": 9.507647778572705
}
苹果 手机
{
"424": 5.370483219167677,
"3811": 9.507647778572705
}
0.8568488448069502
1
苹果是水果吗
{
"34": 3.0903029386139664,
"48": 3.186542310955625,
"3811": 9.507647778572705,
"16010": 11.181624212144378
}
苹果 手机
{
"424": 5.370483219167677,
"3811": 9.507647778572705
}
0.5314884700031328
0
 
上图列举了两组query和两个标题为例,第一组query词是【苹果】按照tfidf相似度得分来看应该是问题【苹果是水果吗】作为ranking第一位的,但是由于训练数据中搜索过【苹果】的点击了问题。所以最终的ranking顺序会受到点击数据的影响,如何购买苹果手机将排在第一位。当然这个结果也会有一些陷阱,用户对于排在前面的搜索结果会带有天然好感,因此交互影响会造成数据影响,日志又来自于上一次模型,因此引导用户的bias的独立分桶实验也是十分重要的。
 
4:结论
 
Learning to Rank应用于方寸搜索场景上线后,随着数据的积累和学习,搜索转化率最终提升了10%左右,因此印证了在限定领域的知识库搜索场景中,机器学习理论对于ranking有着非常有益的帮助。下图为8月到12月的搜索点击转化率和Top5点击转化率值,从9月底上线后的数据变化。
 
CVR
Top 5 CVR
                 
Aug.
75%
69%
Sep.
76%
70%
Oct.
77%
74%
Nov.
82%
79%
Dec.
86%
84%
 
综上,搜索的本质其实就是,user的特征(当然其中最重要的是输入query)和目标列表中的值(也包含自身特征)的match过程,而我们基于用户过去的历史行为来做ranking就是基于机器学习的理论基础。ranking problem 目标排序,期望在过去的历史数据建立学习系统得到排序方式。
 
这次实践过程总结了一些解决此类问题的经验:最重要的是分析数据,tips具体有以下几点:
 
1.   选择合适当前业务场景的模型,流行的算法或者高大上的paper不见得真的合适,学习其中的理论和思路,实际落地的过程最重要的是对业务和对数据的理解基础上找到适合自己的方法。
 
2.   Leaning中选择合适的损失函数(Loss Function)有很多解决不平滑无法求导的方式。另外像随机梯度下降,并行计算等可以在leaning中根据情况考虑。笔者本身是开发,所以也会在架构和实现方面会多考虑一些。
 
3.   根据业务场景科学的选择合适的Evaluation方案,同时考虑建立标准测试集和自动回归测试方案。
 
5:未来和探索
 
关于机器学习在ranking的应用,本文想分享的并不是理论上的知识,是应对不同的场景的实践过程。首先,解决此类问题最重要的日志分析,要对自己的业务有足够的理解。比如,在特定的搜索场景中,转化率的概念,如何评估满足了用户。比如搜索点击转化 、停留时间是否足够衡量搜索是否优秀。同时,需要注意的是点击浏览之后的行为链更为重要,但是在我们的业务场景下,受干扰的影响条件太过复杂暂时没有使用。但在其他典型搜索场景中,浏览后的分享,收藏行为也是LTR的重要特征。比如在电商的商品搜索中,点击后加购,下单,或者分享除了用户特征也可能受目标特征影响,比如价格,甚至受环境比如大促期间等等影响。第二,学习的特征来自与数据挖掘:用户信息做个性化query-term信息,转化后点击位置,timing时序概念,时间串联的用户行为链以及用户历史行为的捕捉。同时不能忽略交互带来的数据影响,最好做独立分桶实验。最后,本文没有涉及的是用户个体个性化的搜索探索,主要原因前文也有提到,业务场景并不是刚需,不过业界很多做个性化用户兴趣来影响ranking的方法也在实践过程中给到了很多思路。
 
本文介绍的是搜索中query full场景,是有用户主动输入query的,同时未来还会将这套理论结合深度学习应用于query less场景即无用户输入主动推荐知识,敬请期待。
 
6:References
 
  1. Carvalho, V.R., Elsas, J.L., Cohen, W.W., Carbonell, J.G.: A meta-learning approach for robust rank learning. In: SIGIR 2008 Workshop on Learning to Rank for Information Retrieval (LR4IR 2008) (2008)
  2. Chapelle, O., Wu, M.: Gradient descent optimization of smoothed information retrieval metrics. Information Retrieval Journal. Special Issue on Learning to Rank 13(3)
  3. Rigutini, L., Papini, T., Maggini, M., Scarselli, F.: Learning to rank by a neural-based sorting algorithm. In: SIGIR 2008 Workshop on Learning to Rank for Information Retrieval (LR4IR 2008) (2008)
 
 
以上,一个java开发工程师在做搜索优化过程中的一次简单探索算法之路,不专业之处还请大家批评指教~
目录
相关文章
|
7月前
|
存储 人工智能 运维
AI 网关代理 RAG 检索:Dify 轻松对接外部知识库的新实践
Higress AI 网关通过提供关键桥梁作用,支持 Dify 应用便捷对接业界成熟的 RAG 引擎。通过 AI 网关将 Dify 的高效编排能力与专业 RAG 引擎的检索效能结合,企业可在保留现有 Dify 应用资产的同时,有效规避其内置 RAG 的局限,显著提升知识驱动型 AI 应用的生产环境表现。
3100 124
|
6月前
|
缓存 边缘计算 运维
基于 Cloudflare Workers 构建高性能知识库镜像服务:反向代理与 HTML 动态重写实践
基于Cloudflare Workers构建的边缘计算镜像服务,通过反向代理、HTML动态重写与智能缓存,优化维基百科等知识平台的访问性能。支持路径映射、安全头清理与容错回退,实现免运维、低延迟、高可用的Web加速方案,适用于教育、科研等合规场景。
1136 8
|
自然语言处理 搜索推荐 关系型数据库
MySQL实现文档全文搜索,分词匹配多段落重排展示,知识库搜索原理分享
本文介绍了在文档管理系统中实现高效全文搜索的方案。为解决原有ES搜索引擎私有化部署复杂、运维成本高的问题,我们转而使用MySQL实现搜索功能。通过对用户输入预处理、数据库模糊匹配、结果分段与关键字标红等步骤,实现了精准且高效的搜索效果。目前方案适用于中小企业,未来将根据需求优化并可能重新引入专业搜索引擎以提升性能。
599 5
|
8月前
|
存储 自然语言处理 前端开发
百亿级知识库解决方案:从零带你构建高并发RAG架构(附实践代码)
本文详解构建高效RAG系统的关键技术,涵盖基础架构、高级查询转换、智能路由、索引优化、噪声控制与端到端评估,助你打造稳定、精准的检索增强生成系统。
1707 2
|
10月前
|
存储 缓存 API
从零构建企业知识库问答系统(基于通义灵码+RAG+阿里云OSS的落地实践)
本系统基于RAG技术,结合语义检索与大语言模型,解决企业知识管理中的信息孤岛、检索低效和知识流失问题。采用通义灵码、Milvus与阿里云OSS,实现知识查询效率提升、新员工培训周期缩短及专家咨询减少。支持多模态文档处理,具备高可用架构与成本优化方案,助力企业智能化升级。
1388 3
|
9月前
|
Kubernetes Go 数据库
客服系统命令行程序-Cobra 命令行应用入口
唯一客服系统是基于 Go 语言与 Cobra 框架构建的命令行工具,用于管理在线客服系统。支持启动、安装和停止服务,具备清晰的命令结构和良好的扩展性,便于维护与功能拓展。
212 0
|
12月前
|
存储 人工智能 开发框架
MCP 实践:基于 MCP 架构实现知识库答疑系统
文章探讨了AI Agent的发展趋势,并通过一个实际案例展示了如何基于MCP(Model Context Protocol)开发一个支持私有知识库的问答系统。
MCP 实践:基于 MCP 架构实现知识库答疑系统
|
12月前
|
人工智能 搜索推荐 Java
【重磅】JeecgBoot 里程碑 v3.8.0 发布,支持 AI 大模型、应用、AI 流程编排和知识库
JeecgBoot 最新推出了一整套 AI 大模型功能,包括 AI 模型管理、AI 应用、知识库、AI 流程编排和 AI 对话助手。这标志着其转型为 “AI 低代码平台”,旨在帮助开发者快速构建和部署个性化 AI 应用,降低开发门槛,提升效率。
556 12
|
人工智能 自然语言处理 前端开发
【AI落地应用实战】大模型加速器2.0:基于 ChatDoc + TextIn ParseX+ACGE的RAG知识库问答系统
本文探讨了私有知识库问答系统的难点及解决方案,重点分析了企业知识管理中的痛点,如信息孤岛、知识传承依赖个人经验等问题。同时,介绍了IntFinQ这款知识管理工具的核心特点和实践体验,包括智能问答、深度概括与多维数据分析等功能。文章还详细描述了IntFinQ的本地化部署过程,展示了其从文档解析到知识应用的完整技术闭环,特别是自研TextIn ParseX引擎和ACGE模型的优势。最后总结了该工具对企业和开发者的价值,强调其在提升知识管理效率方面的潜力。
|
人工智能 自然语言处理 算法
DeepSeek大模型在客服系统中的应用场景解析
在数字化浪潮下,客户服务领域正经历深刻变革,AI技术成为提升服务效能与体验的关键。DeepSeek大模型凭借自然语言处理、语音交互及多模态技术,显著优化客服流程,提升用户满意度。它通过智能问答、多轮对话引导、多模态语音客服和情绪监测等功能,革新服务模式,实现高效应答与精准分析,推动人机协作,为企业和客户创造更大价值。
975 5

热门文章

最新文章