Speculative RAG:Google 提出的多草稿 RAG “降本增效”
论文信息
标题:Speculative RAG: Enhancing Retrieval Augmented Generation through Drafting
时间:2024-07-11
来源:arXiv
论文: https://arxiv.org/pdf/2407.08223
网站: https://github.com/liambarstad/speculative_rag
一句话总结:使用小型专家 LM 对 prompt 先生成多个草稿(drafts),再用大型通用 LM 进行验证、选择。
Speculative RAG 与其他 RAG 的区别
(a)Standard RAG:将所有文档合并到提示中,增加了输入长度,减慢了推理速度。
(b)Self-Reflective RAG:需要对 LM 进行专门的指令微调,以具备自我反思能力。
(c)Corrective RAG:使用外部评估检索器来提高文档质量,仅关注上下文信息,不提高推理能力。
(d)Speculative RAG:利用一个 larger Generalist LM 去 verify 多个 smaller Specialist LM 生成的 drafts。其中每个 draft 都是由文档划分成不同的子集中产生的。目的就是提供答案多样性的同时,还能减少每个 draft 的 input tokens 数量。
核心算法
- 将多个文档通过嵌入模型转为向量后,通过 K-Means 聚类算法聚类成 个组。
- 遍历每个组进行随机采样,组合成一个子集,总共采样 个子集。
- 并行对 个子集执行:
- 使用 smaller 从子集中生成草稿(draft) 和理由(rationale) 。
- 使用 larger 计算每个草稿的置信度得分 。
- 选择最高得分的答案作为最终答案。
实验
数据集:TriviaQA (unfiltered),MuSiQue,PubHealth,ARC-Challenge。
框架:VLLM
使用的模型及实验结果可参见下图:
另外通过消融实验可以得到的两个 Insight:
- 多样性和减少冗余在检索中显著提高草稿质量。
- 自我一致性和自我反省的评分方法能有效提升草稿质量。
Insights
- 分而治之的思想,对整个文档通过聚类(cluster)抽取互斥子集(distinct subsets),从子集中生成不同的草稿(draft),然后通用大模型不做推理,而只做 check,选择一个最合适的结果输出。此过程中有两个 " 分 ":
- 将文档切分后,要检索的内容变小了。
- 使用小 LM 来执行推理,推理速度变快,推理所需的 input tokens 变少,整体而言效率变高。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 天澄拾光!
评论
ArtalkGitalk