RefAug:prompt增强训练LLM
https://github.com/ytyz1307zzh/RefAug
Learn Beyond The Answer: Training Language Models with Reflection for Mathematical Reasoning
论文提出了一种新的训练策略,名为“reflective augmentation”(简称RefAug),旨在通过在数学问题解答训练实例中嵌入问题反思,来培养语言模型(LMs)更深层次的理解能力。这种方法不仅提高了模型在标准单轮问答(QA)设置中的性能,也显著提升了模型在需要反思性思考的更复杂场景中的性能,如处理后续问题、纠正错误或利用外部反馈。
从项目代码中查看训练数据文件为
在答案中增加反思过程,通过训练以引导LLM主动反思,增强推理能力。在推理时,将reflective的部分进行字符串删除即可。
SeaKR:自我感知RAG
SeaKR: Self-aware Knowledge Retrieval for Adaptive Retrieval Augmented Generation
https://github.com/THU-KEG/SeaKR
自适应RAG是动态确定LLM是否需要RAG的策略。SeaKR能从低成本模型的内部状态中提取其自身的不确定性,自适应的激活检索功能。性能优化现有的自适应RAG方案。
SeaKR
通常来说,使用RAG时,会默认从知识库中检索输入相关内容,而不关心输入数据或者模型内部是否已经包含了足以回答的信息量。对这种场景来说,不但徒增了耗时,还有可能因为检索到的内容导致模型生成质量降低。
因此自适应RAG应运而生。根据输入数据动态判断是否需要检索。有根据模型输出判断是否需要检索的方法,但SEAKR是第一个利用LLMS内部状态的自我意识来动态确定何时检索和有效整合检索到的知识的框架。具体地说,从对应于最后生成的令牌的每一层的前馈网络(FFN)的内部状态中提取LLM的自感知不确定性。
The overall framework of SEAKR.
SEAKR包含三部分:1、LLM。2、根据LLM内部状态的不确定性估计器。3、搜索引擎。
评测效果如下
Experiment results on complex QA datasets in percentage (%)
Experiment results on simple QA datasets in percentage (%)
12 RAG Pain Points and Proposed Solutions
RAG 系统开发中的 12 大痛点及解决方案 [译]
总结有如下几点:
-
数据缺失找不到;(整理数据)
-
找到了错误数据;(数据清洗)
-
找到正确数据,但是整合顺序有问题;(优化相似度计算等)
-
找到正确数据,但是超出上下文长度;(chunk size,上下文压缩、LongContextReorder(长内容优先排序))
-
数据格式错误,提取困难or信息不对;(优化相关文档的解析)
-
回答不够详细;
-
回答不够全面;
-
回答的安全性;
-
数据查询的效率问题;
-
结构化数据读取效率;
-
模型回复效率;
Memory3:外挂KV知识库
Memory3: Language Modeling with Explicit Memory
院士领衔推出大模型的第3种记忆:比参数存储和RAG都便宜,2.4B模型越级打13B
Memory3是一种把知识最大程度外置的方法,LM 可以享受更小的参数大小、训练成本和推理成本,实现比更大的模型和RAG更好的性能,并享有更快的速度。
这种记忆是继隐性记忆(模型参数)和工作记忆(模型输入,RAG的结果也是输入)之后的第三种记忆形式。
Memory 3模型将文本转化为显性记忆,然后在推理过程中调用这些记忆。显性记忆可以看作是可检索的模型参数、外化知识或稀疏激活的神经回路。
其实就是在原始的外挂知识库的场景上,将知识库预先通过LLM处理得到全部的kv值,把kv值存储下来替换文本知识库。(这部分操作是前预处理)在推理时,根据当前输入的kv值去知识kv库中查找相关的kv,一起进行attention计算即可。
但如果将全部知识库的kv cache存下来,内存消耗也是极大的。需要压缩。
论文中提到最终将46T的数据压缩到了4T。
从评分上看也还不错,2.4B的模型性能堪比最强的Qwen1.5-7B
Few-shot evaluation of general abilities. The model sizes only include non-embedding parameters.
多模态RAG:ColPali
ColPali: Efficient Document Retrieval with Vision Language Models
目前文本的RAG已经有不错的成果,而图像RAG效果还有很大的提升空间。通常的图像RAG流程为:
-
1、PDF解析器或光学字符识别(OCR)系统用于从页面中提取单词。
-
2、运行文档布局检测模型来分割段落、标题和其他页面对象,如表格、图形和标题。
-
3、定义一个组块策略来对具有一定语义连贯性的文本段落进行分组
但经试验发现,优化图像信息输入方法比优化文本模型的性能提升更加明显。因此提出了ViDoRe,一个新的全面的测试基准,考虑更多的视觉信息。提出了ColPali,一个新的VLM模型,纯粹以图像特征中索引相关文档。
graphrag
GitHub - microsoft/graphrag: A modular graph-based Retrieval-Augmented Generation (RAG) system
From Local to Global: A Graph RAG Approach to Query-Focused Summarization
GraphRAG: A new approach for discovery using complex information
源码解读 - 微软GraphRAG框架
通过RAG技术可以使LLM准确回答从未见过的内容。目前大多数 RAG 方法都使用向量相似度作为搜索技术。GraphRAG是微软提出来的RAG+graph框架,
使用 LLM 生成的知识图谱
,在对复杂信息进行文档分析时显著提高问答性能。
基础RAG的缺点:
-
基线 RAG 难以将各个点连接起来。当回答问题需要通过共享属性遍历不同的信息片段以提供新的综合见解时,就会发生这种情况。
-
当被要求全面理解大型数据集合甚至单个大型文档中的总结语义概念时,基线 RAG 的表现不佳。
(比如让模型回答未训练过的《西游记》一书的内容,若问孙悟空被天庭封为什么官,那么RAG到相似的文档即可回答。若问西游戏整本书在讲什么,那么RAG的效果就很差,取任何chunk都没办法总结全书的内容)
From Local to Global: A Graph RAG Approach to Query-Focused Summarization
Graph RAG方法的数据流如下所示
Graph RAG pipeline
首先,讲输入文本分割成chunk进行处理,每个chunk都传入一组LLM中,从中提取组成graph的元素。将文档分割成更长的文本可以降低LLM的调用次数。可以观察到,在chunk size为600个token的时候,从整个文档中提取到的entity references 几乎是2400token长度的两倍。虽然references 越多越好,但任何提取过程都需要平衡精度和召回率。