RECOMP论文阅读笔记

该模块可作为开发物件之一 0 概念澄清 RAG指的是一系列方法论,其概念更加抽象。检索强化语言模型(Retrieval-Augmented LM) 则是经外部知识强化后的语言模型,其概念具体到可以指定物件。 其中,在该文章语境下,RALM的检索功能被定义为语言模型的一部分,而RAG则允许检索功能被放置在任何位置,包括但不限于语言模型内部和外部挂载模块。为作区分,之后的部分将明确标注检索强化生成技术的作用位置,即模型内和模型外 1 文献目标 1.1 概览 问题 模型外的RAG技术会消耗更多token,长文本效果更明显 难以提取长文本上下文 无关文本干扰模型 解决方案: 在预置和模型之间插入信息压缩模块。该文献提出了两种信息压缩模块。 “预置”是指整合查询和文本块并准备输入LLM的步骤,它被定义在Naive RAG架构中的Generation操作开端。 2 具体实现 两个模块都可以用LoRA微调,推荐应用于编码-解码结构 2.1 问题定义 给定输入序列$x$,目标输出$y$和一组检索到的文档$D = [d_1, d_2, \cdots, d_n]$,压缩器的任务是: 生成一个摘要$s$,使得: $s$比$D$短得多 当$s$被预置到$x$前输入语言模型$M$时,模型生成$y$的概率最大化 $s$的内容应该能被$D$所蕴含 压缩器的任务与花书中定义的序列生成定义相对接近,其本身超越传统的监督学习任务框架。 该文献的方法将语言模型视为黑盒并不作更改。 2.2 Extractive Compressor 原论文模型参数量110M,考虑量化后体积还能进一步缩小 Extractive Compressor将问题定义为ranking问题,即直接将句子排序、拼接并预置。Extractive Compressor使用双编码器结构,通过嵌入句子,计算相似度来衡量语料对回答问题的有用程度。 推理过程如下: flowchart LR subgraph A [输入预处理与编码] A1[“文档集D<br>(多篇文档)”] --> A2[“分句”] A2 --> A3[“句子集合S<br>(s₁, s₂, …, sₙ)”] A4[“用户查询 x”] end subgraph B [句子评分与选择] A3 -- “句子编码器<br>enc_θ(sᵢ)” --> B1[“句子向量”] A4 -- “查询编码器<br>enc_θ(x)” --> B2[“查询向量”] B1 --> B3(“点积/余弦相似度<br>计算得分”) B2 --> B3 B3 --> B4[“按得分排序<br>选出Top K个句子”] end subgraph C [输出拼接] B4 --> C1[“压缩后的摘要 s<br>(Top K 句子的直接拼接)”] end A --> B --> C 训练流程大概如下: ...

2025年12月26日 · 2 分钟

PKG论文精读笔记

1 文献目标 问题: LLM缺乏领域针对性知识的获取,如相关知识及专有名词 SOTA LLM通常是黑盒,缺乏透明性且成本高昂导致难以针对领域只是微调 能承担微调费用的用户有隐私暴露风险 解决方案: 通过instruction fine-tuning,在与训练阶段将指定领域的知识融入PKG模块 提问时,PKG先生成领域知识,领域知识传递给黑盒LLM辅助作答 2 具体实现 套用Generate-Read 的Modular RAG范式 2.1 内容生成 得到问题$Q$后,LLM通过最大化后验估计(MAP)来生成回应 $$ \hat{A} = argmax_{A} P(A|Q, M^{LLM}) $$ 其中$M^{LLM}$是黑盒LLM的参数。该公式含义为:在给定查询$Q$和LLM参数$M^{LLM}$的情况下,总是返回“最可能”的答案。该公式是直接使用LLM时的答案返回机制。 2.2 知识对齐 此时向问题传入PKG模块,其参数为$M^{PKG}$。该模型同样通过最大后验估计来生成回答,此处仅处理背景知识: $$ \hat{K} = argmax_KP(K|Q, M^{PKG}) $$ 即,通过已有的PKG模块$M^{PKG}$,总是返回“最可能”的背景知识。 这一步的实现具体为使用 instructions, input, response三元组的形式来控制PKG模块的输出,大概模板具体如下: <元指令,告诉模型接下来的输入数据格式是什么,让模型清楚知道自己在干啥> ### Instruction <用于PKG模块的查询> % 例如: ### Input <具体输入的指令和数据> 例如: ### Response: <期望输出> % 在此编写你希望模型回复的形式,例如具体的计算过程,要不要用某些指定框架实现,怎么呈现背景知识 以下是一个具体的例子 The following content is an instruction of how to solve a background knowledge providing problem, which contains "instruction", "input" and "expected output". You need to follow such steps for further queries and return content similar to "expected output" descriped below. ### Instruction Generate background knowledge that helps with data mining problems. ### Input What is the average salary. Table: | name | salary | | Alice | 70000 | | Bob | 80000 | ### Output To calculate average: - Sum: 70000+80000=150000 - Count: 2 employees - Average: 150000 / 2 - 75000 2.3 强化查询 将PKG模块融入到LLM中后,后验概率变更为: ...

2025年12月15日 · 1 分钟

RAG综述阅读笔记

论文链接:https://arxiv.org/abs/2312.10997 [[RAG survey.pdf|RAG综述]] 近期更新:2025.12.15,更新次数:1 1.RAG 1.1 什么是RAG 全称:检索增强生成(Retrieval-Augmented Generation)。 1.2 RAG作用阶段 RAG可作用于LLM生命周期的如下位置 预训练:需要自行训练 微调:需要本地部署 推理:这是RAG最早被应用的LLM生命阶段,也是我唯一能够执行操作的阶段 RAG技术早期注重于推理阶段应用,而后逐渐转向微调阶段和预训练阶段 1.3 RAG常见范式 Naive RAG Naive RAG只有indexing, retrieval和generation三个步骤,是一个线性的过程。 indexing: 包含数据预处理(PDF, markdown, etc. $\rightarrow$ txt),分块,获取嵌入向量 retrieval: 用相同的嵌入模型嵌入用户查询,然后检索文件块 generation: 用文件块扩充查询,让LLM生成答复 特别注意:文档嵌入是离线的,用户输入嵌入是在线的 该方法弊端: 检索部分在精确率和召回率存在不足 模型或将遭遇幻觉,导致输出不存在内容 强化存在障碍:输出不连贯、相似检索导致重复响应 Advanced RAG 该范式主要基于Naive RAG增加了预处理、后处理手段: 预强化(pre-retrieval):用于强化indexing和用户查询的效用,这是可操作的部分之一。包含如下方法 Query Routing: 要求某个查询使用指定的检索范围 Query Rewriting: 重写查询 Query Expansion: 扩展查询以具体化检索目标,防止找不到先验知识 后强化(post-retrieval):对查询进行进一步处理。这一步已经被主流RAG框架实现了,无需重新搓轮子。主要包含如下步骤 Rerank: 重排序文件块 Summary: 压缩文件块内容 Fusion: 组合多查询(包括不同的查询策略)整合文件块 Modular RAG 这是一种更优秀,更复杂的RAG范式。论文介绍了如下模块(有一部分是对Advanced RAG中改良方法的封装) 模块名 作用 Search 场景针对性、多数据源 Fusion 多查询策略,可并行 Memory 强化对话/文档上下文,无界记忆池 Routing 多数据源,更优查询路径 Predict 以LLM直接预测相关内容,降噪 Task Adapter 对下流任务定制retrieval方案 注:DeepSeek R1 使用的是全强化学习+GRPO,而非类似于Modular RAG + RL的过程 ...

2025年12月11日 · 2 分钟