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