忘记 RAG:拥抱Agent设计,让 ChatGPT 更智能更贴近实际

news2024/11/18 13:55:12

RAG(检索增强生成)设计模式通常用于开发特定数据领域的基于实际情况的ChatGPT。

然而,重点主要是改进检索工具的效率,如嵌入式搜索、混合搜索和微调嵌入,而不是智能搜索。

这篇文章介绍了一种新的方法,灵感来自人类研究方法,涉及多种搜索技术,观察中间结果,不断完善和重试,然后才提供回应。

通过利用智能代理设计,本文提出构建一个更智能、更扎实的ChatGPT,超越传统RAG模型的局限性。

RAG模式和限制

标准RAG模式实施概述:

  • 该过程始于用户的问题或对话的查询创建,通常是通过提示的语言模型(LLM)完成的。这通常被称为查询重述步骤。
  • 然后将此查询发送到搜索引擎,搜索引擎返回相关的知识(检索)。
  • 然后,检索到的信息会通过包含用户问题的提示进行增强,并转发到LLM(增强)。
  • 最后,LLM 对用户的查询做出了回应(生成)。

 RAG的限制

  • 在RAG模式中,检索、增强和生成由单独的流程管理。每个流程可能由具有不同提示的LLM来促进。

    然而,与用户直接交互的第1001代通常最清楚如何回答用户的问题。

    检索LLM可能不会像生成LLM那样解释用户意图,从而提供不必要的信息,可能会妨碍其做出回应的能力。
  • 检索是针对每个问题执行一次,没有来自生成LLM的任何反馈循环。

    如果检索结果不相关,可能是由于搜索查询或搜索词不佳等因素,生成LLM缺乏纠正的机制,可能会诉诸捏造答案。
  • 提供的检索上下文一经确定即不可更改,也无法扩展。

    例如,如果研究结果表明需要进一步调查,比如检索到一个提及需要进一步检索的文件,这方面没有规定。
  • RAG模式不支持多步骤研究。

智能代理模型

智能代理模型从人类研究方法中汲取灵感,当回答一个没有即时知识的问题时。在这个过程中,可能会进行一次或多次搜索,以收集有用的信息,然后提供最终答案。

每次搜索的结果都可以决定是否需要进一步调查,如果需要,还可以确定接下来搜索的方向。

这个迭代过程会持续进行,直到我们认为我们已经积累了足够的知识来回答,或者得出我们无法找到足够信息来回应的结论。

有时,研究结果可能会进一步澄清用户意图和查询范围。

为了复制这种方法,建议开发一个由语言模型(LLM)驱动的智能代理,用于与用户进行对话。

代理自主确定何时需要使用外部工具进行研究,制定一个或多个搜索查询,进行研究,审查结果,并决定是否继续进一步研究或向用户寻求澄清。

直到代理认为自己已经准备好向用户提供答案,这个过程才会持续进行。

 实施

使用Azure OpenAI的函数调用功能,实现一个能够自主使用搜索工具定位所需信息以协助用户请求的代理变得更加简单。

这一特性单独简化了RAG模式的传统实现,其中查询的改写、扩展和生成是分开处理的,如前所述。

代理人利用系统定义的角色和目标与用户互动,同时意识到可用的搜索工具。

当代理需要查找它所不具备的知识时,它会制定一个搜索查询,并向搜索引擎发出信号,以检索所需的答案。

这个过程不仅让人想起人类的行为,而且比RAG模式更高效,RAG模式中知识检索是一个单独的过程,无论是否需要,都会向聊天机器人提供信息。

实施这一能力:

  1. 定义人物角色、预期行为以及要使用的工具,何时使用它。

用 JSON 格式定义函数规范,包括函数和参数描述。

有趣的是,“用于搜索知识库的搜索查询”参数描述起着至关重要的作用。它指导LLMs根据对话中用户所需的帮助来制定合适的搜索查询。

此外,搜索查询参数可以描述并限制为遵循特定的工具格式,比如Lucene查询格式。还可以添加额外的参数用于诸如过滤等任务。

实现函数调用流程

在这个时刻,我们已经开发出一个能够进行独立搜索的智能代理。

然而,要真正创建一个能够执行更复杂的研究任务,如多步骤和自适应执行的智能代理,我们需要实现一些额外的能力。幸运的是,这个实施过程可以很简单直接。

