04-M4-Agentic路由-让每个问题找到对的部门

发布时间:2026/8/23 9:12:35

04-M4-Agentic路由-让每个问题找到对的部门
Agentic 路由让每个问题找到对的部门M4 落地实测系列城市管理 Agentic RAG —— 从零搭建城市管理问答系统本篇M4 · Agentic 路由实测版源码https://gitee.com/Chester_Xue/city-agentic-rag一、M3 之后还差什么M3 做完系统能「查」能「答」了。但用起来有个明显的别扭❓ 问题 XX社区老人需要救助吗 回答……把气象、民政、卫健、热线的资料全捞出来一起答检索是盲目的——没有「意图」概念。你问老人救助它把四个部门的知识库全部捞一遍然后让大模型自己挑有用的。数据少的时候问题不大可一旦数据量上来检索噪音变多、回答变慢、还可能把不相关的资料混进答案。打个比方没有路由的系统像一家没有分诊台的医院——你来看胃病护士把你的病历复印了八份全院每个科室都给你看一遍最后外科医生和内科医生各说各的。效率低还容易误诊。M4 要做的事就一件加一个分诊台路由让每个问题先去对的科室。二、路由在干什么大白话版路由Router就是问题的意图分类器先判断「这个问题属于哪个领域」再决定去哪个部门的知识库检索。你的问题 │ ▼ [路由] 这是气象问题医疗问题民政问题还是投诉 │ weather / healthcare / civil / hotline / all / greeting ▼ [检索] 只查路由指定的部门气象局应急局 / 卫健委120 / 民政局 / 12345热线 │ ▼ [生成] 大模型照检索到的资料回答分类的六个类别对应项目四大业务域 两个特殊情况类别含义检索范围weather气象/预警/防汛气象局 应急局healthcare医疗/急救/床位卫健委 120急救中心civil民政/老人/低保民政局hotline投诉/工单/热线12345热线all跨领域综合全部部门greeting问候寒暄不检索直接回复三、两级分类关键词省钱大模型判得准路由怎么做分类两条路关键词规则或者大模型。我的实现是两级都用各管一段。第一级关键词规则ROUTE_RULESROUTE_RULES{weather:[暴雨,预警,降雨,台风,天气,防汛,内涝,气象,洪水],healthcare:[医院,床位,急救,120,医疗,救护,卫健委,医生],civil:[老人,低保,人口,救助,养老,民政,弱势,孤儿,残障],hotline:[投诉,工单,派发,热线,12345,举报,诉求],}为什么不全用大模型省钱。路由分类在每轮问答都要跑一次一次大模型调用要钱还要几百毫秒。而「问候语」这种明显不需要分类的问题一个if就完事了GREETING_RULES[你好,您好,嗨,哈喽,hello,hi,谢谢,感谢,再见,拜拜]def_is_greeting(question:str)-bool:qquestion.lower()returnany(kwinqforkwinGREETING_RULES)实测效果零大模型调用纯规则你好 - {route: greeting, depts: None, method: greeting} 暴雨积水投诉 - {route: [weather, hotline], depts: [气象局, 应急局, 12345热线], method: keyword}第二条是「多命中快速通道」问题里同时出现「暴雨」和「投诉」两个领域的关键词意图明确是跨领域直接返回两个类别省一次大模型调用。第二级大模型极小 prompt关键词没命中或只命中一个时交给大模型判。prompt 刻意做得极小——只有分类说明和一行问题max_tokens16一次调用几分钱你是问题路由分类器。判断问题属于哪个领域只输出类别代码多个用英文逗号分隔不要输出其他内容。 类别说明 weather气象/天气/预警/防汛/台风 healthcare医疗/医院/急救/床位 civil民政/老人/低保/救助/弱势群体 hotline投诉/工单/热线/诉求 all跨多个领域或无法确定 greeting问候/寒暄 问题{question}模型输出「weather」或「weather,civil」这种短代码解析起来也简单按逗号/顿号切开校验合法性非法项丢弃全非法就兜底为 all。实测走大模型今天暴雨吗 - {route: weather, depts: [气象局, 应急局], method: llm} 医院床位够吗 - {route: healthcare, depts: [卫健委, 120急救中心], method: llm} 积水投诉找谁 - {route: hotline, depts: [12345热线], method: llm}三个问题全部命中正确领域。四、踩坑大模型不跨领域验收差点挂了M4 有两条验收标准第二条是「XX社区老人需要救助吗」→必须检索气象 民政两个部门。这是 S1 场景暴雨预警后关注弱势群体的简化灾害背景下的「救助」既要有民政的弱势群体数据也要有气象的应急响应要求。第一次跑结果很尴尬❓ 问题 XX社区老人需要救助吗 [路由] civil → 检索范围: 民政局llm ← 只有民政大模型只判了 civil。模型错了吗没错——问题里根本没有天气词正常人听了也会觉得这是纯民政问题。但业务验收要求「气象民政」因为这类问题在真实场景里总是出现在灾害背景下。我在 prompt 里加了 few-shot 示例「暴雨橙色预警XX社区老人需要救助吗 → weather,civil」重测……模型还是判 civil——示例里的天气词没出现在用户问题里模型没被引导到跨领域。这是小 prompt 的天然局限业务领域的隐性关联「救助」在应急语境下气象民政不该指望一个 16 token 的分类 prompt 自己悟出来。这类领域知识应该固化在规则里于是有了领域联动# 领域联动救助/支援类问题通常伴随灾害背景S1 预警研判场景# 命中 civil 且含触发词「救助」时自动追加 weather实现「气象民政」联合检索。ROUTE_JOINTS{civil:(救助,weather),}命中 civil 且问题含「救助」→ 自动补一个 weather。重测❓ 问题 XX社区老人需要救助吗 [路由] civilweather → 检索范围: 民政局/气象局/应急局keyword ← 达标关键细节这是关键词阶段完成的零大模型调用。规则比模型便宜也比模型稳定。再验证「不误伤」——纯民政问题不带灾害背景不该被联动低保申请需要什么材料 - {route: civil, depts: [民政局], method: llm} ← 只查民政 ✅五、检索落点dept_filter 从单部门到多部门路由判出了部门列表如[民政局, 气象局, 应急局]检索接口要接得住。M3 的dept_filter只支持单个部门字符串M4 扩展成支持部门列表# M4dept_filter 支持 str / list / None 三种形态hitsdb.query(暴雨,top_k3,dept_filter气象局)# 单部门hitsdb.query(暴雨老人,top_k3,dept_filter[气象局,民政局])# 多部门路由用hitsdb.query(暴雨,top_k3)# 全库实现上有个坑气象局和应急局共用一个 collection同属应急领域M2 的数据隔离设计。部门列表过滤时同一个 collection 内多个部门要用 Chroma 的$in条件精确过滤否则 dept_filter[气象局] 会把应急局的数据也带出来# 部门 - collection 分组后每组用 $in 精确过滤where{dept:{$in:dept_group}}实测联合检索池top_k8问题「XX社区老人需要救助吗」路由范围民政局气象局应急局部门分布: 民政局 3 条 / 应急局 2 条 / 气象局 2 条注意卫健、热线的数据一条都没进来——数据隔离原则在路由这层真正落地了。检索只在「该去的地方」找。六、cli 改造路由 → 检索 → 生成一条新链路M3 的 cli 是「检索 → 生成」M4 在前面加了路由环节一行[路由]日志让判定过程可见演示用可关❓ 问题 今天暴雨吗 [路由] weather → 检索范围: 气象局/应急局llm 回答 根据现有资料无法直接判断今天是否下暴雨知识库不含实时天气数据…… 1. 资料中不包含实时或今日的天气预报数据…… 2. 如需判断今日是否暴雨需要以下信息当前资料缺失…… 引用来源 - 气象局/预警等级.txt - 应急局/防汛应急响应预案.txt这条回答我很喜欢——它诚实地承认了知识库没有实时天气而不是编一个「今天有暴雨」。这是 M3 定下的 Prompt 硬约束在起作用到了 M4 依然稳定。问候语也顺手处理了零成本❓ 问题 你好 回答 你好我是城市应急与民生服务问答助手可以问我暴雨预警、急救资源、老人救助、积水投诉等问题……七、验收总览验收项路由判定检索范围结果「今天暴雨吗」weather气象局应急局只检索气象✅「XX社区老人需要救助吗」civilweather民政局气象局应急局气象民政✅外加抽查积水投诉 → 只查热线 ✅低保咨询 → 只查民政不误联动✅你好 → 直接回复不检索 ✅。至此系统从「有问必答什么都捞」进化成「先分诊、再精准检索」——路由这层为后面 M5 的自适应检索和答案反思铺好了「意图」这个维度。八、下一步路由让检索变「聪明」了但还有两个问题悬着检索分数低的时候怎么办要不要自动扩大范围再搜一次模型回答完要不要自我核查一遍和引用资料对不对得上这就是 M5自适应检索 答案反思。下一篇M5 自适应检索 答案反思让系统自己检查作业上一篇M3 检索大模型让系统「开口回答」系列目录城市管理 Agentic RAG —— 从零搭建城市管理问答系统想了解更专业的内容本文是项目实战记录。如果你对 RAG 的原理、Prompt 工程技巧、大模型 API 接入的完整方案感兴趣欢迎访问我的 CSDN 专栏喵本喵叁肆的 Agentic RAG 实战专栏阅读完整的技术博客系列含可运行代码、架构图与验收标准。

