基于LLM的垂直领域问答方案

垂直领域问答

特点:

  1. 问答内容通常不存在于通用语料
  2. 回答内容对准确性要求较高,召回要求相对较低(可以转人工处理)
  3. 扩展性和可控性(可以根据需求,增、删、改特定问题的回答内容、或以特定形式进行回复处理、如进入剧本、非文本回复等)
  4. 需要确切的评价方式

传统的方案

方案: 通过文本匹配知识库问题,找到最终答案。

方案如图:
在这里插入图片描述
相似度计算方式: 目前较为常用的是基于神经网络的文本转向量,用向量相似度代表文本相似度。

基于LLM的方案

简介: 利用LLM的生成能力,直接生成回复。
在这里插入图片描述

前提条件: 需要使用事先准备的QA数据,对LLM进行fine-tune

缺点:
1.fine-tune的困难(算力需求、数据需求)
2.fine-tune带来的模型泛用性下降或消失
3.生成答案不完全可控(不正常回复 bad 误导性回复 worse)
4.不易调整(增加一条新知识、撤掉某条旧知识、某条知识答案要修改)
5.不易评价效果(所有字正确?大部分字正确?有时候个别字错误就会导致语义完全不同,有用的方法:BELU、Rouge)

RAG(Retrieval-Augmented Generation)

简介: 下面是常见的实现流程图,简单来说就是:段落召回+阅读理解
在这里插入图片描述
核心步骤:

  1. 知识文档切分
  2. 根据query召回相关段落context
  3. context+query组成LLM的输入

提示词如下:
prompt = “”“基于以下已知信息,简洁和专业的来回答用户的问题。 如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。
已知内容:
{context}
问题:
{question}”“”

注意: 召回部分可以根据情况做,不必完全依赖向量化;随着LLM能力的增强,可以接受的prompt长度越来越长(claude-100k等),对于段落召回的要求会越来越低,所以内容都可以放在输入里。只要LLM的能力够强,不做fine-tune也能直接完成这个流程。

缺点:

  1. 对基础LLM的能力要求比较高
  2. 受召回算法限制,如果召回时正确答案已经被舍弃,LLM无法挽回
  3. 生成结果不完全可控

基于知识体系

简介: 将知识梳理成一个树状的体系,叶节点即为原有的QA对,通过这样的体系最后定位到具体的某一个问题上,找到答案。

如图:
在这里插入图片描述
举例:

  1. 对于每一层级知识体系,设计prompt让LLM做选择题,通过正则解析答案。
    如:
    prompt = “”“你是一个保险公司问答机器人,请根据用户输入的问题,判断该问题属于下列的哪类问题,输出类别序号:
    1.个人保单业务相关问题
    2.金管家操作问题
    3.保险相关名词解释问题
    用户问题:
    {question}”“”

  2. 通过多次重复这一过程,在“知识树”上进行多次选择,找到最终对应的问题,答案并不是生成的,而是根据序号找到对应问题,再给出知识库中问题的标准回答

  3. 在后面的子节点上,分类不一定是交由大模型去进行判断,可用交由小模型进行判断,从而提高效率。

在RAG的生成答案的评价指标上,没有太好的办法,首先,不相同的句子,其结果都有可能是对的,而相同的句子,可能因为关键的某个字,是/否,就会导致意思完全不同。所以评价是比较困难的。

综合对比

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值