创建智能研究代理的增强功能

在系统消息中添加代理计划、行动、观察和调整的能力

附加的指示表示,如果需要,机器人应该重试并更改问题。此外,它表示机器人应该审查搜索结果以指导下一次搜索,并在必要时采用多步骤方法。

这假设了搜索工具可以被多次调用。

由于LLM无法自行重复此过程,我们需要使用应用程序逻辑来管理。我们可以通过将整个过程放入循环中来实现这一点。当模型准备好给出最终答案时,循环退出:

这是智能代理在演示场景中的表现:

问题是比较两种产品之间的一个特性。每种产品的特性都存储在单独的文档中。为了做到这一点,我们的代理人执行两个搜索查询:

  • X100与Z200无线电0的功率配置文件
  • 无线电0的X100功率配置文件

第一个查询是一种贪婪的方法,因为代理希望有一个包含比较的文档。事实并非如此,因为搜索查询没有返回关于X100的足够信息,所以它添加了专门针对X100的第二个查询。

如果这个问题交给经典的RAG解决方案,它将无法找到一个好的答案,因为它会在第一个查询处停止。

 结束

实施代理模型可以大大增强基于ChatGPT的解决方案。这是因为该模型具有智能能力,可以测试各种策略,并根据观察到的结果改进其方法。

 参考文献

  • 这篇文章的完整代码实现可以在这里找到
  • 知识密集型自然语言处理任务的检索增强生成 arXiv:2005.11401 [cs.CL]
  • OpenAI的功能调用:Function calling — OpenAI API

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

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

相关文章

Windows11安装运行Linux(Ubuntu)

一、安装windows支持 输入windows打开界面 选择虚拟机监控程序平台、适用于linux的子系统、虚拟机平台 在 Windows 系统中,"虚拟机平台"和"虚拟机监控程序平台"是两个与虚拟化相关的功能,但它们各自有着不同的作用和用途。 虚拟机…

如何使用VSCode上运行Jupyter,详细案例过程出可视化图

Python作为最受AI喜欢的语言之一,我们与大家共同学习下如何在VS Code上运行Jupyter,并且用简单案例实现出图。 环境 VS Code version: 1.80.1 Python: 3.12.0 小白安装过程: 在准备好基础环境,小白心想,AI可是霸占科…

42、WEB攻防——通用漏洞文件包含LFIRFI伪协议编码算法代码审计

文章目录 文件包含文件包含原理攻击思路文件包含分类 sessionPHP伪协议进行文件包含 文件包含 文件包含原理 文件包含其实就是引用&#xff0c;相当于C语言中的include <stdio.h>。文件包含漏洞常出现于php脚本中&#xff0c;当include($file)中的$file变量用户可控&am…

University Program VWF仿真步骤__全加器

本教程将以全加器为例&#xff0c;选择DE2-115开发板的Cyclone IV EP4CE115F29C7 FPGA&#xff0c;使用Quartus Lite v18.1&#xff0c;循序渐进的介绍如何创建Quartus工程&#xff0c;并使用Quartus Prime软件的University Program VWF工具创建波形文件&#xff0c;对全加器的…

【MATLAB源码-第134期】基于matlab的SAR合成孔径雷达成像仿真,对比CS,RD,RMA三种算法成像效果。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 合成孔径雷达&#xff08;SAR&#xff09;是一种高分辨率的雷达成像技术&#xff0c;它通过在不同的时间和位置收集目标的雷达回波数据&#xff0c;来模拟一个远大于实际物理孔径大小的雷达系统。这种技术可以在任何天气条件…

spring boot学习第九篇:操作mongo的集合和集合中的数据

1、安装好了Mongodb 参考&#xff1a;ubuntu安装mongod、配置用户访问、添删改查-CSDN博客 2、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns…

记录下ibus-libpinyin输入法的重新安装

目前的版本为&#xff1a; 首先把现在的ibus-libpinyin卸了 sudo apt-get --purge remove ibus-libpinyin sudo apt-get autoremove 安装教程请参考 Installation libpinyin/ibus-libpinyin Wiki GitHub yilai sudo apt install pkg-config sudo apt-get install lib…

Micro micro controller一览

