微软推出了一种更智能的检索系统:CoRAG(Chain-of-Retrieval Augmented Generation, 链式检索增强生成)。
它利用动态检索过程,使得模型能够:
逐步检索信息并进行调整;
根据需要重新制定查询;
自主决定需要多少次检索步骤。
以下是 CoRAG 的工作原理及其训练方式的详细信息:
CoRAG 框架包含三个主要部分:
生成检索链
在这些增强数据集上训练模型
调整测试时使用的计算资源
CoRAG 使用拒绝采样方法来自动生成检索链
CoRAG 不是一次性检索所有信息,而是将搜索拆分为更小的步骤。
它生成子问题及其对应的子答案。
模型为每个子问题检索文档并提供答案,然后才进入下一步。
这一过程持续进行,直到答案正确或步骤耗尽。
最终,选择最有可能产生正确答案的最佳检索链。
使用 CoRAG 进行训练
一旦 CoRAG 创建了自己的中间检索步骤,它会在这些增强数据集上微调 LLM,帮助模型同时学习执行三个任务:
预测下一个子问题(学习如何拆解复杂查询)
预测子答案(在每一步找到有用的信息)
预测最终答案(将所有信息整合起来)
调整测试时的计算资源
为了控制计算资源,用户可以:
调整最大检索步骤数
更改最佳 N 选取样本的检索链数量
修改树搜索的搜索深度和展开次数
CoRAG 的结果
CoRAG-8B 在多步骤问答任务和 KILT(知识密集型任务)基准测试中领先,甚至超越了更大的模型。
检索链增强 相比传统的 RAG 是一大优势。
扩展测试时的计算资源 能提高性能,但有一个限制。模型需要学会在何时停止检索。
即使使用较弱的检索器,当使用更多的测试时计算资源时,性能依然得到提升。
Best-of-N 采样 对于复杂查询效果很好,而简单的策略则更适合较简单的任务。
论文地址:
https://arxiv.org/abs/2501.14342