2.0 KiB
2.0 KiB
空间感知知识图谱设计
设计结论
城市知识图谱不能只存经纬度。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.mddocs/reports/spatial_kg_recommendation_evidence.png