news 2026/8/31 6:50:28

06-M6-部门过滤与综合研判-从问答机到研判助手

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
06-M6-部门过滤与综合研判-从问答机到研判助手

部门过滤与综合研判:从问答机到研判助手(M6 落地实测)

系列:城市管理 Agentic RAG —— 从零搭建城市管理问答系统
本篇:M6 · 部门过滤命令 + 综合研判输出(实测版)
源码:https://gitee.com/Chester_Xue/city-agentic-rag


一、M5 之后还差什么?

M5 给系统装上了「自适应检索」和「答案反思」,会自己换姿势找资料、答完自己检查作业。但用着用着,发现它还只是个被动应答的问答机——你问一句,它答一句,每次只给一个答案。

真实的城市管理场景不是这样的:

场景一:领导想看全局。「XX 社区暴雨应急准备」——这不是一个单一问题,它牵扯气象预警、卫健急救、民政弱势群体、热线积水投诉四个领域。你只想要一段话,还是想要一份分部门、带来源、能直接拿去开会的研判报告

场景二:你要盯住某个部门。想单独看卫健委的急救资源情况,系统却自作主张把气象局、民政局的资料也混进来——信息是多了,但不聚焦,甚至可能带偏结论。

M6 要做的就是两件事:

  1. 部门过滤命令——/dept 卫健委 急救资源,你说查哪个部门就查哪个部门,扩展也只在这个领域内扩;
  2. 综合研判输出——/all或问题本身跨领域时,输出四部门分块研判报告:气象、卫健、民政、热线各一段,各带来源,最后给综合建议。

打个比方:M5 之前是「前台接电话」,M5 是「接电话的人会查资料、会复核」,M6 是「这个人会给你写会议纪要」——还是分部门、带出处的会议纪要。

二、先看效果:验收场景实测

按推进表,M6 的验收是:输入「XX社区暴雨应急准备」→ 输出四部门分块报告。先看实测结果:

验收 ①:/all XX社区暴雨应急准备→ 四部门分块报告

❓ 问题 > /all XX社区暴雨应急准备 [路由] all(/all 命令) → 综合研判(四业务域分块报告) [检索] 按域检索(每域 top_k=2)命中 8 块 (气象局×1、应急局×1、120急救中心×1、12345热线×2、民政局×2、卫健委×1) 最高分 0.704 📋 综合研判: 【气象研判】(来自:气象局/预警等级.txt、应急局/防汛应急响应预案.txt) 研判:XX社区暴雨应急准备需依据预警等级与响应预案联动。若气象局发布暴雨橙色及以上预警, 应急局预案要求启动Ⅳ级及以上响应,成员单位到岗、强制转移危险区群众。 当前资料未提供社区具体内涝点、水位数据,无法预判具体响应级别,需实时监测补充。 【卫健研判】(来自:120急救中心/急救流程.txt、卫健委/急救资源.txt) 120急救中心要求城区接警响应≤15分钟;市第一人民医院为三甲,空闲床位320张, 可作急救转运接收点。但资料未提供社区具体位置、急救站点距离及暴雨专项预案, 无法评估实际响应时效,需补充信息。 【民政研判】(来自:民政局/弱势群体统计.txt、民政局/养老服务设施.txt) XX社区为老旧小区,老年人口占比32%,需优先保障独居老人156人、残疾人223人及低保户587人。 但资料未提供社区具体应急物资储备、避难场所及转移方案(资料不足),建议补充。 【热线研判】(来自:12345热线/高频诉求统计.txt、12345热线/工单案例.txt) 7月市政设施类诉求占23%(2891件)且环比上升15%,热点区域为XX路与YY路交叉口; 该处7月20日积水深30cm,已派城管局处置。建议优先部署该点位排水及井盖巡查。 【综合建议】 优先级排序:① 气象与应急联动 → ② 民政弱势群体转移 → ③ 热线积水点处置 → ④ 卫健急救保障。 跨部门协调:应急局牵头启动预案,气象局实时推送预警;民政对接街道落实弱势群体转移; 城管局优先疏通积水点;卫健委预留急救通道。 行动建议:立即补充社区内涝点、物资储备数据,完善专项预案;建立信息共享群,每2小时通报。

四个部门各一段,每段开头标注来源文件,最后综合建议给出优先级、跨部门协调、行动建议——这已经是一份能直接拿去做会前准备的研判材料了。

验收 ②:/dept 卫健委 急救资源是否充足→ 只查卫健域

❓ 问题 > /dept 卫健委 急救资源是否充足 [路由] 跳过(/dept 命令)→ 检索范围: 卫健委 [检索] 首轮 top_k=3(卫健委)最高分 0.476 [检索] 扩展① top_k=5(卫健委/120急救中心)最高分 0.514 [反思] 核查通过(与引用资料一致,无编造) 💬 回答: 根据现有资料,无法全面判断急救资源是否充足…… 1. 救护车配置:全市救护车45辆,其中负压救护车12辆(来源:卫健委/医院床位资源.txt)。 2. 医院床位与ICU:市第一人民医院总床位1200张,ICU 80张,空床率8%…… 📎 引用来源: - 卫健委/医院床位资源.txt - 120急救中心/急救流程.txt

