我们是如何测试人工智能的(八)包含大模型的企业级智能客服系统拆解与测试方法 -- 大模型 RAG

大模型的缺陷 -- 幻觉

接触过 GPT 这样的大模型产品的同学应该都知道大模型的强大之处, 很多人都应该调戏过 GPT,跟 GPT 聊很多的天。 作为一个面向大众的对话机器人,GPT 明显是鹤立鸡群,在世界范围内还没有看到有能跟 GPT 扳手腕的存在。 也许很多人都认为 GPT 是非常强大的对话机器人了, 它学时丰富,什么领域内的问题都能回答。但其实就如我上一篇帖子中说道的, 虽然这种大模型看似什么问题都能回答,但其实它无法在特定领域内给出专业且精准的回答。比如我们问大模型宝马 5 系的发动机的设计细节,这个是不可能得到正确的答案的。 甚至我们问一个大模型苹果今天的股价是多少,它也是回答不出来的。 如下图:

这是为什么呢, 看过我之前教程的同学就知道人工智能是你给它什么样的数据,它就训练出什么样的效果。 所以大模型可以根据海量的训练数据,找出数据之间的规律从而推理出用户想要的答案。 但这个答案涉及的知识范围无法脱离训练数据的基础。 也就是说大模型可以根据训练数据得出人类的语言习惯,内容组织的方式, 它知道输出什么样的内容是人类容易理解的, 但是它自己掌握的知识范围没办法超出训练数据包含的范围。 所以用户在限定的知识范围内提出的问题,大模型可以给出近乎完美的答案。但超出了这个范围它就无能为力了,如果是比较容易识别的场景会得出上面那样的回复,这样起码用户会知道大模型无法回答这个问题。 但更多的场景下可能会出现大模型的幻觉问题。

幻觉用大白话来说就是模型在瞎编一个答案。 比如我在问 GPT 一个代码问题的时候,其实会发现有些时候它会瞎编一些不存在的函数出来。为什么会出现这种问题, 这就要涉及到它的训练原理了。 我在之前的教程中说过所有监督学习基本上都逃不开二分类,多分类和回归这三种类型。 而大模型其实就可以划分为一个多分类模型。 因为实际上它的原理是有我们有一个词表,这个词表里包含了这个语言的大部分常用词,比如是中文的词表的话可能包含了绝大部分的中文字。而模型实际上在生成答案的时候就是使用用户的问题去计算生成的第一个字应该是哪个字,词表中每一个词都会计算一个概率, 比如词表中一共有 1w 个字,模型就会去计算这 1w 个字中,每个字出现在当前位置上的概率,取概率最高的那个输出。 然后模型再用问题 + 生成的第一个字 为基础又去词表中计算第二个字,以此类推。所以对于大模型本身来说它并不知道绝对的正确答案是什么,它只是在会在词表中取出概率最高的那个字。 所以用户才会感觉到大模型总是在瞎编一个答案。

说回对话机器人中的意图识别

大模型的幻觉是无法避免的,起码靠大模型自己是无法避免的, 就像上面说的, 它并不知道真实的答案, 它只是去猜一个它认为最靠谱的答案给用户。 所以说回上一篇中提到的,对话机器人一般会在最前方设定一个多分类的模型,名为意图识别模型。 它的责任就是根据用户的问题去计算出应该由哪个子系统来回答用户的问题。 这正是因为我们知道很多问题是大模型无法回答的。 它没有专业的知识(比如你问宝马 5 系的发动机要如何更换,它需要到知识引擎中检索对应文档),或者无法回答实时变动的问题(比如苹果今天的股价是多少, 它需要发送到搜索引擎中检索答案)。 所以一个看似简单的客服对话机器人,实际上是一个非常庞大的系统,它背后是非常多的子系统的模型共同弄支撑起来的。 而测试人员往往第一个就要测试这个意图识别模型,它的这个多分类效果是否达到了足够高的标准,因为这个意图识别错了, 它就会发送到错误的子系统中,那么答案也一定就是错误的。

