知识库检索匹配的服务化实践

知识库是企业经营过程中的面向客户和内部员工的知识沉淀文档库,里面包含各类教程、问答、案例等,知识库的检索匹配是自然语言处理(NLP)中一个重要的基础问题,本质是进行文本语义的相似度计算,也就是语义匹配,我们很多领域的任务都可以抽象为文本匹配检索任务,例如检索引擎、智能客服、知识检索、信息推荐等领域。知识库检索匹配可以概述为:给定一个query和大量候选知识库的文档,从这些文档中找出与用户输入query最匹配的TopK个文档。

检索优化第一步:DSL改写,接手前业务方自己已经对检索结果做过优化,调整不同字段的匹配权重,这一方法的已经难以继续优化。从知识运营的角度出发,在用户检索时,将运营认为重要的文档推到前面,由于文档之间互相有链接引用,可以使用PageRank算法给每个文档计算重要分(PR值)。PageRank的核心思想是,被引用次数越多的文档越重要。算法原理如下,假设只有四个网页ABCD,以AB间的箭头为例,代表可以从B网页跳转到A网页,对B即一次引用(链出),对A则一次被引用(链入)。L(B)表示B网页的链出数量,PR(B)表示B网页的PageRank分数。假设所有文档的初始PR值是0.25,这里L(B)=2,L(C)=1,L(D)=3,计算出PR(A)=0.458,接下来计算所有其他被引用(有链入)的文档PR值,PageRank是个迭代算法,反复计算以后所有的PR值会收敛,那就是最终每个文档的PR值,也是用来改写DSL的关键信息:

newscore=oldscore*log(1+2*PageRank)oldscore指原来不同字段加不同权重由ES算出来的BM25分数,PageRank缺失值使用1代替。

文本召回是召回中最常用的一种策略,最常见的方式是通过对Query直接进行分词,然后将分词后的关键词到ES构建倒排索引,进行tf-idf等相似计算匹配索引召回,这种召回方式的优点是实现简单,不需要训练模型、低资源需求、检索速度快,然而它的缺点也很明显,文本是具有语义的、是有语法结构的,文本召回忽略了语句的语法结构,同时也无法解决一词多义和同义词的问题,对query进行语义层面相似的召回效果就比较一般,解决这个问题就要用到向量召回。

L_i=-log(\frac{exp(sim(z_i,z_i^+)/\tau)}{\sum_j{exp(sim(z_i,z_j)/\tau)}})分子是正例对的相似度,分母是正例对+所有负例对的相似度,最小化infoNCEloss,就是最大化正例对的相似度,最小化负例对的相似度。在计算损失时,label可以在batch内生成,检索词和文档的编码向量经过矩阵乘法可以得到一个相似度方阵,对角位置就是互相匹配的检索词和文档的分数,如果batchsize=4,那每行对应的label就是[0,1,2,3]。inbatch负采样损失计算示意图:

模型训练好以后,就得到文本的编码器,输入两个文本,就可以得到一个匹配的分数,将这个模型部署到小盒子,在需要排序时,输入候选的文档标题和检索词,按计算出来的分数从高到低排序,就完成了一次对检索结果的排序。

当线上接受一条检索请求文本后,先调用在线推理-小盒子计算Query向量,然后去Milvus向量库中和知识库向量进行相似度计算,并返回距离最近的TopN个Item作为向量召回的结果。

海量的知识语料库向量化计算在自研DP平台离线运行,使得全库文本匹配速度较快:1)语料库预处理:包括语料库的文本清洗、文本筛选等预处理逻辑2)语料库向量化:利用上述的向量计算模型进行向量化3)导入Milvus库:将集合部署在Milvus集群,依次批量导入更新机器的集合保证线上可用

