自然语言 GIS 最容易演示出一张地图,也最容易在第二次提问时失去依据。2026 年 7 月 16 日,GeoAI-QGIS 仓库的最终发布提交把这类系统拆成浏览器、FastAPI、MySQL 任务表、独立 Worker、LangGraph、GIS 工具和结果图层等环节。它的价值不在于把每个空间问题都交给模型回答,而在于把一次问答变成可认领、可检查、可下载、可回放的空间作业。

可核查事实

  • GeoAI-QGIS 仓库创建于 2026 年 6 月 22 日,最终发布提交时间为 2026 年 7 月 16 日。

  • 官方 README 说明浏览器提交空间问题后,FastAPI 将任务持久化到 MySQL,独立 Worker 执行处理。

  • 仓库把多轮会话放在同一 conversation_id 下,可继承区域、POI 类型、距离和上一次结果。

  • 它使用本地 BGE Embedding 与 Chroma 做工具说明和约束检索,并可选 BGE Reranker。

  • README 说明 Redis 用于镜像 SSE 事件、Worker 租约和成功结果缓存;不可用时可退回 MySQL、JSONL 进度文件和本地心跳。

  • 系统可交付地图图层和 GeoPackage 下载,并提示失败原因。

  • 南京默认数据链路优先使用本地标准化离线包,代码仓库不包含运行数据。

  • README 公布的离线回归为 75 项测试通过;BGE 检索集 6 个案例的 Recall@4 为 0.917、MRR 为 1.000。

核心机制:把对话拆成状态,把计算拆成作业

官方 README 将浏览器请求写入 MySQL 的 PENDING 任务,再由 Worker 原子认领;Worker 在会话 LangGraph 中做上下文解析、RAG 检索、规划校验、QGIS/Python 工具执行、确定性质量检查和结果总结。这个次序很关键:模型只负责理解和规划,任务状态、空间计算和最终图层都应有独立记录,不能把一段自然语言总结当成唯一产物。

README 的实现口径还写明:FastAPI把任务持久化到MySQL,由独立Worker处理。本地BGE Embedding与Chroma用于检索工具说明和约束;Redis镜像SSE事件、维护Worker租约并缓存成功结果,可退回MySQL和JSONL进度。把这些事实拆分为可观察的服务边界,才能在缓存或消息层短暂不可用时,辨明任务是否真实完成。

同一 conversation_id 可以继承区域、POI 类型、距离和上一次结果,因此“改成 2 公里”应被转成带来源的参数变更,而不是重新猜测上一轮口径。仓库还以 Pydantic 与工作流 Schema 双重校验、目录白名单、超时与重试、道路查询预算和幂等请求作为工程保护;这些机制共同决定一次多轮分析能否被审计和安全重跑。

GIS 场景:离线底图优先,结果必须带时效标签

README 给出的南京数据优先级是缓存命中、本地标准化离线包、可选江苏 OSM PBF,最后才是受控网络回退。离线包让常见任务不依赖 Nominatim、Overpass 或矢量瓦片,也意味着结果描述必须带上数据来源与快照时间。它明确提示默认快照不是实时路网,也不是测绘成果;将这一限制写入图层、下载文件和回答正文,才能避免用户把复现性误读为实时性或权威性。

道路分析只取 OSM 的 motorwaytrunkprimarysecondary 及其 link,并排除住宅道路和支路。因此“主要道路长度”只是该规则下的可重复指标,不等于城市全部道路里程。仓库列出的任务包括 POI 服务区、栅格密度、最近道路距离、设施选址、盲区和 500/1000/2000 米多环覆盖;每一类都应连同数据快照、筛选规则、坐标参考和单位一并交付。

技术路径

  1. 将提问、参数、conversation_id、数据快照和输出资产 ID 写入任务记录,确保每轮修改可回放。

  2. 让 Worker 原子认领任务;将排队、执行、失败和完成状态通过 SSE 呈现,但以数据库记录为准。

  3. 把 RAG 检索限制在工具说明与任务约束,规划结果必须经过 Schema 校验,再调用 QGIS/Python 工具。

  4. 将离线 OSM 包作为默认输入,并在图层和下载文件标记快照日期、道路筛选规则和非实时边界。

  5. 输出 GeoPackage、可视化图层、失败原因和质量检查记录;不要只交付聊天文本。

  6. 用固定案例回放检验改动。官方示例已报告南京地铁站密度任务处理 260 个站点和 308 个网格,以及高校周边 1 km 主干道路长度为 923.84 km;复刻时仍要在自己的数据包和版本上重新验算。

检查清单

  • 每个多轮请求是否能定位到原始参数、上一轮结果和数据快照?

  • MySQL 中的状态是否与 SSE 展示和图层资产一致?

  • RAG、规划和空间工具调用是否有独立日志与校验结果?

  • 离线 OSM 的道路类别、快照时间和非实时限制是否写入交付物?

  • GeoPackage 与地图图层是否能被独立打开,并复现指标?

风险边界

仓库中的回归和性能数字来自其作者给出的离线环境,不能直接承诺另一座城市、另一份 PBF 或另一套硬件的速度与准确性。多轮上下文也会放大前一轮口径错误的传播,因此每次继承参数都要可见、可改、可追溯。外部 OSM 刷新、模型供应商与网络回退应保持显式启用,不能把一次在线成功误当成稳定基线。

资料依据

本文依据 GeoAI-QGIS 官方仓库 的 README、最终发布提交 撰写。系统架构、数据链路、道路筛选、回归指标与案例均来自仓库一手材料;任务设计与验收建议为工程解读。

结论

自然语言 GIS 的可靠交付不取决于回答写得多流畅,而取决于提问、状态、数据、空间运算和图层能否共同回放。先把这些证据链做成默认产品,再扩大多轮对话和 Agent 能力。