检索范围死死锁在卫健域(卫健委 + 120急救中心),回答全部有据可查,还主动说明了「缺需求侧数据,无法判断是否充足」——不硬答。

验收 ③:不敲命令,问题本身跨领域也会自动触发

❓ 问题 > 如何统筹全市应急资源应对灾害? [路由] all → 综合研判(四业务域分块报告)

路由判断这是跨领域综合问题,不需要用户记命令,自动切换成研判模式。命令是给「想要控制权」的人用的,普通用户直接问就行。

三、命令系统:给用户一个「方向盘」

M6 给 CLI 加了三个命令(parse_command解析):

❓ 问题>/help可用命令:/dept<部门[,部门...]><问题>指定部门精准问答(如/dept 卫健委 急救资源充足吗)/all<问题>全部门综合研判(四业务域分块报告+综合建议)/help显示本帮助 直接输入问题则自动路由到相关部门;跨领域综合问题自动输出综合研判报告 可用部门:气象局、应急局、卫健委、120急救中心、民政局、12345热线

三个细节值得说:

1. 部门名有校验。/dept 城管委 积水(数据里没有这个部门),系统不会静默查空,而是提示:

⚠️ 未知部门:城管委(可用:气象局、应急局、卫健委、120急救中心、民政局、12345热线)

2. 多部门支持逗号/顿号。/dept 气象局,民政局 暴雨影响一次锁两个部门。

3. 命令前缀防误判。一开始用startswith("/dept")判断,结果输入/deptx 卫健委这种问题也被当成命令。改成「前缀后接空白或直接结束」才修好——一个小坑,见第五节。

四、综合研判报告怎么生成

核心是一个新模块src/formatter.pyReportFormatter类。设计上有一个关键决策:分块生成,而不是一次生成

如果把四部门资料一次全塞给大模型,让它一口气输出四块+综合建议,会出现两个问题:模型可能漏块(写着写着少了一个部门)、可能合并(把民政和热线并成一段)。分块生成则完全可控:

fordomain,hitsinself.group_by_domain(results):context=format_context(hits)# 只放这一个域的资料prompt=SECTION_PROMPT.format(domain=domain,question=question,context=context)text=self.llm.chat(prompt,...)# 每块独立调用一次blocks.append(f"【{domain}研判】(来自:{self._sources(hits)})\n{text}")

每块只喂本域资料、只生成一段研判,格式 100% 可控、来源逐块标注。最后把各块研判汇总,再调一次模型生成综合建议——模型只做「汇总+提建议」,不重复读原始资料,省 token 又聚焦。

另外每个域块内的 prompt 都有硬约束:只依据给定资料作答,资料不足时明确说明,严禁编造。所以民政块即使只有 0.45 分的弱相关资料,也会老老实实写「资料未提供应急物资储备……建议补充」,而不是编一份转移方案出来——这和 M5「信息不足请明确告知」是一脉相承的底线。

五、踩过的坑(三个都是真实的)

坑 1:全库 top-k 检索会被「高分域」霸榜,低分但相关的域直接被挤出。

第一版综合研判用全库检索取前 8 条,结果四域报告只有三块——民政没了。查原因:「XX社区暴雨应急准备」对气象/热线资料的相似度普遍 0.5~0.7,而对民政数据(弱势群体统计)只有 0.447,前 8 名被气象和热线占满,民政一条都进不来。

但民政恰恰是暴雨应急要重点关注的(独居老人、低保户转移)!按相似度全局排序,不等于按业务价值排序。

解法:综合研判按业务域分组检索,每域独立取 top_k(默认 2 条),合并后再排序。这样每个域都有候选块,四域报告不会缺角:

for_domain,deptsinREPORT_GROUPS:# 气象/卫健/民政/热线四域hits.extend(retrieve(question,top_k=top_k,dept_filter=depts))

坑 2:/dept命令如果沿用自适应检索的「放开全库」,会把别的部门资料混进来。

/dept 卫健委 急救资源第一版跑出来,回答居然引用了应急局/防汛应急响应预案.txt——因为 M5 的自适应检索在首轮分低时,会自动「移除部门过滤」放开全库再搜。这个机制对自动路由是对的(防止路由误判漏检),但对用户显式指定部门就是灾难:用户明明说只看卫健委,系统却把应急局的预案拿来讲急救资源。

解法:给自适应检索加strict_dept+expand_dept_filter参数——/dept命令首轮严格按指定部门,扩展轮只在同域内找(卫健委 → 卫健委+120急救中心,两个部门同属卫健域),既保领域纯净,又避免单部门数据太少直接判无果。

坑 3:startswith("/dept")会把/deptx 卫健委误判成命令。

一个 5 分钟能修的小 bug,但值得记:命令前缀判断必须「后接空白或直接结束」,否则任何以 /dept 开头的正常问题都会被吞掉。

六、验收汇总与回归