{"inputs":[{"name":"INPUT","shape":[1,1],"datatype":"BYTES","data":["满足条件满减送没有赠品"]}],"outputs":[{"name":"OUTPUT"}]}4.3、Milvus向量检索Milvus是一款开源的、针对海量特征向量的向量相似性检索(ANNS,Approximatelynearestneighborsearch)引擎,集成了Faiss、Annoy等广泛应用的向量索引,成本更低、性能更好、高度灵活、稳定可靠以及高速查询等特点,十亿向量检索仅毫秒响应。1、Milvus向量索引列表如下:简言之,每种索引都有自己的适用场景,如何选择合适的索引可以简单遵循如下原则:1)当查询数据规模小,且需要100%查询召回率时,用FLAT;2)当需要高性能查询,且要求召回率尽可能高时,用IVF_FLAT;3)当需要高性能查询,且磁盘、内存、显存资源有限时,用IVFSQ8H;4)当需要高性能查询,且磁盘、内存资源有限,且只有CPU资源时,用IVFSQ8。

2、Milvus目前支持的距离计算方式与数据格式、索引类型之间的兼容关系:选择合适的距离计算方式比较向量间的距离,能很大程度地提高数据分类和聚类性能,主要采用内积(IP)的计算方式,内积更适合计算向量的方向。内积计算两条向量之间的夹角余弦,并返回相应的点积。内积距离的计算公式为:假设有A和B两条向量,则||A||与||B||分别代表A和B归一化后的值。cosθ代表A与B之间的余弦夹角。在向量归一化之后,内积与余弦相似度等价。因此Milvus并没有单独提供余弦相似度作为向量距离计算方式。

算法模型接口服务由ai-service和ai-app两个服务组成,ai-service负责调用算法模型在线推理、Milvus实时向量召回等接入库,ai-app负责业务逻辑的开发。1、ai-service配置示例:

{"model_name":"similarity_jira","model_source_type":"YZ_MODEL","model_version":1,"model_invoke_timeout":3000,"protocol":"kfserving","infer_type":"triton","feature_maps":[{"model_feature_key":"INPUT","data_type":"string","shape":"(-1,1)","default_value":"","feature_source":"PARAMS","source_key":"jira_text","is_required":1}],"param_mapping":{"jira_text":""}}2、ai-app接口设计实现业务逻辑开发测试后,发布上线即可提供前后端调用。a、Maven示例:

com.youzanai-app-api1.0.13-RELEASEb、请求示例:

invokecom.youzan.ai.app.api.service.jira.Service.retrieve({"fromApp":"test","scene":"similarity_predict","Title":"满足条件没有赠品","Key":"XXX"})c、返回示例:

{"code":200,"data":{"Similaritys":[{"createdAt":1648137600000,"score":0.9390,"key":"XXX0123442334","title":"满足条件没有赠品"},{"createdAt":1636214400000,"score":0.9010,"key":"XXX0123365819","title":"满足条件没有送赠品"},{"createdAt":1653408000000,"score":0.8735,"key":"XXX0123482446","title":"订单满足条件没有送赠品"},{"createdAt":1655308800000,"score":0.8312,"key":"XXX0123496337","title":"订单满足条件但是没有送赠品"},{"createdAt":1659628800000,"score":0.8028,"key":"XXX0123527965","title":"订单满条件但是赠品没有送"}]},"success":true,"message":"successful"}

