今天是2024年12月25日,星期三,北京,天气晴。
我们今天来看看近期的RAG进展,总结的不错,关于RAG中的query相关的优化方案。另外一个是RAG用于时序预测TimeRAG及RAF框架,会有一些思路。
关注技术,并关注应用落地,把技术学扎实,总会有更多的收获。
供各位参考,多思考,多总结,多实践;
一、RAG中的查询优化技术总结
最近的这个工作《A Survey of Query Optimization in Large Language Models》(https://arxiv.org/abs/2412.17558)总结的不错,对查询优化技术进行了梳理和分类,涵盖了扩展、消歧、分解和抽象四种主要方法。值得一看:
其中:
查询扩展包括内部扩展和外部扩展。其中,内部扩展利用LLMs生成上下文文档或伪文档来增强原始查询。例如,GENREAD通过LLMs生成上下文文档,QUERY2DOC通过生成伪文档来扩展查询。外部扩展从外部知识源(如Web或知识库)引入补充数据来增强查询。例如,LameR通过LLMs生成潜在答案来扩展查询,GuideCQR利用检索到的文档信息来改进查询重写。
问题分解将复杂查询分解为更简单的子查询,然后分别检索相关信息并综合回答。例如,DSP框架通过LLM和检索模型之间的交互来分解问题,LEAST-TO-MOST通过少样本提示将复杂问题分解为简单子问题。
查询消歧通过识别用户意图和查询上下文,生成更有针对性的搜索查询。例如,ECHOPROMPT通过提示LLMs重新表述查询来确保理解一致性,INFOCQR通过重写和编辑查询来消除歧义。
查询抽象对于复杂的多跳查询,通过抽象高层次原则来减少中间推理步骤的错误。例如,STEP-BACK通过操作“then-edit”框架来确保输出与原始查询一致,CoA将CoT推理抽象为带有抽象变量的推理链。
最后,也可以看看里面提到的一些代表性的工作:
二、RAG用于时序预测TimeRAG及RAF框架
时间序列数据具有动态、异质性和上下文依赖性,传统的预测方法难以准确捕捉其复杂模式和依赖关系。因此,将RAG和时间预测进行结合,也是一个方向。
《Retrieval Augmented Time Series Forecasting》(https://arxiv.org/abs/2411.08249),这个早期的工作针对时序预测做了尝试,如下:
定义了一个时间序列检索(TS-R)任务,该任务通过识别当前时间序列中的模式(即查询)并将其与历史上的相似模式(即关键)进行匹配来进行预测。模型需要从历史数据中检索出与当前模式最匹配的时间序列片段,并利用这些信息进行预测。
最近出现第二个工作,《TimeRAG: BOOSTING LLM Time Series Forecasting via Retrieval-Augmented Generation》(https://arxiv.org/pdf/2412.16643),可以看其建库过程,如何针对时序数据做切分,检索。
简单来看,其具体实现机制如下图所示:
三个组成部分:
一个是时间序列知识库构建,首先将原始序列通过滑动窗口切分成多个子序列。然后对这些子序列进行K-means聚类,选择每个聚类的代表序列。最后构建时间序列知识库,存储每个聚类的代表序列。
一个是动态时间规整(DTW),在检索阶段,使用DTW作为距离度量从知识库中检索与查询序列相似的序列。DTW能够处理时间扭曲,计算两个序列之间的相似性。
一个是检索增强生成(RAG),将输入查询和检索到的相似序列重新格式化为自然语言提示,并输入到LLM中进行预测。
总结
本文主要跟进了下最近关于大模型用于推荐以及RAG的进展,前者提到的思路大家可以多看看,作为指引。后者呢,不是很新的工作,但代表了一种趋势。
参考文献
1、https://arxiv.org/abs/2411.08249
2、https://arxiv.org/pdf/2412.16643
3、https://arxiv.org/abs/2412.17558
关于我们
老刘,NLP开源爱好者与践行者,主页:https://liuhuanyong.github.io。
对大模型&知识图谱&RAG&文档理解感兴趣,并对每日早报、老刘说NLP历史线上分享、心得交流等感兴趣的,欢迎加入社区,社区持续纳新。
加入会员方式:关注公众号,在后台菜单栏中点击会员社区->会员入群加入