2026年7月9日 周四晚上19:30,报名腾讯会议了解“如何构建自进化的动态知识库(Brain)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

AIGC-查询意图识别RAG架构设计

发布日期:2024-06-02 08:12:27 浏览次数: 5296
作者:顶层架构领域

微信搜一搜,关注“顶层架构领域”


RAG不仅仅检索,理解你的需求。它还会根据用户的输入首先分析用户的查询意图,以便执行不同的分支获取最优答案。 
一、查询意图识别RAG需求分析
根据用户查询的识别意图来控制 RAG 应用程序的流程,帮助我们创建更有用和更加强大的检索增强生成(RAG)应用程序。
  1. 能够与数据进行交互,这些数据可能来自各种各样的来源。
    例如报告、文档、图片、数据库和第三方系统。
  2. 基于业务的 RAG 应用程序,能够与业务的各个领域的信息进行交互。
    例如销售、订购和会计系统的信息。
  3. 基于数据来源的多样性,信息的存储方式与之交互的方式也能是多样的。
    例如:一些数据可能存储在向量存储中,一些存储在 SQL 数据库中,还有一些可能需要通过 API 调用来访问,因为它们位于第三方系统中。   
4. 对于相同的数据,也可能设置了不同的向量存储,针对不同的查询类型进行优化。
例如,一个向量存储可以用于回答摘要类型的问题,另一个用于回答具体的定向的问题。
5. 根据问题的性质,路由到不同的组件类型

例如,根据问题的性质,我们希望将查询传递给Agent、向量存储,或者直接传递给 LLM 进行处理。    

根据所提出的问题定制提示模板。
总的来说,我们希望通过用户查询意图识别做出决策改变应用程序的流程。
我们的应用程序尝试满足的用例越多,我们就越有可能在整个应用程序中有更多的路由要求。
路由器(Router)本质上 If/Else 分支语句,但是需要根据自然语言输入做出决策,引导查询的控制流程。
由于很多路由逻辑是基于 LLM 或机器学习算法的使用,这些算法是非确定性的,我们无法保证路由器总是能够100%地做出正确的选择。再加上我们不太可能能够预测所有进入路由器的不同查询变体。
然而,通过使用最佳实践和一些测试,我们应该能够利用路由器来帮助创建更强大的 RAG 应用程序。
二、自然语言Router解决方案

 LLM 框架和库实现的自然语言路由器方案如下:

  1. LLM 路由器
  2. LLM 函数调用路由器
  3. 语义路由器
  4. zero-shot 分类路由器
  5. 语言分类路由器
  6. 关键词路由器
  7. 逻辑路由器

下面的图表描述了这些路由器,以及它们所在的框架/包 

三、LLM 路由器
利用LLM的决策能力根据用户的查询选择路由。 
这些使用 LLM 完成调用,要求 LLM 传递的prompt选项列表中返回最佳描述查询的单词。然后,可以将此单词用作 If/Else 条件的一部分,以控制应用程序流程。
这就是 LlamaIndex 中的 LLM 选择器路由器的工作原理。这是 LangChain 文档中路由器的示例。

让我们看一个代码示例,基于 LangChain 文档中提供的示例,以使这一点更加清晰。正如您所看到的,在 LangChain 中自己编写其中之一是非常简单的。

基于上面的LLM完成调用,我们设置了一个IF/Else条件,将查询路由到正确的链路
程序后期,我们可以使用LLM的响应,完成链用于控制(即路由)应用程序的流程。通过我们创建的 route_to_chain 方法将正确的返回链路路由