大模型 RAG

当我们了解了大模型的局限性后,又要开始面对另一个问题。 就是通过知识引擎或者搜索引擎这些子系统检索出来的答案直接返回给用户可能也是有问题的。 比如:

  • 信息过多:我们可能从检索结果中获得大量相关信息,用户难以从中筛选出最准确、最有用的部分。
  • 信息不完整或不准确:检索结果可能只包含部分信息,或者由于搜索引擎的局限性,返回的信息可能不够准确。
  • 缺乏连贯性或者不符合人类的理解习惯:直接返回的检索结果可能是一系列独立的片段,缺乏整体的连贯性和逻辑性,这会影响用户的理解和体验。

所以业界的专家们推出了一种把检索和大模型组合在一起的解决方案,也就是大模型 RAG(检索增强生成)。一句话总结:RAG(中文为检索增强生成)= 检索技术 + LLM 提示。例如,我们向大模型提一个问题,我们先从各种数据源检索相关的信息,并将检索到的信息和问题封装成 prompt 注入到大模型中,让大模型给出最终答案。比如:

【任务描述】
假如你是一个专业的客服机器人,请参考【背景知识】做出专业的回答。
【背景知识】
{content} // 数据检索得到的相关文本
【问题】
XX品牌的扫地机器人P10的续航时间是多久?

之前我们说大模型的缺点就是缺少专业领域和实时变化类型的相关知识信息。 所以它才会出现幻觉问题。 现在我们把这些专业知识封装到了 prompt 中,这样大模型就有了这些知识背景,就可以比较完美的回答出用户想要的答案了。

所以其实我们说对话机器人是一个比较复杂的系统,它背后有多个子系统,有多种模型服务。 但它的核心流程其实就是通过意图模型决定问题应该交由哪个子系统来处理, 然后把该子系统的答案封装进 prompt 里让大模型给出最终答案。 当然这其中还有很多流程, 比如安全审核,频控,拒答黑名单等等, 我们先不过多涉及这些细节。

测试人员利用大模型 RAG 进行效果的评估

当我们了解到大模型 RAG 的原理后,其实也就猜到测试人员也是可以利用这个方法来开展一些工作的。在我以前的文章中介绍过这种大模型的评测工作是非常消耗人力的, 其中一个非常消耗人力的地方就是即便我们已经有了标注好的数据(就是问题和答案都是已知的),我们也很难去自动化的去测试。 这主要是因为比较难以去自动化的对比参考答案与实际答案之间的匹配程度,因为对话机器人每次回答的内容可能是不一样的,而且回答的内容不一样不代表回答的就错误,语言这个东西是博大精深的(尤其是汉语),不同的描述表达同一个意思是比较常见的,比如我的名字叫孙高飞 和 孙高飞是我的名字 其实表达的是差不多的意思。 所以不能简单的用字符串匹配来验证回答的正确性。 常见的思路可能是引入文本相似度算法,比如把两个文本向量化后计算余弦相似度。 这样一定程度上可以从语义的角度来分析两个文本的相似程度。 就是开源的这种语义相似度的算法效果确实需要在项目中去实践验证。 第二种思路就是一些测试人员习惯让 GPT 来完成这个工作, 我们可以把相关的问题,参考答案以及模型给出的答案封装成 prompt,让 gpt 来评判回答质量,比如:

会选择让 GPT 来参与评分除了要解决自动化的问题外,也是要解决主观问题, 其实 NLP(自然语言处理)领域内的场景都很难避开这个问题。同样一段文本,每个人对它的感受是不一样的。 我在以前讲过要评估主观问题,人工的方法一般是需要 3 人仲裁制或者多人平均分制(以前的文章中有介绍)。 如果没有人力来完成这样的评估,那么把 GPT 引入进来让它来打个分也是一个不错的选择。

