<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>AI Agent 学习笔记 – RAG</title>
    <link>https://skyao.net/learning-ai-agent/timeline/before2022/rag/</link>
    <description>Recent content in RAG on AI Agent 学习笔记</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 14 Sep 2026 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="https://skyao.net/learning-ai-agent/timeline/before2022/rag/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Timeline: Retrieval-Augmented Generation（论文）</title>
      <link>https://skyao.net/learning-ai-agent/timeline/before2022/rag/paper/</link>
      <pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-ai-agent/timeline/before2022/rag/paper/</guid>
      <description>
        
        
        &lt;p&gt;Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Küttler, Mike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, Douwe Kiela. &lt;em&gt;Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks&lt;/em&gt;. NeurIPS 2020. &lt;a href=&#34;https://arxiv.org/abs/2005.11401&#34;&gt;arXiv:2005.11401&lt;/a&gt;（v4，2021-04）。作者单位包括 Facebook AI Research、University College London、New York University。&lt;/p&gt;
&lt;p&gt;中文译本：&lt;a href=&#34;https://baoyu.io/translations/ai-paper/2005.11401-retrieval-augmented-generation-for-knowledge-intensive-nlp-tasks&#34;&gt;宝玉&lt;/a&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;摘要&#34;&gt;摘要&lt;/h2&gt;
&lt;p&gt;大规模预训练语言模型可以把事实知识存在参数里，微调后在许多 NLP 任务上达到当时最好水平。但访问并精确操纵这些知识的能力仍有限，知识密集型任务上落后于任务专用结构。如何给预测提供出处、如何更新世界知识，仍是开放问题。带可微访问机制、显式非参数记忆的预训练模型，此前主要只在抽取式下游任务上被研究。&lt;/p&gt;
&lt;p&gt;本文给出一种通用微调配方 &lt;strong&gt;retrieval-augmented generation (RAG)&lt;/strong&gt;：把预训练的参数记忆与非参数记忆结合起来做语言生成。参数记忆是预训练 seq2seq 模型；非参数记忆是维基百科的稠密向量索引，由预训练神经检索器访问。比较两种写法：整段生成共用同一批检索段落；每个 token 可以使用不同段落。在多种知识密集型任务上微调与评测；三个开域问答任务上达到当时最好，超过纯参数 seq2seq 以及任务专用的「检索再抽取」结构。生成任务上，比当时最好的纯参数 seq2seq 基线更具体、更多样、更符合事实。&lt;/p&gt;
&lt;h2 id=&#34;1-引言&#34;&gt;1 引言&lt;/h2&gt;
&lt;p&gt;预训练语言模型可以从数据里学到相当深的知识，不必访问外部记忆，相当于参数化的隐式知识库。代价是：记忆不容易扩展或修订；预测不容易给出依据；可能产生幻觉。混合参数记忆与非参数（检索）记忆可以缓解：知识能直接修订、扩展，被访问的内容可检查。REALM 与 ORQA 把掩码语言模型与可微检索器结合，结果可观，但只做了开域抽取式问答。本文把这种混合记忆接到当时 NLP 的主力结构——seq2seq 模型上。&lt;/p&gt;
&lt;p&gt;RAG：参数记忆是预训练 seq2seq Transformer；非参数记忆是维基百科稠密索引，由预训练神经检索器访问。检索器是 DPR，按输入给出潜在文档；生成器是 BART，同时条件于这些文档与输入。对潜在文档做 top-K 近似边际化：按整段输出（同一文档负责所有 token）或按 token（不同文档负责不同 token）。与 T5 / BART 一样，RAG 可在任意 seq2seq 任务上微调，生成器与检索器一起学。&lt;/p&gt;
&lt;p&gt;与从零训练的记忆网络等不同：这里两块记忆都已预训练、预装大量知识。用预训练好的访问机制，不必再训一遍才能访问知识。&lt;/p&gt;
&lt;p&gt;知识密集型任务：人若没有外部知识源，无法合理完成。RAG 在 open Natural Questions、WebQuestions、CuratedTrec 上达到当时最好；TriviaQA 上明显超过使用专用预训练目标的近期方法。这些本是抽取式任务，作者发现无约束生成反而超过先前抽取方法。生成侧做了 MS-MARCO 与 Jeopardy 问题生成。FEVER 事实验证距使用强检索监督的流水线 SOTA 约 4.3%。非参数记忆可以替换，以便世界变化时更新知识。&lt;/p&gt;
&lt;h2 id=&#34;2-方法&#34;&gt;2 方法&lt;/h2&gt;
&lt;p&gt;输入序列 (x) 用来检索文档 (z)，再作为额外上下文生成目标序列 (y)。两块：(i) 检索器 (p_\eta(z|x))，按查询给出（截断到 top-K 的）段落分布；(ii) 生成器 (p_\theta(y_i|x,z,y_{1:i-1}))，根据已生成 token、原输入与检索段落生成当前 token。&lt;/p&gt;
&lt;p&gt;把检索到的文档当潜变量，端到端训练。两种边际化：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RAG-Sequence。&lt;/strong&gt; 同一篇检索文档生成整段。top-K 近似：&lt;/p&gt;
&lt;p&gt;[
p_{\text{RAG-Sequence}}(y|x)\approx\sum_{z\in\text{top-}k}p_\eta(z|x),p_\theta(y|x,z)
=\sum_{z\in\text{top-}k}p_\eta(z|x)\prod_i p_\theta(y_i|x,z,y_{1:i-1})
]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RAG-Token。&lt;/strong&gt; 每个目标 token 可以对应不同潜在文档，生成器可从多篇里取内容：&lt;/p&gt;
&lt;p&gt;[
p_{\text{RAG-Token}}(y|x)\approx\prod_i\sum_{z\in\text{top-}k}p_\eta(z|x),p_\theta(y_i|x,z,y_{1:i-1})
]&lt;/p&gt;
&lt;p&gt;序列分类把类别当成长度 1 的目标序列，此时两种模型等价。&lt;/p&gt;
&lt;h3 id=&#34;22-检索器dpr&#34;&gt;2.2 检索器：DPR&lt;/h3&gt;
&lt;p&gt;双编码器：(p_\eta(z|x)\propto\exp(\mathbf{d}(z)^\top\mathbf{q}(x)))，(\mathbf{d}(z)=\mathrm{BERT}_d(z))，(\mathbf{q}(x)=\mathrm{BERT}_q(x))。top-K 是最大内积搜索（MIPS），可近似亚线性求解。用 DPR 预训练的双编码器初始化检索器并建索引。该检索器原为 TriviaQA 与 Natural Questions 上「检索含答案的文档」而训。文档索引即非参数记忆。&lt;/p&gt;
&lt;h3 id=&#34;23-生成器bart&#34;&gt;2.3 生成器：BART&lt;/h3&gt;
&lt;p&gt;任意编码器—解码器均可。本文用 BART-large（约 4 亿参数）。把 (x) 与检索内容 (z) 拼接后送入 BART。BART 参数 (\theta) 即参数记忆。&lt;/p&gt;
&lt;h3 id=&#34;24-训练&#34;&gt;2.4 训练&lt;/h3&gt;
&lt;p&gt;检索器与生成器联合训练，&lt;strong&gt;不对「该检索哪篇」做直接监督&lt;/strong&gt;。最小化目标的负边际对数似然。更新文档编码器 (\mathrm{BERT}_d) 代价高（索引要像 REALM 那样周期性重建）。作者发现不必如此也能得到强结果：文档编码器与索引固定，只微调查询编码器 (\mathrm{BERT}_q) 与 BART。&lt;/p&gt;
&lt;h3 id=&#34;25-解码&#34;&gt;2.5 解码&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;RAG-Token&lt;/strong&gt; 可看成标准自回归 seq2seq，把对文档的边际化折进转移概率，用普通束搜索。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RAG-Sequence&lt;/strong&gt; 的 (p(y|x)) 不能拆成常规的逐 token 似然。对每篇 (z) 各做一次束搜索，再对未出现在所有束里的假设补前向，乘上 (p_\eta(z|x)) 后求和。称为 Thorough Decoding。更长输出时候选集变大；可近似认为束搜索没生成过的 (y) 概率为 0，避免额外前向，称为 Fast Decoding。&lt;/p&gt;
&lt;h2 id=&#34;3-实验设定&#34;&gt;3 实验设定&lt;/h2&gt;
&lt;p&gt;非参数知识源：单一维基百科转储（2018 年 12 月，与 Lee et al.、Karpukhin et al. 一致）。每篇切成互不相交的约 100 词块，共 2100 万文档。FAISS + HNSW 建 MIPS 索引。训练时每查询检索 top (k\in{5,10})；测试时的 (k) 用开发集选。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;开域 QA。&lt;/strong&gt; 问题与答案当输入—输出对，直接最小化答案的负对数似然。对照抽取式（答案是检索文档中的跨度，主要靠非参数知识）与闭卷生成（T5 等，纯参数、不检索）。数据集：NQ、TriviaQA、WebQuestions、CuratedTrec。WQ、CT 较小，用 NQ 上的 RAG 初始化。报 Exact Match。TriviaQA 另报与 T5 可比的 Wiki 测试集。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;抽象问答。&lt;/strong&gt; MS-MARCO NLG v2.1：不用官方提供的十篇金段落，只问与答，当成开域抽象 QA。部分题没有金段落无法对上参考答案；部分题仅靠维基百科答不了，此时可靠参数知识。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jeopardy 问题生成。&lt;/strong&gt; 给定实体，生成 Jeopardy 式精确事实问句。SearchQA 划分。对照 BART。指标 Q-BLEU-1；另做事实性与特异性的成对人工评测。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;事实验证。&lt;/strong&gt; FEVER：判断断言被维基支持、反驳或信息不足。把三类标签映射成单 token，直接用断言—类别对训练。&lt;strong&gt;不用检索证据的监督&lt;/strong&gt;。报 3 分类与 2 分类标签准确率。&lt;/p&gt;
&lt;h2 id=&#34;4-结果&#34;&gt;4 结果&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;开域 QA（表 1，测试集 EM）。&lt;/strong&gt; RAG-Sequence：NQ 44.5，TQA 56.8 / 68.0（标准 / Wiki），WQ 45.2，CT 52.2。RAG-Token：NQ 44.1，WQ 45.5。均超过闭卷 T5-11B+SSM（NQ 36.6，WQ 44.7）与开域 REALM / DPR。作者强调：不必昂贵的 salient span masking 预训练；也不必 DPR 那套 cross-encoder 重排 + 抽取式阅读器。生成的好处：文档里只有线索、没有答案原文时仍能贡献；检索集里完全没有正确答案时，NQ 上仍有 11.8% 准确率（抽取模型为 0）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MS-MARCO。&lt;/strong&gt; RAG-Sequence 相对 BART 高 2.6 BLEU、2.6 Rouge-L。接近使用金段落的 SOTA。定性上幻觉更少。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Jeopardy。&lt;/strong&gt; RAG-Token 的 Q-BLEU 高于 RAG-Sequence 与 BART。人工（452 对）：BART 更符合事实仅 7.1%，RAG 更符合事实 42.7%。特异性同样 RAG 明显更好。作者用 Hemingway 一例说明：不同 token 的文档后验会在不同书名上高峰，参数记忆随后能自己补全书名——非参数成分把参数里的具体知识「抽」出来。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;FEVER。&lt;/strong&gt; 3 分类距当时流水线 SOTA 约 4.3%；2 分类距给定金证据句的 RoBERTa 约 2.7%。top-1 检索文档与金证据文章重叠 71%，top-10 含金文章 90%。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;多样性。&lt;/strong&gt; 不靠多样性解码，RAG 的 distinct trigram 比例高于 BART。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;消融。&lt;/strong&gt; 冻结检索器全面变差。把稠密检索换成固定 BM25：FEVER 上 BM25 更好（断言偏实体、适合词重叠）；其余任务尤其开域 QA，可微检索关键。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;索引热替换。&lt;/strong&gt; 2016-12 与 2018-12 两份维基索引。对 82 位在两日期之间换人的领导人，用「Who is {position}?」查询 NQ 模型：匹配年份的索引约 70% / 68% 正确；错配索引降至 12% / 4%。&lt;strong&gt;换非参数记忆即可更新世界知识，不必重训。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;训练用 5 或 10 篇差别不大。测试时多检索：RAG-Sequence 的开域 QA 单调变好；RAG-Token 约在 10 篇见顶。&lt;/p&gt;
&lt;h2 id=&#34;56-相关工作与讨论&#34;&gt;5–6 相关工作与讨论&lt;/h2&gt;
&lt;p&gt;把先前「检索帮单个任务」的成功收成&lt;strong&gt;同一套检索架构微调到多种任务&lt;/strong&gt;。对照无检索的通用架构（GPT-2、BART、T5）、可学习检索、记忆网络、retrieve-and-edit。索引是原文而非分布式表示：人能读（可解释），人能写（改索引即改记忆）。&lt;/p&gt;
&lt;p&gt;结论：混合生成模型在开域 QA 上达到当时最好；人更偏好 RAG 而非纯参数 BART；检索可学、索引可热替换。后续可考虑两块从零联合预训练。&lt;/p&gt;
&lt;p&gt;社会影响：更贴维基事实、幻觉更少、更可控制；维基本身仍有偏差；也可被用来生成误导内容。风险缓解思路与 GPT-2 讨论同类。&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Timeline: RAG 讲解</title>
      <link>https://skyao.net/learning-ai-agent/timeline/before2022/rag/explanation/</link>
      <pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate>
      
      <guid>https://skyao.net/learning-ai-agent/timeline/before2022/rag/explanation/</guid>
      <description>
        
        
        &lt;h2 id=&#34;这篇论文要解决的问题&#34;&gt;这篇论文要解决的问题&lt;/h2&gt;
