编排 · 2022
迭代检索
写推理的中途发现缺证据,就再查一次,而不是一开始把资料一次取完。
要解决的问题
多跳问题在开头往往还不知道该查什么。一次检索拿到的段落,覆盖不了后面才出现的信息缺口。
相对前一代的变化
多跳检索可以是固定的两步。迭代检索把「生成下一步想法」和「按这个想法再检索」交错起来,直到证据够用或达到步数上限。
做法
IRCoT 在思维链的句子之间插入检索。ITER-RETGEN 则交替做检索和生成,让上一次生成的内容帮助下一次查询。
局限
每多一轮就多一次模型和检索的费用。停止条件如果只看模型自己的判断,它可能在证据不足时提前结束。
在链路中的位置
包在检索和生成外面,是从固定流水线走到 Agentic RAG 的中间形态。
详解
「详解」根据 Datawhale《All-in-RAG》 的 检索进阶技术 改写,有删节和重组,未包含原教程的代码、图片和练习。原教程与本节详解均按 CC BY-NC-SA 4.0 许可提供:使用时需署名并标明修改,不得用于商业目的,再次改编须以相同许可共享。
开头往往还不知道下一跳该查什么
多跳问题的中间实体可能不在原问题里。固定取回若干块,只能覆盖第一次查询能想到的内容。迭代检索把生成和检索交错起来:先写一步推理,发现缺证据,再把这一步变成新查询。
IRCoT 在思维链的句子之间插入检索。ITER-RETGEN 交替生成和检索,让上一轮写出的内容帮助下一轮查询。步数需要上限,否则模型会一直查下去。
查回来的资料还要经过校正
校正检索不假设召回结果可用。它先判断整批结果是相关、含糊还是错误。相关就进入生成;含糊就过滤后再用;错误就改写查询或改道搜索其他来源。这样,低质量材料不会只因为被检索到就进入答案。
判断器本身会错。它可能把有用但措辞不同的资料当成无关,也可能在证据不足时仍然放行。保留每一轮的查询、结果和判断,才能看出答案是在哪一轮开始偏离。
固定循环和自主循环的差别
迭代检索的轮次和停止条件由程序规定,例如最多三轮,或新检索不再带来新证据就停。Agentic RAG 把这个决定交给模型。固定循环更容易预算延迟,也更容易复现;它覆盖不了需要临时改用网页、图谱或数据库的问题。
简单事实问题仍应走一次检索。只有原问题里缺少中间实体、第一轮结果明确不够时,才值得付出下一轮的模型和检索费用。