Chatbot + 知识库(Knowledge Base)

news2024/11/25 10:11:22

从 GPT-3 和 ChatGPT 等大型语言模型 (LLM) 的最新进展中可以看出,在技术行业引起了很大的关注。这些模型对内容生成非常强大,但它们也有一些缺点,例如偏差1 和幻象2。LLM在聊天机器人开发方面特别有用。

基于意图的聊天机器人​

传统聊天机器人通常是基于意图的,这意味着它们被设计为响应特定的用户意图。每个意图由一组样本问题和相应的响应组成。例如,“天气”意图可能包括类似“今天天气如何?”或“今天会下雨吗?”这样的样本问题,并且可能输出“今天将是晴天”的响应。当用户提出问题时,聊天机器人将其与最相似的样本问题匹配意图,并返回相应的响应。

然而,基于意图的聊天机器人也有自己的问题。其中一个问题是,它们需要大量特定的意图才能给出特定的答案。例如,用户说“我无法登录”、“我忘记了密码”或“登录错误”等话语可能需要三个不同的答案和三个不同的意图,尽管它们都非常相似。

GPT-3如何帮助​

这就是GPT-3可以发挥的特别用处。每个意图可以更广泛,利用您的知识库文档。知识库 Knowledge Base 是存储为结构化和非结构化数据的信息,可用于分析或推断。您的知识库可能由一系列文档组成,解释如何使用您的产品。

因此,每个意图与文档相关联,而不是一组问题和特定答案,例如,一个“登录问题”的意图,一个“如何订阅”的意图等等。当用户询问有关登录的问题时,我们可以将“登录问题”文档传递给 GPT-3 作为上下文信息,并为用户的问题生成特定的响应。

这种方法减少了需要处理的意图数量,并允许更好地适应每个问题的答案。此外,如果与意图关联的文档描述了不同的流程(例如“在网站上登录”的流程和“在移动应用程序上登录”的流程),GPT-3可以在给出最终答案之前自动询问用户以获得更多的上下文信息。 

为什么不能将整个知识库传递给GPT-3?​

今天,像GPT-3这样的LLM模型的最大提示的长度约为4k令牌(对于text-davinci-003模型),这很多,但不足以将整个知识库馈入单个提示中。 LLM由于计算原因具有最大提示的限制,因为使用它们生成文本涉及多个计算,随着提示大小的增加,计算量也会迅速增加。

未来的LLM可能不会有这种限制,同时保留文本生成能力。然而,就目前而言,我们需要一个设计解决方案来解决这个问题。

如何使用GPT-3构建一个聊天机器人​

聊天机器人的流程可以分为以下两个步骤:

首先,我们需要为用户的问题选择适当的意图,即我们需要从知识库中检索正确的文档。 然后,一旦我们有了正确的文档,我们就可以利用GPT-3为用户生成适当的答案。在这样做的过程中,我们需要精心制作一个良好的提示。

第一步可以使用语义搜索semantic search解决。我们可以使用sentence-transformers库中的预训练模型,轻松地为每个文档分配一个分数。分数最高的文档将用于生成聊天机器人答案。

 

使用 GPT-3 生成答案​

一旦我们有了正确的文档,我们需要创建一个好的提示,以便将其用于GPT-3生成答案。在以下实验中,我们将始终使用temperature为0.7的text-davinci-003模型。

为了制作提示,我们将尝试使用以下内容

  • 角色提示: 一种启发式技术,为AI分配特定的角色。
  • 相关的知识库信息, 即在语义搜索步骤中检索到的文档。
  • 用户和聊天机器人之间最后一次交换的消息. 这对于用户发送的未指定整个上下文的消息非常有用。我们将在后面的例子中看到它。请查看此示例 了解如何使用GPT-3管理对话。
  • 最后, 用户的问题.

 

让我们使用角色提示技术开始我们的提示。

作为一名高级聊天机器人Skippy,您的主要目标是尽力帮助用户。

然后,假设语义搜索步骤从我们的知识库中提取了以下文档。所有文档都描述了类似于Instagram的虚构产品VideoGram的工作方式,但仅用于视频。

