Files
bxh/docs/kg-redesign/spatial_kg_design.md

2.0 KiB
Raw Permalink Blame History

空间感知知识图谱设计

设计结论

城市知识图谱不能只存经纬度。new2 的空间能力采用组合方案:

H3 网格索引 + PostGIS 半径过滤 + 路径规划精排 + KG 语义过滤

各层职责:

方法 作用
空间组织 H3 把城市切成多分辨率网格,快速召回附近候选
空间过滤 PostGIS ST_DWithin 做圆形半径过滤,用 ST_Distance 算直线距离
可达距离 高德路径规划 / pgRouting 计算真实步行、驾车、骑行距离与耗时
语义推荐 KG 结合 Concept、Event、Relation、Evidence 解释为什么推荐

查询流程

用户经纬度 + 查询半径 + 语义意图
  -> 计算用户 H3 cell
  -> 取本 cell + 邻居 cells
  -> 查询候选 Place
  -> PostGIS 过滤圆内 POI
  -> 对 topK 调用路径规划
  -> 图谱语义过滤和排序
  -> 生成可解释回答

图谱关系

(:Place)-[:IN_CELL {resolution}]->(:GeoCell)
(:GeoCell)-[:PARENT_CELL]->(:GeoCell)
(:GeoCell)-[:ADJACENT_TO]->(:GeoCell)
(:Place)-[:LOCATED_IN]->(:Area)
(:Place)-[:HAS_CONCEPT]->(:Concept)
(:Place)-[:HAS_EVENT]->(:Event)
(:Place)-[:SUPPORTED_BY]->(:Evidence)

为什么不全量生成 NEAR

如果有 50,000 个 POI两两关系约为

50,000 * 49,999 / 2 = 1,249,975,000

全量 NEAR 会导致关系爆炸,而且真实路径距离还会随道路、入口、施工、交通方式变化。正确方式是:

常用推荐场景:缓存高价值 route_metrics
实时查询场景H3/PostGIS 先缩小候选,再对 topK 算路径

旧项目实测结果

旧项目 FalkorDB 中有效 Place/POI 为 24,868 个。测试点为 106.7135, 26.5744,半径 1km。

全量扫描中位耗时7.072 ms
H3 召回 + 距离过滤中位耗时0.273 ms
相似度排序中位耗时0.656 ms
H3 覆盖率100%
加速比:约 25.9 倍

详见:

  • docs/reports/spatial_retrieval_benchmark_result.md
  • docs/reports/spatial_kg_recommendation_evidence.png