四、LLM 功能调用路由
这利用了LLM的函数调用能力来选择遍历的路线。不同的路线被设置为LLM函数调用中具有适当描述的函数。然后,基于传递给LLM的查询,它能够返回正确的函数(即路线),供我们采取。
这就是 Pydantic Router 在 LlamaIndex 内部的工作原理。这也是大多数代理人工作的方式,也是选择要使用的正确工具的方式。他们利用LLM的函数调用能力来根据用户的查询选择适当的工具。
五、语义路由器
这种路由器类型利用嵌入和相似性搜索来选择最佳的遍历路线。
每条路线都有一组与之关联的示例查询,这些查询会被嵌入并存储为向量。传入的查询也会被嵌入,然后与路由器中的其他示例查询进行相似性搜索。选择与最接近匹配的查询相关的路线。
事实上,有一个名为semantic-router的Python包就是这样做的。让我们看一些实现细节,以更好地了解整个工作原理。这些示例直接来自该库的 GitHub 页面。    
让我们设置两条路线,一条用于关于政治的问题,另一条用于一般的闲聊类型问题。对于每条路线,我们分配一个可能会被问到的问题列表,以触发该路线。这些示例查询被称为话语。这些话语将被嵌入,以便我们可以将它们用于与用户查询的相似性搜索。

我们将OpenAI分配为编码器,尽管任何嵌入库都可以使用。接下来,我们使用路由器和编码器创建我们的路由层。  

然后,当我们对路由器层应用我们的查询时,它会返回应该用于查询的路由
六、零样本分类路由器
["zero-shot 文本分类](https://huggingface.co/tasks/zero-shot-classification) 是自然语言处理中的一项任务,模型在一组标记示例上进行训练,然后能够对以前未见过的类别的新示例进行分类"。这些路由器利用零-shot分类模型,将标签分配给文本片段,从您传递给路由器的预定义标签集中选择。        
**示例:** Haystack 中的 [ZeroShotTextRouter](https://docs.haystack.deepset.ai/reference/routers-api#module-zero_shot_text_router),利用了 Hugging Face 的零-shot分类模型。查看 [源代码](https://github.com/deepset-ai/haystack/blob/main/haystack/components/routers/zero_shot_text_router.py#L130) 以了解神奇发生的地方。
七、语言分类路由器                 
这种类型的路由器能够识别查询所使用的语言,并根据此进行路由。如果您的应用程序需要某种多语言解析能力,这将非常有用。 
**示例:** [Haystack 的 TextClassificationRouter](https://docs.haystack.deepset.ai/reference/routers-api#module-text_language_router)。[它利用 langdetect python 库](https://github.com/deepset-ai/haystack/blob/main/haystack/components/routers/text_language_router.py#L90) 来检测文本的语言,该库本身使用 [朴素贝叶斯](https://www.slideshare.net/shuyo/language-detection-library-for-java) 算法来检测语言。
八、关键词路由器                           
这篇来自 LlamaIndex 的联合创始人 Jerry Liu 的[文章](https://betterprogramming.pub/unifying-llm-powered-qa-techniques-with-routing-abstractions-438e2499a0d0)讨论了 RAG 应用程序内部的路由,其中提出了一种关键词路由器,该路由器尝试通过匹配查询和路由列表之间的关键词来选择路由。        
这个关键词路由器可以由 LLM 来识别关键词,或者通过其他关键词匹配库来实现。
九、逻辑路由器              
这些使用逻辑检查对变量进行操作,比如字符串长度、文件名和值比较,以处理如何路由查询。它们与编程中使用的典型的 If/Else 条件非常相似。       
换句话说,它们不是基于理解自然语言查询的意图,而是可以根据现有的离散变量做出选择。             
**示例:** [ConditionalRouter](https://docs.haystack.deepset.ai/docs/conditionalrouter) 和 [FileTypeRouter](https://docs.haystack.deepset.ai/docs/filetyperouter) 来自 HayStack。     

结论             

我们在这里介绍了目前在不同的RAG和LLM框架和包中找到的几种不同的自然语言路由器。

随着时间的推移,围绕路由的概念、包和库肯定会增加。在构建RAG应用程序时,您会发现,在某个时候,路由能力确实变得必要,以便构建对用户有用的应用程序。             

路由器是这些基本构建模块,它们允许您将自然语言请求路由到您的应用程序的正确位置,以便尽可能最好地满足用户的查询。           

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