我们可以在提示中这样添加它的内容。

作为一款名为Skippy的高级聊天机器人,您的主要目标是尽力帮助用户。

开始上下文
从网站登录到VideoGram
1. 打开您的网络浏览器并前往VideoGram网站。
2. 单击页面右上角的“登录”按钮。
3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入凭据后,单击“登录”按钮。
5. 您现在应该已经登录到您的VideoGram帐户中。

从移动应用登录到VideoGram
1. 在您的移动设备上打开VideoGram应用。
2. 在主页面上,点击位于右下角的“登录”按钮。3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入凭据后,点击“登录”按钮。
5. 您现在应该已经登录到您的VideoGram帐户中。
结束上下文

最后,我们需要将对话和用户问题添加到提示的末尾,就像以下示例中那样。

作为一款名为Skippy的高级聊天机器人,您的主要目标是尽力帮助用户。

开始上下文
从网站登录到VideoGram
1. 打开您的网络浏览器并前往VideoGram网站。
2. 单击页面右上角的“登录”按钮。
3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入凭据后,单击“登录”按钮。
5. 您现在应该已经登录到您的VideoGram帐户中。

从移动应用登录到VideoGram
1. 在您的移动设备上打开VideoGram应用。
2. 在主页面上,点击位于右下角的“登录”按钮。3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入凭据后,点击“登录”按钮。
5. 您现在应该已经登录到您的VideoGram帐户中。
结束上下文

SKIPPY:您好,我是Skippy!我能为您做些什么?
用户:我找不到登录按钮。
SKIPPY:

将此提示传递给GPT-3,我得到了以下生成的答案。

没问题! 在网站上,登录按钮位于页面右上角。 在移动应用程序上,登录按钮位于页面右下角。如果您需要进一步的帮助,请告诉我!

请注意,生成的答案中的信息来自知识库文档。

用GPT-3消歧用户问题​

我们来试试更模糊的用户输入,比如“无法登录”。这是完整的提示。

作为一个名叫Skippy的高级聊天机器人,您的主要目标是尽力帮助用户。

START CONTEXT
从网站登录到VideoGram
1. 打开您的Web浏览器,然后转到VideoGram网站。
2. 点击页面右上角的“登录”按钮。
3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入您的凭据后,单击“登录”按钮。
5. 您现在应该已经登录到VideoGram帐户。

从移动应用程序登录到VideoGram
1. 打开您的移动设备上的VideoGram应用程序。
2. 在主页面上,点击右下角的“登录”按钮。 3. 在登录页面上,输入您的VideoGram用户名和密码。
4. 输入您的凭据后,点击“登录”按钮。
5. 您现在应该已经登录到VideoGram帐户。
END CONTEXT

SKIPPY: 你好,我是Skippy!我能帮你什么忙?
USER: 无法登录
SKIPPY:

GPT-3试图更好地理解用户的问题,给出了以下回答。

很抱歉听到这个消息。您能告诉我您是在尝试通过VideoGram网站还是移动应用程序登录吗?

接下来,这是完整的对话内容。为了方便查看,这里省略了提示的其他部分。

USER: 无法登录
SKIPPY: 很抱歉听到这个消息。您能告诉我您是在尝试通过VideoGram网站还是移动应用程序登录吗?
USER: 移动应用程序
SKIPPY: 好的,没问题。要通过移动应用程序登录,请打开您的移动设备上的VideoGram应用程序。在主页面上,点击右下角的“登录”按钮。在登录页面上,输入您的VideoGram用户名和密码。输入您的凭据后,点击“登录”按钮。您现在应该已经登录到VideoGram帐户。如果您需要进一步的帮助,请告诉我。

只要有正确的上下文信息,GPT-3就可以进行消歧义。

使用GPT-3生成答案时可能出现的问题​

前面的例子都很正常运行。然而,这种聊天机器人可能会失败的几种方式。

