Files
Mars-RAG-paper/实验设计文档.md
2026-04-02 10:24:22 +08:00

15 KiB
Raw Blame History

AreoRAG 实验设计文档

本文档用于指导后续实验执行。论文中的实验数据为估算值,需要通过以下实验流程获取真实数据后回填。每个实验标注了对应论文中的表格/图编号,方便定位回填位置。


一、数据集构建

1.1 MarsRegion-QA主数据集对应 Table I

目标构建一个多源火星空间问答数据集覆盖5个科学重点区域。

步骤

  1. 数据获取

    • 访问 NASA Mars ODE (https://ode.rsl.wustl.edu/) 下载以下5个区域的观测数据
      • Jezero Crater (18.38°N, 77.58°E)
      • Gale Crater (5.4°S, 137.8°E)
      • Utopia Planitia / 祝融着陆区 (25.1°N, 109.9°E)
      • Valles Marineris (中心约 14°S, 294°E)
      • Olympus Mons (18.65°N, 226.2°E)
    • 每个区域下载HiRISE影像元数据、CTX影像元数据、CRISM光谱立方体元数据、MOLA地形数据
    • 祝融号数据从 CNSA 月球与深空探测科学数据与样品管理系统获取
    • Curiosity/Perseverance 数据从 PDS Geosciences Node 获取
  2. 元数据解析

    • 用 Python 解析 PDS4 XML labels提取字段
      • product_id → id
      • instrument_id\mathcal{I}
      • footprint_geometry (GML) → \mathcal{P}_{foot}
      • start_date_time / stop_date_time → $\mathcal{T}_{win}$(再通过 SPICE 转为 $L_s$
      • map_scale / pixel_resolution\ell_{res}
      • spectral_range\mathcal{S}_{band}
    • 工具:pds4_tools, spiceypy(用于时间转换)
  3. Query 构建

    • 设计 200 个查询分为以下类别每类约40个
      • 空间定位查询:如"Jezero Crater 西部三角洲区域有哪些高分辨率影像?"
      • 跨源关联查询:如"该区域的CRISM矿物检测结果与原位测量是否一致"
      • 模糊地理查询:如"祝融号着陆后前三个月向南行驶路线上的高分影像"
      • 时序推理查询:如"Valles Marineris 北壁在 MY34 沙尘暴前后的地貌变化"
      • 跨分辨率推理:如"Olympus Mons 火山口边缘的细节地形与全局地形的关系"
    • 每个查询由 1-2 名行星科学方向的研究人员标注 ground truth 答案
  4. 实体/关系抽取

    • 使用 LLMLlama3-8B-Instruct+ 行星科学 schema 进行实体识别
    • Schema 中定义的实体类型:Crater, Region, MineralSignature, Instrument, ObservationProduct, GeologicFeature, RoverWaypoint
    • 关系类型:spatially_contains, temporally_precedes, spectrally_detects, compositionally_associated, cross_references

预期规模:约 96,000 个实体、53,000 条超边(回填到 Table I

1.2 MarsConflict-50冲突评测集对应 Table I、Table IV

目标:构建 50 个具有已知科学冲突的观测对,用于评测 PICT 的冲突分类精度。

步骤

  1. 文献检索:从以下期刊/会议中检索记录了轨道-原位观测冲突的论文:

    • Journal of Geophysical Research: Planets
    • Icarus
    • Nature Geoscience(火星相关)
    • LPSC (Lunar and Planetary Science Conference) 摘要
    • 关键词:orbital vs in-situ, discrepancy, inconsistency, scale-dependent, mineral heterogeneity
  2. 冲突对标注:每个冲突对标注以下字段:

    • 冲突类型(四分类):noise / instrument-inherent / scale-dependent / temporal-evolution
    • 涉及的数据源(如 CRISM vs. PIXL
    • 观测几何参数差异 \|\Omega_i - \Omega_j\|
    • 时间间隔 $\Delta\mathcal{T}$(以 L_s 度为单位)
    • 科学解释bridging explanation
  3. 预期分布:约 14 个 noise、12 个 instrument-inherent、15 个 scale-dependent、9 个 temporal-evolution即约 72% 为非噪声科学冲突)

1.3 MarsTemporal-QA时序数据集对应 Table I

目标150 个需要时序推理的查询。

步骤

  • 选取已知存在时序变化的火星现象RSL季节性斜坡条纹、沙尘暴覆盖、极冠消退、尘卷风轨迹
  • 每个查询涉及至少两个不同 L_s 时相的观测
  • Ground truth 标注表面变化的类型和方向

二、Baseline 实现

2.1 需要运行的 Baseline共 8 个)

方法 代码来源 说明
Standard RAG LangChain / LlamaIndex 标准 dense retrieval + generation
IRCoT https://github.com/stonybrooknlp/ircot 迭代检索+CoT
RQ-RAG https://github.com/chanchimin/RQ-RAG 查询优化RAG
MultiRAG https://github.com/wuwenlong123/MultiRAG 主要对比对象
HyperGraphRAG https://github.com/... (查找最新开源版本) $n$-ary超图RAG
HyperRAG https://github.com/Vincent-Lien/HyperRAG 超图+MLP检索
TruthfulRAG 根据论文复现 (AAAI 2026) 熵冲突解决
MetaRAG 根据论文复现 元认知策略

2.2 统一配置

  • Base LLM: Llama3-8B-Instruct所有方法统一
  • Embedding Model: gte-large-en-v1.5(统一文本嵌入)
  • 硬件: NVIDIA A100 80GB
  • 每个方法都需要在全部 5 个数据集3 个火星 + 2 个通用QA上跑完

三、实验执行计划

实验 1Overall Performance对应 Table II — Q1

做法

  1. 对每个 baseline 和 AreoRAG在 5 个数据集上分别计算 F1 和 Recall@5
  2. 对火星数据集:使用专家标注的 ground truth 答案进行评测
  3. 对 HotpotQA / 2WikiMultiHopQA使用原始数据集的标准评测脚本

回填位置paper_experiments.md 中 Table II 的所有数值

注意事项

  • HotpotQA/2WikiMultiHopQA 的 MultiRAG 数据可直接引用原论文数值
  • 火星数据集上的所有数值都需要实际跑出来
  • 确保 TruthfulRAG 在火星数据集上的 Recall@5 也要报告(论文中暂标"—"

实验 2鲁棒性实验对应 Fig. 5 — Q2

做法

(a) 空间稀疏性扰动

  1. 在 MarsRegion-QA 的超图上,随机删除 30%/50%/70% 的超边
  2. 删除时确保每个查询对应的答案至少有一条路径可达
  3. 在扰动后的超图上运行 AreoRAG、MultiRAG、HyperRAG
  4. 记录每个扰动级别下的 F1

(b) 冲突强度扰动

  1. 向 MarsRegion-QA 注入 30%/50%/70% 的合成冲突三元组
  2. 合成方法:复制已有观测记录,随机替换矿物名称或坐标值
  3. 在扰动后的数据上运行 AreoRAG、MultiRAG、TruthfulRAG
  4. 记录每个扰动级别下的 F1

回填位置paper_experiments.md 中 Fig. 5(a-d) 的描述文字中的所有数值

画图4 个子图x 轴为扰动比例 (0%, 30%, 50%, 70%)y 轴为 F1

  • Fig 5(a): MarsRegion-QA 空间稀疏性,对比 AreoRAG vs MultiRAG vs HyperRAG
  • Fig 5(b): MarsTemporal-QA 空间稀疏性
  • Fig 5(c): MarsRegion-QA 冲突注入,对比 AreoRAG vs MultiRAG vs TruthfulRAG
  • Fig 5(d): MarsTemporal-QA 冲突注入

实验 3消融实验对应 Table III — Q3

做法:在 MarsRegion-QA 和 MarsTemporal-QA 上,运行以下 8 个配置:

配置 HySH 双曲嵌入 Spatial OEM PICT 冲突分类 交互熵
Full
w/o HySH 用MLG
w/o Hyperbolic ✓(欧氏超图)
w/o Spatial OEM 标准Einstein
w/o PICT 用MCC
w/o 冲突分类 ✓(统一过滤)
w/o 交互熵 用ΔH_p
w/o Both

每个配置记录 F1、QT在线查询时间、PT离线预处理时间

回填位置paper_experiments.md 中 Table III 的所有数值

关键实现细节

  • "w/o HySH (use MLG)":将超图替换为 MultiRAG 的线图构建方式
  • "w/o Hyperbolic":保持超图拓扑不变,但在欧氏空间中做嵌入(用标准 TransE 类方法)
  • "w/o Spatial OEM":用标准 Einstein midpoint即 Eq.13 中令 $p=0$
  • "w/o PICT (use MCC)":用 MultiRAG 的互信息熵一致性检查 + 多级置信度
  • "w/o 冲突分类":检测到冲突后统一降低置信度,不区分四类
  • "w/o 交互熵":用 TruthfulRAG 的 $\Delta H_p$(参数知识 vs 检索知识的熵差)

实验 4冲突保留评测对应 Table IV — Q4

做法

  1. 在 MarsConflict-50 上运行 AreoRAG 和 4 个 baseline
  2. 对每个方法,记录以下指标:
    • CCA冲突分类准确率:只有 AreoRAG 能报告此指标(其他方法不做分类)
    • CPR科学冲突保留率:在 36 个非噪声冲突中,有多少被保留在最终 context 里
    • NRR噪声拒绝率:在 14 个噪声冲突中,有多少被正确过滤
    • F1:在含冲突的查询上的问答准确率

CCA 的计算方法(仅 AreoRAG

  • 对 50 个冲突对PICT 输出四分类标签 \hat{c}
  • 与专家标注的 ground truth 标签对比,计算 4-class accuracy
  • 同时绘制混淆矩阵(用于论文分析段落中描述 inst vs scale 混淆)

CPR 的计算方法(所有方法):

  • 检查最终传入 LLM 的 context 中,标注为 inst/scale/temp 类型的冲突观测对是否 两端 都被保留
  • 如果冲突中有一端被过滤(如 MultiRAG 的 MCC 因置信度低而剔除),则该冲突对算未保留

回填位置paper_experiments.md 中 Table IV 的所有数值

实验 5效率分析对应 Table V — Q5

做法

  1. 记录每个方法的两类时间:
    • QT查询时间:从接收查询到返回答案的平均时间(秒),取 200 次查询的均值
    • PT预处理时间:知识图谱/超图的离线构建时间(秒),一次性开销
  2. 在 MarsRegion-QA 和 MarsTemporal-QA 上分别测量

回填位置paper_experiments.md 中 Table V 的所有数值

注意确保所有方法都在相同硬件上测量A100 80GB避免测量偏差

实验 6Case Study对应 Table VI

做法

  1. 选取 Jezero Crater 西部三角洲矿物冲突作为示例(已在论文中写好)
  2. 实际运行 AreoRAG 和 MultiRAG记录
    • HySH 模块输出的超边绑定结果和嵌入径向深度
    • PICT 模块输出的冲突检测结果、\mathcal{H}_{inter} 值、分类结果
    • 最终生成的答案文本
  3. 用实际输出替换论文中的估算值

回填位置paper_experiments.md 中 Table VI 的具体数值(如 $\mathcal{H}{inter}$、$C{triage}$、径向深度等)

实验 7超参数敏感性分析论文中未单独列表但在分析中提及

做法:在 MarsRegion-QA 上扫描以下关键超参数:

超参数 扫描范围 说明
$K$(双曲曲率) \{-0.5, -1.0, -2.0, -5.0\} 影响尺度层级的分辨能力
$p$OEM 幂次) \{0, 1, 2, 3, 5\} 0=标准Einstein, 越大越偏向高分辨率
$\epsilon$(冲突检测阈值) \{0.1, 0.2, 0.3, 0.5, 0.8\} 越小则检测越敏感
$\beta$(科学冲突提升系数) \{0.05, 0.1, 0.2, 0.5\} 过大可能引入噪声
$\alpha$(权威性权重) \{0.0, 0.25, 0.5, 0.75, 1.0\} 同 MultiRAG 的 Fig. 7

输出:对每组超参数记录 F1绘制折线图。选取最佳值写入论文的超参数设置段落。


四、回填清单

完成实验后,按以下清单逐项回填 paper_experiments.md 中的估算数据:

  • Table I6 个数据集的 Entities / Hyperedges / Queries 精确数值
  • Table II5×9 = 45 个 F1 和 Recall@5 数值5个数据集 × 8个baseline + AreoRAG
  • Fig. 5(a-d)4×4×3 = 48 个 F1 数值4 个扰动级别 × 4 个子图 × 3 个方法)
  • Table III8×6 = 48 个数值8 个消融配置 × 2 个数据集 × 3 个指标)
  • Table IV5×4 = 20 个数值5 个方法 × 4 个指标)
  • Table V5×4 = 20 个数值5 个方法 × 2 个数据集 × 2 个时间指标)
  • Table VICase Study 中的精确 $\mathcal{H}{inter}$、$C{triage}$、r 等值
  • 超参数分析:约 25 个 F1 值 + 对应的最优超参数确认

