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

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

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

为了解决大型语言模型 (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 中查询生成的新方法” 的相关文章

Lindroid开源应用:在安卓手机 / 平板上安装 Linux发行版

IT之家 6 月 19 日消息,Erfan Abdi 本月发布了 Lindroid 开源应用程序,让用户可以在安卓手机上安装 GNU / Linux 发行版,在完全支持手机硬件的情况下可以运行 Linux 应用程序。Lindroid 开源应用程序就是将 Linux 放入容器中,使用 Halium 等...

代码管理-9-gitlab的使用和设置

gitlab使用1、外观设置完成后保存,返回登录页面查看关于注册,有些公司是不允许打开的,,有些人数非常多的公司就需要打开注册的功能,让人员自己注册,我们来给他特定的权限就可以,毕竟人非常多的时候还由我们来给她们注册就非常不现实了,工作量会很大2、自动注册3、组&用户&项目创建组设置组名称、描述等创...

GitLab-合并请求

描述合并请求可用于在您对项目进行的其他人员之间交换代码,并轻松与他们讨论更改。合并请求的步骤步骤1-在创建新的合并请求之前,GitLab中应该有一个创建的分支。您可以参考本章来创建分支-步骤2-登录到您的GitLab帐户,然后转到“ 项目”部分下的项目 -步骤3-单击“ 合并请求”选项卡,然后单击“...

我的VIM配置

写一篇关于VIM配置的文章,记录下自己的VIM配置,力求简洁实用。VIM的配置保存在文件~/.vimrc中(Windows下是C:\Users\yourname \_vimrc)。VIM除了自身可配置项外,还可插件扩展。VIM的插件一般用vundle或vim-plug来管理,但我力求简单,不打算装太...

JavaScript数组操作:掌握常用方法,提升开发效率

JavaScript数组操作:从增删改查到高级应用本文深入解析JavaScript中常用的数组方法,包括push、unshift、pop、shift、map、filter、reverse、at 和 slice。通过详细的例子和应用场景,帮助开发者快速掌握这些方法,提升代码效率和可读性。开篇点题作为J...

基于微信小程序+springboot+vue技术构建的开源微信商城

介绍基于 微信小程序 + springboot + vue 技术构建 ,支持单店铺,多店铺入驻的商城平台。项目包含 微信小程序,管理后台。基于java后台语言,已功能闭环,且达到商用标准的一套项目体系。技术栈平台功能介绍小程序演示图管理后端演示图小程序体验码演示地址1.0版演示地址说明后台管理端演示...