其实很多时候在交给 GPT 打分的时候也是不带参考答案的,因为标注数据高昂的成本代价会让很多小团队无法承担,所以就在不带参考答案的前提下让 GPT 打分。 当然这种方法在专业知识领域内,它的打分结果就是比较糟糕的。 但一些闲聊对话类和通用知识场景中,GPT 的答案还是有一定的可信度的。 所以在测试中我们也可以选择在这些场景中不带参考答案,而在专业知识领域内把参考答案作为背景交给 GPT。

当然这里要澄清的是,使用这种方式来参与评估是一种在人力不足以支撑人工评估下的权宜之计, 如果要评价评估模型的准确性, 还是人工最为准确的。 GPT 毕竟还是有很多不可控的因素存在。

最后欢迎加入我的星球, 最近在更新手把手教你从0开始学习AI测试系列。 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

五款会让你爱不离手的编程工具,用了都说好,加班变得少。

作为一名“CV工程师” 勤勤恳恳地复制粘贴 没想到AI来了之后 连搬运都不用了! 融入了AI代码生成能力的工具 真的能代替程序员的位置吗? 看完这5个AI工具 咱们再来说结论吧! aiXcoder 在平时写代码的过程中,经常需要通过上…

flutter3_douyin:基于flutter3+dart3短视频直播实例|Flutter3.x仿抖音

flutter3-dylive 跨平台仿抖音短视频直播app实战项目。 全新原创基于flutter3.19.2dart3.3.0getx等技术开发仿抖音app实战项目。实现了类似抖音整屏丝滑式上下滑动视频、左右滑动切换页面模块,直播间进场/礼物动效,聊天等模块。 运用技术 编辑器&#x…

吴恩达2022机器学习专项课程(一) 4.2 梯度下降实践

问题预览/关键词 本节内容梯度下降更新w的公式梯度下降更新b的公式的含义α的含义为什么要控制梯度下降的幅度?导数项的含义为什么要控制梯度下降的方向?梯度下降何时结束?梯度下降算法收敛的含义正确更新梯度下降的顺序错误更新梯度下降的顺…

网络编程之流式套接字

流式套接字(SOCK_STREAM)是一种网络编程接口,它提供了一种面向连接的、可靠的、无差错和无重复的数据传输服务。这种服务保证了数据按照发送的顺序被接收,使得数据传输具有高度的稳定性和正确性。通常用于那些对数据的顺序和完整性…

【vue3学习笔记(一)】vue3简介;使用vue-cli创建工程;使用vite创建工程;分析工程结构;安装开发者工具

尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通 对应课程136-140节 课程 P136节 《vue3简介》笔记 课程 P137节 《使用vue-cli创建工程》笔记 官方文档: https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create官方文档地址 查看vue-cli版本&#x…

不要盲目开抖店,这才是开店的正确流程,2024全新版教程

我是王路飞。 抖音小店和视频号小店,我更建议没有经验的新手去做抖音小店。 虽然现在抖音小店不属于是一个蓝海项目了,但它依旧是我们普通人借助抖音流量变现非常重要的一个渠道,甚至没有之一。 至于视频号小店,可以说是当下最…

【JSON2WEB】11 基于 Amis 角色功能权限设置页面

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…

油缸位置传感器871D-DW2NP524-N4

概述 油缸位置传感器是一种使用电感原理来检测物体接近的开关装置。它通过感应物体的电磁场来判断物体的位置,并将信号转化为电信号输出。当物体靠近或远离电感式接近开关时,物体的电磁场会改变,从而使接近开关产生不同的信号输出。电感式接…

Chrome 插件 tabs API 解析

Chrome.tabs API 解析 使用 chrome.tabs API 与浏览器的标签页系统进行交互,可以使用此 API 在浏览器中创建、修改和重新排列标签页 Tabs API 不仅提供操作和管理标签页的功能,还可以检测标签页的语言、截取屏幕截图,以及与标签页的内容脚本…