相关新闻

TimeSage-MT:多轮对话时序基准测试的设计原理与实战指南

TimeSage-MT:多轮对话时序基准测试的设计原理与实战指南

2026/8/23 9:02:34

1. 项目概述:为什么我们需要一个“多轮对话”的时间序列基准测试?如果你最近在关注时间序列分析或者智能体(Agent)领域的研究,大概率会听到一个词:TimeSage-MT。这不仅仅是一个新的数据集或模型&#xff0c…

AI技术图表生成工具Diagram Design:从原理到部署实践

AI技术图表生成工具Diagram Design:从原理到部署实践

2026/8/23 9:02:34

这次我们来看一个能解决 AI 画图“丑”问题的工具:Diagram Design。如果你尝试过用 Midjourney、Stable Diffusion 这类 AI 工具生成架构图、流程图,大概率会失望——元素错位、逻辑混乱、文字乱码是常态。Diagram Design 瞄准的正是这个痛点&#xff1a…

编程基础核心:变量作用域、条件判断与循环结构深度解析

编程基础核心:变量作用域、条件判断与循环结构深度解析

2026/8/23 9:02:34

1. 考前复习笔记:从“if”到“while”,一个程序员的逻辑构建之旅 又到了考试季,或者说,又到了需要系统性梳理知识的时候。无论你是计算机专业的学生,还是正在自学编程的爱好者,面对“变量”、“循环”、“条…

