【RAG 博客】Haystack 中的 DiversityRanker 与 LostInMiddleRanker 用来增强 RAG pipelines

Blog:Enhancing RAG Pipelines in Haystack: Introducing DiversityRanker and LostInTheMiddleRanker
⭐⭐⭐⭐

文章目录

      • Haystack 是什么
      • 1. DiversityRanker
      • 2. LostInTheMiddleRanker
      • 使用示例

这篇 blog 介绍了什么是 Haystack,以及如何在 Haystack 框架中使用 DiversityRanker 和 LostInTheMiddleRanker 来增强 RAG pipeline 效果。我们重点是从这篇文章中学习到 RAG pipeline 中 re-rank 的思想

我们知道,LLM 是根据他的上下文窗口中的文本内容来生成响应,但是 LLM 的上下文窗口是有 token 个数限制的,因此,我们需要充分利用 LLM 的上下文窗口来最大限度地提高其生成答案的质量。但在现实使用 RAG 时,检索到的文档可能高度相关,很多重复且数量众多,导致很有可能溢出 LLM 的上下文窗口。

本文介绍的组件 —— DiversityRanker 和 LostInTheMiddleRanker,就是用来解决这些挑战并改进 RAG pipeline 生成的答案。

Haystack 是什么

Haystack 是一个开源框架,为 NLP 研究者提供端到端的解决方案,其模块化的设计允许其集成最先进的 NLP 模型、文档存储以及 NLP 工具箱中所需的各种其他组件。

Haystack 的一个关键概念是 pipeline,它表示一系列由特定 component 执行的处理步骤,这些 component 可以执行各种类型的文本处理,并允许用户通过定义数据如何流经 pipeline 以及执行处理步骤的节点顺序,轻松创建强大且可定制的系统。

1. DiversityRanker

DiversityRanker 是一个 Haystack 的 component,它旨在增强 RAG 管道中上下文窗口所选 documents 的多样性。这样做的原因是:多样化的 documents 可以辅助 LLM 生成更广泛、更深入的答案

DiversityRanker 使用 sentence transformers 库来计算 doc 之间的 similarity。sentence transformers 库提供了强大的 embedding 模型,可以用于创建句子、段落甚至整个 doc 的有意义的 embedding representation。

DiversityRanker 使用以下算法处理文档

  1. 首先使用 sentence transformers 模型计算每个 doc 和 query 的嵌入。
  2. 然后选择语义上与 query 最接近的文档作为第一个选定的文档 A。
  3. 对于每个剩余的文档,计算与已选定的文档 A 的 similarity。从中选出一个与 A 的 similarity 最不高的文档作为下一个选中的文档。
  4. 重复以上步骤,直到选择出一个文档列表,其顺序从对整体多样性贡献最大的文档到贡献最小的文档。

需要注意的是,DiversityRanker 的算法是贪心的思想,其最终得到的文档列表的顺序可能并非是全局最优的。

DiversityRanker 强调了 doc 的多样性而非相关性,所以它在 RAG 的 pipeline 中应该放在像 TopPSampler 或者其他 similarity ranker 之后,这些 similarity ranker 选出了最相关的 docs,然后再使用 DiversityRanker 来从中按照多样性再次排序。

2. LostInTheMiddleRanker

在论文 Lost in the Middle: How Language Models Use Long Contexts 中,LLM 会更加着重把他的注意力放在文本开头和结尾的位置。

这个 LostInTheMiddleRanker 就是利用了这个发现和思想,将最需要让 LLM 关注的 documents 放在开头和结尾的位置,中间位置的则是相对最不重要的。

下图还展示了对于 LLM 来说,LLM 更擅长在开头和结尾的文本中提取出答案来:

lost-in-middle

这也佐证了 LostInTheMiddleRanker 做法的正确性。

注意,LostInTheMiddleRanker 最好放置的位置是 RAG pipeline 的最后一个 ranker,它对已经基于 similarity 和 diversity 排好序的 docs 再次排序。

使用示例

如下就是一个使用 Haystack 的多个 component 搭建的 RAG pipeline:

RAG pipeline

最开始是一个 WebRetriever,它根据 user query 使用 search engine API 从互联网上检索相关 HTML,并对其进行抽取转化为原生文本,然后再对其预处理切分为更短的 chunks。

之后,使用 TopPSampler 和 DiversityRanker 基于 similarity 和 diversity 对这些检索到的 docs 进行 re-rank,再使用 LostInTheMiddleRanker 做 re-rank,得到最终的文档列表。

最后,这个文档列表被传给 PromptNode,它组装成 prompt 输入给 LLM 让其基于检索到的文档来生成针对 user query 的回复。