MySQL面试汇总(一)

MySQL 如何定位慢查询 如何优化慢查询 索引及其底层实现 索引是一个数据结构,可以帮助MySQL高效获取数据。 聚簇索引和非聚簇索引 覆盖索引 索引创建原则 联合索引

6. 学习方法和Java概述

文章目录 1)学习方法2)Java是什么? 1)学习方法 作为一个0基础入门的同学,在刚开始学习的时候,我们不要追求知识点的深度,而是要追求知识点的广度。简单来说,学一个知识点不要想的太…

TCP和UDP分别是什么?TCP和UDP的区别

在计算机网络通信中,TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种重要的传输层协议,它们在数据传输过程中发挥着关键作用。本文将深入探讨TCP和UDP的定义、特点以及它们之间的区…

【Qt】QDialog对话框

目录 一、概念 二、对话框的分类 2.1 模态对话框 2.2 非模态对话框 2.3 混合属性对话框 三、消息对话框QMessageBox 四、颜色对话框QColorDialog 五、文件对话框QFileDialog 六、字体对话框QFontDialog 七、输入对话框QInputDialog 一、概念 对话框是GUI程序中不可或…

MrDoc寻思文档 个人wiki搭建

通过Docker快速搭建个人wiki,开源wiki系统用于知识沉淀,教学管理,技术学习 部署步骤 ## 拉取 MrDoc 代码 ### 开源版: git clone https://gitee.com/zmister/MrDoc.git### 专业版: git clone https://{用户名}:{密码…

「媒体宣传」如何针对不同行业制定媒体邀约方案

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 针对不同行业制定媒体邀约方案时,需要考虑行业特点、目标受众、媒体偏好以及市场趋势等因素。 一、懂行业 先弄清楚你的行业是啥样,有啥特别之处。 了解行业的热…

PPT没保存怎么恢复?3个方法(更新版)!

“我刚做完一个PPT,正准备保存的时候电脑没电自动关机了,打开电脑后才发现我的PPT没保存。这可怎么办?还有机会恢复吗?” 在日常办公和学习中,PowerPoint是制作演示文稿的重要工具。我们会在各种场景下使用它。但有时候…

鸿蒙OS开发实例:【工具类封装-页面路由】

import common from ohos.app.ability.common; import router from ohos.router 封装app内的页面之间跳转、app与app之间的跳转工具类 【使用要求】 DevEco Studio 3.1.1 Release api 9 【使用示例】 import MyRouterUtil from ../common/utils/MyRouterUtil MyRouterUtil…

【jmeter+ant+jenkins】之搭建 接口自动化测试平台

平台搭建 (1). 录制jmeter脚本 (2). 将jmeter的安装目录下的G:\jmeter\apache-jmeter-5.1.1\extras中,将 ”ant-jmeter-1.1.1.jar”文件放到 ant的lib目录下 (3). 配置jmeter的xml配置文件,并放在ant目录的bin目录下,使用ant编译验证jmeter的…

[linux初阶][vim-gcc-gdb] OneCharter: vim编辑器

一.vim编辑器基础 目录 一.vim编辑器基础 ①.vim的语法 ②vim的三种模式 ③三种模式的基本切换 ④各个模式下的一些操作 二.配置vim环境 ①手动配置(不推荐) ②自动配置(推荐) vim是vi的升级版,包含了更加丰富的功能. ①.vim的语法 vim [文件名] ②vim的三种模式 命令…

QT 二维坐标系显示坐标点及点与点的连线-通过定时器自动添加随机数据点

QT 二维坐标系显示坐标点及点与点的连线-通过定时器自动添加随机数据点 功能介绍头文件C文件运行过程 功能介绍 上面的代码实现了一个简单的 Qt 应用程序,其功能包括: 创建一个 MainWindow 类,继承自 QMainWindow,作为应用程序的…