总计约 200+ 个数据点需要回填。


五、实验优先级排序

考虑到时间成本,建议按以下顺序执行:

  1. P0必须先做数据集构建1.1-1.3),这是所有实验的基础
  2. P1核心实验:实验 1 (Table II) + 实验 3 (Table III) — 证明方法有效性
  3. P2关键卖点:实验 4 (Table IV) — 这是论文最独特的贡献点
  4. P3完善论证:实验 2 (Fig. 5) + 实验 5 (Table V)
  5. P4锦上添花:实验 6 (Case Study) + 实验 7 (超参数)

六、关键技术实现提示

6.1 双曲空间嵌入

# 使用 geoopt 库实现 Lorentz 模型
import geoopt

# 创建 Lorentz 流形
manifold = geoopt.Lorentz(k=-1.0)

# 根据分辨率计算径向深度 (Eq. 6)
import torch
def resolution_to_radial_depth(ell_res, ell_max, K=-1.0):
    g = -torch.log(ell_res / ell_max)
    r = (1.0 / (-K)**0.5) * torch.cosh((-K)**0.5 * g)
    return r

# 平行传输对齐 (Eq. 8)
# geoopt 提供 manifold.transp(x, y, v) 方法

6.2 交叉源交互熵

# 计算 H_inter (Eq. 14)
def cross_source_interaction_entropy(model, tokenizer, query, path_i, path_j, top_k=10):
    # 分别计算三个熵
    H_joint = compute_token_entropy(model, tokenizer, query, path_i + path_j, top_k)
    H_i = compute_token_entropy(model, tokenizer, query, path_i, top_k)
    H_j = compute_token_entropy(model, tokenizer, query, path_j, top_k)
    H_inter = H_joint - 0.5 * (H_i + H_j)
    return H_inter

