Initial travel knowledge graph release

This commit is contained in:
2026-06-09 09:56:26 +08:00
commit 5f061295d8
402 changed files with 103877 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
# 空间感知知识图谱设计
## 设计结论
城市知识图谱不能只存经纬度。new2 的空间能力采用组合方案:
```text
H3 网格索引 + PostGIS 半径过滤 + 路径规划精排 + KG 语义过滤
```
各层职责:
| 层 | 方法 | 作用 |
|---|---|---|
| 空间组织 | H3 | 把城市切成多分辨率网格,快速召回附近候选 |
| 空间过滤 | PostGIS | 用 `ST_DWithin` 做圆形半径过滤,用 `ST_Distance` 算直线距离 |
| 可达距离 | 高德路径规划 / pgRouting | 计算真实步行、驾车、骑行距离与耗时 |
| 语义推荐 | KG | 结合 Concept、Event、Relation、Evidence 解释为什么推荐 |
## 查询流程
```text
用户经纬度 + 查询半径 + 语义意图
-> 计算用户 H3 cell
-> 取本 cell + 邻居 cells
-> 查询候选 Place
-> PostGIS 过滤圆内 POI
-> 对 topK 调用路径规划
-> 图谱语义过滤和排序
-> 生成可解释回答
```
## 图谱关系
```text
(: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两两关系约为
```text
50,000 * 49,999 / 2 = 1,249,975,000
```
全量 `NEAR` 会导致关系爆炸,而且真实路径距离还会随道路、入口、施工、交通方式变化。正确方式是:
```text
常用推荐场景:缓存高价值 route_metrics
实时查询场景H3/PostGIS 先缩小候选,再对 topK 算路径
```
## 旧项目实测结果
旧项目 FalkorDB 中有效 Place/POI 为 24,868 个。测试点为 `106.7135, 26.5744`,半径 1km。
```text
全量扫描中位耗时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`