系列:城市管理 Agentic RAG —— 从零搭建城市管理问答系统
本篇:楔子 · 开篇预告
源码:https://gitee.com/Chester_Xue/city-agentic-rag
一、先讲一个每天都在发生的场景
市民打进 12345 热线:「XX 街道暴雨橙色预警,住在那边的独居老人需要重点关注吗?」
电话那头的工作人员,要先打开气象局的预警文件,再翻民政局的老人台账,还得对一下卫健委的应急指引——三个部门、三套资料、三遍人工核对,运气好几分钟,运气不好半小时,最后回答还得自己组织语言。
城市管理的知识散落在几十个部门、成百上千份文档里。信息不缺,缺的是把信息快速、准确、有依据地捞出来回答问题的能力。
这个专栏,就是要把这件事从零做出来:一个城市管理问答系统,你问它,它去翻各部门的资料,再给你一个带来源、可核对的回答。
二、这个专栏要干什么
一句话:手写一个城市管理 Agentic RAG 系统,从零开始,每一行代码都给你看。
不是调个现成框架,不是贴个 API 完事,而是把 RAG 从文档加载到最终问答的每一个环节,都拆开、讲透、写出来。
项目正在进行时,做完一篇、发一篇。这篇楔子先带你把全貌看清楚,接下来的每一篇,都会是一块能跑、能验收的拼图。
三、技术栈
| 环节 | 选型 | 说明 |
|---|---|---|
| 语言 | Python | 全流程手写,不依赖重型框架 |
| 文档加载 | 自研加载器 | txt → 结构化,按部门归集 |
| 切分 | 自研 splitter.py | 中文友好切分:段落 > 换行 > 句号 > 逗号 > 顿号 |
| 向量化 | BAAI/bge-small-zh-v1.5 | 约 100MB、512 维,单机原型够用 |
| 向量库 | Chroma | 部门 → collection 映射,跨部门检索 |
| 大模型 | DeepSeek API(deepseek-chat) | LLMClient 封装,换模型不改业务代码 |
| Agent 化 | 路由 / 反思 / 工具调用 | 从「检索 + 回答」进化到「会思考的问答」 |
选型就一个原则:每一环都可替换、可国产化。嵌入模型留了换装位,大模型接口也留了换装位——今天用 bge + DeepSeek,明天换更大模型、换国产模型,业务代码一行不用动。
四、后面会有什么
接下来的内容,一条一条都会落地:
- 文档加载:怎么把散落在各部门的 txt 收拢成机器能读的、带部门归属的结构化数据
- 切分与向量化:怎么切分中文文本、怎么用嵌入模型转成向量、怎么建索引,让「检索」真的发生
- 基础 RAG:怎么让大模型基于检索结果开口回答,还强制它标注来源,答得有理有据
- 路由:怎么让系统先判断「这个问题该问哪个部门」,再决定去翻谁家的资料——Agent 的第一步
- 反思与工具调用:怎么让回答自己对照来源核查、错了能回头重查,形成 Agentic 的完整闭环
每一篇都按同一个套路交付:
- 要解决的问题——为什么需要这一步,缺了它会怎样
- 可运行的代码片段——不是伪代码,是能直接跑的 Python,关键设计决策讲清楚
- 架构图——每篇配图,从模块到串联一眼看懂
- 验收标准——每篇都有「跑通即验收」的实测问答,能复现才算数
- 踩过的坑——真实翻车记录,帮你绕开我踩过的雷
五、为什么要跟着做一遍
网上 RAG 教程很多,但大多是「三行代码出 Demo」。Demo 和能用的系统之间,隔着文档加载、切分策略、向量库选型、检索质量、Prompt 约束、路由与反思——这些恰恰是教程里一笔带过、实战里最磨人的地方。
这个专栏就是来填这段空白的:每一步都给你代码,给你验收标准,你跟着敲一遍,就能得到一个能真实回答问题的系统。
六、给谁看
- 想系统学 RAG / Agentic RAG,但不想只看 PPT 的开发者
- 做企业知识库、政务问答、智能客服,被「Demo 能用、上线不行」折磨过的人
- 想看懂「Agent 化」到底怎么落地的同学
七、最后说两句
全套源码后续会开源在 Gitee:https://gitee.com/Chester_Xue/city-agentic-rag ,clone 即用,欢迎 star。
第一篇「文档加载」已经在路上,很快与你见面。点个关注不迷路,收藏方便回看;你在实操中遇到任何问题,欢迎评论区留言,翻车经验我陪你一起踩。
城市管理问答系统,从零开始——咱们第一篇见。


88


被折叠的 条评论
为什么被折叠?



