RAG应用中的路由模式

依据的用户查询意图在 RAG 应用程序使用“路由控制模式”可以帮助我们创建更强大的 RAG 应用程序。我们通常希望用户能够访问的数据可以来自各种来源,如报告、文档、图片、数据库和第三方系统。

对于基于业务的 RAG 应用程序,我们可能还希望用户能够与其它业务系统进行交互,例如:销售、订购和会计等。由于数据来源的多样性,信息的存储方式以及我们想要与之交互的方式也可能是多样的。一些数据可能存储在向量存储器中,一些存储在 SQL 数据库中,而一些可能需要通过 API 调用来访问,因为它存在于第三方系统中。
在这里插入图片描述
同样的数据可能也可以设置不同的向量存储,针对不同类型的查询进行优化。例如:可以设置一个向量存储用于回答摘要型问题,另一个用于回答特定的、有针对性的问题。我们可能还希望根据问题的性质,路由到不同的组件类型。例如:我们可能希望将查询传递给代理、向量存储器,或者直接传递给 LLM 进行处理,这完全取决于问题的性质。
在这里插入图片描述
我们甚至可能希望根据所问问题来定制提示词模板。
在这里插入图片描述
总的来说,有许多原因会导致我们希望改变并引导用户查询在应用程序中的流程。我们的应用程序要实现的业务场景越多,我们在整个应用程序中可能需要的“路由”要求也就越多。“路由器”本质上只是我们使用的 If/Else 语句,用于指导查询的控制流程。但有趣的是,它们需要根据自然语言输入做出决策。因此,我们寻求基于自然语言描述的离散输出。由于许多路由逻辑是基于使用 LLMs 或机器学习算法的,这些算法是非确定性的,我们无法保证“路由器”始终 100%做出正确的选择。此外,我们不太可能能够预测所有进入路由器的不同查询变体。然而,通过不断优化和测试,我们应该能够利用“路由器”来帮助创建更强大的 RAG 应用程序。

自然语言路由器
我们将在这里探讨一些常见的自然语言路由器,它们由一些不同的 RAG 和 LLM 框架和库实现。

LLM 补全路由器(LLM Completion Routers)
LLM 函数调用路由器(LLM Function Calling Routers)
语义路由器(Semantic Routers)
零样本分类路由器

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

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

相关文章

卷积通用模型的剪枝、蒸馏---蒸馏篇--RKD关系蒸馏(以deeplabv3+为例)

本文使用RKD实现对deeplabv3+模型的蒸馏;与上一篇KD蒸馏的方法有所不同,RKD是对展平层的特征做蒸馏,蒸馏的loss分为二阶的距离损失Distance-wise Loss和三阶的角度损失Angle-wise Loss。 完整代码放在文末。 一、RKD简介 RKD算法的核心是以教师模型的多个输出为结构单元,取…

Infuse for Mac激活版:高清影音播放软件

对于热爱影音娱乐的Mac用户来说,Infuse for Mac是一个不容错过的选择。它以其简洁的操作界面和强大的播放功能,为用户带来了全新的影音播放体验。 Infuse for Mac支持广泛的音视频格式,无需额外转换,即可轻松播放您喜爱的影片。无…

图的概念、性质和存储与简单遍历

前置知识:树的基本概念及性质 为了保证学习效果,请保证已经掌握前置知识之后,再来学习本章节!如果在阅读中遇到困难,也可以回到前面章节查阅。 学习目标 掌握图的基本概念掌握图的一些性质 图的概念 基本概念 图 (…

算法设计与分析(超详解!) 第三节 贪婪算法

1.贪心算法基础 1.贪心算法的基本思想 贪心算法是从问题的某一个初始解出发,向给定的目标推进。但它与普通递推求解过程不同的是,其推动的每一步不是依据某一固定的递推式,而是做一个当时看似最佳的贪心选择,不断地将问题实例归…

MySQL 大量数据插入优化

效率最好的方式是:批量插入 开启事务。 1、数据批量插入相比数据逐条插入的运行效率得到极大提升; ## 批量插入 INSERT INTO table (field1, field12,...) VALUES (valuea1, valuea2,...), (valueb1, valueb2,...),...;当数据逐条插入时,每…

OpenAI 或将推出多模态人工智能数字助理;研究发现部分 AI 系统已学会「说谎」丨 RTE 开发者日报 Vol.203

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

LeetCode 700.二叉搜索树中的搜索

LeetCode 700.二叉搜索树中的搜索 1、题目 题目链接:700. 二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则…

【C语言/数据结构】栈:从概念到两种存储结构的实现

目录 一、栈的概念 二、栈的两种实现方式 1.顺序表实现栈 2.链表实现栈 三、栈的顺序存储结构及其实现 1.栈的声明 2.栈的初始化 3.栈的销毁 4.栈的压栈 5.栈的弹栈 6.栈的判空 7.返回栈顶元素 8.返回栈的长度 四、栈的链式存储结构及其实现 1.栈的声明 2.栈的…

设计模式Java实现-迭代器模式

✨这里是第七人格的博客✨小七,欢迎您的到来~✨ 🍅系列专栏:设计模式🍅 ✈️本篇内容: 迭代器模式✈️ 🍱 本篇收录完整代码地址:https://gitee.com/diqirenge/design-pattern 🍱 楔子 很久…

JavaScript数字(Number)个数学(Math)对象

目录 前言: Number(数字)对象 前言: nfinity(正负无穷大): NaN(非数字): Number的属性 Number的方法 构造函数 静态方法 实例方法 Math(数学)对象…

C#之partial关键字

在C#中,partial关键字用于声明一个类、结构体、接口或方法的分部定义。这意味着可以将一个类或其他类型的定义分成多个部分,这些部分可以在同一个命名空间或程序集中的多个源文件中进行定义。当编译器编译这些部分时,会将它们合并成一个单独的…

字符串函数(一):strcpy(拷贝),strcat(追加),strcmp(比较),及strncpy,strncat,strncmp

字符串函数 一.strcpy(字符串拷贝)1.函数使用2.模拟实现 二.strcat(字符串追加)1.函数使用2.模拟实现 三.strcmp(字符串比较)1.函数使用2.模拟实现 四.strncpy1.函数使用2.模拟实现 五.strncat1.函数使用2.…