【RAG 论文】引入 query rewriter 来做查询重写实现对 RAG 的改进

论文介绍了一种改进RAG模型的方法,通过在查询输入retriever前添加queryrewrite步骤,使用不可训练的LLM或可训练的LM。实验表明这种方法能提高效果。然而,研究仍面临下游任务的泛化与专业化的权衡以及训练效率的问题。
摘要由CSDN通过智能技术生成

论文:Query Rewriting in Retrieval-Augmented Large Language Models
⭐⭐⭐⭐
EMNLP 2023
Code: github.com/xbmxb/RAG-query-rewriting

一、论文速读

如下是一个常见的 RAG pipeline:

RAG pipeline

但这存在一个缺点:input text 和需要 query 的 knowledge 之间不可避免地会存在一个 gap

本文提出:在将 query 输入给 retriever 之前,增加一个 query rewrite 步骤来弥补这个 gap

增加 query rewrite

这样,就把之前 RAG 的 retrieve-then-read 改为了 Rewrite-Retrieve-Read 的框架。

同时,根据 rewriter 的技术选型,这里又分成了两种:

  • 将 LLM 作为 query rewriter:由于 LLM 往往是不可训练的(比如 ChatGPT),所以 LLM 可以视作一个 black-box,由它来执行 query rewrite
  • 可训练的 rewrite-retrieve-read:将一个小的 LM 作为 query rewriter,同时根据 reader 的 output 是否 correct 或者 hit 来作为对 rewriter 的反馈,进而对 query rewriter 做强化学习来训练 rewriter

如下图所示:

三种pipeline

二、实验结果

实验结果

可以看到,无论将 frozen LLM 还是 trainable LM 作为 rewriter,都可以改进 RAG 的效果。

论文也给出了使用不同方法时的 prompt:

prompt

三、总结与分析

本文提出了使用 query rewrite 来改进 RAG 的 pipeline 来提高表现,同时给出了一个可训练的 rewriter 的训练思路。

同时,本文的研究还存在以下限制:

  • 在下游任务上,仍然需要一个 generalization 和 specialization 的 trade-off。因为目前额外增加了一个训练过程,让该方法相比于 in-context learning 的 scalability 降低了。
  • 在知识密集型的场景下,使用 web search engine 可能不如经过过滤的 knowledge base 更加专业好用。
  • 27
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现模型RAG(Retrieval Augmented Generation)主要包括**数据准备阶段和应用阶段**两个关键环节。具体步骤如下: 1. **数据准备阶段**: - **数据提取**:首先需要确定并提取适用于特定领域的私域数据,这些数据可以是PDF文件、数据库内容或其他形式的私有知识库。 - **文本分割**:将提取出的文档进行分块处理,以便于后续的处理和检索。 - **向量化**:对分割后的文本块进行向量化操作,即将文本转换为机器能够高效处理的数值表示形式。 - **数据入库**:处理好的数据需要构建索引并存入向量数据库中,为接下来的检索任务准备。 2. **应用阶段**: - **用户提问**:当用户提出问题时,同样需要将这个查询向量化。 - **数据检索**:利用向量数据库的检索能力,找出与用户提问相似度最高的k个文档片段。 - **注入Prompt**:将检索到的结果结合用户的原始提问,按照一定的Prompt模板组装成一个完整的输入提示给大语言模型。 - **LLM生成答案**:大语言模型根据提供的Prompt生成最终的回答。 此外,还需要考虑如何优化数据的准备过程,比如选择适合的向量化技术(如使用词嵌入模型)以及如何设计高效的检索算法来快速准确地从大量数据中找到相关信息。同时,在应用阶段,需要精心设计Prompt模板,以便大模型能更好地理解问题和检索到的信息,从而给出更准确的回答。 值得一提的是,RAG架构的优势在于它结合了大模型的强大语言理解和生成能力以及向量检索系统的高效信息获取能力,使得大模型能够在专业场景或行业细分领域中提供更加精准和丰富的回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值