任务:各自把前期工作总结,包括主要使用的模型或技术介绍,附上博客链接。
- BERT模型的改进
使用模型为bge-large模型替换bert。
bge模型(M3)以及BGE模型使用的预训练方法RetroMAE的具体技术介绍见:《M3-Embedding》汇报-CSDN博客
将BERT模型替换为BGE模型之后,由另一位同学在此基础上加入rerank模型进行重排序。
之后将large+rerank模型与有数据库版本的心法系统进行整合。
测试主要包含以下的不足:
-
rerank模型会出现多线程错误:由于模型比较大,计算速度很慢,当带搜索框输入一条问题,并删除,再接着输入问题时,会因为前端快速连续搜索导致多个请求同时到达,导致多线程并发问题。但是只要删掉问题,等过一会模型就会自动恢复。(但是测试的结果展示,rerank加入确实有助于问答对的匹配)
-
关于速度的问题:模型加载缓慢,代码运行启动时,可能需要半小时。搜索框搜索稳定时,可以需要5分钟时间。
-
关于代码部分:进行整合的过程中发现,其实代码里面有一些逻辑问题。比如关于阈值问题,由于rerank模型控制输出5条结果,那么阈值的作用就显得没那么重要了,那么就需要考虑删除的问题。还有一些比较细节的问题,但是由于时间和测试比较麻烦(因为启动时间很长)的原因,没有进行一一排除。但是总体来说,代码是可以跑通的。
-
标签预测
目前暂时使用利于语义来匹配标签预测:将新添加的问答对进行一个相似度计算,计算出最相似的问答对,将最相似的问答对的标签赋给新进来的问答对。
具体使用的逻辑如下:
- 计算问题与知识库中所有问题的相似度,取最相似的5个问题。
- 统计这5个问题中每个一级标签的权重(权重为所有属于该一级标签的问题的相似度之和)。
- 选择权重最高的一级标签。
- 然后,针对该一级标签,统计这5个问题中属于该一级标签的问题的二级标签,每个二级标签的权重为包含它的问题的相似度之和。
- 选择权重最高的1-3个二级标签(如果不足3个,则全部选择;如果超过3个,选前3个)。
利用上面逻辑来保证一级标签和二级标签的从属关系。
上面方法的不足如下:
-
如果数据集中没有与新问题相似的问题,那么预测可能不准确。
-
如果数据集中存在错误标签,也会影响预测结果。