【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.mzph.cn/pingmian/7369.shtml

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

相关文章

AI把OpenAI内斗魔改成晋江文学,插图也能画,最新工具爆火,网友冲崩服务器

AI魔改OpenAI内斗大戏…… 这晋江味儿要冲出屏幕了! Ilya就是这样的人,对待身边的人冷漠如冰,对待工作却不择手段…… △来自知乎Midreal小助手 而且剧情还不那么离谱,AI自由发挥下很多点都符合逻辑。 “所以我们在评估投资回报…

Surya:强大的开源 OCR 文字识别工具

在当今数字化时代,文字识别技术扮演着至关重要的角色。VikParuchuri/surya 便是一款令人瞩目的开源 OCR 文字识别工具。 主要功能: 支持 90 多种语言的文字识别:Surya 具备强大的语言兼容性,能够轻松应对多种语言的文字识别任务&…

翻译《The Old New Thing》 - What are SYSTEM_FONT and DEFAULT_GUI_FONT?

What are SYSTEM_FONT and DEFAULT_GUI_FONT? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050707-00/?p35013 Raymond Chen 2005年07月07日 在 Windows 编程中,GetStockObject 函数提供了两种特殊的字体:SYST…

【数据库原理及应用】期末复习汇总高校期末真题试卷05

试卷 一、选择题 1.( )是存储在计算机内有结构的数据的集合。 A.数据库系统 B.数据库 C.数据库管理系统 D.数据结构 2.数据库的三级模式结构中,数据库对象—视图是( ) A.外模式 B.内模式 C.存储模式 D.模式 3.在下列关于关系表的陈述中,错误的是(…

【源码】WordPress主题Modown9.1+Erphpdown17.1虚拟素材资源付费下载

Modown是基于Erphpdownwordpress下载插件开发的一款付费下载资源、付费下载源码、收费附件下载、付费阅读查看隐藏内容的WordPress主题,一款针对收费付费下载资源/付费查看内容/付费阅读/VIP会员免费下载查看/虚拟资源售卖的WordPress主题,一款为erphpdo…

单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 单目标问题的FW烟花优化算法求解matlab仿真,对比PSO和GA。最后将FW,GA,PSO三种优化算法的优化收敛曲线进行对比。 2.测试软件版本以及运行…

20240503解决Ubuntu20.04和WIN10双系统下WIN10的时间异常的问题

20240503解决Ubuntu20.04和WIN10双系统下WIN10的时间异常的问题 2024/5/3 9:33 缘起:因为工作需要,编译服务器上都会安装Ubuntu20.04。 但是因为WINDOWS强悍的生态系统,偶尔还是有必须要用WINDOWS的时候,于是也安装了WIN10。 双系…

5月6(信息差)

🌍一次预测多个token,Meta新模型推理加速3倍,编程任务提高17% https://hub.baai.ac.cn/view/36857 🎄 LeetCode 周赛超越 80% 人类选手,推理性能超 Llama3-70B。 ✨ 我国量子计算机实现“四算合一” 实现通算、…

高情商回复(不是)

背景介绍 在抖音上有这样的视频,视频就是一张图,图上问了一个问题:饭局上,你去帮领导盛饭,领导接过后说:‘盛这么多,喂猪呢?’咋回? 底下有一个搞笑评论:猪可…

一篇文章,系统性聊聊Java注解

你好! 这类系统性聊聊***知识点的文章,是希望给大家带来对某个技术的全貌认识,如果大家喜欢,后续可以陆续更新此系列 下面,开始今天的分享 在之前,我们已经分享过注解相关的三个面试题, 今天的…

syncGradle项目时报错Unknown Kotlin JVM target: 22

解决方案1 定位到build.gradle.kts的出问题行,将其注释掉然后把sourceCompatibility行也注释掉重新sync. 这样会自动使用默认兼容的版本 你也可以根据文档手动解决兼容问题2 Configure a Gradle project | Kotlin Documentation (kotlinlang.org) ↩︎ Compatibil…

Autodesk AutoCAD 2025 for Mac:强大的二维三维绘图工具

Autodesk AutoCAD 2025 for Mac是一款专为Mac用户打造的计算机辅助设计软件,它在继承了AutoCAD系列软件的优秀传统的基础上,针对Mac系统进行了全面优化,为用户提供了更出色的绘图和设计体验。 这款软件不仅支持用户创建和编辑复杂的二维几何图…

【NodeMCU实时天气时钟温湿度项目 3】连接SHT30传感器,获取并显示当前环境温湿度数据(I2C)

今天,我们开始第三个专题:连接SHT30温湿度传感器模块,获取当前环境实时温湿度数据,并显示在1.3寸TFT液晶显示屏上。 第一专题内容,请参考 【NodeMCU实时天气时钟温湿度项目 1】连接点亮SPI-TFT屏幕和UI布局设计…

【统计推断】-01 抽样原理之(六):三个示例

目录 一、说明二、处理有限的、大尺度的母体抽样三、非参数的估计四、连续母体抽样技巧--分箱 一、说明 对于抽样问题,前几期文章都是理论探讨。本篇给出若干示例,展现具体的情况下,面对数据,如何给出处理策略。 二、处理有限的…

安全数据交换系统哪个好?该如何选型?

安全数据交换系统是用于在不同网络或组织之间安全、高效地传输和共享数据的解决方案。安全数据交换系统对于任何需要处理敏感数据、确保数据安全、并满足合规要求的组织来说都是至关重要的。 这种系统通常用于以下目的: 1)数据传输:允许用户…

【双曲几何-05 庞加莱模型】庞加来上半平面模型的几何属性

文章目录 一、说明二、双曲几何的上半平面模型三、距离问题四、弧长微分五、面积问题 一、说明 庞加莱圆盘模型是表示双曲几何的一种方法,对于大多数用途来说它都非常适合几何作图。然而,另一种模型,称为上半平面模型,使一些计算变…

Reactor Netty TCP 客户端-响应式编程-012

🤗 ApiHug {Postman|Swagger|Api...} = 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱,有温度,有质量,有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Next Generation API Development Platform …

数据结构之栈的超详细讲解

目录 引言 一.栈的概念 二.栈的结构 三.栈的实现 栈结构的实现 栈操作函数的声明 栈中方法的实现 栈的初始化 栈的销毁 入栈 出栈 取栈顶元素 判断栈中是否为空 获取栈中数据个数 四.测试 代码展示: 结构展示: 五.小结 六.完整代码 Stack.h Stack.c text…

【管理篇】管理三步曲:管理规划(一)

目录标题 管理到底都要做哪些事呢如何开始带团队? 职能:如何界定团队是干什么的?目标:如何为团队设定合理的目标规划资源:需要申请哪些资源(1)你是否了解资源的丰富性?(2…

PSoc™62开发板之IoT应用

实验目的 使用PSoc62™开发板驱动OLED模块,实时监控室内的光照强度、温度信息 实验准备 PSoc62™开发板SSD1309 OLED模块DS18B20温度传感器BH1750光照传感器 模块电路 SSD1309 OLED模块的电路连接和模块配置教程请参考之前的文章,这里不详细展开描…