当前位置: 首页 > ds >正文

【NLP 64、基于LLM的垂直领域【特定领域】问答方案】

找不到生活的答案,就先找自己

                                                —— 25.4.17

一、垂直领域问答

1.特点

        ① 问答内容通常不存在于通用语料

        ② 回答内容对准确性要求较高,召回要求较低(可以转人工处理)

        ③ 拓展性和可控性(可以根据需求,增、删、改特定问题的回答内容、或以特定形式进行回复处理,如进入剧本、非文本回复等)

        ④ 需要确切的评价方式


2.传统方法

        知识库 + 文本匹配

        相似度计算方式目前较为常用的是基于神经网络的文本转向量,用向量相似度代表文本相似度


3.基于LLM的方案

Ⅰ、直接生成

        利用LLM的生成能力,直接生成回复

        需要使用事先准备的QA数据,对LLM进行fine-tune(微调)

缺点:

        ① fine-tune自身的困难(算力需求、数据需求)

        ② fine-tune带来的模型泛用性下降或消失

        ③ 生成答案不完全可控(不正常回复 bad  误导性回复 worse)

        ④ 不易调整增加一条新知识、撤掉某条旧知识、某条知识答案要修改

        ⑤ 不易评价效果(所有字正确?大部分字正确?)


Ⅱ、段落召回 + 阅读理解(RAG)

核心步骤:

        ① 知识文档切分

        ② 根据query召回相关段落context

        ③ context + query组成LLM的输入

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

特点:

        ① 召回部分可以根据情况做,不必完全依赖向量化

        ② 随着LLM能力的增强,可以接受的prompt长度越来越长(claude-100k等),对于段落召回的要求会越来越低,所以内容都可以放在输入里

        ③ 只要LLM的能力够强,不做fine-tune也能直接完成这个流程

缺点:

        ① 对基础LLM的能力要求比较高

        ② 受召回算法限制,如果召回时正确答案已经被舍弃,LLM无法挽回

        ③ 生成结果不完全可控


Ⅲ、基于知识体系

        建立一套知识体系

        叶节点是原有的QA对

        对于每一层级知识体系,设计prompt让LLM做选择题

例: 

        prompt = """你是一个保险公司问答机器人,请根据用户输入的问题,判断该问题属于下列的哪类问题,输出类别序号: 1.个人保单业务相关问题 2.金管家操作问题 3.保险相关名词解释问题;用户问题: {question}""" 

        * 这个prompt有很大优化空间

        通过多次重复这一过程,在“知识树”上进行多次选择,找到最终对应的问题

        答案并不是生成的而是根据序号(层层筛选)找到对应问题,再给出知识库中问题的标准回答


Ⅳ、类似做法参考

        本质上就是通过与prompt的设计,让LLM做选择题(分类问题)

        不做fine-tune

        通过正则解析LLM输出的答案

        在第二层级、第三层级的判断上,不一定要使用大模型

        可以“大带小”提升预测效率 


二、综合对比

http://www.xdnf.cn/news/54.html

相关文章:

  • kotlin + spirngboot3 + spring security6 配置登录与JWT
  • 【安卓开发】【Android Studio】Menu(菜单栏)的使用及常见问题
  • 【HDFS入门】HDFS与Hadoop生态的深度集成:与YARN、MapReduce和Hive的协同工作原理
  • 观察者设计模式详解:解耦通知机制的利器
  • 16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天
  • Flutter 常用命令
  • Qt GUI 库总结
  • gitee新的仓库,Vscode创建新的分支详细步骤
  • Python 实现日志备份守护进程
  • MCP理解笔记及deepseek使用MCP案例介绍
  • 每日算法-链表(23.合并k个升序链表、25.k个一组翻转链表)
  • Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
  • pycharm无法识别到本地python的conda环境解决方法
  • 【远程管理绿联NAS】家庭云存储无公网IP解决方案:绿联NAS安装内网穿透
  • 数字孪生城市技术应用典型实践案例汇编(22个典型案例)(附下载)
  • 20.3 使用技巧3
  • Openfein实现远程调用的方法(实操)
  • 【音视频开发】第五章 FFmpeg基础
  • 最新Spring Security实战教程(十一)CSRF攻防实战 - 从原理到防护的最佳实践
  • 逻辑回归 (Logistic Regression)
  • 山东大学软件学院创新项目实训开发日志(18)之对话自动生成标题设为用户第一次对话发的文字
  • 第五章 SQLite数据库:3、SQLite 常用语法及使用案例
  • requestAnimationFrame 深度理解
  • AI在多Agent协同领域的核心概念、技术方法、应用场景及挑战 的详细解析
  • 【OSCP-vulnhub】GoldenEye
  • 【秣厉科技】LabVIEW工具包——OpenCV 教程(20):拾遗 - imgproc 基础操作(下)
  • Linux 防火墙( iptables )
  • 大数据调度组件
  • 10.(vue3.x+vite)div实现tooltip功能(css实现)
  • 华为仓颉编程语言深度解析