type
status
date
slug
summary
tags
category
icon
password
URL
preview
notion image
 

1. Background & Motivation

 
检索强化的语言模型(Retrieval-augmented language models, RALMs)在知识密集型任务上取得了很好的性能,通过在文档中检索与询问相关的文档片段,并将其拼接在输入之前,在不更新模型参数的情况下能够显著提升模型性能,这样的方法对于一些黑盒语言模型也同样使用。
但是,这样直接将文档中抽取到的相关文档片段直接拼接到输入前的方法也有一些局限性。
  1. 花费增加:检索到的文档一般比输入包含更多的内容,需要消耗更多的token
  1. 信息丢失的问题:即使语言模型拥有了较长的max token length, 语言模型难以充分利用检索得到文本信息
    1. Lost in the middle: How language models use long contexts.
      研究了语言模型如何使用长上下文的问题。作者通过分析语言模型在需要识别输入上下文中的相关信息的任务(如多文档问题回答和键值检索)上的表现,发现模型在相关信息出现在输入上下文的开始或结束时的表现最好,而当需要访问长上下文中间的相关信息时,性能显著下降
  1. 不相干信息扰乱语言模型推理:从海量文档中抽取出来的大量信息中会包含一些无用/不相干信息,这些信息会迷惑大模型
    1. related paper
      1. When not to trust language models: Investigating effectiveness and limitations of parametric and non-parametric memories.
      1. Large language models can be easily distracted by irrelevant context.
notion image
💡
在这样的情况下,有没有一种方法,可以提升检索效率,让语言模型花费更少的token(Efficnecy)进行更高效的推断(Effectivity),引导语言模型生成正确的答案 ?
 
 

2. Contribution

 
  1. 提出RECOMP (Retrieve, Compress, Prepend), 为RALMs加入了一中间步,利用压缩的方法提升LMs推断的效率
    1. extractive compressor:从抽取的文档中选取有用的句子
    2. abstractive compressor:从多个文档中生成总结摘要
      1. 若抽取的文档不相干或没用返回空的摘要
  1. RECOMP提出的两种压缩方法将检索内容最低压缩到原内容的6%并且性能上超过了用原检索内容的方法。
  1. 在两个选取的任务上:
    1. Language Modeling上两种训练过的压缩器能实现25%的压缩比, 并且性能下降最小
    2. QA: 训练的最好的模型可以将token数量压缩到原始token的5-10%, 相对性能下降不超过10%
 

3. Method

 

3.1 RECOMP Formulation:

问题形式化定义:
  • 给定输入序列 , 目标输出序列 , 一系列共 个抽取到的文档
    • RECOMP 将于 相关的来自抽取文档 的核心内容总结为 ,使得 相比 耗费更少的tokens
 
  • RECOMP结构由两个模块构成:
    • 压缩器
      语言模型LM
 
  • Extractive Compressor 给定来自输入文档集 个句子 。 训练一个dual encoder模型 将句子 和输入序列 嵌入成固定维度的 embeddings。embedding内积的值作为有用性metric
 
  • Abstractive Compressor
    • 训练一个encoder-decoder模型 作为抽象压缩器, 将输入序列 和 拼接起来的抽取文档集合 作为输入, 并输出总结内容
       

3.2 Compressors building

构建两个compressor, 从检索得到的内容中得到一些简要和有用的文本
 

3.2.1 Extractive Compression

抽取压缩可以看成一个排名问题, 对于检索的文档训练一个reranker
  1. 从更细粒度的角度入手(句子),而初始检索得到的内容为(段落)
  1. 语句的评估标准是将句子输入大模型进行下游任务时是否有用
 
训练针对language modeling任务的compressor的过程
  1. 模型用contriever的ckpt初始化。
  1. 用对比损失在language modeling任务上训练extractive compressor, 对于每一个输入查询 , 从检索到的文档中辨识出一个正例和反例(句子)。
  1. 将具有最高score的句子看作正例,选取最多5个句子,每个句子的contriever对数相似度都低于正例分数阈值
 
 
notion image
 
训练针对QA任务的compressor的过程
notion image
大体与language modeling任务训练过程相似, 但是分数会评估将预选的句子拼接到输入后, LM是否会产生正确的答案
 
对比损失函数用于最大化正例对 的相似度并最小化反例对 的相似度
 

