下一次查什么,出发前写得好吗?
第二次查什么,要等第一次看到 Front Row 才知道:这时候,检索成了一个依赖观察的动作。
这一页为什么在这里
第二站的另一半:有的问题一次查不到。用一个两跳问题让学生看到,下一次查什么取决于上一次查到了什么,出发前写不好。这为“把何时查、查什么交给模型”提供了动机,也为 Q16 的反问铺路:什么时候其实不需要模型临时决定?
上屏
- 第 1 步:问题:除了 Apple Remote,还有什么设备能控制它最初配套的那个程序?下面一行查询链:Apple Remote → 配套的程序 → 另一种控制设备(两个空位)。角标 2022。
- 第 2 步:第一个空位填上 Front Row;一行:查 Apple Remote → 最初配套 Front Row。
- 第 3 步:第二个空位填上键盘功能键;一行:查 Front Row(软件)→ 也可以用键盘功能键控制。
讲
第 1 步 · 教师可说的话
缺少的中间对象
2022 年,有人这样问模型:除了 Apple Remote,还有什么设备能控制它最初配套的那个程序?你会发现,第二次该搜什么,现在根本写不出来。
第 2 步 · 教师可说的话
观察揭示Front Row
先查 Apple Remote,得知它最初配套的程序叫 Front Row。第一个空位填上了。
第 3 步 · 教师可说的话
再查得到控制设备
有了 Front Row,第二次才知道搜什么。下一步查什么,取决于上一步看到了什么。这时候检索不再是管线里固定的一步,而是一个依赖观察的动作。
本页衔接
可是,多跳问题就一定要交给 agent 自己决定吗?
连续教师稿原文
2022 年,有人这样问模型:除了 Apple Remote,还有什么设备能控制它最初配套的那个程序?你会发现,第二次该搜什么,现在根本写不出来。
先查 Apple Remote,得知它最初配套的程序叫 Front Row。第一个空位填上了。
有了 Front Row,第二次才知道搜什么。下一步查什么,取决于上一步看到了什么。这时候检索不再是管线里固定的一步,而是一个依赖观察的动作。
完整推理
两跳依赖。 问题里只出现 Apple Remote,没有出现要找的那个程序的名字。第一次查询只能查 Apple Remote,得到“它最初是为 Front Row 设计的”;有了 Front Row 这个名字,第二次查询才能指向 Front Row 软件,得到“也可以用键盘功能键控制”。第二次查什么,出发前写不出来。
这就是“检索成为动作”的动机。 第一站的规则是每题查一次、取前几段。对这类问题,一次检索拿不到第二跳需要的名字;如果让模型在查到第一条结果后决定下一次查什么,就能接下去。2022 年的 ReAct 把这种“想一步、查一步、看结果、再想”的循环写成提示,让模型自己交替输出推理和检索动作(它的证据见 Q17)。
这个例子从哪来。 它是 ReAct 论文图 1 里的 HotpotQA 问题,课件按 EMNLP 2024 语言 agent 教程的讲法重画。原始轨迹里还有一次查 Front Row 没命中、改查“Front Row (software)”的名称消歧,所以“两跳”不等于“两次工具调用”。
别把轨迹当成内心。 模型写出的“想法”是它生成的文字,可以帮它组织下一步,但不能当作模型内部推理的完整记录。
学生可能的回答与误区
- 第 1 步|“一次查询写长一点,把两步都写进去就行。”第二步要查的名字在第一步结果出来之前不知道;写长的查询只会更像第一跳。
- 第 2 步|“Front Row 是模型想出来的。”它来自检索到的材料(观察)。推理决定下一步查什么,观察提供下一步查询的对象。
- 第 3 步|把“边想边搜”的那段文字当成模型真实的内部推理过程。
教学构造与出处
- 教学构造:查询链的画法(两个空位、两步填上)是课件做的。
- ReAct · 图 1 与 §3:Yao 等,arXiv 2210.03629v3,ICLR 2023;HotpotQA 上的 Apple Remote 例子,以及“推理—行动—观察”的设置。来源支持。
- EMNLP 2024 教程 · Language Agents: Reasoning, Memory, and Planning:印刷页 33–35(PDF 第 13 页起);课件按它的讲法重绘,原轨迹含一次名称消歧。