怎样做到 LLM Long-Context 越长 RAG 性能越好

总结

这篇来自 Google DeepMind 的论文 “Inference Scaling for Long-Context Retrieval Augmented Generation” ,研究了基于 Long-Context LLM 的 RAG 技术,如何随着 Long-Context 长度的 scale 而 scale RAG 的效果,以实现充分利用 Long-Context 能力的目的。

实验结果显示,IterDRAG 方案与标准 RAG 相比,在基准数据集上实现了高达58.9%的提升。

scale Contex-Length

Long-Context 的 LLM(例如 Gemini-1.5-flash 支持 2M token),并非总能有效利用 Long Context 中的上下文知识。在 RAG 方案里,单纯的给 LLM 增加文档数量、无限逼近 LLM 长度极限,会给 LLM 带来困惑,导致最终正确率下降。这个结论在很多的研究论文里得到支持。

DRAG(Demonstration-Based RAG)扩展了标准 RAG 方案,在输入的 prompt(context)中增加了 question-answer 的例子,让 LLM 学会如何从 long context 里提取正确信息、回答问题。在面对复杂的多跳问题(multi-hop)时,DRAG 依然面临挑战。

本文提出了 IterDRAG(Iterative Demonstration-Based RAG)方案,扩展了 DRAG,并探索进一步线性提升 context 长度来提升 RAG 的效果。

DRAG、IterDRAG 的逻辑示意图
RAG、DRAG、IterDRAG 随着 Context Length 变化而变化的性能

论文的实验结果表明,RAG 在 1k~100k token长度下的性能变化并不大,表明 RAG 无法充分利用 Long-Context LLM 的长上下文的优势。DRAG 可以扩展到 几十k ~ 几百 k 的 token长度并提升性能。而 IterDRAG 可以进一步扩展到 1M 的 token 长度提升性能。

基于 Gemini 1.5 Flash 模型的不同 RAG 方案在不同测试集下的准确率

在使用相同模型的条件下,基础 RAG 方案只有 42% 的平均正确率,DRAG 方案有 45% 的平均正确率,IterDRAG 方案做到了 58% 的平均正确率。

可以认为基础 RAG 方案做到 50%左右的正确率已经是不错的效果了,即使提升 5%、10% 都不容易

scale few-shot

DRAG 方案给 context 增加了 few-shot,能提升最终的正确率。论文也评测了随着 few-shot 数增加 DRAG/IterDRAG 正确率的提升趋势。可以看到,增加文档数相比增加 few-shot 数,对提升最终正确率更有效果。

scale retrieval

Retrieval 阶段,简单的提升文档数目可以快速的提升 Recall 正确率

Recall、NDCG、MRR 随着文档数而变化的曲线

arXiv 链接

https://arxiv.org/pdf/2410.04343

论文截图来源

https://papers.plify.co/detail/2410.04343?lang=zh