在实践中证明,DiversityRanker 和 LostInTheMiddleRanker 的使用能够有效提升 RAF pipeline 的效果,这种在 pipeline 中针对 retrieved docs 进行 re-rank 的思想和做法值得我们学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/660108.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上位机图像处理和嵌入式模块部署(树莓派4b开机界面程序自启动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们学习了如何在树莓派4b上面开发qt,也学习了如何用/etc/rc.local启动控制台程序,那今天我们继续学习一下如何利用树莓…

PotatoPie 4.0 实验教程(35) —— FPGA实现摄像头图像二值化膨胀效果

手机扫码 链接直达 https://item.taobao.com/item.htm?ftt&id776516984361 什么是图像二值化膨胀,有什么作用? 图像二值化膨胀是图像处理中的一种基本操作,它用于扩展和增强二值图像中的白色区域。具体而言,二值化膨胀操作…

【VSCode调试技巧】Pytorch分布式训练调试

最近遇到个头疼的问题,对于单机多卡的训练脚本,不知道如何使用VSCode进行Debug。 解决方案: 1、找到控制分布式训练的启动脚本,在自己的虚拟环境的/lib/python3.9/site-packages/torch/distributed/launch.py中 2、配置launch.…

微视网媒:引领新媒体时代的视觉先锋

在信息爆炸的时代,内容消费的方式日新月异,而“微视网媒”正是这场媒体变革中的佼佼者。凭借其独特的视角、精湛的制作和广泛的传播渠道,微视网媒不仅改变了人们获取信息的方式,更在不断地塑造着未来的媒体生态。 一、创新内容&am…

Hotcoin Research | 市场洞察:2024年4月22日-28日

加密货币市场表现 本周内加密大盘整体呈现出复苏状态,在BTC减半后进入到震荡上行周期。BTC在$62000-66000徘徊,ETH在$3100-3300徘徊,随着港交所将于 4 月 30 日开始交易嘉实基金的比特币和以太坊现货 ETF,周末行情有一波小的拉升…

【Qt】QtCreator忽然变得很卡

1. 问题 Qt Creator忽然变得很卡。电脑里两个版本的Qt Creator,老版本的开启就卡死,新版本好一点,但是相比于之前也非常卡,最明显的是在 ctrl鼠标滚轮 放大缩小的时候,要卡好几秒才反应。 2. 解决方案 2.1 方法1 关…

2000.1-2023.8中国经济政策不确定性指数数据(月度)

2000.1-2023.8中国经济政策不确定性指数数据(月度) 1、时间:2000.1-2023.8 2、指标:CNEPU(经济政策不确定性指数) 3、来源:China Economic Policy Uncertainty Index 4、用途:可…

虚析构与纯虚析构

这里的new Cat("Tom"&#xff09;是由于基类函数中的构造函数里面带有string变量 1. 法一:利用虚函数&#xff0c;虚化基类中的析构函数 virtual ~Animal() { cout << "动物的析构函数调用" << endl; } 2. 法二:利用纯…

188页 | 2023企业数字化转型建设方案(数据中台、业务中台、AI中台)(免费下载)

1、知识星球下载&#xff1a; 如需下载完整PPTX可编辑源文件&#xff0c;请前往星球获取&#xff1a;https://t.zsxq.com/19KcxSeyA 2、免费领取步骤&#xff1a; 【1】关注公众号 方案驿站 【2】私信发送 2023企业数字化转型建设方案 【3】获取本方案PDF下载链接&#xff0…

文件分块+断点续传 实现大文件上传全栈解决方案(前端+nodejs)

1. 文件分块 将大文件切分成较小的片段&#xff08;通常称为分片或块&#xff09;&#xff0c;然后逐个上传这些分片。这种方法可以提高上传的稳定性&#xff0c;因为如果某个分片上传失败&#xff0c;只需要重新上传该分片而不需要重新上传整个文件。同时&#xff0c;分片上传…

可以在手机端运行的大模型标杆:微软发布第三代Phi-3系列模型,评测结果超过同等参数规模水平,包含三个版本,最小38亿,最高140亿参数

本文原文来自DataLearnerAI官方网站&#xff1a; 可以在手机端运行的大模型标杆&#xff1a;微软发布第三代Phi-3系列模型&#xff0c;评测结果超过同等参数规模水平&#xff0c;包含三个版本&#xff0c;最小38亿&#xff0c;最高140亿参数 | 数据学习者官方网站(Datalearner…

Amazon云计算AWS之[5]关系数据库服务RDS

文章目录 RDS的基本原理主从备份和下读写分离 RDS的使用 RDS的基本原理 Amazon RDS(Amazon Relational Database Service) 将MySQL数据库移植到集群中&#xff0c;在一定的范围内解决了关系数据库的可扩展性问题。 MySQL集群方式采用Share-Nothing架构。每台数据库服务器都是…