今天是2024年7月19日,星期五,北京,天气晴。
我们来看看老刘说NLP20240718大模型进展早报,有些技术以及开源项目的新动向。
然后再看看关于RAG查询改写这块的一个新思路。简单使用大模型来进行改写,很容易出现改错的情况,这个时候,也许可以通过引入相关性的工作来加以缓解,来讲一个最近的工作,简单粗暴。
知其然,更知其所以然,尽可能不要碎片化阅读。
供大家一起思考并参考。
同样的,我们来看看昨日大模型进展早报,主要还是聚焦在RAG方面。
【老刘说NLP20240718大模型进展早报】
1、老刘说NLP技术社区形成关于⼤模型相关的开源项目26个Awesome系列、社区线上交流三大主题25讲、老刘说NLP公众号20专题系统索引、68个调研感兴趣话题,详细见社区(可加入社区查看),可以更系统地去看一些问题。
2、关于RAG进展。 Mindful-RAG: A Study of Points of Failure in Retrieval Augmented Generation,https://arxiv.org/abs/2407.12216。
通过分析知识图谱增强生成在问答任务中的错误模式,提出了一种组合利用LLM内在知识进行意图驱动知识检索的新方法Mindful-RAG。
地址:https://arxiv.org/abs/2407.12216
3、关于长文本训练的拓展过程。 GLM Long:如何将LLM的上下文扩展至百万级,https://mp.weixin.qq.com/s/Rs2o8K3Hb-I103eDgNBhVQ
可以看看如何将一个base模型的上下文如何一步步扩大。
4、关于RAG进展。 Better RAG using Relevant Information Gain:https://arxiv.org/pdf/2407.12101,介绍了一种新的方法来优化RAG系统中的检索组件,通过相关信息增益来自然地产生多样性,从而提高问答任务的性能。
代码:https://github.com/ EmergenceAI/dartboard
5、RAG进展。 关于query优化,优化查询生成以增强基于RAG的文档检索。Optimizing Query Generation for Enhanced Document Retrieval in RAG,采用查询-文档对齐评分优化查询生成过程,使用大型语言模型进一步细化查询以提高文档检索的精确性和效率:
地址:https://arxiv.org/pdf/2407.12325
6、大模型开源进展。 Mistral发布7B 的代码模型Codestral Mamba,数学推理和科学发现的型Mathstral 7B。
地址:https://huggingface.co/mistralai/mamba-codestral-7B-v0.1 ,https://huggingface.co/mistralai/mathstral-7B-v0.1
7、利用知识图谱检测并修正大模型幻觉,GraphEval策略的简单粗暴实现思路
这个工作,是基于知识图谱作校验的一个思路,值得一看。
地址:https://mp.weixin.qq.com/s/XUxUxL68FEEPC1vISX82rg,https://arxiv.org/pdf/2407.10793
关于查询改写这块,简单实用大模型来完成,很容易出现改错的情况,这个时候,也许可以通过引入相关性的工作来加以缓解。
因此,有个有趣的工作 《Optimizing Query Generation for Enhanced Document Retrieval in RAG》(https://arxiv.org/pdf/2407.12325),可以读一读,很有趣,其采用查询-文档对齐评分优化查询生成过程,使用大型语言模型进一步细化查询以提高文档检索的精确性。
我们可以重点看看其实现思路,会有一些收获。
1、问题背景
问题背景是尽管RAG在减少幻觉方面有效,但由于查询模糊不清,RAG系统仍然会出现幻觉问题,因此可以通过在原始查询中添加相关术语来改进搜索结果,帮助将用户查询与相关文档联系起来。
那么,该怎么做?查询扩展方法包括基于检索器的方法和基于生成的方法。
基于检索器的方法通过使用检索器的结果扩展查询。例如,纳入相关术语或短语,丰富查询的相关信息,从而增强搜索查询的有效性。代表的,CSQE(https://arxiv.org/abs/2402.18031) 使用LLM从检索到的文档中提取关键句子进行查询扩展,创建任务适应性查询,尽管这可能导致查询过长。
基于生成的方法则使用外部数据,如大模型,来增强查询。例如,Query2Doc(https://arxiv.org/pdf/2303.07678)中提到的LLM生成的输出添加到查询中显著优于简单的检索器。然而,这种方法可能会引入不准确性、与目标文档的不一致性,以及对LLM幻觉的高度敏感性。
2、实现思路
该工作提出查询优化使用查询扩展(Query Optimization using Query expAnsion QOQA)的策略,QOQA的概念图如下图,给定带有顶部k个文档的扩展查询,向大型语言模型(LLM)添加前3个重新表述的查询及其得分,根据得分优化查询并生成重新表述的查询。
具体实现上,细分为2个步骤:
首先,查询优化。 使用大模型(LLM)根据其得分重新表述查询。首先输入原始查询并使用检索器检索N个文档,然后将原始查询与检索到的顶部N个文档连接起来创建扩展查询,再发送到LLM生成R0个(这个工作设置为3)重新表述的查询。
这一步主要通过prompt来实现,模型用的是GPT-3.5-Turbo,对应的prompt如下:
其中,黑色文字描述了优化任务的指令。蓝色文字是原始查询以及与原始查询一起检索的顶部N个文档。紫色文字是由LLM优化器修订的查询及其得分。
其次,查询-文档对齐得分。 使用三种类型的评估得分,包括基于稀疏检索的BM25得分、基于密集检索的向量化得分以及结合稀疏和密集检索的混合得分。
其中,向量化模型方面,使用BAAI/bge-base-env1.5模型,对于密集检索任务,添加了 “Represent this sentence for searching relevant passages:”作为查询前缀(注意,这点很重要,是带instruction提示的)。混合得分通过适当调整参数α,来结合BM25得分和密集得分。
比对效果如下:
3、一个具体的例子
我们可以看一个具体的例子,从中可以看到Original query、Rephrased query以及Answer document的改写效果。
原始查询:0-dimensional biomaterials show inductive properties.
重新表述查询:Do nano-sized biomaterials possess unique properties that can trigger specific reactions in biological systems?
原始查询:what is the origin of COVID-19
重新表述查询:What molecular evidence supports bats and pangolins as the likely origin hosts of the COVID-19 virus?
可以看到,如表2所示,使用QOQA生成的重新表述查询比原始查询更精确和具体。在搜索答案文档时,QOQA方法生成的查询包含了精确的关键词,如“nano”或“molecular evidence”,以检索最相关的文档。
这种关键词的精确使用确保了重新表述的查询与答案文档共享更多的共同词汇。因此,使用QOQA的查询在检索包含正确答案的文档方面表现出有效性。
本文主要回顾了老刘说NLP20240718大模型进展早报,有些技术以及开源项目的新动向,对于社区的一些共享,也欢迎加入社区一起跟进,社区持续纳新。
其中关于长文本相关的一些总结,大家可以仔细阅读。
然后看了下关于查询改写这块的一个新思路,但这种方法依旧很费token,并且对召回搜索的要求比较高。
这也是当前很多工作是用时间复杂度来换取性能优化空间的一个真实写照。
1、https://arxiv.org/pdf/2407.12325
老刘,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
老刘说NLP,将定期围绕大模型&知识图谱&RAG&文档理解四大主题,进行前沿技术、实践项目等总结等内容,欢迎关注。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入