什么是 Memory?

Memory 指的是 UltraRAG 在每一轮推理中自动记录并存储的中间变量,以供后续轮次访问。它让开发者无需手动管理循环中的状态历史,即可“回看”之前任意一轮的结果。例如:
  • 第 1 轮中,模型使用初始 q_ls 检索出 ret_psg,长度为 [500]
  • UltraRAG 会自动将其封装为 memory_ret_psg = [[...500 passages...]]
  • 第 2 轮再次检索得到一个新的 [500] 结果,memory_ret_psg 就会更新为 [[...第一轮...], [...第二轮...]],维度为 [2, 500]
只要在某轮中变量 x 被定义,UltraRAG 都会自动创建 memory_x 变量,记录历史值。

如何使用 Memory?

你可以在 Tool 中像下面这样访问历史信息:
# 遍历所有轮次的历史检索结果
for round_ret_psg in memory_ret_psg:
    # 遍历该轮每个样本的 passage(通常为 List[str])
    for passage in round_ret_psg:
        print(passage)
或者访问历史思维链:
# 访问第 2 轮某条样本的历史推理句
cot_sentence = memory_q_ls[2][sample_idx]
UltraRAG 的 Memory 模块本质上是一个自动化的中间变量历史记录系统,大大简化了开发者构建多轮逻辑时的数据状态管理问题。只需在 Tool 中声明 memory_x,即可获取某变量 x 所有历史轮的值。