&lt;p&gt;2020 年 5 月，与 &lt;a href=&#34;../../gpt-3/&#34;&gt;GPT-3&lt;/a&gt; 几乎同期。当时预训练已能把事实压进参数，REALM 与 DPR 已能做到先检索再抽取。三条缺口并列：参数知识难以修改、难以核查、且会产生幻觉；可微检索当时主要服务于抽取式阅读，答案必须落在原文跨度内；生成模型仍是闭卷的，知识密集型生成落后于任务专用结构。&lt;/p&gt;
&lt;p&gt;RAG 给出的是配方，不是新的骨干网络。检索器沿用现成的 DPR，生成器沿用现成的 BART，把检索到的文档当作潜变量，用答案似然端到端微调查询编码器与生成器。索引固定，可以热替换；生成不必等于抽取。它测量的终点是开域问答与若干生成、分类基准，而不是「模型自行决定何时重新检索」。&lt;/p&gt;
&lt;h2 id=&#34;对后续-llm-的影响&#34;&gt;对后续 LLM 的影响&lt;/h2&gt;
&lt;p&gt;这个词在日常使用中含义更宽，泛指任意「先检索一段，再放进提示」的做法；论文的定义更窄，把参数记忆与非参数记忆写成一对可替换的组件。出处绑定在被检索的段落上，是后来「带引用作答」在结构上的前身，&lt;a href=&#34;../../webgpt/&#34;&gt;WebGPT&lt;/a&gt; 把引用改成了一次浏览动作。更换维基索引即可改变「谁是总统」的答案；在产品里更换向量库，走的是同一条路径。&lt;/p&gt;
&lt;p&gt;限度需要写清楚：&lt;strong&gt;仍然只有一次前向。&lt;/strong&gt; 检索、拼接、生成三步走完即结束，没有「看过回执再决定是否继续检索」的外循环。训练需要微调，不是 GPT-3 那种纯上下文学习。2023 年以后企业知识库助手沿用了这个名称，实现常常换成「嵌入加提示拼接」，不再做论文里的 token 级边际化。&lt;/p&gt;
&lt;h2 id=&#34;对-ai-agent-的影响&#34;&gt;对 AI Agent 的影响&lt;/h2&gt;
&lt;p&gt;我在整理带外部知识的 Agent 时，几乎都能看到「生成之前先检索」这一步。RAG 给出的是这条路径的&lt;strong&gt;单次形态&lt;/strong&gt;：外部知识以检索段落的形式进入上下文，决策核心仍然只做一次生成。它补的是 GPT-3 上下文装不下、权重又改不了的那块缺口，不是循环本身。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;论文里的机制&lt;/th&gt;
&lt;th&gt;后来在 Agent 里对应的物理事实&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;非参数索引（原文块）&lt;/td&gt;
&lt;td&gt;工具回执、代码库、文档可以先被检索，再进入窗口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;索引热替换&lt;/td&gt;
&lt;td&gt;不必为每份新知识微调；更换索引即更换记忆&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;生成条件于 (z)&lt;/td&gt;
&lt;td&gt;当前观察中出现「检索到的证据」；证据选错仍然会错&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;一次检索加一次生成&lt;/td&gt;
&lt;td&gt;流水线。Agent 循环要求的是依据回执再决定下一步：重新检索、更换查询或放弃&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;不用检索监督也能微调&lt;/td&gt;
&lt;td&gt;后来许多系统连这一步微调也省去，只把结果拼进提示&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;时间线标成底层能力里的&lt;strong&gt;工程化&lt;/strong&gt;：外部知识从此可以更换，而不用重训。&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
