普通 RAG 擅长从文本中取回段落,却很难回答“某商户是否在这栋楼内”“哪些设施位于洪区”“哪条道路可到达这个地址”这类由 geometry 决定的问题。Wherobots 的 Spatial Graph RAG 官方文章提出一条工程路径:用空间操作从地图、影像和传感器数据构建实体关系,用位置锚定的查询取回紧凑子图,再把关系与来源交给模型。它的价值不在于给模型再加一个“图”,而在于使每条空间关系有可复算的来源、谓词和版本。

可核查事实

  • 官方文章将 Spatial Graph RAG 定义为:以 spatial operations 而非 NLP 构建 knowledge graph,并以 location-anchored query 取回子图。
  • 文中将 containment、proximity、adjacency 和 intersection 列为由 geometry 得到的物理世界关系。
  • 文章说明 Graph RAG 在 raw data 和 LLM 之间加入由 nodes 与 edges 构成的知识图层,并取回关系及其证据。
  • 其管线先用 distributed spatial SQL 生成 node/edge tables,再将所有 edge tables union 后写入 Iceberg,用于持久化和增量更新。
  • 官方方案用 GraphFrames 在同一 Spark session 中将 DataFrame node/edge tables 变为可遍历图,而不是要求独立 graph database。
  • 文中列举 GraphFrames 的 connected components、PageRank、triangle count、shortest paths 和 motif finding 等图原语。
  • 官方说明密集城区的相关子图通常只有 10–50 个节点及其连接边。
  • 文章称 WherobotsDB 可用 spatial SQL 生成边表,并与 GraphFrames 在同一 session 使用,避免数据移动和格式转换。
  • 官方把 Overture 的 places、buildings、transportation segments 与 administrative divisions 作为可用于物理世界图的示例数据主题。

这些是该官方文章的架构与示例,不能替代项目中对数据许可、实体匹配、空间误差和关系正确性的实测。

核心机制

空间 Graph RAG 的最小可信单元是一条 edge,而不是一段模型回答。每条 edge 应记录 subject、predicate、object、空间操作、输入要素版本、CRS、容差、计算时间和来源。比如 restaurant --within--> building 需要保存两份 geometry、within 的定义及处理版本;否则图数据库或 LLM 的答案即使正确也无法复核。

将边表以 Iceberg 等可版本化表格式持久化,可把关系生成与查询分开:新增建筑或道路时只重算受影响空间分区;回答请求时从受控版本中取子图。Graph traversal 负责结构模式,空间 SQL 负责构边,两者不能互相替代。

GIS 场景

城市应急团队要回答“哪些养老设施处在洪区、且只能由可能中断的道路到达”。先以设施、建筑、道路、洪区和行政区为节点;用包含、相交、邻近和网络可达性生成边;再以 AOI 和灾害版本为条件取回子图。模型只负责把已取回的关系解释成文字和行动清单,不能自行补出未计算的空间连接。

每次灾害图层、道路状态或设施目录更新后,系统保存输入版本、重算分区、边数变化和抽样 AOI。对关键设施,人工核对卫星影像或现场信息;对模糊的地址或边界相切关系,保留不确定状态而非强制合并实体。

技术路径

先定义节点和关系 schema。节点应有稳定 ID、类型、geometry/reference、时间和来源;边应有谓词、空间操作、参数、证据版本和有效期。将 CRS 转换、距离阈值、边界包含规则和无效 geometry 的处理写进可执行配置,避免同一 near 在不同任务中含义漂移。

再建立构边回归。用已知 containment、相交、相邻、远近和不应连接的测试要素,比较边集合;对大数据按分区重算并记录重算范围。将边表写入版本化存储后,验证 GraphFrames 模式查询返回的节点和边仍可追溯到原始空间证据。

最后限制模型作用域。检索器只返回与 AOI、时间和用户权限匹配的紧凑子图;回答必须引用 edge ID 或来源版本。对影响调度、监管或风险处置的结论,模型只能生成草案,空间关系和业务规则仍需人工审批。

风险边界

空间关系受 CRS、精度、缓冲阈值、边界规则和数据时效影响。withinintersectsnear 的结果不等于因果或法律关系;实体 conflation 也可能把两个现实对象错误合并。小子图能减少上下文噪声,却可能遗漏 AOI 外的重要上游关系,因此取图边界必须透明。

检查清单

  1. 为 node 和 edge 固定 ID、版本、时间、来源和访问范围。
  2. 为每个空间谓词保存 CRS、容差、算法与输入 geometry 版本。
  3. 用正反例回归 containment、intersection、adjacency、proximity 与实体匹配。
  4. 将 edge tables 版本化,并记录每次增量重算的分区和差异。
  5. 核验图模式查询的每条关键边都能回到原始要素和空间操作。
  6. 检索按 AOI、时间和权限裁剪,回答附带 edge/source 证据。
  7. 对高影响结论保留人工审核,不把空间邻近解释为因果或法律事实。

结论

空间 Graph RAG 的可靠性来自可重算关系,不来自更长的提示词。先把空间操作、边表版本和证据子图验收清楚,模型才能在物理世界问题上提供可追溯的辅助,而不是用流畅文字填补地图关系的空白。

参考来源

  1. Wherobots《Spatial Graph RAG: Building Knowledge Graphs From the Physical World》:https://wherobots.com/blog/spatial-graph-rag/