总结
文章介绍了两种高级的检索增强生成(RAG)技术:自适应 RAG 和 RQ-RAG,以及它们在问题复杂性学习和查询细化方面的应用和优势,以及如何通过小型模型的训练来提高这些技术的性能。
摘要
传统 RAG 技术虽然能够减少大型语言模型(LLM)答案的不准确性,但不能增强初始查询。
自适应 RAG 和 RQ-RAG 两种技术,通过对小型模型的训练,提出了查询分类和查询细化的概念,以适应不同复杂度的查询。
- 自适应 RAG 通过精心构建的分类器根据查询的复杂程度,动态选择最合适的 LLM 策略,包括迭代、单一甚至无检索方法。
- RQ-RAG 则侧重于学习如何根据需要重写、分解和消除查询的歧义,以提高信息检索的质量。
文章详细描述了自适应 RAG 的整体流程,包括如何根据查询的复杂性选择合适的工具,以及如何使用 LlamaIndex 版本的代码来解释这一过程。还强调了分类器的构造,包括数据集的构建和训练、以及如何通过交叉熵损失来训练分类器。此外,文章讨论了分类器尺寸的选择,并通过实验结果表明,即使是较小的模型也能达到较高的性能。
接着,文章介绍了 RQ-RAG 的查询细化方法,包括它如何通过重写、分解和消除歧义来提高检索增强生成的查询质量。RQ-RAG 的方法包括以端到端的方式训练 Llama2 7B 模型,以便动态增强搜索查询。RQ-RAG 的数据集构建过程,包括如何收集语料库、分类任务、使用 ChatGPT 完善查询以及如何生成训练样本。
最后,文章对 Self-RAG 和 CRAG 进行了比较,并讨论了工程实施时的一些考虑点,如查询分类的优化性和小型模型的性能。文章强调,通过精心构建的数据集和生成过程,小型模型也能取得显著的成果。
虽然传统的 RAG 技术可以减少 LLM 答案的不准确性,但它并不能以任何方式增强初始查询。图 1 中的红框说明了这一点。
这种方法可能会导致一些潜在的问题,例如
- 对于简单问题,该系统可能会消耗过多的计算资源来处理。
- 对于复杂的查询,仅使用原始查询进行检索往往无法收集到足够的信息。
- 对于可能有多个答案的模糊查询,使用原始查询进行信息检索是不够的。
本文将介绍两种先进的解决方案:查询分类和查询细化。通过对小型模型的训练,这两种方法都有所改进。最后,文章将讨论从这两种算法中获得的启示和思考。
自适应-RAG:通过问题复杂性学习调整检索增强大型语言模型
整体流程
Adaptive-RAG 引入了一个新的自适应框架。如图 2 所示,它根据查询的复杂程度,动态选择最合适的 LLM 策略,从最简单到最复杂不等。
图 2 (A) 表示一种单步方法,即首先检索相关文档,然后生成答案。但是,对于需要多步骤推理的复杂查询,这种方法可