论文信息

标题: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 的区别

不同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 数量。

核心算法

核心算法

  1. 将多个文档通过嵌入模型转为向量后,通过 K-Means 聚类算法聚类成 kk 个组。
  2. 遍历每个组进行随机采样,组合成一个子集,总共采样 mm 个子集。
  3. 并行对 mm 个子集执行:
    1. 使用 smaller MDrafer\mathcal{M}_{Drafer} 从子集中生成草稿(draft) α\alpha 和理由(rationale) β\beta
    2. 使用 larger MVerifier\mathcal{M}_{Verifier} 计算每个草稿的置信度得分 ρ\rho
  4. 选择最高得分的答案作为最终答案。

实验

数据集:TriviaQA (unfiltered),MuSiQue,PubHealth,ARC-Challenge。

框架:VLLM

使用的模型及实验结果可参见下图:

实验结果

另外通过消融实验可以得到的两个 Insight:

  1. 多样性和减少冗余在检索中显著提高草稿质量。
  2. 自我一致性和自我反省的评分方法能有效提升草稿质量。

Insights

  1. 分而治之的思想,对整个文档通过聚类(cluster)抽取互斥子集(distinct subsets),从子集中生成不同的草稿(draft),然后通用大模型不做推理,而只做 check,选择一个最合适的结果输出。此过程中有两个 " 分 ":
    1. 将文档切分后,要检索的内容变小了。
    2. 使用小 LM 来执行推理,推理速度变快,推理所需的 input tokens 变少,整体而言效率变高。