AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


近期关于RAG的三个技术问题:文本压缩省内存、引入时间增加时效性以及NLP任务处理相结合
发布日期:2024-05-03 08:16:45 浏览次数: 1844


我们来看近期社区关注的三个问题,文本压缩的使用(有什么算法,用什么工具去做)、关于基于RAG进行NLP相关任务处理(怎么做结合,本质上是ICL构造)以及关于RAG召回引入时间相关性(只有在时间敏感场景下这个事情才成立)。

长篇大论、翻译堆叠无意义【今后弃之】,抛出问题,言简意赅,给一些方案指引【今后从之】,会更有意义愿大家多思考,多思辩、多抓本质,多有自己的观点。

一、问题1:RAG文本压缩省成本

关于上下文压缩,我们之前讲过,https://llmlingua.com/llmlingua2.html,微软的第二代工作,https://arxiv.org/abs/2403.12968,LLMLingua-2可以将文本长度大幅缩减至最初的20%,与前一版本LLMLingua以及其他类似技术相比,LLMLingua 2的处理速度提高了3到6倍。

其实现思路为:模型会评估每个词的重要性,决定是保留还是删除,同时也会考虑到词语之间的关系。最终,模型会选择那些评分最高的词汇组成一个更简短的提示词。

其在逻辑性上,是长文本中召回的东西很冗余,很费token,如果能够对文本压缩而不损失精度,那么就可以得到一个较好的成本平衡。

但,算法对人比较陌生,可以考虑直接用,例如,最近的大模型长文本压缩工具,可以看看,PCToolkit:一个统一的大语言模型即插即用快速压缩工具包:https://arxiv.org/pdf/2403.17411.pdf。

Datasets模块包含10个不同的数据集,包括GSM8K、BBC News、Arxiv、ShareGPT、BBH、LongBench、Gigaword、DUC2004、BNC和Google等。

Compressors模块集成5种Prompt压缩算法:SCRL、LLMLingua、LongLLMLingua、KiS和Selective Context。

Metrics模块包含评估压缩效果的主要指标,如BLEU、ROUGE-1、ROUGE-2、ROUGE-L、BERTScore-P、BERTScore-R、BERTScore-F1和Edit distance等。

可以关注的几个点:

1)不同压缩算法与数据集之间的的组合

2)不同长文本压缩算法的效果:

地址: https://github.com/3DAgentWorld/Toolkit-for-Prompt-Compression

二、问题2:RAG引入时间相关性增加时效性

关于RAG的重排阶段,时间相关度纳入,这个事情最近老在说。仔细想想,这个时间相关性,什么叫时间?谁与谁的时间?哪来的时间?rerank本身就是向量重拍,怎么加进去。

这个在时间敏感场景下或许用得到。

而从场景来看,这里有两个方面的时间,一个是问题本身,有提问时间和问题中检索时间;一个是信息发布时间。场景就是用户检索的问题对时间敏感度不同,有些是对信息新鲜度更敏感,发布时间越靠近提问时间越好,有些对信息初始公布时间越敏感,信息发布时间越接近检索中的时间越好。

很粗暴的做法,在召回阶段加一个时间相关性系数,做一个调和加权公式,但也可以通过训练引入时效性的召回排序模型,思路如下:

这块的方案,可以参考https://developer.aliyun.com/article/766467

三、问题3:RAG优化prompt提升ICL性能

在大模型出来之前,大家都是用有监督的数据集进行训练,大模型出来之后,大家都喜欢用sft微调的方式进行处理,但这个毕竟还是需要训练成本,而现在RAG继续往后发展,RAG又走向了一条与其他NLP处理任务相结合的道路

其逻辑在于,省训练成本,除了做抽取,还能做分类任务。

这里举几个例子,一个是基于RAG的生成式信息抽取:Retrieval-Augmented Generation-based Relation Extraction:https://arxiv.org/pdf/2404.13397,

实现思路很粗暴,如图4所示:

用户提交一个句子(查询)以及一对可能与检索模块有关联的实体(头部实体和尾部实体)。然后,"检索器"会将该查询发送到"数据扩展"模块,该模块会用训练数据集中语义相似的句子来扩展原始查询。

当生成模块返回结果时,该模块中的"结果细化"将采用后处理方法。结果细化"包括几个响应处理步骤,如细化前缀(例如,将"founded"改为"org:founded"),以及将"无关系"答案转换为预定义关系类型中定义的"no_relation",以确保只返回关系类型,而不是来自LLM的解释。

无独有偶,在去年就有个工作《GPT-RE: In-context Learning for Relation Extraction using Large Language Models》,https://arxiv.org/abs/2305.0210,也采用类似的思路。

其实现思路如下,在召回阶段对上下文进行task-aware的微调

几个对比的例子也很有趣,例如:

其本质上是在优化ICL上下文。

关于我们

老刘,刘焕勇,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。

老刘说NLP,将定期发布语言资源、工程实践、技术总结等内容,欢迎关注。

对于想加入更优质的知识图谱、事件图谱、大模型AIGC实践、相关分享的,可关注公众号,在后台菜单栏中点击会员社区->会员入群加入。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询