https://www.microchip.com.cn/&#xff0c; Microchip中文网站 https://www.microchip.com.cn/newcommunity/index.php?mSearch&adosearch&moduleDownload&keyworddsPIC33&p3 Microcontrollers and microProcessors dsPIC33 Digital Signal Controllers (D…

客户端会话技术-Cookie

一、会话技术 1.1 概述 会话&#xff1a;一次会话中包含多次**请求和响应** 一次会话&#xff1a;浏览器第一次给服务器资源发送请求&#xff0c;此时会话建立&#xff0c;直到有一方断开为止 会话的功能&#xff1a;在一次会话的范围内的多次请求间&#xff0c;共享数据 …

升级Oracle 单实例数据库19.3到19.22

需求 我的Oracle Database Vagrant Box初始版本为19.3&#xff0c;需要升级到最新的RU&#xff0c;当前为19.22。 以下操作时间为为2024年2月5日。 补丁下载 补丁下载文档参见MOS文档&#xff1a;Primary Note for Database Proactive Patch Program (Doc ID 888.1)。 补丁…

超越sd的绘图开源软件fooocus

Fooocus 是一款图像生成软件&#xff08;基于Gradio&#xff09;。 Fooocus 是对 Stable Diffusion 和 Midjourney 设计的重新思考&#xff1a; 学习自Stable Diffusion&#xff0c;该软件是离线、开源、免费的。 从Midjourney了解到&#xff0c;不需要手动调整&#xff0c;用户…

【【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏(附项目源码)

最终效果 文章目录 最终效果前言导入AI导航系统导航烘培添加羊添加捕食者动画控制随着地面法线旋转在地形上随机生成动物不同部位颜色不同最终效果源码完结前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第24篇中,…

新增同步管理、操作日志模块,支持公共链接分享,DataEase开源数据可视化分析平台v2.3.0发布

2024年2月5日&#xff0c;DataEase开源数据可视化分析平台正式发布v2.3.0版本。 这一版本的功能升级包括&#xff1a;新增“同步管理”功能模块&#xff0c;用户可通过此模块&#xff0c;将传统数据库中的数据定时同步到Apache Doris中&#xff0c;让数据分析更快速&#xff1…

第5节、S曲线加减速转动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍步进电机S曲线相关内容&#xff0c;总共分四个小节讨论步进电机S曲线相关内容 5-1、S曲线加减速简介   根据上节内容&#xff0c;步进电机每一段的速度可以任意设置&#xff0c;但是每一段的…

【Oracle云】基于 OKE 的 Cluster AutoScaler 扩/缩容

Oracle Kubernetes Engine&#xff08;OKE&#xff09;为用户提供了便捷而强大的Kubernetes服务&#xff0c;而集群自动伸缩&#xff08;Cluster AutoScaler&#xff09;则是OKE中的一项重要功能。该功能允许根据工作负载的需要自动调整集群的大小&#xff0c;确保资源的最佳利…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Rating组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Rating组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Rating组件 提供在给定范围内选择评分的组件。 子组件 无。 接口 Rating(opt…

如何在HA智能家居系统中添加HACS集成并实现异地控制家中苹果与小米设备

文章目录 基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssistant&#xff0c;通过内网穿透在户外控制家庭中枢。本文将介绍如何安装HACS插件商店&#xff0c;将米家&#xff0c;果家设备接入 Home Assistant。 基本条件…

NLP_Bag-Of-Words(词袋模型)

文章目录 词袋模型用词袋模型计算文本相似度1.构建实验语料库2.给句子分词3.创建词汇表4.生成词袋表示5.计算余弦相似度6.可视化余弦相似度 词袋模型小结 词袋模型 词袋模型是一种简单的文本表示方法&#xff0c;也是自然语言处理的一个经典模型。它将文本中的词看作一个个独立…

【VUE】UniAPP之uview组件库,自定义tag封装,支持添加u-icon图标

组件代码 <template><view class"tag" :class"[props.mode, props.shape]"><slot name"left"><!-- icon图标 没有传入图标时不显示 --><u-icon v-if"props.icon ! " :name"props.icon" :color&…

Springboot+vue的企业财务管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的企业财务管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的企业财务管理系统&#xff0c;采用M&#xff08;model&…