当前位置:首页 > 技术分析 > 正文内容

RAG技术:一种优化 RAG 中查询生成的新方法

ruisui883个月前 (02-03)技术分析15

为了解决大型语言模型 (LLM) 的幻觉问题,检索增强生成 (RAG) 系统利用文档检索来提供更准确的答案。尽管前景光明,但现有的 RAG 系统仍然因模糊查询而面临挑战。

本文介绍了一项新研究,题为“优化查询生成以增强 RAG 中的文档检索”。该研究旨在通过优化查询生成来增强 RAG 中的文档检索。

解决方案

QOQA(使用查询扩展的查询优化)如图 1 所示。

图 1:QOQA 概念图。给定包含 top-k 文档的扩展查询,我们将 top-3 重述查询和分数添加到 LLM。我们根据分数优化查询并生成重述查询。来源:QOQA。

相应提示如图2所示。

图 2:QOQA 中使用的提示模板。黑色文本描述了优化任务的说明。蓝色文本是原始查询以及使用原始查询检索到的前 N ?个文档。紫色文本是经过 LLM 优化器修改的查询和分数。来源:QOQA。

QOQA方法通过以下步骤优化查询生成,从而提高RAG系统中文档检索的准确率。

查询扩展与重构

QOQA 的核心思想是利用大型语言模型 (LLM) 来改写查询。首先,系统使用原始查询检索前 N 个相关文档。这些检索到的文档与原始查询一起形成扩展查询。然后,LLM 根据这些扩展查询生成改写查询。

查询文档对齐分数

为了评估和优化生成的查询,QOQA 引入了查询-文档对齐分数。该评分系统包括三个评估标准:BM25 分数、密集分数和混合分数。

  • BM25 分数:基于稀疏检索模型,评估文档中查询词的频率和权重。
  • 密集分数:使用密集检索模型,通过嵌入向量空间中的相似性来评估查询和文档之间的对齐情况。
  • 混合分数:结合 BM25 和密集分数,通过调整参数 α 来优化最终分数。

优化流程

在优化过程中,QOQA 方法会更新查询模板,包括原始查询、检索到的文档和前 K 个改写查询。在每次迭代中,LLM 会根据这些分数生成新的改写查询并将其添加到查询桶中。通过多次迭代,系统不断优化查询,以确保它们的表现优于原始查询。

评估

实验结果表明,QOQA 方法与基线模型相比显著提高了文档检索性能。图 3 总结了这些数据集上各种文档检索模型的性能。

图 3:文档检索任务的结果。所有分数均表示 nDCG@10。粗体表示所有模型中的最佳结果,下划线表示第二好的结果。来源:QOQA。

案例研究:QOQA 如何提高查询精度

为了更好地理解 QOQA 方法的实际影响,让我们看一个来自SciFactFiQA数据集的具体示例,这两个数据集用于验证此方法。这些数据集分别侧重于科学事实核查和金融问答,为评估文档检索的准确率提供了理想的测试用例。

图 4:来自 SciFact 和 FiQA 数据集的示例。蓝色文本是答案文档和改述查询之间的重叠关键字。来源:QOQA。

示例 1:SciFact 数据集

  • 原始查询“零维生物材料表现出感应特性。”
  • QOQA-重新表述的查询“纳米级生物材料是否具有可以在生物系统中引发特定反应的独特特性?”

通过重新表述原始查询,QOQA 引入了更具体的术语,如“纳米级生物材料”和“生物系统中的特定反应”。这种精确的语言可确保系统检索出更相关的文档。在本例中,检索到的文档讨论了用于操纵干细胞的纳米技术,这与重新表述的查询非常吻合,并且与原始模糊查询相比,它提供了更准确的答案。

示例 2:FiQA 数据集

  • 原始问题“COVID-19 的起源是什么?”
  • QOQA-重新表述的查询“什么分子证据支持蝙蝠和穿山甲是 COVID-19 病毒的可能起源宿主?”

在此示例中,QOQA 方法通过指定“分子证据”和“蝙蝠和穿山甲”作为焦点来细化查询。这种详细程度有助于检索更科学准确的文档,例如研究蝙蝠冠状病毒的基因组分析及其与 COVID-19 病毒的联系的研究。

结论和见解

本文介绍了一种缓解幻觉的新方法,特别是通过优化查询生成来解决检索增强生成 (RAG) 系统中的模糊查询问题。该方法结合了传统稀疏检索和现代密集检索的优势,同时利用了大型语言模型 (LLM) 强大的生成能力。

我认为,如果未来在更加多样化的领域和更大规模的任务中得到验证,并且解决查询生成中的资源消耗问题,那么这项工作可以为 RAG 系统和信息检索领域提供更广泛的应用。

参考:

https://medium.com/@florian_algo/a-new-approach-to-optimizing-query-generation-in-rag-33c32d68f4e6

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/1052.html

标签: 查询优化
分享给朋友:

“RAG技术:一种优化 RAG 中查询生成的新方法” 的相关文章

Linux 最主要的发行分支

Linux 有数百个发行分支。主要的有以下四个。slackwareSlackware 是由 Patrick Volkerding 在 1992 年推出的,它是全球现存最古老的 Linux 发行版。Slackware 被设计为高度可定制和强大的,并且要求用户了解 每个元素,它的包系统是不支持依赖的。...

vue项目-父页面数据变化使子页面更新的几种情况

当操作页面时候,特别是增删改操作之后,数据会有所改变,这个时候我们希望组件中的数据要和最新数据一致,就需要重新更新渲染。以下是针对几种不同情况下方式:一.子页面调用接口后重新渲染1.使用ref方式父组件中用ref=“xxx” 来声明子组件,然后通过在父组件值改变的地方来调用子组件中的方法this.$...

学无止境:Git 如何优雅地回退代码

来源:https://zhenbianshu.github.io前言从接触编程就开始使用 Git 进行代码管理,先是自己玩 Github,又在工作中使用 Gitlab,虽然使用时间挺长,可是也只进行一些常用操作,如推拉代码、提交、合并等,更复杂的操作没有使用过,看过的教程也逐渐淡忘了,有些对不起 L...

10分钟搞定gitlab-ci自动化部署

gitlab-ci 是持续集成工具/自动化部署工具,类似 jenkins。持续集成 是将代码集成到共享存储库并尽可能早地自动构建/测试每个更改的实践 - 通常一天几次。概述在编码完成时都会进行打包发布过程,如果每次都手动操作这一步骤就会浪费时间,效率低下。所以就有了持续集成。准备事项请提前安装以下软...

快速掌握 Git:程序员必会的版本控制技巧

在现代软件开发中,版本控制系统(VCS)是开发人员不可或缺的工具。无论是个人项目,还是多人协作的团队开发,良好的版本控制都能确保代码管理的高效性与稳定性。而在版本控制系统中,Git 凭借其分布式、灵活性和高效性,成为了最流行的工具之一。几乎所有的开发团队都在使用 Git 来管理代码版本、协作开发和追...

Ruoyi-vue第五十二章:Uniapp小程序配置tabbar底部导航栏

一、功能实现效果如下图底部的tabbar二、uniapp的tabBar如果应用是一个多 tab 应用,可以通过 tabBar 配置项指定一级导航栏,以及 tab 切换时显示的对应页。在 pages.json 中提供 tabBar 配置,不仅仅是为了方便快速开发导航,更重要的是在App和小程序端提升性...