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

知识库是企业经营过程中的面向客户和内部员工的知识沉淀文档库,里面包含各类教程、问答、案例等,知识库的检索匹配是自然语言处理(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.onlinetraining和offlinetraining在深度学习中什么意思?文章浏览阅读1.6k次。在线学习与离线学习是两种不同的机器学习模式。离线学习用于处理大数据和复杂模型,需要完整数据集,训练完成后才应用模型。在线学习则按顺序处理数据,实时更新模型,适用于数据流场景,如监控视频分析。两种方式各有优劣,常结合使用,如离线预训练加https://blog.csdn.net/Adam897/article/details/129908295
2.相比于离线训练,在线训练的好处有什么?问答在线模型训练的流程如下图所示。在线模型训练意味着我可以用实时线上传输化的数据,然后用我们的实时机器学习模型训练框架去做训练。在线训练虽然数据是实时进来的,但你的模型并不是从 0 开始的。而是说我从离线先训练好这个模型,我站在离线模型的巨人的肩膀上,再往上去优化。 以上内容摘自《个性化推荐系统开发指南》https://developer.aliyun.com/ask/446535
3.推荐系统中模型训练及使用流程的标准化腾讯云开发者社区在实践中,我们对特征的采集、配置、处理流程以及输出形式进行了标准化:通过配置文件和代码模板管理特征的声明及追加,特征的选取及预处理等流程。由于使用哪些特征、如何处理特征等流程均在同一份配置文件中定义,因而,该方案可以保证离线训练和在线预测时特征处理使用方式的代码级一致性。https://cloud.tencent.com/developer/article/1539413
4.科学网—[转载]群视角下的多智能体强化学习方法综述对于大规模多智能体系统,处理数量和规模方面的动态变化是当前深度强化学习方法面临的突出挑战。基于学习(深度学习、强化学习)设计的迭代式问题求解方法是离线策略学习的基础范式。由于环境及对手的非平稳性,离线训练的蓝图策略通常很难直接运用于在线对抗。在线博弈对抗过程与离线利用模拟多次对抗学习博弈过程不同,博弈各方https://blog.sciencenet.cn/home.php?mod=space&uid=3472670&do=blog&id=1422698
5.蚂蚁金服核心技术:百亿特征实时推荐算法揭秘备注:弹性特征带来一个显著的优势:只要用足够强的L1稀疏性约束,在单机上就能调试任意大规模的特征训练,带来很多方便。我们的hashmap实现是KV化的,key是特征,value是vector的首地址。 离线训练优化 经过这样的改造后,在离线批量学习上,带来了以下变化: 在线训练优化 https://maimai.cn/article/detail?fid=1010621115&efid=mIQCHnkj0zjxlpygUmo5mg
6.粗排优化探讨得物技术离线在线一致性分析 待补充实际效果 四 样本设计 粗排相较于精排样本选择偏差(SSB)的问题更加严重,借鉴召回经验,可以通过适当采样减少偏差。采样设计的目的也是希望离线训练样本尽可能与线上分布一致。 样本选择方法 负样本可选范围: 曝光未点击样本; 全库除转化外样本; https://blog.itpub.net/70027824/viewspace-3000851/
7.基于Kmeans聚类的CSI室内定位AET基于指纹的定位模型分为离线训练阶段和在线定位阶段,模型如图1所示。 离线训练阶段的任务是建立一个位置指纹数据库。首先要选择参考点的位置,然后在每个参考点处测量来自信标的信号特征,最后处理信号特征保存在数据库中。这个数据库也被称为位置指纹地图。 http://www.chinaaet.com/article/3000057028
8.京东搜索在线学习探索实践参数更新:首先我们将用离线的 30 天的数据训练出来的模型参数导入 ps,之后 flink 的在线训练将实时更新参数,该 ps 直接服务于线上。目前在线和实时共用一套 ps,为了之后的稳定性要求,我们之后会将实时和在线分开。 模型校准:为了确保模型的准确性,支持天/周粒度的完整模型更新进行校准。 https://www.infoq.cn/article/Z6lL9VNskAH3BCxZS1A7
9.强化学习离线模型离线模型和在线模型推荐系统里非常常见,并且往往非常的隐蔽的一种数据分布不一致的情况被称之为冰山效应,也就是说离线训练用的是有偏的冰山上的数据,而在线上预估的时候,需要预测的是整个冰山的数据,包括大量冰面以下的数据!我们看下面这张图。左边是我们的Baseline,绿色的表示正样本,红色表示负样本,灰色部分表示线上由于推荐系统的“https://blog.51cto.com/u_14499/11815202
10.如何在本地(离线)使用PrivateGPT训练自定义AI聊天机器人PrivateGPT是一个新的开源项目,可以让你在AI聊天机器人界面中与你的文件进行私人互动。为了了解更多,让我们学习如何在本地使用PrivateGPT训练一个定制的人工智能聊天机器人。https://www.wbolt.com/how-train-ai-chatbot-using-privategpt-offline.html
11.基于多时间尺度多智能体深度强化学习无功电压控制方法与流程8.(2)将有载调压分接头(oltc)、电容器组(cb)和储能(es)均定义为智能体,在第一时间尺度阶段,搭建环境和智能体交互的马尔科夫决策过程的交互训练环境;在该过程的交互训练中,输入光伏、风机和负荷的预测数据,采用ddqn算法(double q network)进行离线训练无功优化离散动作策略;训练完毕,得到智能体oltc、cb和es的调https://www.xjishu.com/zhuanli/60/202110597000.html
12.飞桨开源框架的大规模分布式训练能力工业级稀疏参数弹性调度在线服务方面,ElasticCTR采用Paddle Serving中高吞吐、低延迟的稀疏参数预估引擎,高并发条件下是常见开源组件吞吐量的10倍以上。 3.可定制 用户可以通过统一的配置文件,修改训练中的训练方式和基本配置,包括在离线训练方式、训练过程可视化指标、HDFS上的存储配置等。除了通过修改统一配置文件进行训练任务配置外,ElasticCTRhttps://github.com/PaddlePaddle/ElasticCTR/
13.趋动云平台为工程师提供了在线的开发环境,内置多种 AI 算法库和开发工具,工程师可以在线编辑优化模型。另外在开发环境中,工程师可随时提交训练任务,在线训练和分析,实时进行模型优化。 ▌主要功能 AI 模型在线开发 深度整合算法开发环境,支持 JupyterLab/网页终端/ssh 登录等多种开发调试工具。 https://2d.ciftis.org/view/productmgr/productdetail?productId=50485