大模型系列|基于大模型的聊天助手案例(三)

news2025/1/18 0:45:31

大模型系列|垂直大模型的几种训练策略(一)
大模型系列|基于大模型复杂数据系统架构(二)
本篇主要是采集一些大模型在聊天机器人中的案例,因为目前很多企业都会考虑将LLM与业务结合,LLM超强的理解力非常适合聊天场景。


文章目录

  • 1 PingCAP企业专属知识库的智能客服机器人
    • 1.1 向量数据库补充专业知识
    • 1.2 毒性检验
      • 1.2.1 毒性回答的预训练
      • 1.2.2 越狱(Jailbreaking)Prompt
    • 1.3 意图理解
    • 1.4 持续运营 > 模型微调


1 PingCAP企业专属知识库的智能客服机器人

用 LLM 构建企业专属的用户助手本篇用心地把之前踩的坑都梳理了一下,并且一些坑也清晰表述

期望LLM实现的需求:

  • 采取多轮对话形式,理解用户的提问,并给出回答。(LLM可以完美实现
  • 在回答的内容中,关于 TiDB、TiDB Cloud 的知识点要求准确无误。(向量数据库满足)
  • 不能回答与 TiDB、TiDB Cloud 无关的内容。(毒性检验

实践中遇到的问题:

  • 不准确的不良(毒性)内容识别:一些与公司业务相关的问题被模型误判并拒绝回答。例如,“dumpling” 实际上是 TiDB 的一个数据导出工具,但当用户直接提问 “ dumpling 是什么?”时,模型却误以为是关于食物的问题,拒绝回答并建议用户去咨询食物专家。
  • 上下文理解失误:在执行多轮对话时,用户常会对之前的对话内容进行追问,此时他们通常只会简洁地描述,如:“这个参数的默认值是多少?”但是,当我们在向量数据库中使用用户的原始问题进行语义相关内容的搜索时,往往无法得到有意义的答案。这样一来,即使将问题输入到 LLM,也无法根据官方文档给出正确的答案。
  • 语义搜索结果不精确:有时候,用户的问题非常明确,但是由于向量数据库搜索出的内容排序有误,导致在排名前N的答案中无法找到能正确回答问题的文档内容。
  • 文档信息不足或过时:有些情况下,尽管用户的问题表述得很清楚,但由于官方文档不够完整或过时,没有包含相关内容,导致 LLM 在回答时只能凭借猜测,因此,很多时候其给出的答案是错误的。

1.1 向量数据库补充专业知识

在用户发起一次对话时,系统会将用户的对话也输入到 Embedding 模型中生成向量,再将这个向量放到向量数据库中和原有的预料进行查询。

遇到的问题:用户的提问很清楚,但是向量数据库搜索出的 Top N 中无法看到对应的文档内容。
想要稳定地提升语义搜索的产出质量,其实有两个直接、有效、快速实现的方法:

  • 一、直接调整领域内容和提问之间的向量距离。
  • 二、在召回领域知识的内容之外,额外召回特定内容的示例。

解决:主要运用的是示例+训练 Embedding 模型的方法。

  • 第一步,先用类似 毒性检测的漏网之鱼 的方法,额外针对易错点补充示例,并将这些示例也随系统提示词一同提供给 LLM 模型,提高准确率。
  • 第二步,在示例积累到一定数量,将示例内容作为训练数据,去训练 Embedding 模型,让 Embedding 模型能更好地理解提问和领域知识之间的相似关系,产出更合适的向量数据结果。

1.2 毒性检验

1.2.1 毒性回答的预训练

LLM 会努力让其回答符合人类的价值观,这一工作在模型训练中叫做“对齐”(Align),让 LLM 拒绝回答仇恨、暴力相关的问题。如果 LLM 未按照设定回答了仇恨、暴力相关问题,我们就称之为检测出了毒性(Toxicity)。
对于我们即将创造的机器人,其毒性的范围实际上增加了,即,所有回答了非公司业务的内容都可以称之为存在毒性。

需要使用 Few-Shot 的方法去构建毒性检测的提示词,让 LLM 在拥有多个示例的情况下,判断用户的提问是否符合企业服务的范围。

<< EXAMPLES >>  
instruction: who is Lady Gaga? 
question: is the instruction out of scope (not related with TiDB)? 
answer: YES  

instruction: how to deploy a TiDB cluster? 
question: is the instruction out of scope (not related with TiDB)? 
answer: NO  

instruction: how to use TiDB Cloud? 
question: is the instruction out of scope (not related with TiDB)? 
answer: NO

得到了是否有毒的结果后,我们将有毒和无毒的流程分别处理,进行异常流程和正常流程的处理。
在这里插入图片描述
当系统发现产出的内容是 “Yes” 时,将流程引导进入毒性内容回复环节。此时,会将一个拒绝回答用户问题的系统提示词和用户对应的问题提交给 LLM,最终用户会得到一个拒绝回答的回复。

此时训练的数据是官方文档,
但是把所有的官方文档都一次性塞入 LLM 中是不现实的,因此我们设计了从向量数据库中按照语义相似度来搜索出相关的文档。

1.2.2 越狱(Jailbreaking)Prompt

用户在提问时可以输入 ‘Jailbreaking’ 的语句
这个现象可能由以下三个原因引起:

  • 用户的输入很长,比 System Prompt 长很多:一般 Jailbreaking 的语句都很长,远长于绝大部分的 System Prompt,因此模型可能会更倾向于关注更具体的用户请求,而忽略较为模糊的系统提示。
  • 模型的决策权重:GPT-3.5 及其他神经网络语言模型在生成回复时会根据输入文本的权重进行决策。如果 Jailbreaking 部分包含的信息比系统提示更具相关性,模型可能会更关注用户请求的内容。
  • 用户请求的位置:在进行对话式交互时,用户请求通常是在系统提示之后提供的。由于模型是逐词生成回复的,用户请求的信息在输入中出现得更晚,因此可能更影响最终的回复内容。
    因此,仅在 System Prompt 中进行限制是不行的,依然会被人 Jailbreaking,这在 LLM 应用到商业产品中是一个极高风险的事情。

而我们采用的判断链避免了这一情况,仅根据上一个 LLM 输出的 Yes 或 No 来知道后续的输出。如果用户尝试 Jailbreaking,那么在进行判断的 LLM 中就会出现非定义的回答,系统可以设定在出现非定义内容时,委婉的拒绝用户的提问。

1.3 意图理解

让 LLM 在系统进行领域知识搜索前对用户的原始提问进行改写,尽可能地用一句话描述清楚用户的意图,这种操作被称为“修订问题”(revise question)。

理解流程:

  • 为了保证整个机器人系统中面对的用户问题保持一致,避免因为问题不一致导致的错误,我们将修订问题特性放在了系统信息流的最前面,让用户问题刚刚进入机器人就进行修订。
  • 修订时,机器人会要求 LLM 模型根据整体对话的上下文来用一句话描述用户提问的意图,尽可能补充详细信息。这样无论是在毒性检测还是在领域知识搜索中,系统都可以根据更具体的意图来执行。

如果在修订问题中发现了明显的错误怎么办?

事实上也可以利用 few shot + 语义搜索 的办法,特定的优化这些错误。

为了保证整个机器人系统中面对的用户问题保持一致,避免因为问题不一致导致的错误,我们将修订问题步骤放在了系统信息流的最前面,让用户的问题在进入机器人时就进行修订。

在修订问题的过程中,我们会要求 LLM 模型根据整体对话的上下文来用一句话描述用户提问的意图,尽可能补充详细信息。这样无论是在毒性检测还是在领域知识搜索中,系统都可以根据更具体的意图来执行。

如果在修订问题中发现了明显的错误,我们也可以利用 Few-Shot 和语义搜索的方法来优化这些错误。

1.4 持续运营 > 模型微调

“模型微调”指的是直接使用微调(fine-tuning)的方法使用更多的领域数据来训练模型,包括 Embedding 模型和 LLM 模型。
“持续运营”是指类似本文的做法,利用更多高质量的领域知识和示例,以及尝试与 LLM 进行多次交互,正向提升应用的准确性的做法。

在 TiDB Bot 的前期,我们更倾向于持续运营的方法,利用系统的方法来进行稳定、便宜、快速的正向优化,确保整个团队专注在业务问题上。也许在 TiDB Bot 发展到中后期时,可以考虑模型微调的方法来进行更多的优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/896308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LSTM网络模型:从基础到应用播

目录 介绍 LSTM的基础结构 LSTM的训练方法 LSTM的应用场景 总结 LSTM&#xff08;Long Short-Term Memory&#xff09;网络模型是一种递归神经网络&#xff0c;被广泛应用于自然语言处理、语音识别、图像处理等领域。本文将从LSTM的基础结构、训练方法、应用场景等方面进行…

LD_RPELOAD环境变量

目录 LD_RPELOAD环境变量 LD_RPELOAD 定义 程序的连接方式 Linux规定动态链接库的文件名规则如下 动态链接库的搜索路径搜索的先后顺序 LD_RPELOAD的劫持 demo 1.定义一个hook.c文件 2.将所写的hook.c 文件编译为动态链接库hook.so 3.劫持检测&#xff0c;查看LD_PREL…

于vue3+vite+element pro + pnpm开源项目

河码桌面是一个基于vue3viteelement pro pnpm 创建的monorepo项目&#xff0c;项目采用的是类操作系统的web界面&#xff0c;操作起来简单又方便&#xff0c;符合用户习惯&#xff0c;又没有操作系统的复杂&#xff01; 有两个两个分支&#xff0c;一个是web版本&#xff0c;…

DDD诊所——聚合过大综合症

“DDD诊所”是Thoughtworks DDD社区的一项活动&#xff0c;通过对同事们在实施DDD过程中遇到的问题进行分析和解答&#xff0c;共同提高开发水平。我们将其中一些典型案例整理成文供大家参考。之后也会考虑在适当的时候将这一形式对外部开放。 就诊日期&#xff1a;2022年6月8…

基于SpringBoot的在线视频教育平台的设计与实现【附ppt|开题|万字文档(LW)和搭建文档】

主要功能 前台界面&#xff1a; ①首页、课程信息推荐、课程信息展示、查看更多等 ②课程信息类型、课程名称、关键词、教师姓名等 ③添加购物车、立即购买、评论、点我收藏、视频播放等 ④个人中心、我的订单、我的地址、我的收藏、客服等 后台登录&#xff1a; ①首页、个人…

BERT、ERNIE、Grover、XLNet、GPT、MASS、UniLM、ELECTRA、RoBERTa、T5、C4

BERT、ERNIE、Grover、XLNet、GPT、MASS、UniLM、ELECTRA、RoBERTa、T5、C4 ELMOBERTERNIE![在这里插入图片描述](https://img-blog.csdnimg.cn/274e31d0f8274c748d05abe2ec65fc73.png)GroverXLNetGPTMASSUniLMELECTRARoBERTaT5C4ELMO BERT

小航助学GESP_C++一级模拟测试卷第3套(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSD…

Spring中的IOC与DI-细胞内物质与传递

对IOC的认识 Spring Inversion of Control简称Spring IOC&#xff0c;是一种设计原则&#xff0c;通过它可以实现对象之间的解耦。通过Spring DI(Dependency Injection)依赖注入实现对象生命周期管理&#xff0c;为开发者提供对象创建、使用方式。 Spring中的Bean 在Spring框…

Ubuntu安装最新版neovim

Ubuntu安装最新版neovim 一、前言 对于neovim版本很重要&#xff0c;有很多插件几乎都要要求neovim版本在0.8或者0.9。但是有一个很严重的问题就是&#xff0c;Ubuntu使用sudo apt install neovim的版本很低达不到要求&#xff08;写文章时是0.7&#xff09; 二、解决方法 …

类的加载过程和反射以及注解

类的加载过程 三个阶段&#xff1a;加载-链接-初始化&#xff0c; 类的初始化只会执行1次。 加载 把字节码文件以流的形式加载到jvm中 链接 验证&#xff1a;验证字节码的合法性等以保证jvm的安全准备&#xff1a;为静态变量赋予初始值&#xff0c;为静态常量赋予有效值。…

【FusionInsight 问题】FusionInsight HD 6.5.1 集群中遇到的问题(01)

FusionInsight HD 6.5.1 集群中遇到的问题&#xff08;01&#xff09; FusionInsight HD 6.5.1 集群中遇到的问题&#xff08;01&#xff09;Spark-on-HBase认证问题Failed to find any Kerberos tgt服务端配置修改客户端配置修改 Spark-on-HBase依赖包问题phoenix-core-4.13.1…

2023年CRM系统排行榜

很多企业想要选择一款CRM系统来进行管理&#xff0c;提高效率。那么&#xff0c;2023年国内有哪些优秀的CRM系统呢&#xff1f;这里有一份2023最新国内crm系统排名&#xff0c;希望可以帮助到正在选型的您。 1、Zoho CRM Zoho CRM是一款知名的SaaS云端CRM系统&#xff0c;拥有…

使用 OpenTelemetry 构建可观测性 02 - 埋点

这是讲解 OpenTelemetry 系列博客的第二篇。在上一篇博客中&#xff0c;我们介绍了 OpenTelemetry 是什么以及由什么组成。现在我们将讨论如何使用 OTel 准确收集遥测数据和链路追踪数据。 手动埋点 我们这里谈论“埋点”(代码插桩)&#xff0c;是指通过技术手段采集链路追踪…

网络协议详解之BGP

目录 BGP&#xff08;边界网关路由协议&#xff09; 一、基础知识囊括&#xff1a; 1.1 IGP协议追求&#xff1a; 1.2 EGP协议的追求&#xff1a; 二、BGP特点&#xff1a; 2.1 BGP数据包 2.2 BGP的工作过程 2.3 结构突变** 2.4 名词解析 2.5 BGP的路由黑洞问题 2.6 …

Plecs电力电子仿真专业教程-第一季 第四节 C语言脚本模块介绍

Plecs电力电子仿真专业教程-第一季 目录 第一章 Plecs是什么 第二节 Plecs 的功能介绍 第三节 Plecs界面介绍 补充课程 Plecs的安装教程与软件下载 第四节 Plecs C语言脚本模块介绍 鉴于很多学习的小伙伴私信我要安装软件&#xff0c;特此添加如下链接&#xff1a; Plecs4.6…

我记不住的Linux那些时间及区别

背景&#xff1a;总是搞不明白Linux系统中这些相关的时间及区别&#xff0c;通过查看网上的资料发现很多都是人云亦云&#xff0c;没有任何新意&#xff0c;所以这里根据自己的试验及资料&#xff0c;再次总结一下&#xff0c;在这里记录一下。 一、介绍 标准的POSIX文件有三…

spring如何进行依赖注入,通过set方法把Dao注入到serves

1、选择Generate右键鼠标 你在service层后面方法的这些: 2、UserService配置文件的写法是怎样的&#xff1a; 3、我们在UserController中执行一下具体写法&#xff1a; 最后我们执行一下 &#xff1a; 4、这里可能出现空指针&#xff0c;因为你当前web层,因为你new这个对象根…

计算机竞赛 医学大数据分析 - 心血管疾病分析

文章目录 1 前言1 课题背景2 数据处理3 数据可视化4 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据的心血管疾病分析 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9…

神经网络为什么可以学习

本资料转载于B站up主&#xff1a;大模型成长之路,仅用于学习和讨论&#xff0c;如有侵权请联系 动画解析神经网络为什么可以学习_哔哩哔哩_bilibilis 1、一个神经网络是由很多神经元形成的 1.1 也可以是一层&#xff0c;也可以是多层 2 层和层之间的连接就跟一张网一样 2.1 每…