一次 RAG 不够怎么办:Anchr 迭代 Agent RAG 的过程
Anchr 最开始只有一条比较传统的 RAG 链路:用户提出问题,系统搜索相关内容,对候选结果重新排序,再把前几个片段交给模型,最后生成带引用的回答。
1 | 用户提问 → 检索 → 重排 → 构造上下文 → 生成回答 |
对大量事实型问题,这条链路已经够用。比如问“文档重新解析后,旧索引怎么处理”,只要知识库里有对应说明,一次检索通常就能找到主要材料,后面只需要把它们整理成一段连贯的回答。
但另一类问题不太一样:
找出几份设计文档里所有与任务恢复有关的内容,再比较进程重启、网络断开和主动取消三种情况下分别会发生什么。
这种问题很少能靠一个现成片段回答。第一次搜索可能只找到 Agent 运行恢复的说明;读完后才发现还涉及异步任务(Task);继续查 Task,又会遇到进程内状态和持久化状态的区别。等到核对部署约束时,对“恢复”的理解可能已经和第一次检索时不同。
下一步搜什么,开始取决于上一步读到的内容。Anchr 的 Agent RAG 就是从这个问题开始的。