垂直领域知识问答的特点
1、问答内容通常不存在通用语料
2、回答内容对准确率要求较高,召回率要求相对较低。
3、扩展性和可控性(可以根据需求,增、删、改特定问题的回答内容,或以特定形式进行回复处理,如进入剧本、非文本回复等)。
4、需要确切的评价方式
知识问答的实现方案
知识库+文本匹配(传统方案)
该方案实现流程,包括如下几个关键步骤:
1、构建FAQ库(frequently asked questions)
FAQ库,也叫做知识库,包含针对特定主题或领域的一系列最常见问题及答案。这些答案通常是由领域专家、客服团队或知识管理专业人员预先编写和整理。
一个典型的FAQ库可能包含以下特点:
结构化问题列表:问题被组织成列表,便于知识管理员进行浏览和维护。
简洁明了的答案:每个问题旁边都有相应的答案,这些答案简洁、准确,易于理解。
搜索功能:用户可以通过关键词搜索找到相关问题的答案。
更新和维护:FAQ库需要定期更新,以包含最新的信息和常见问题。
用户交互:一些FAQ库允许用户对答案进行评分,或者提供反馈,帮助改进FAQ库的质量。
如下为一个FAQ库的原型页面
2、用户问题与FAQ主问题相似度模型训练
相似度计算方式目前较为常用的是基于神经网络的文本转向量,用向量相似度代表文本相似度。
直接生成(基于LLM的方案)
此种方案,需要使用事先准备的QA数据,对LLM进行fine-tune,其缺点如下:
1.fine-tune的困难(算力需求、数据需求)
2.fine-tune带来的模型泛用性下降或消失
3.生成答案不完全可控(不正常回复 bad 误导性回复 worse)
4.不易调整(增加一条新知识、撤掉某条旧知识、某条知识答案要修改)
5.不易评价效果(所有字正确?大部分字正确?)
RAG(基于LLM的方案)
RAG的核心功能,可以理解为段落召回+阅读理解的方式,其流程如下:
在此方案中:
1、在根据用户问题进行查找,召回匹配的文本片段时,不必完全依赖向量化以及向量数据库,使用传统搜索引擎也是一种召回的可选方案。
2、随着LLM能力的增强,可以接受的prompt长度越来越长(claude-100k等),对于文本切分成段落进行存储及查找召回的要求会越来越低,后期文本内容可以完整的放到数据库中及发给大模型的输入中。
3、只要LLM的能力够强,不做fine-tune也能直接完成这个流程
缺点:
1.对基础LLM的能力要求比较高
2.受召回算法限制,如果召回时正确答案已经被舍弃,LLM无法挽回
3.生成结果不完全可控,包括回答的语气,行文方式等等。
基于知识体系(基于LLM的方案)
在这种方案中,有如下关键步骤:
1、构建如上图的知识体系,叶节点是目标答案。知识体系是人为构建的,容易进行修改。
2、当用户查询时,循环调用大模型,从顶级分支开始进行分支判断,最终确认目标叶子结点。大模型提示语格式如下:
prompt = “”“你是一个保险公司问答机器人,请根据用户输入的问题,判断该问题属于下列的哪类问题,输出类别序号:
1.个人保单业务相关问题
2.金管家操作问题
3.保险相关名词解释问题
用户问题:
{question}”“”
注:
1、类似做法可以参考 ceval 清华评测LLM能力项目 https://github.com/SJTU-LIT/ceval
2、因为大模型的响应速度较慢,在第二层级、第三层级的判断上,不一定要使用大模型。可以“大带小”提升预测效率