def compute_token_entropy(model, tokenizer, query, context, top_k):
    # 拼接 query + context, forward pass, 取 top_k logits
    # 对每个 token 位置计算 -sum(p * log2(p))
    # 返回 token 平均熵
    ...

6.3 冲突分类器

# 轻量 MLP 分类器 (Eq. 19)
import torch.nn as nn

class ConflictClassifier(nn.Module):
    def __init__(self, input_dim):
        super().__init__()
        # input_dim = 1 (H_inter) + 1 (||Omega_i - Omega_j||) + 1 (log_res_ratio)
        #           + 1 (Delta_T) + 1 (rho_auth) + hidden_dim (h_conf)
        self.mlp = nn.Sequential(
            nn.Linear(input_dim, 256),
            nn.ReLU(),
            nn.Linear(256, 128),
            nn.ReLU(),
            nn.Linear(128, 4)  # 4 classes: noise, inst, scale, temp
        )

    def forward(self, z_conf):
        return self.mlp(z_conf)

6.4 Spatial OEM 聚合

# Spatial OEM (Eq. 13)
def spatial_oem(embeddings, weights, p=2, K=-1.0):
    # embeddings: [n, d+1] on Lorentz manifold
    # weights: [n] query-relevance weights
    radial_depth = embeddings[:, 0]  # x_0 component
    phi_res = radial_depth ** p
    lorentz_factor = embeddings[:, 0]  # lambda_i = x_{i,0}

    combined_weights = weights * phi_res * lorentz_factor
    numerator = (combined_weights.unsqueeze(-1) * embeddings).sum(dim=0)
    denominator = combined_weights.sum()
    pre_proj = numerator / denominator

    # Reproject onto H_K^d
    result = lorentz_project(pre_proj, K)
    return result