THE END
1.train和offlinetrain需要交互的训练是online吗离线学习适用于处理大数据和复杂模型,需要所有训练数据在训练前可用,训练完成后模型才用于预测。在线学习则侧重实时性,数据以流式到达,模型会随新数据不断更新。两种方式常结合使用,如离线训练后在线微调。在线学习关注当前数据,离线学习则能看到全局。 摘要由CSDN通过智能技术生成 https://blog.csdn.net/qq_45104603/article/details/126052925
2.关于训练神经网路的诸多技巧Tricks(完全总结版)很多人都说训练神经网络和炼金术师炼药的过程相像,难以破解其中的黑盒子。其实不然,在训练的时候我们依然可以通过大量的技巧去最大化我们的训练效果,从而帮助我们的任务取得不错的精度,这些技巧是训练神经网络不可缺少的一环。 本文尽可能说明训练过程中所需要的各种小技巧,会有不完善的地方,限于篇幅每个点不会说很https://cloud.tencent.com/developer/article/2346565
3.如何构建高效的离线机器学习模型训练平台?袋鼠社区此外,离线训练还能够有效减少对网络带宽的依赖,提升训练的稳定性和效率。 二、离线机器学习模型训练平台的核心组成部分1. 硬件环境: 离线机器学习训练平台的硬件环境是基础,包括计算机硬件(CPU、GPU等)、存储设备(HDD、SSD)和网络设施等。合适的硬件配置对模型训练速度和性能起着至关重要的作用。比如,GPU在处理大型https://www.dtstack.com/bbs/article/15769
4.相比于离线训练,在线训练的好处有什么?问答离线训练毕竟使用的是 T-1 或者 T-2 的数据去做的,没有对线上实时产生的行为数据进行利用,对于数据的时效性利用相对较差。 比如说,有这样的一个场景,今天我的整个平台只对 14 岁以下的少女做某个运营活动,而平台上充斥了大量的年龄段的客户,整个平台的交互行为都变了,这个时候你的模型还是 T-1 去做的,将https://developer.aliyun.com/ask/446535
5.模型也可以上网课?!一文看懂服务型蒸馏训练方案同时由于Teacher模型可以弹性调度,不用担心高峰时线上实例被抢占造成的任务失败。相当于把teacher对训练卡的资源需求转移到了在线GPU卡上,在v100等离线训练资源受限的情况下,使用在线卡对训练进行加速,以节约宝贵的训练资源。 此外,在离线集群上,结合调度策略,还可以将Teacher模型部署到集群碎片资源,或者如k40等使用率https://www.thepaper.cn/newsDetail_forward_8071575
6.谁说RL智能体只能在线训练?谷歌发布离线强化学习新范式为了避免 distribution mismatch,强化学习的训练一定要在线与环境进行交互吗?谷歌的这项最新研究从优化角度,为我们提供了离线强化学习研究新思路,即鲁棒的 RL 算法在足够大且多样化的离线数据集中训练可产生高质量的行为。 为了避免 distribution mismatch,强化学习的训练一定要在线与环境进行交互吗?谷歌的这项最新研究从优化https://www.51cto.com/article/614512.html
7.深度学习模型在线训练排序策略离线排序模型华为云帮助中心为你分享云计算行业信息,包含产品介绍、用户指南、开发指南、最佳实践和常见问题等文档,方便快速查找定位问题与能力成长,并提供相关资料和解决方案。本页面关键词:深度学习模型 在线训练。https://support.huaweicloud.com/topic/985668-2-S
8.科学网—[转载]群视角下的多智能体强化学习方法综述基于学习(深度学习、强化学习)设计的迭代式问题求解方法是离线策略学习的基础范式。由于环境及对手的非平稳性,离线训练的蓝图策略通常很难直接运用于在线对抗。在线博弈对抗过程与离线利用模拟多次对抗学习博弈过程不同,博弈各方处于策略解耦合状态,与离线批(batch)式策略学习方法不同,在线博弈对抗策略的求解本质是一个流https://blog.sciencenet.cn/home.php?mod=space&uid=3472670&do=blog&id=1422698
9.蚂蚁金服核心技术:百亿特征实时推荐算法揭秘备注:弹性特征带来一个显著的优势:只要用足够强的L1稀疏性约束,在单机上就能调试任意大规模的特征训练,带来很多方便。我们的hashmap实现是KV化的,key是特征,value是vector的首地址。 离线训练优化 经过这样的改造后,在离线批量学习上,带来了以下变化: 在线训练优化 https://maimai.cn/article/detail?fid=1010621115&efid=mIQCHnkj0zjxlpygUmo5mg
10.构建容器镜像部署nnae软件(支持离线推理在线推理训练)本文档基于镜像树结构来构建容器镜像,具有可扩展性。 镜像树示意图如图1所示。 图1镜像树示意图 表1 昇腾基础镜像树说明 镜像名 说明 ascendbase-train 安装系统组件及python第三方依赖等。 ascend-train 安装深度学习引擎包nnae(支持离线推理、在线推理、训练)等。 https://www.hiascend.com/document/detail/zh/mindx-dl/2046/dluserguide/toolboxug/toolboxug_000121.html
11.机器学习术语表:机器学习基础知识MachineLearningGoogle动态模型(或在线模型)是一种模型, 。 动态训练(或在线训练)是训练 频繁或持续不断 动态推理(即在线推理)是 根据需求生成预测。 动态模型 #fundamentals 一个模型经常出现(甚至可能会持续) 重新训练。动态模型是一个“终身学习者”那个 适应不断演变的数据。动态模型也称为在线模型。 https://developers.google.cn/machine-learning/glossary/fundamentals?hl=zh-cn
12.基于Kmeans聚类的CSI室内定位AET对于单个天线对得到fin,对于m个天线的每个天线对使用Kmeans算法,得到训练向量: 2.2 在线定位阶段 在线定位阶段采用与离线训练阶段相同的方法提取到m个天线对的指纹: 将提取到的指纹与训练阶段建立的数据库中的指纹作比较,即将获取到的第i个天线对的指纹矩阵与数据库中的第i个天线对的指纹矩阵,进行两个指纹矩阵中任http://www.chinaaet.com/article/3000057028
13.粗排优化探讨得物技术离线在线一致性分析 待补充实际效果 四 样本设计 粗排相较于精排样本选择偏差(SSB)的问题更加严重,借鉴召回经验,可以通过适当采样减少偏差。采样设计的目的也是希望离线训练样本尽可能与线上分布一致。 样本选择方法 负样本可选范围: 曝光未点击样本; 全库除转化外样本; https://blog.itpub.net/70027824/viewspace-3000851/
14.推荐模型离线评测效果好,线上效果却不佳的原因推荐系统里非常常见,并且往往非常的隐蔽的一种数据分布不一致的情况被称之为冰山效应,也就是说离线训练用的是有偏的冰山上的数据,而在线上预估的时候,需要预测的是整个冰山的数据,包括大量冰面以下的数据!我们看下面这张图。左边是我们的Baseline,绿色的表示正样本,红色表示负样本,灰色部分表示线上由于推荐系统的“https://www.jianshu.com/p/34489b31c783
15.微软亚洲研究院解密:AISuphx是如何成为麻将十段的?科技当初始的手牌发到麻将AI手中时,通过模拟来调整离线训练好的策略,使其更适应这个给定的初始手牌。微软亚洲研究院的实验表明,相对麻将隐藏信息集的平均大小10的48+次方倍而言,模拟的次数不需要很大,pMCPA也并不需要为这一局手牌收集所有可能后续状态的统计数据。由于pMCPA是一种参数化的方法,所以微调更新后的策略可以帮https://www.whb.cn/zhuzhan/kjwz/20200412/340072.html
16.推荐算法中的在线学习和离线学习有何区别,各自的优缺点是什么在线学习和离线学习是推荐算法中常见的训练方式,各自有不同的优缺点。在实际应用中可以根据需求选择合适的方式或结合两者优势。https://www.mbalib.com/ask/question-ec5c1bbee149c6534d0a725ffdb15235.html
17.2019机器之心人工智能年度奖项正式公布:关注创业先锋,聚焦产品2019 年,天泽智云发布无忧机加解决方案,基于 CPS 信息物理系统架构,融合高频振动数据和加工运行数据,结合机理、数据的智能分析,离线训练算法模型,在线评估刀具健康状态,实现刀具失效预警、刀具寿命预测和主轴健康管理。截止 2019 年 12 月底,已服务 2 家机床厂商,为其增强产品竞争力,提升服务价值;助力 4 家制造商将https://www.zhuanzhi.ai/document/2abfb47db9cd9ab70b4144f329e147b8