多智能体隐蔽协调检测:从原理到工程实践

多智能体隐蔽协调检测:从原理到工程实践

2026/8/23 9:52:37

1. 先搞清楚这个研究到底在解决什么问题 看到“超越文本:检测潜在多智能体通信中的隐蔽协调”这个标题,很多人第一反应可能是“又一个多智能体协作的论文”。但它的核心价值不在于让智能体协作,而在于 如何发现和诊断智能体之间那些“看不见…

PyTorch实战:从零构建八大核心神经网络模型(CNN/RNN/GAN/Transformer等)

PyTorch实战:从零构建八大核心神经网络模型(CNN/RNN/GAN/Transformer等)

2026/8/23 9:52:37

在深度学习领域快速迭代的今天,掌握核心神经网络架构是每一位开发者、研究者乃至学生绕不开的课题。面对网络上零散的资料和复杂的理论,很多初学者感到无从下手,甚至中途放弃。本文旨在打破这一困境,通过一套结构化的实战路径&…

智能体技能检索进阶:任务分解引导重排实现自适应规划

智能体技能检索进阶:任务分解引导重排实现自适应规划

2026/8/23 9:52:37

1. 从“技能检索”到“任务分解引导重排”:一个智能体进化的必然路径在构建能够自主完成复杂任务的智能体(Agent)时,我们常常面临一个核心挑战:如何让智能体在面对一个前所未见的新任务时,能够准确地从它庞…

[特殊字符] 工具使用与函数调用

[特殊字符] 工具使用与函数调用

2026/8/23 9:52:37

📂 工具使用与函数调用 分类说明 Function Calling、API 编排、MCP/A2A 协议与工具管理 子分类 Function Calling 机制工具选择策略API 编排与链式调用MCP 协议A2A 协议工具注册与发现 题目列表(共 75 题)编号题目难度子分类296Function Call…

AI Agent 面试题 370:如何设计Agent的工具调用成本优化策略?

AI Agent 面试题 370:如何设计Agent的工具调用成本优化策略?

2026/8/23 9:52:37

🔥 AI Agent 面试题 370:如何设计Agent的工具调用成本优化策略?摘要:本文深入解析了「如何设计Agent的工具调用成本优化策略?」这一 AI Agent 领域的核心面试题。文章从 API 编排与链式调用 的基本概念出发&#xff0c…

Windows Docker环境搭建:从WSL虚拟化到Docker Desktop配置全指南

Windows Docker环境搭建:从WSL虚拟化到Docker Desktop配置全指南

2026/8/23 9:42:36

1. 先搞清楚 WSL 和 Docker Desktop 的关系,别急着装如果你在 Windows 上想用 Docker,大概率会搜到 WSL(Windows Subsystem for Linux)。很多人第一步就卡住了,因为没理清它们之间的关系。简单说,WSL 不是 …

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…