RAG技术:一种优化 RAG 中查询生成的新方法
为了解决大型语言模型 (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 方法的实际影响,让我们看一个来自SciFact和FiQA数据集的具体示例,这两个数据集用于验证此方法。这些数据集分别侧重于科学事实核查和金融问答,为评估文档检索的准确率提供了理想的测试用例。
图 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