3.2.2 Abstractive compression

抽象压缩器的训练是通过从大语言模型中生成训练数据集,过滤生成的数据,并从过滤后的数据集中训练一个编码解码模型。通过蒸馏LLM来获取压缩器查询聚焦总结能力。
训练数据生成
对于language modeling任务, 手动构建4个prompt用于总结evidence文件集 , 具体来说,对于输入 , 检索得到的文档集 和提示词 将这些输入给GPT-3.5 用于生成总结
数据过滤
有选择性的数据增强, 降低将不相关数据加到输入前的风险
Language modeling训练的过程
 
notion image
QA task 训练的过程(single prompt)
notion image

4 Experiment

在language modeling和open-domain QA两个任务上评估模型性能
metric:
  1. effectiveness: task performance
  1. efficiency: token数量
 
 

Language Modeling

  • dataset: WikiText-103
  • LMs: GPT2(117M), GPT2-XL(1.5B), GPT-J(6B)
  • 训练的时候选GPT2为base model,评估的时候测量训练后的compressor能力是否能transfer到GPT2-XL和GPT-J上
  • 用BM25从Wikipedia corpus中进行检索, 获得检索数据集
  • task performance metric: perplexity
 

Open-Domain QA

  • dataset:Natural Questions (NQ),TriviaQA,HotpotQA
  • task performance metric: Exact Match(EM) 和 F1(token-level)
 

Baselines & Oracles

两种启发式token和phrase层面compression方法:
BoW
将检索到的文档转换为有序的单个词,并将它们连接在一起。
Named Entities (NE)
命名实体(NE)从检索到的文档中提取一个有序的命名实体列表并将它们连接起来。
 
  • Extractive Compressor
    • 在language modeling任务上 通过句子与输入的相似性进行排序
      • BM25
      • Contriever
    • QA
      • BM25
      • 在MS MARCO上微调的Contriever
      • 在NQ上微调的DPR
    • Random
      • 从检索文档中随机选取一个句子
  • Abstractive Comporessor
    • 现有T5-large(770M)和GPT-3.5的性能
    • 在多提示词进行language modeling下, GPT-3.5生成summary的情况下单个prompt最好的性能
 
Oracle: compression的上界,
extractive approach:oracle 压缩器考虑所有evidence document中所有句子 并且选择能够达到最好任务性能(最低perplexity或最高的回答正确率)的句子
abstractive approach: 不同几个prompt ()生成的summary和空summary, 选择能让项目性能最好的summary
 

Result

notion image
  1. 所有RA的表现(PPL)都比没有retrieval的方案表现好
  1. 启发式token/phrase层面的压缩方法(Bow和NE)比无压缩的retrieval性能差
  1. 相比于将所有文档放在input前的方法, oracle方法只需要其6-13%的tokens。
  1. 更多的token不一定有更好的性能,top 1 document的性能要强于top 5 document的性能
    1. 简单的检索和叠加的方法有很大的提升空间
    2. 将无关文档放在input前有可能会导致性能损失
  1. 结果显示,文章提出的两种方法效果都比baseline好
notion image
  1. 所有RA的表现(EM,F1)都比没有retrieval的方案表现好
  1. 与language modeling不同,将5个documents都拼接到input前比只拼接一个document效果好(压缩可以运用到更多文档的信息)
  1. oracle相较于把所有信息拼接到input前方法的效果还要好(删除无用信息有利于模型推理)
 
 

Transfer Ability

训练得到的compressor不只在特定的LM上表现好, 也可以transfer到其他LM上, 见Table-1和Table-2
但是,在open-domain QA, 将训练的compressor迁移到LLaMA-13B上,与压缩器训练所使用的基准LM相比较时性能会有所下降,并且有时无法超越其他压缩基线
notion image
 

5 Conclusion & Comment

这篇文章通过summarizing, 从检索到的doucment中用两种方法:
  1. extractive: 选取关键句子
  1. abstractive: 总结document内容
减少了将所有内容一股脑塞给LM的token消耗, 节省了时间和花费
 
文章中在训练模型上的comporessor表现很好, 但是迁移能力有待商榷, 在LLaMA-13B上性能有时还不如baseline
 
Automatically Correcting Large Language Models: Surveying the landscape of diverse self-correction strategiesReview of Agentbench

  • Twikoo
  • Giscus
  • Utterance