如果我们询问“移动应用程序是否免费?”,将登录文档作为上下文传递给GPT-3,你通常会得到一个答案,比如“是的,VideoGram移动应用程序是免费下载和使用的”,即使这样的信息并没有包含在上下文信息中。生成虚假信息对于客户服务聊天机器人来说非常糟糕!

当用户问题可以在上下文中找到答案时,GPT-3很少生成虚假信息。由于用户问题通常是短小模糊的文本,我们不能总是依赖语义搜索步骤来检索正确的文档,因此我们总是容易受到虚假信息生成的影响。

结论​

GPT-3非常适用于创建对话式聊天机器人,并能够根据插入的上下文信息回答一系列具体问题。然而,仅依靠上下文信息使模型产生答案很困难,因为模型往往会产生幻象(即生成新信息,可能是错误的)。生成虚假信息是一个不同严重程度的问题,这取决于使用情况。

 

 

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

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

相关文章

Redis中的压缩列表(ZipList)

前言 压缩列表的最大特点,就是它是一种内存紧凑型的数据结构,占用一块连续的内存空间,而且还会根据数据类型的不同,选择不同的编码方式来节省内存。 压缩列表的缺点也很明显 它查询节点只能一个一个查,所以时间复杂…

用springboot创建helloworld项目

目录 一、什么是springboot 二、使用idea构建springboot (1)下载idea (2)在idea配置maven (3)利用springboot构建1个helloworld的web项目​编辑​编辑 ​编辑 (4)启动springboot…

软考A计划-电子商务设计师-电子商务系统的测试

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Zinx框架学习 - 消息队列及多任务

Zinx - V0.8 消息队列及多任务 之前zinxV0.7我们已经实现了读写分离,对应每个client,我们有3个go程,分别是reader、writer、DoMsgHandle假设服务器有10W个client请求,那么server就会有10W个reader的go、10W个writer的go程&#x…

python编程——环境搭建

作者:Insist-- 个人主页:insist--个人主页 本文专栏:python专栏 专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注。 目录 一 、安装python 1、进入官网下载python 2、打开安装…

【AI4DB】商用数据库-使用AI4DB技术并商用的数据库总结

目录 1.Amazon Redshift参考链接: 2.阿里云-DAS-Database Autonomy Service参考链接: 3.Oracle Autonomous Database参考链接: 4.阿里云-MaxCompute(原ODPS)参考文档: 5.腾讯云——DBbrain参考链接&#xf…

python 算符优先分析法的设计实现 编译原理

本文内容&#xff1a; 1、给出文法如下: G[E] E->T|ET; T->F|T*F; F->i|(E); 可以构造算符优先表如下: *()i><<><*>><><(<<<<)>>>i>>> 2、计算机中表示上述优先关系&#xff0c;优先关系的机内存放…

飞桨花滑骨骼点动作识别比赛——从 baseline 调优讲解

赛题介绍背景数据集 思路讲解backbone 模型文件结构 -- PaddleVideo 框架configs 文件夹paddlevideo 文件夹 模型介绍1. ST-GCN -- Baseline 模型整体结构GCN部分TCN部分 2. 2s-AGCN自适应图卷积双流网络 3. CTR-GCNCTR-GC 赛题介绍 背景 2021 CCF BDCI 基于飞桨实现花样滑冰…

初识JavaScript---(1)

初识JavaScript———&#xff08;1&#xff09;&#xff01;&#xff01;&#xff01; 一、初识JavaScript 1.什么是JavaScript&#xff1f; JavaScript是运行在浏览器上的脚本语言&#xff0c;简称JS。JavaScript程序不需要我们程序员手动编译&#xff0c;编写完源代码之后…

shell编程-02-变量作用域

作用域 局部变量&#xff1a;变量只能在函数内部使用 全局变量&#xff1a;变量可以在当前 Shell 进程中使用 环境变量&#xff1a;变量还可以在子进程中使用 局部变量 函数中定义的变量默认是全局变量&#xff0c;在定义时加上local命令&#xff0c;此时该变量就成了局部变…

Spring系列-10 事务机制

