“ chatglm - rlhf 今天arxiv挂了篇论文,感兴趣的可以瞅瞅。
https://arxiv.org/abs/2404.00610
https://github.com/chanchimin/RQ-RAG
结论:端到端的方式训练了一个7B Llama2模型,能够通过改写、分解和澄清歧义来动态地 改进搜索query,提高RAG系统整体效果。
- 数据集构造
给定原始数据集的输入-输出对(Xorigin, Yorigin),简而言之,数据集构建可以看作如下公式:
其中为一个特殊标记,,里面的type表示具体操作,例如,改写,分解,消除歧义;[Di1, Di2, . . . , Dik]表示召回的文档。
为了保证效率,这个过程当然交给chatgpt咯。大概流程分为3步:
- 首先将收集到的池中的任务分为前面提到的三个类别。这一步很简单,因为每个数据集都对应一个特定的数据类型。
- 对于每种数据集类型,我们首先使用ChatGPT和预定义的提示模板来生成准确的查询。然后,使用这个查询来搜索来自外部数据
- 然后,ChatGPT根据优化后的查询及其相应的上下文生成更新的响应。通过重复这个过程,总共积累了大约40k个实例。
“ 文章附录提供了构造多轮数据的提示词、问题分解的提示词、问题消歧的提示词
- 模型训练
没啥说的,跑呗
- 采样策略
在每个时间步,模型可以选择改写、分解或消除给定查询的歧义,也可以选择直接生成响应。鉴于这种内在特性,设计了一种树解码策略。然而,使用不同的查询来搜索会产生不同的检索上下文,从而导致 不同的最终答案。所以,如何采样最合适的路径是关键部分
- 结果
- 单跳qa
-
多跳qa