<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>RAG on Young的博客</title><link>https://youngz2357.github.io/Blog/zh/tags/rag/</link><description>Recent content in RAG on Young的博客</description><generator>Hugo -- 0.146.0</generator><language>zh</language><lastBuildDate>Fri, 26 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://youngz2357.github.io/Blog/zh/tags/rag/index.xml" rel="self" type="application/rss+xml"/><item><title>PRCA论文阅读笔记</title><link>https://youngz2357.github.io/Blog/zh/notes/paper-reading/prca/</link><pubDate>Fri, 26 Dec 2025 00:00:00 +0000</pubDate><guid>https://youngz2357.github.io/Blog/zh/notes/paper-reading/prca/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>该模块可作为开发物件之一&lt;/strong>
初步方案：符合语言的Seq2Seq类模型+PRCA调度逻辑微调&lt;/p>&lt;/blockquote>
&lt;h2 id="1-文献目标">1 文献目标&lt;/h2>
&lt;p>问题&lt;/p>
&lt;ul>
&lt;li>LLM参数太多，调参成本有限&lt;/li>
&lt;li>调整logits输出无法适用于通过API提供服务的黑盒模型&lt;/li>
&lt;/ul>
&lt;p>解决方案&lt;/p>
&lt;ul>
&lt;li>创建即插即用PRCA 适配器&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>PRCA模块和RECOMP信息压缩器处于同一生态位，都属于RAG适配器（Adapter）。具体实现上，可以只实现调度部分，&lt;/p>&lt;/blockquote>
&lt;h2 id="2-具体实现">2 具体实现&lt;/h2>
&lt;h3 id="21-训练潜在问题">2.1 训练潜在问题&lt;/h3>
&lt;p>PRCA模块本身也是一个生成式的模型，它与[[RECOMP(arXiv2310.04408)论文精读笔记#2.3 Abstractive Compressor| Abstractive Expressor]]相似，但是PRCA的训练信号来自于&lt;strong>奖励值&lt;/strong>，而不是来自于LLM和自监督。&lt;/p>
&lt;p>PRCA拦在LLM和文档之间的特点带来了如下问题：&lt;/p>
&lt;ol>
&lt;li>文档先经过PRCA吗，才给到LLM，使得检索质量、PRCA加工质量和生成器能力耦合在一起，形成黑箱，难以判定PRCA的实际效用&lt;/li>
&lt;li>LLM本身也是个黑盒，无法从中获取梯度以传递给PRCA，标准的监督学习路径被截断&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>这也是RECOMP可能遇到的问题&lt;/p>&lt;/blockquote>
&lt;p>PRCA通过划分信息提取阶段和奖励驱动阶段来解耦生成能力和内容调度能力的评估&lt;/p>
&lt;h3 id="22-信息提取阶段contextual-extraction-stage">2.2 信息提取阶段(Contextual Extraction Stage)&lt;/h3>
&lt;p>第一阶段遵从常规的&lt;strong>序列到序列模型&lt;/strong>微调流程，其目标为：&lt;/p>
$$
min \ L(\theta) = -\frac{1}{N}\sum_{N}^{i=1} C_{truth}^{(i)}\log(f_{PRCA}(S_{input}^{(i)}:\theta))
$$&lt;p>
符号：&lt;/p>
&lt;ul>
&lt;li>$C_{truth}^{(i)}$: 真实标签或者期望答案。论文原文没有给出具体获取途径，需要单独设计&lt;/li>
&lt;li>$f_{PRCA}$: PRCA神经网络，表达前向传播&lt;/li>
&lt;li>$S_{input}^{(i)}$: 查询&lt;/li>
&lt;/ul>
&lt;p>原论文中，$f_{PRCA}$使用了BART-Large，此处可以用任意&lt;strong>序列到序列模型&lt;/strong>替代,或更改预训练数据集，以适配具体需求和语种&lt;/p>
&lt;p>此处，$C$和$S$都是自然语言序列，具体获取方法为用序列到序列的tokenizer来分别处理，以得到可以被计算机处理的数组数据。&lt;/p>
&lt;p>信息提取阶段是PRCA训练的&lt;strong>基础&lt;/strong>，其作用为让序列到序列模型具备文本输出能力或适应领域知识。&lt;/p>
&lt;h3 id="23-奖励驱动阶段reward-driven-stage">2.3 奖励驱动阶段(Reward-Driven Stage)&lt;/h3>
&lt;h4 id="231-问题定义">2.3.1 问题定义&lt;/h4>
&lt;p>第二阶段通过强化学习微调PRCA，使其生成的上下文更能帮助下游生成器产生正确答案。 具体而言，PRCA学习提取和组织信息的方式，以最大化生成器输出与真实答案的相似度。&lt;/p>
&lt;p>需要注意的是，在PRCA的设计下：为保障模型的通用性，LLM被视作一个黑盒，只能&lt;strong>输出自然语言&lt;/strong>，允许不输出如logprob，梯度等内部状态。其作用/目的如下：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>适配闭源模型&lt;/strong> - 可使用任何提供文本API的LLM作为生成器(如GPT-4、Claude、Gemini等)，无需访问模型内部参数或梯度&lt;/li>
&lt;li>&lt;strong>跨模型迁移能力&lt;/strong>&lt;/li>
&lt;/ol>
&lt;ul>
&lt;li>训练阶段:可使用成本较低的模型(如DeepSeek)作为奖励信号来源&lt;/li>
&lt;li>推理阶段:训练好的PRCA可无缝切换到其他生成器(如Claude、GPT-4)&lt;/li>
&lt;li>&lt;strong>降低训练成本(使用便宜的API训练)提升推理质量(使用更强的API推理)&lt;/strong> 规避ToS限制(某些模型禁止用输出训练,但可用于推理)&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>请注意检查LLM提供商的使用协议，以保障训练行为合规！&lt;/p>&lt;/blockquote>
&lt;p>该阶段将问题建模为马尔可夫决策过程(MDP):&lt;/p></description></item><item><title>PKG论文精读笔记</title><link>https://youngz2357.github.io/Blog/zh/notes/paper-reading/pkgarxiv2305/</link><pubDate>Mon, 15 Dec 2025 00:00:00 +0000</pubDate><guid>https://youngz2357.github.io/Blog/zh/notes/paper-reading/pkgarxiv2305/</guid><description>&lt;h2 id="1-文献目标">1 文献目标&lt;/h2>
&lt;p>问题：&lt;/p>
&lt;ul>
&lt;li>LLM缺乏领域针对性知识的获取，如相关知识及专有名词&lt;/li>
&lt;li>SOTA LLM通常是黑盒，缺乏透明性且成本高昂导致难以针对领域只是微调&lt;/li>
&lt;li>能承担微调费用的用户有隐私暴露风险
解决方案：&lt;/li>
&lt;li>通过instruction fine-tuning，在与训练阶段将指定领域的知识融入PKG模块&lt;/li>
&lt;li>提问时，PKG先生成领域知识，领域知识传递给黑盒LLM辅助作答&lt;/li>
&lt;/ul>
&lt;h2 id="2-具体实现">2 具体实现&lt;/h2>
&lt;p>套用&lt;strong>Generate-Read&lt;/strong> 的Modular RAG范式&lt;/p>
&lt;h3 id="21-内容生成">2.1 内容生成&lt;/h3>
&lt;p>得到问题$Q$后，LLM通过最大化后验估计(MAP)来生成回应
&lt;/p>
$$
\hat{A} = argmax_{A} P(A|Q, M^{LLM})
$$&lt;p>
其中$M^{LLM}$是黑盒LLM的参数。该公式含义为：在给定查询$Q$和LLM参数$M^{LLM}$的情况下，总是返回“最可能”的答案。该公式是直接使用LLM时的答案返回机制。&lt;/p>
&lt;h3 id="22-知识对齐">2.2 知识对齐&lt;/h3>
&lt;p>此时向问题传入PKG模块，其参数为$M^{PKG}$。该模型同样通过最大后验估计来生成回答，此处仅处理背景知识：&lt;/p>
$$
\hat{K} = argmax_KP(K|Q, M^{PKG})
$$&lt;p>
即，通过已有的PKG模块$M^{PKG}$，总是返回“最可能”的背景知识。&lt;/p>
&lt;p>这一步的实现具体为使用 instructions, input, response三元组的形式来控制PKG模块的输出，大概模板具体如下：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-markdown" data-lang="markdown">&lt;span style="display:flex;">&lt;span>&amp;lt;&lt;span style="color:#f92672">元指令&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">，&lt;/span>&lt;span style="color:#a6e22e">告诉模型接下来的输入数据格式是什么&lt;/span>&lt;span style="color:#960050;background-color:#1e0010">，&lt;/span>&lt;span style="color:#a6e22e">让模型清楚知道自己在干啥&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">### Instruction
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&amp;lt;&lt;span style="color:#f92672">用于PKG模块的查询&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>% 例如:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">### Input
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&amp;lt;&lt;span style="color:#f92672">具体输入的指令和数据&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>例如：
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">### Response:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>&amp;lt;&lt;span style="color:#f92672">期望输出&lt;/span>&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>% 在此编写你希望模型回复的形式，例如具体的计算过程，要不要用某些指定框架实现，怎么呈现背景知识
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>以下是一个具体的例子&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-markdown" data-lang="markdown">&lt;span style="display:flex;">&lt;span>The following content is an instruction of how to solve a background knowledge providing problem, which contains &amp;#34;instruction&amp;#34;, &amp;#34;input&amp;#34; and &amp;#34;expected output&amp;#34;. You need to follow such steps for further queries and return content similar to &amp;#34;expected output&amp;#34; descriped below.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">### Instruction
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>Generate background knowledge that helps with data mining problems.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">### Input
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>What is the average salary.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>Table:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| name | salary |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| Alice | 70000 |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>| Bob | 80000 |
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">### Output
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>To calculate average:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">-&lt;/span> Sum: 70000+80000=150000
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">-&lt;/span> Count: 2 employees
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">-&lt;/span> Average: 150000 / 2 - 75000
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="23-强化查询">2.3 强化查询&lt;/h3>
&lt;p>将PKG模块融入到LLM中后，后验概率变更为：
&lt;/p></description></item><item><title>RAG综述阅读笔记</title><link>https://youngz2357.github.io/Blog/zh/notes/paper-reading/rag%E7%BB%BC%E8%BF%B0arxiv2312/</link><pubDate>Thu, 11 Dec 2025 00:00:00 +0000</pubDate><guid>https://youngz2357.github.io/Blog/zh/notes/paper-reading/rag%E7%BB%BC%E8%BF%B0arxiv2312/</guid><description>&lt;blockquote>
&lt;p>论文链接：https://arxiv.org/abs/2312.10997
[[RAG survey.pdf|RAG综述]]&lt;/p>
&lt;p>近期更新：2025.12.15，更新次数：1&lt;/p>&lt;/blockquote>
&lt;h2 id="1rag">1.RAG&lt;/h2>
&lt;h3 id="11-什么是rag">1.1 什么是RAG&lt;/h3>
&lt;p>全称：&lt;strong>检索增强生成&lt;/strong>（&lt;strong>Retrieval-Augmented Generation&lt;/strong>）。&lt;/p>
&lt;h3 id="12-rag作用阶段">1.2 RAG作用阶段&lt;/h3>
&lt;p>RAG可作用于LLM生命周期的如下位置&lt;/p>
&lt;ul>
&lt;li>预训练：需要自行训练&lt;/li>
&lt;li>微调：需要本地部署&lt;/li>
&lt;li>推理：这是RAG最早被应用的LLM生命阶段，也是我唯一能够执行操作的阶段&lt;/li>
&lt;/ul>
&lt;p>RAG技术早期注重于推理阶段应用，而后逐渐转向微调阶段和预训练阶段&lt;/p>
&lt;h3 id="13-rag常见范式">1.3 RAG常见范式&lt;/h3>
&lt;h4 id="naive-rag">&lt;strong>Naive RAG&lt;/strong>&lt;/h4>
&lt;p>Naive RAG只有indexing, retrieval和generation三个步骤，是一个线性的过程。&lt;/p>
&lt;ol>
&lt;li>indexing: 包含数据预处理（PDF, markdown, etc. $\rightarrow$ txt），分块，获取嵌入向量&lt;/li>
&lt;li>retrieval: 用相同的嵌入模型嵌入用户查询，然后检索文件块&lt;/li>
&lt;li>generation: 用文件块扩充查询，让LLM生成答复&lt;/li>
&lt;/ol>
&lt;blockquote>
&lt;p>特别注意：&lt;strong>文档嵌入是离线的&lt;/strong>，用户输入嵌入是在线的&lt;/p>&lt;/blockquote>
&lt;p>该方法弊端：&lt;/p>
&lt;ol>
&lt;li>检索部分在精确率和召回率存在不足&lt;/li>
&lt;li>模型或将遭遇幻觉，导致输出不存在内容&lt;/li>
&lt;li>强化存在障碍：输出不连贯、相似检索导致重复响应&lt;/li>
&lt;/ol>
&lt;h4 id="advanced-rag">&lt;strong>Advanced RAG&lt;/strong>&lt;/h4>
&lt;p>该范式主要基于Naive RAG增加了预处理、后处理手段：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>预强化(pre-retrieval)&lt;/strong>：用于强化indexing和用户查询的效用，这是可操作的部分之一。包含如下方法&lt;/p>
&lt;ul>
&lt;li>Query Routing: 要求某个查询使用指定的检索范围&lt;/li>
&lt;li>Query Rewriting: 重写查询&lt;/li>
&lt;li>Query Expansion: 扩展查询以具体化检索目标，防止找不到先验知识&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>后强化(post-retrieval)：对查询进行进一步处理。这一步&lt;strong>已经被主流RAG框架实现了&lt;/strong>，无需重新搓轮子。主要包含如下步骤&lt;/p>
&lt;ul>
&lt;li>Rerank: 重排序文件块&lt;/li>
&lt;li>Summary: 压缩文件块内容&lt;/li>
&lt;li>Fusion: 组合多查询（包括不同的查询策略）整合文件块&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h4 id="modular-rag">&lt;strong>Modular RAG&lt;/strong>&lt;/h4>
&lt;p>这是一种更优秀，更复杂的RAG范式。论文介绍了如下模块（有一部分是对Advanced RAG中改良方法的封装）&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>模块名&lt;/th>
&lt;th>作用&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Search&lt;/td>
&lt;td>场景针对性、多数据源&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Fusion&lt;/td>
&lt;td>多查询策略，可并行&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Memory&lt;/td>
&lt;td>强化对话/文档上下文，无界记忆池&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Routing&lt;/td>
&lt;td>多数据源，&lt;strong>更优查询路径&lt;/strong>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Predict&lt;/td>
&lt;td>以LLM&lt;strong>直接预测&lt;/strong>相关内容，降噪&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>Task Adapter&lt;/td>
&lt;td>对下流任务定制retrieval方案&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;blockquote>
&lt;p>注：DeepSeek R1 使用的是全强化学习+GRPO，而非类似于Modular RAG + RL的过程&lt;/p></description></item></channel></rss>