背景&#xff1a; 在 事务-1 事务隔离级别和Spring事务传播机制 中对事务的特性、隔离级别、Spring事务的传播机制结合案例进行了分析&#xff1b;在 事务-2 Spring与Mybatis事务实现原理 中对JDBC、Mybatis、Spring整合Mybatis实现事务的原理结合框架源码进行了介绍&#xff…

如何免费使用GPT-4模型

一、引言 OpenAI 最近发布了ChatGPT最新的 GPT-4 模型&#xff0c;这是 OpenAI 迄今为止发布的最强大的语言模型系统。它不仅有视觉能力&#xff0c;而且是多模态的&#xff0c;可以解释文本和生成图像。此外&#xff0c;它在推理测试中表现良好&#xff0c;可以支持大约26种不…

Redis的ZipList和QuickList和SkipList和RedisObject

ZipList:压缩列表&#xff0c;为了节省内存而设计的一种数据结构 ZipList是一种特殊的双端链表&#xff0c;是由一系列的特殊编码的连续内存块组成&#xff0c;不需要通过指针来进行寻址来找到各个节点&#xff0c;可以在任意一端进行压入或者是弹出操作&#xff0c;并且该操作…

RocketMQ的学习历程(5)----broker内部设计

文章目录 概要整体架构流程技术名词解释CommitLog和ConsumeQueue页缓存和内存映射刷盘机制 小结 概要 在首个学习历程中&#xff0c;我们已经了解了&#xff0c;RokctMQ简单的工作流程。 如果想要更深的理解RokcetMQ消息处理的流程&#xff0c;broker内部流程的理解是必要的&…

【挑战全站最全】Linux系统的安装与配置教程——以CentOS为例

&#x1f680;作者&#xff1a;那个叫马尔的大夫&#x1f680; ⭐专栏&#xff1a;操作系统⭐ &#x1f33c;内容&#xff1a;主要分享一些关于Linux操作系统的知识 &#x1f967;不忘初心&#xff0c;砥砺前行~ 目录 一、用到的软件环境——虚拟机软件&#xff08;必需&#…

调用函数不仅仅只是传递正确的参数类型

这里有一个新手犯下的一个典型错误。 假设&#xff0c;我们想调用这个函数&#xff0c;GetBinaryType。 void sample() { if (GetBinaryType(TEXT(“explorer.exe”), ????)) { … } } 请问&#xff0c;这里的问号处应该传递什么类型的参数&#xff1f;你可能会说&#x…

python、pyqt5实现人脸检测、性别和年龄预测

摘要&#xff1a;这篇博文介绍基于opencv&#xff1a;DNN模块自带的残差网络的人脸、性别、年龄识别系统&#xff0c;系统程序由OpenCv, PyQt5的库实现。如图系统可通过摄像头获取实时画面并识别其中的人脸表情&#xff0c;也可以通过读取图片识别&#xff0c;本文提供完整的程…

设计模式入门:策略模式

现有一套模拟鸭子游戏&#xff0c;可以一边游泳&#xff0c;一边呱呱叫。 每种鸭子都会呱呱叫和游泳&#xff0c;只是外观不同。因此&#xff0c;quack和swim放在父类中&#xff0c;display放在子类中实现。 增加新的功能&#xff1a;鸭子飞翔。 1 我们可能想到直接在父类中增…

LeetCode——最小化字符串长度

目录 一、题目 二、题目解读 三、代码 1、set去重 2、用一个二进制数记录每个字母是否出现过 一、题目 6462. 最小化字符串长度 - 力扣&#xff08;Leetcode&#xff09; 给你一个下标从 0 开始的字符串 s &#xff0c;重复执行下述操作 任意 次&#xff1a; 在字符串…

聊一聊数据库事务的那些事(隔离级别,传播行为)

我们平时使用事务的时候&#xff0c;可能脑子里面想到和事务有关的知识点无非就是&#xff0c;ACID&#xff0c;事务隔离级别那一套&#xff0c;使用的事务也就是是通过注解的形式&#xff0c;或者手动开启事务。更细致一点的问题或许没有深究下去&#xff0c;比如事务的传播行…