验收项结果
/all XX社区暴雨应急准备✅ 四部门分块报告(气象/卫健/民政/热线 + 综合建议,各块带来源)
/dept 卫健委 急救资源✅ 只检索卫健域(卫健委+120急救中心),不污染其他领域
③ 多部门命令/dept 气象局,民政局 暴雨影响✅ 同域扩充到气象局/应急局/民政局
④ 自然输入「如何统筹全市应急资源应对灾害?」✅ 路由 all 自动触发四域综合研判
⑤ 未知部门提示✅ 列出可用部门清单

回归抽查(M1~M5 能力不退化):

  • 暴雨响应 → 首轮强相关直接答 ✅
  • 独居老人救助 → 路由联动 civil+weather ✅
  • 低保申请 → 只查民政,不误伤 ✅
  • 你好 → 零成本欢迎语 ✅
  • 气象局局长电话(库内没有)→ 明确告知,零编造 ✅

七、本阶段小结

M6 之后,系统从「问答机」变成了「研判助手」:

  1. 给用户方向盘——/dept指定部门、/all全量研判,命令简单直接;
  2. 自动识别跨领域——路由判 all 时自动切研判模式,不强制用户记命令;
  3. 报告可溯源——四域分块、逐块标注来源、资料不足如实说明,综合建议基于各块研判生成。

架构上,ReportFormatter是推进表早就预留的接口(format()是报告模板唯一入口)——二期想加 JSON 模板、图表渲染,只扩展这个类就行,调用方不用改。

八、下一步

M6 的能力都在命令行里,演示给领导看还不够直观。M7 计划做Gradio Web 界面:顶部四个场景按钮(暴雨应急、医疗调度……)、侧边部门过滤下拉、下方输出区渲染综合研判报告——把今天这些命令,变成点两下鼠标就能出报告的界面。

上一篇:M5 自适应检索与答案反思:让系统自己检查作业
下一篇:M7 Gradio Web 界面:点两下就出研判报告
系列目录:城市管理 Agentic RAG —— 从零搭建城市管理问答系统


📚想了解更专业的内容?本文是项目实战记录。如果你对 RAG 的原理、Prompt 工程技巧、大模型 API 接入的完整方案感兴趣,欢迎访问我的 CSDN 专栏喵本喵叁肆的 Agentic RAG 实战专栏阅读完整的技术博客系列(含可运行代码、架构图与验收标准)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 6:49:39

LLVM MIR改用block arguments替代phi:代码生成的新变革

最近在阅读 LLVM Code Generation 相关的 RFC 时&#xff0c;有一个标题特别吸引我&#xff1a;Change MIR to use block arguments instead of phis。作为一个经常和 MIR、SelectionDAG 打交道的后端开发者&#xff0c;我对这种“表面上是语法改动&#xff0c;实际会牵动整个代…

作者头像 李华
网站建设 2026/8/31 6:47:59

途虎养车Java秋招笔试题A卷深度复盘:考点、陷阱与备考策略

先说结论&#xff1a;途虎养车2023秋招这套Java笔试试卷A&#xff0c;整体难度放在互联网公司校招笔试里属于中等偏上&#xff0c;但它有个非常鲜明的特点——大量题目都贴着“汽车后市场”的业务场景出&#xff0c;不是干巴巴地考八股文&#xff0c;而是把Java基础、并发、数据…

作者头像 李华
网站建设 2026/8/31 6:47:53

Phigros高难谱面AP全攻略:从判定机制到实战练习

刚接触 Phigros 高难度谱面的时候&#xff0c;很多人都会把“把 All Perfect 打出来”当作一个阶段性的证明。而当你看到标题里“定数组用骰子定的16.2”这样的表述&#xff0c;可能第一反应是&#xff1a;这是一首定数被随机分配的谱面&#xff0c;还是一场靠运气完成的挑战&a…

作者头像 李华
网站建设 2026/8/31 6:45:49

【研发类-框架和库Skills】azure-eventhub-dotnet 技能

Azure Event Hubs SDK for .NET - 用于.NET的高吞吐量事件流式传输SDK&#xff0c;用于通过Azure Event Hubs发送和接收事件。 &#x1f4e5; 下载地址&#xff1a; https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-eventhub-dotnet 技能概述…

作者头像 李华
网站建设 2026/8/31 6:45:42

从车载到机器人,激光雷达的盈利拐点在哪里?

禾赛、速腾卷向机器人&#xff0c;赚到钱了吗&#xff1f;这是激光雷达行业这两年被问得最多的问题之一。两家公司都是从车载激光雷达起家&#xff0c;前几年把大量精力放在自动驾驶和乘用车前装量产上&#xff0c;现在又把机器人当成新的增长方向。方向是顺的&#xff0c;因为…

作者头像 李华
网站建设 2026/8/31 6:45:22

CBM8580 量产踩坑:首次充电无法激活电量计问题复盘 i

简介 CBM8580 是一款基于电池组的单芯片全集成解决方案&#xff0c;全集成2节&#xff0c; 3节&#xff0c; 4节串联锂离子或锂聚合物电池组管理器及保护&#xff0c;可准确测量锂离子和锂聚合物电池中的可用电量。可用于平板电脑/笔记本电脑、UPS/电池备用系统、医疗设备、手持…

作者头像 李华