<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>blog</title>
  
  <subtitle>morty&#39;s blog</subtitle>
  <link href="https://www.silenceboy.com/atom.xml" rel="self"/>
  
  <link href="https://www.silenceboy.com/"/>
  <updated>2026-04-01T02:27:00.238Z</updated>
  <id>https://www.silenceboy.com/</id>
  
  <author>
    <name>morty</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Harness Engineering介绍</title>
    <link href="https://www.silenceboy.com/2026/04/01/Harness-Engineering%E4%BB%8B%E7%BB%8D/"/>
    <id>https://www.silenceboy.com/2026/04/01/Harness-Engineering%E4%BB%8B%E7%BB%8D/</id>
    <published>2026-04-01T01:58:03.000Z</published>
    <updated>2026-04-01T02:27:00.238Z</updated>
    
    <content type="html"><![CDATA[<p>在2026年初的AI与软件工程领域，<strong>Harness Engineering（驾驭工程&#x2F;护栏工程）</strong> 无疑是最具突破性和统治力的新范式。</p><p>它标志着AI辅助开发从早期的“对话式生成（Vibe Coding）”正式迈入了“生产级大规模应用”的成熟阶段。Harness Engineering 并不是一个空洞的流行语，而是决定 AI 智能体（AI Agents）能否在真实生产环境中稳定运行的核心架构层。</p><hr><h2 id="概念的诞生与核心定义"><a href="#概念的诞生与核心定义" class="headerlink" title="概念的诞生与核心定义"></a>概念的诞生与核心定义</h2><h3 id="词源与诞生背景"><a href="#词源与诞生背景" class="headerlink" title="词源与诞生背景"></a>词源与诞生背景</h3><p>“Harness”一词本意为马具（如缰绳、马鞍、马嚼子）。AI 模型就像一匹肌肉发达、速度极快的骏马，但如果没有马具的约束和引导，它只会横冲直撞。<strong>马具并不削弱马的力量，而是将其转化为生产力。</strong></p><p>这一概念在2026年2月迎来了爆发式普及：</p><ul><li><strong>Mitchell Hashimoto（HashiCorp联合创始人）</strong>：在2月5日的博客《My AI Adoption Journey》中首创此词。他提出一个核心理念：<em>“当 AI 智能体犯错时，你不要去手动改代码，而是花时间去构建一个工程方案（更新规则或工具），确保它永远不再犯同样的错。我将此称为 Harness Engineering。”</em></li><li><strong>OpenAI 官方下场</strong>：2月11日，OpenAI 发布了轰动业界的工程博客《Harness engineering: leveraging Codex in an agent-first world》。他们披露了一个历时5个月的内部实验：一个初始仅3人的工程师团队，通过 Codex 智能体从零构建了<strong>100万行级别</strong>的生产代码，且<strong>人类没有手写哪怕一行代码</strong>。</li><li><strong>Martin Fowler 与 Thoughtworks</strong>：软件工程泰斗 Martin Fowler 的团队随后发文总结了这一模式，正式确立了其在现代软件架构中的地位。</li></ul><h3 id="核心定义"><a href="#核心定义" class="headerlink" title="核心定义"></a>核心定义</h3><p><strong>Agent &#x3D; Model + Harness</strong> （智能体 &#x3D; 模型 + 驾驭环境）</p><p>Harness Engineering 指的是：<strong>设计一套包含工具、约束、上下文反馈循环和可观测性的系统，将 AI 智能体包裹其中，使其能够在生产环境中可靠运行的工程学科。</strong><br>它解决了一个致命问题：大模型本身没有持续的记忆，且会自信地犯错；而 Harness 就是大模型的“操作系统”，负责管理上下文、执行标准工具调用并拦截错误。</p><hr><h2 id="核心方法论：从“在环内”到“在环上”"><a href="#核心方法论：从“在环内”到“在环上”" class="headerlink" title="核心方法论：从“在环内”到“在环上”"></a>核心方法论：从“在环内”到“在环上”</h2><p>传统开发者修复 Bug 的方式是直接修改代码（Working <strong>in</strong> the loop）。<br>Harness Engineering 要求工程师进行思维转换：将精力放在改进系统上（Working <strong>on</strong> the loop）。</p><p>当 Claude Code 或 Codex 生成了错误的代码时：</p><ul><li><strong>旧思路</strong>：工程师接管键盘，重写那段代码。结果：下一次 AI 遇到同类问题依然会错。</li><li><strong>Harness 思路</strong>：工程师去检查为什么 AI 会错。是缺少 API 文档？是缺少某个自动化测试工具？还是 <code>AGENTS.md</code> 里的系统提示词不够清晰？工程师通过完善这些“环境要素（Harness）”来修复问题，然后让 AI 重新生成。</li></ul><hr><h2 id="Harness-Engineering-的三大支柱"><a href="#Harness-Engineering-的三大支柱" class="headerlink" title="Harness Engineering 的三大支柱"></a>Harness Engineering 的三大支柱</h2><p>根据 Thoughtworks 专家 Birgitta Böckeler 对 OpenAI 实践的总结，Harness Engineering 包含三个核心支柱：</p><h3 id="上下文工程-Context-Engineering"><a href="#上下文工程-Context-Engineering" class="headerlink" title="上下文工程 (Context Engineering)"></a>上下文工程 (Context Engineering)</h3><p>模型能输出什么，取决于它“看”到了什么。Harness 工程师需要构建动态的信息喂给体系。</p><ul><li><strong>隐式提示词与 AGENTS.md</strong>：放弃长篇大论的 Prompt，维护一个类似“目录”的 <code>AGENTS.md</code>（或 <code>CLAUDE.md</code>）文件。记录 AI 过去犯过的错和系统边界，通过持续迭代该文件来约束 AI。例如，不要每次都在对话框里跟模型抱怨“你又把时间格式写错了”，而是在 <code>AGENTS.md</code> 中写入规则：<em>“所有时间均默认使用 UTC 日期格式，并且调用 <code>DateUtil.ts</code>，禁用原生 Date 对象”</em>。一旦写入，这条 Harness 将永久约束模型。</li><li><strong>动态上下文注入</strong>：为 AI 提供运行时的可观测性数据、甚至浏览器自动化测试的截图。让 AI 不仅能看懂静态代码，还能看到代码运行的动态结果。</li></ul><h3 id="架构约束与工具化-Architectural-Constraints-Tooling"><a href="#架构约束与工具化-Architectural-Constraints-Tooling" class="headerlink" title="架构约束与工具化 (Architectural Constraints &amp; Tooling)"></a>架构约束与工具化 (Architectural Constraints &amp; Tooling)</h3><p>不能指望用自然语言求 AI 写出完美代码，必须用确定性的工具（Deterministic Tools）建立护栏。</p><ul><li><strong>强硬的 Linter 与结构化测试</strong>：为 AI 专门编写极度严格的代码检查工具。AI 拥有随心所欲生成代码的自由，但 Harness 系统拥有绝对的“否决权”。</li><li><strong>专门为 AI 准备的工具 API</strong>：例如，提供带过滤器的测试运行器（只返回失败的测试日志，防止长日志撑爆 Context Window）。</li></ul><h3 id="熵管理与“垃圾回收”-Entropy-Management"><a href="#熵管理与“垃圾回收”-Entropy-Management" class="headerlink" title="熵管理与“垃圾回收” (Entropy Management)"></a>熵管理与“垃圾回收” (Entropy Management)</h3><p>AI 生成代码的速度极快，如果不加控制，代码库会迅速堆积技术债，陷入“软件熵增”。</p><ul><li><strong>清洁工智能体</strong>：在 Harness 中，设计专门在后台定期巡检的“垃圾回收”智能体。它们不负责写新功能，专门负责寻找文档与代码的不一致、检查架构分层违规、清理死代码，从而抵抗系统的腐化退化。</li></ul><hr><h2 id="现代-Harness-系统的七大组件"><a href="#现代-Harness-系统的七大组件" class="headerlink" title="现代 Harness 系统的七大组件"></a>现代 Harness 系统的七大组件</h2><p>根据 Cobus Greyling 等 AI 架构专家的梳理，一个生产级的 Harness 系统通常包含以下层级：</p><ol><li><strong>工具集成层 (Tool Integration Layer)</strong>：连接模型与外部 API、数据库、文件系统（如 MCP - Model Context Protocol）。</li><li><strong>记忆与状态管理 (Memory &amp; State Management)</strong>：管理多层记忆（短期工作上下文、会话状态、长期记忆），解决模型跨会话失忆的问题。</li><li><strong>验证与护栏 (Verification and Guardrails)</strong>：在 AI 提交代码&#x2F;执行操作前，强制执行的确定性验证逻辑。</li><li><strong>隔离与沙箱运行环境 (Sandboxed Environments)</strong>：赋予了智能体调用工具和重构代码的权利后，为防止幻觉导致危险命令执行（如不可逆的删除或泄露密钥），Harness 系统必须提供轻量级的隔离层（如基于 Docker 或 WebAssembly 的沙箱），确保破坏性操作仅在受控环境中发生。</li><li><strong>上下文控制的子智能体 (Sub-agents for Context Control)</strong>：通过派生子智能体来完成特定任务，以防止主智能体的上下文窗口被中间步骤的噪音污染。</li><li><strong>规划与分解 (Planning and Decomposition)</strong>：引导大模型按结构化步骤执行，而非试图在一次推理中完成大系统。</li><li><strong>人类审批流 (Human-in-the-loop)</strong>：在关键破坏性操作前的高效人类拦截机制。</li></ol><hr><h2 id="软件工程师的终极演进"><a href="#软件工程师的终极演进" class="headerlink" title="软件工程师的终极演进"></a>软件工程师的终极演进</h2><p>正如 20 年前云计算的普及催生了 <strong>DevOps</strong> 工程师，2026年 AI 智能体的大规模落地催生了 <strong>Harness 工程师</strong>。</p><p>在未来，普通工程师与顶级工程师的分水岭在于：</p><ul><li><strong>普通开发者</strong>：像带实习生一样，每一步都盯着 AI，用自然语言微调代码，陷入疲惫的“人机结对编程”。</li><li><strong>Harness 工程师</strong>：像架构师一样，构建坚不可摧的开发流水线、验证闭环和规则体系。他们信仰**“模型出错不是模型的问题，是 Harness 没建好”**。</li></ul><p><strong>总结：</strong><br>Harness Engineering 彻底戳破了“AI 替代程序员”的低级叙事。人类不再是流水线上的打字机，而是系统环境的设计者。驾驭强大的 AI 不靠祈祷和魔法般的提示词，而是靠严密的工程约束。这就是 2026 年软件开发最硬核的事实。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在2026年初的AI与软件工程领域，&lt;strong&gt;Harness Engineering（驾驭工程&amp;#x2F;护栏工程）&lt;/strong&gt; 无疑是最具突破性和统治力的新范式。&lt;/p&gt;
&lt;p&gt;它标志着AI辅助开发从早期的“对话式生成（Vibe Coding）”正式迈入了“生</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>深入浅出 LLM 推理加速利器：KV Cache 详解</title>
    <link href="https://www.silenceboy.com/2026/03/24/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BA-LLM-%E6%8E%A8%E7%90%86%E5%8A%A0%E9%80%9F%E5%88%A9%E5%99%A8%EF%BC%9AKV-Cache-%E8%AF%A6%E8%A7%A3/"/>
    <id>https://www.silenceboy.com/2026/03/24/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BA-LLM-%E6%8E%A8%E7%90%86%E5%8A%A0%E9%80%9F%E5%88%A9%E5%99%A8%EF%BC%9AKV-Cache-%E8%AF%A6%E8%A7%A3/</id>
    <published>2026-03-24T09:14:42.000Z</published>
    <updated>2026-03-24T09:17:11.762Z</updated>
    
    <content type="html"><![CDATA[<p>在大型语言模型（LLM）如火如荼的今天，不管是 ChatGPT 还是开源的 Llama、Qwen，“推理速度”和“显存占用”始终是绕不开的痛点。如果你曾尝试部署过大模型，或者研究过 vLLM、TGI 等推理框架，你一定频繁听到过一个词——<strong>KV Cache</strong>。</p><p>什么是 KV Cache？为什么大模型推理离不开它？它又是如何吃掉你昂贵的 GPU 显存的？今天，我们就来扒一扒 KV Cache 的底层逻辑与优化方案。</p><hr><h2 id="为什么我们需要-KV-Cache？"><a href="#为什么我们需要-KV-Cache？" class="headerlink" title="为什么我们需要 KV Cache？"></a>为什么我们需要 KV Cache？</h2><h3 id="大模型的“自回归”生成机制"><a href="#大模型的“自回归”生成机制" class="headerlink" title="大模型的“自回归”生成机制"></a>大模型的“自回归”生成机制</h3><p>绝大多数文本大模型（如 GPT 系列、Llama 系列）都基于 Transformer 的 Decoder-Only 架构。它们生成文本的方式是 <strong>自回归（Autoregressive）</strong> 的：即根据输入（Prompt）和已经生成的词，一个个地预测下一个词（Token）。</p><p>假设输入是 <code>"今天天气"</code>，模型生成 <code>"真"</code>，接着输入变成 <code>"今天天气真"</code>，模型再生成 <code>"好"</code>，以此类推。</p><h3 id="注意力机制中的重复计算"><a href="#注意力机制中的重复计算" class="headerlink" title="注意力机制中的重复计算"></a>注意力机制中的重复计算</h3><p>在 Transformer 中，最核心的机制是<strong>自注意力（Self-Attention）</strong>。计算公式如下：<br><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.308ex;" xmlns="http://www.w3.org/2000/svg" width="41.428ex" height="5.741ex" role="img" focusable="false" viewBox="0 -1517.7 18311.4 2537.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="41" d="M255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447Z"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(750,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(1139,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1528,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1972,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(2528,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(2917,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(3195,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(3695,0)"></path></g><g data-mml-node="mo" transform="translate(4251,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(4640,0)"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="mo" transform="translate(5431,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(5875.7,0)"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mo" transform="translate(6764.7,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(7209.3,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g><g data-mml-node="mo" transform="translate(7978.3,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(8645.1,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mtext" transform="translate(9700.9,0)"><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(394,0)"></path><path data-c="66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z" transform="translate(894,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(1200,0)"></path><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1589,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(2422,0)"></path><path data-c="78" d="M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z" transform="translate(2922,0)"></path></g><g data-mml-node="mrow" transform="translate(13317.6,0)"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="28" d="M701 -940Q701 -943 695 -949H664Q662 -947 636 -922T591 -879T537 -818T475 -737T412 -636T350 -511T295 -362T250 -186T221 17T209 251Q209 962 573 1361Q596 1386 616 1405T649 1437T664 1450H695Q701 1444 701 1441Q701 1436 681 1415T629 1356T557 1261T476 1118T400 927T340 675T308 359Q306 321 306 250Q306 -139 400 -430T690 -924Q701 -936 701 -940Z"></path></g><g data-mml-node="mfrac" transform="translate(736,0)"><g data-mml-node="mrow" transform="translate(220,676)"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="msup" transform="translate(791,0)"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mi" transform="translate(974,363) scale(0.707)"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g><g data-mml-node="msqrt" transform="translate(464.2,-855.6)"><g transform="translate(853,0)"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mi" transform="translate(553,-150) scale(0.707)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g><g data-mml-node="mo" transform="translate(0,35.6)"><path data-c="221A" d="M95 178Q89 178 81 186T72 200T103 230T169 280T207 309Q209 311 212 311H213Q219 311 227 294T281 177Q300 134 312 108L397 -77Q398 -77 501 136T707 565T814 786Q820 800 834 800Q841 800 846 794T853 782V776L620 293L385 -193Q381 -200 366 -200Q357 -200 354 -197Q352 -195 256 15L160 225L144 214Q129 202 113 190T95 178Z"></path></g><rect width="971.4" height="60" x="853" y="775.6"></rect></g><rect width="2512.8" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(3488.8,0) translate(0 -0.5)"><path data-c="29" d="M34 1438Q34 1446 37 1448T50 1450H56H71Q73 1448 99 1423T144 1380T198 1319T260 1238T323 1137T385 1013T440 864T485 688T514 485T526 251Q526 134 519 53Q472 -519 162 -860Q139 -885 119 -904T86 -936T71 -949H56Q43 -949 39 -947T34 -937Q88 -883 140 -813Q428 -430 428 251Q428 453 402 628T338 922T245 1146T145 1309T46 1425Q44 1427 42 1429T39 1433T36 1436L34 1438Z"></path></g></g><g data-mml-node="mi" transform="translate(17542.4,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container></p><p>在没有 KV Cache 的情况下，当我们为了生成第 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="5.906ex" height="1.731ex" role="img" focusable="false" viewBox="0 -683 2610.4 765"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g><g data-mml-node="mo" transform="translate(1110.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(2110.4,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g></svg></mjx-container> 个 Token，需要将前 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.009ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 888 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g></g></g></svg></mjx-container> 个 Token 再重新过一遍模型，计算出它们的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="1.79ex" height="2.032ex" role="img" focusable="false" viewBox="0 -704 791 898"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g></g></g></svg></mjx-container>（Query）、<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.011ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 889 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g></g></g></svg></mjx-container>（Key）、<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.74ex" height="1.595ex" role="img" focusable="false" viewBox="0 -683 769 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container>（Value）。<br>这就带来了一个严重的问题：<strong>为了生成第 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="5.906ex" height="1.731ex" role="img" focusable="false" viewBox="0 -683 2610.4 765"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g><g data-mml-node="mo" transform="translate(1110.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(2110.4,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g></svg></mjx-container> 个词，前 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.009ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 888 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g></g></g></svg></mjx-container> 个词的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.011ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 889 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.74ex" height="1.595ex" role="img" focusable="false" viewBox="0 -683 769 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container> 被重复计算了！</strong> 随着生成序列越来越长，这种冗余计算会呈指数级增长，导致推理速度越来越慢。</p><h3 id="破局之道：KV-Cache"><a href="#破局之道：KV-Cache" class="headerlink" title="破局之道：KV Cache"></a>破局之道：KV Cache</h3><p>为了避免这种毫无意义的重复劳动，<strong>KV Cache（键值缓存）</strong> 应运而生。<br>它的核心思想非常简单：<strong>空间换时间</strong>。我们在每一步生成时，把当前 Token 每一层的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.011ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 889 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.74ex" height="1.595ex" role="img" focusable="false" viewBox="0 -683 769 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container> 矩阵保存到显存里。当生成下一个 Token 时，只需计算最新 Token 的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="7.553ex" height="2.032ex" role="img" focusable="false" viewBox="0 -704 3338.3 898"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="mo" transform="translate(791,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(1235.7,0)"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mo" transform="translate(2124.7,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(2569.3,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container>，然后将新的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="4.757ex" height="1.984ex" role="img" focusable="false" viewBox="0 -683 2102.7 877"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mo" transform="translate(889,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(1333.7,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container> 追加到之前的缓存中，直接参与 Attention 计算。</p><hr><h2 id="KV-Cache-的工作流程：Prefill-与-Decode"><a href="#KV-Cache-的工作流程：Prefill-与-Decode" class="headerlink" title="KV Cache 的工作流程：Prefill 与 Decode"></a>KV Cache 的工作流程：Prefill 与 Decode</h2><p>理解 KV Cache，就必须理解大模型推理的两个经典阶段：<strong>Prefill（预填充）</strong> 和 <strong>Decode（解码）</strong>。</p><ol><li><p><strong>Prefill 阶段（首字响应）</strong>：</p><ul><li>此时用户输入了 Prompt（比如一段 1000 字的问题）。</li><li>模型会<strong>并行</strong>处理这 1000 个 Token，一次性计算出它们所有的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="7.553ex" height="2.032ex" role="img" focusable="false" viewBox="0 -704 3338.3 898"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="mo" transform="translate(791,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(1235.7,0)"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mo" transform="translate(2124.7,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(2569.3,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container>。</li><li>算出结果后，不仅输出了第一个生成的 Token，还会把这 1000 个 Token 对应的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.011ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 889 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.74ex" height="1.595ex" role="img" focusable="false" viewBox="0 -683 769 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container> 保存到显存中。这就是最初的 KV Cache。</li><li><em>此阶段是“计算密集型”（Compute-Bound）。</em></li></ul></li><li><p><strong>Decode 阶段（逐字生成）</strong>：</p><ul><li>模型拿着最新生成的一个 Token 放进网络。</li><li>此时只需要计算这 <strong>1 个 Token</strong> 的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="7.553ex" height="2.032ex" role="img" focusable="false" viewBox="0 -704 3338.3 898"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="mo" transform="translate(791,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(1235.7,0)"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mo" transform="translate(2124.7,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(2569.3,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container>。</li><li>将新计算的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="4.757ex" height="1.984ex" role="img" focusable="false" viewBox="0 -683 2102.7 877"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mo" transform="translate(889,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(1333.7,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container> 追加到上一步的 KV Cache 中。</li><li>用这 1 个 Token 的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="1.79ex" height="2.032ex" role="img" focusable="false" viewBox="0 -704 791 898"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g></g></g></svg></mjx-container> 去和 KV Cache 中所有的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.011ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 889 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g></g></g></svg></mjx-container> 点乘算注意力权重，再和所有的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.74ex" height="1.595ex" role="img" focusable="false" viewBox="0 -683 769 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container> 加权求和。</li><li><em>此阶段是“显存带宽密集型”（Memory-Bandwidth-Bound），因为每生成一个词，都需要把庞大的 KV Cache 从显存搬运到计算单元。</em></li></ul></li></ol><hr><h2 id="KV-Cache-到底有多大？（显存刺客）"><a href="#KV-Cache-到底有多大？（显存刺客）" class="headerlink" title="KV Cache 到底有多大？（显存刺客）"></a>KV Cache 到底有多大？（显存刺客）</h2><p>很多初学者认为，部署一个 7B 的模型只需要 14GB 的显存（FP16）。但在实际并发推理时，系统往往会 Out Of Memory (OOM)，罪魁祸首就是 KV Cache。</p><p>让我们来算一笔账，<strong>一个 Token 的 KV Cache 到底占多少显存？</strong></p><p><strong>公式：</strong><br><code>单 Token 显存占用 = 2 (K和V) × 层数 (Layers) × 注意力头数 (Heads) × 头维度 (Head Dim) × 数据类型字节数</code></p><p>以 <strong>Llama-2-7B</strong> 为例：</p><ul><li>层数 (Layers) = 32</li><li>注意力头数 (Heads) = 32</li><li>头维度 (Head Dim) = 128</li><li>数据类型：FP16（占用 2 Bytes）</li></ul><p>单 Token 的 KV Cache = <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="32.054ex" height="1.971ex" role="img" focusable="false" viewBox="0 -677 14168 871"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(722.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mn" transform="translate(1722.4,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(2944.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mn" transform="translate(3944.9,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(5167.1,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mn" transform="translate(6167.3,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(7889.6,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mn" transform="translate(8889.8,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mo" transform="translate(9667.6,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(10723.3,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(12223.3,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(12668,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z" transform="translate(500,0)"></path><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z" transform="translate(1000,0)"></path></g></g></g></svg></mjx-container> Bytes <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="5.28ex" height="1.557ex" role="img" focusable="false" viewBox="0 -666 2333.8 688"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2248" d="M55 319Q55 360 72 393T114 444T163 472T205 482Q207 482 213 482T223 483Q262 483 296 468T393 413L443 381Q502 346 553 346Q609 346 649 375T694 454Q694 465 698 474T708 483Q722 483 722 452Q722 386 675 338T555 289Q514 289 468 310T388 357T308 404T224 426Q164 426 125 393T83 318Q81 289 69 289Q55 289 55 319ZM55 85Q55 126 72 159T114 210T163 238T205 248Q207 248 213 248T223 249Q262 249 296 234T393 179L443 147Q502 112 553 112Q609 112 649 141T694 220Q694 249 708 249T722 217Q722 153 675 104T555 55Q514 55 468 76T388 123T308 170T224 192Q164 192 125 159T83 84Q80 55 69 55Q55 55 55 85Z"></path></g><g data-mml-node="mn" transform="translate(1055.8,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" transform="translate(500,0)"></path><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z" transform="translate(778,0)"></path></g></g></g></svg></mjx-container> MB。</p><p>看起来不大对吧？但别忘了这只是一个 Token！</p><ul><li>如果上下文长度（Sequence Length）达到 <strong>2048</strong>，一个句子的 KV Cache 就是 <strong>1 GB</strong>。</li><li>如果服务部署时 Batch Size 设置为 <strong>16</strong>，那么仅 KV Cache 就会吃掉 <strong>16 GB</strong> 的显存！这就超过了模型本身的权重大小。</li></ul><hr><h2 id="业界如何优化-KV-Cache？"><a href="#业界如何优化-KV-Cache？" class="headerlink" title="业界如何优化 KV Cache？"></a>业界如何优化 KV Cache？</h2><p>因为 KV Cache 既占显存容量，又吃显存带宽，业界提出了多种“魔改”方案来对其进行压榨。目前主流的优化技术包括以下四个方向：</p><h3 id="模型架构层面：MQA-与-GQA"><a href="#模型架构层面：MQA-与-GQA" class="headerlink" title="模型架构层面：MQA 与 GQA"></a>模型架构层面：MQA 与 GQA</h3><p>既然 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.011ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 889 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.74ex" height="1.595ex" role="img" focusable="false" viewBox="0 -683 769 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container> 太大，能不能减少它们的数量？</p><ul><li><strong>MHA (Multi-Head Attention)</strong>：标准做法，每个 Q 头都有对应专属的 K 头和 V 头。</li><li><strong>MQA (Multi-Query Attention)</strong>：所有 Q 头<strong>共享同一组</strong> K 头和 V 头。显存直接锐减到原本的 1/32（假设 32 头的模型），但可能会牺牲一点模型能力。</li><li><strong>GQA (Grouped-Query Attention)</strong>：折中方案。将 Q 头分组（比如 8 个一组），每组共享一个 K 头和 V 头。这也是目前 Llama-3、Qwen-2 等主流模型标配的架构，能在保证效果的同时，大幅降低 KV Cache 大小。</li></ul><h3 id="显存管理层面：PagedAttention-vLLM"><a href="#显存管理层面：PagedAttention-vLLM" class="headerlink" title="显存管理层面：PagedAttention (vLLM)"></a>显存管理层面：PagedAttention (vLLM)</h3><p>在早期的实现中，KV Cache 需要在显存中分配一段<strong>连续的空间</strong>。因为序列长度是动态变化的，往往会预先分配最大长度，导致产生严重的<strong>内部碎片</strong>和<strong>外部碎片</strong>，显存浪费率高达 60%。</p><p><strong>vLLM</strong> 提出了破圈的 <strong>PagedAttention</strong> 技术。它借鉴了操作系统的虚拟内存和分页管理：<br>把 KV Cache 切分成固定大小的块（Block，如包含 16 个 Token）。在物理显存中，这些块是不连续的，通过一张“页表”（Block Table）来记录逻辑 Token 到物理 Block 的映射。这几乎消灭了显存碎片，让同等显存下的并发量提升了 2-4 倍。</p><h3 id="量化层面：KV-Cache-Quantization"><a href="#量化层面：KV-Cache-Quantization" class="headerlink" title="量化层面：KV Cache Quantization"></a>量化层面：KV Cache Quantization</h3><p>不仅可以对模型权重做量化，也可以对 KV Cache 做量化。<br>在将 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="4.757ex" height="1.984ex" role="img" focusable="false" viewBox="0 -683 2102.7 877"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g><g data-mml-node="mo" transform="translate(889,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(1333.7,0)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></svg></mjx-container> 写入显存前，将其从 FP16/BF16 压缩成 <strong>INT8 甚至 INT4/FP8</strong>。在计算 Attention 前再反量化。配合特定的硬件指令，这不仅能缩小一半以上的显存占用，还能极大缓解 Decode 阶段的显存带宽瓶颈。目前 TensorRT-LLM 和 vLLM 都原生支持了 KV Cache 的量化。</p><h3 id="缓存淘汰策略：Sliding-Window-与-StreamingLLM"><a href="#缓存淘汰策略：Sliding-Window-与-StreamingLLM" class="headerlink" title="缓存淘汰策略：Sliding Window 与 StreamingLLM"></a>缓存淘汰策略：Sliding Window 与 StreamingLLM</h3><p>对于无限长文本的生成，显存总有爆掉的一天。</p><ul><li><strong>Sliding Window Attention (SWA)</strong>：例如 Mistral 模型，只保留最近 N 个 Token 的 KV Cache（类似滑动窗口），因为通常最近的词对预测下一个词最重要。</li><li><strong>StreamingLLM</strong>：研究发现 Attention 中存在“注意力陷阱”（Attention Sinks），即第一句话的首几个 Token 总是分配到很高的注意力权重。因此，只要保留<strong>前几个 Token + 最近一段窗口的 Token</strong> 的 KV Cache，就能让 LLM 处理无限长度的流式文本而不崩溃。</li></ul><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>KV Cache 是 LLM 走向工程化、商业化落地的核心技术之一。</p><ul><li><strong>本质</strong>：用空间换时间，避免自回归生成中的重复计算。</li><li><strong>代价</strong>：造成了巨大的显存容量压力和内存带宽压力（Memory-Bound）。</li><li><strong>演进</strong>：通过 GQA 减少体积，通过 PagedAttention 提升利用率，通过量化缓解带宽，通过窗口机制突破长度限制。</li></ul><p>理解了 KV Cache，你也就拿到了大模型推理优化（Inference Optimization）的半张门票。在未来，随着长文本（Long Context）模型越来越普及（如 100k, 1M 上下文），如何更加优雅、高效地管理数十甚至数百 GB 的 KV Cache，依然会是 AI Infra 领域的黄金赛道。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在大型语言模型（LLM）如火如荼的今天，不管是 ChatGPT 还是开源的 Llama、Qwen，“推理速度”和“显存占用”始终是绕不开的痛点。如果你曾尝试部署过大模型，或者研究过 vLLM、TGI 等推理框架，你一定频繁听到过一个词——&lt;strong&gt;KV Cache&lt;/</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>QMD记忆系统</title>
    <link href="https://www.silenceboy.com/2026/03/24/QMD%E8%AE%B0%E5%BF%86%E7%B3%BB%E7%BB%9F/"/>
    <id>https://www.silenceboy.com/2026/03/24/QMD%E8%AE%B0%E5%BF%86%E7%B3%BB%E7%BB%9F/</id>
    <published>2026-03-24T08:57:22.000Z</published>
    <updated>2026-03-24T09:13:32.375Z</updated>
    
    <content type="html"><![CDATA[<p><strong>QMD记忆系统</strong>（全称为 <strong>Quantum Memory Drive</strong>）是一个专为 AI Agent（智能体）设计的<strong>长期记忆与本地语义搜索引擎</strong>。在 2026 年初，它伴随著名开源 AI 智能体框架 <strong>OpenClaw</strong>的发布而在开发者与企业群体中迅速爆火。</p><p>它的核心目标是解决 AI 随着对话变长、任务变多而产生的“遗忘”、“卡顿”以及“API Token费用高昂”的问题。</p><p>以下是关于 QMD 记忆系统的详细解析：</p><h2 id="核心技术与工作原理"><a href="#核心技术与工作原理" class="headerlink" title="核心技术与工作原理"></a>核心技术与工作原理</h2><p>QMD 并不是简单地把聊天记录存成文本文件，而是构建了一个完整的<strong>混合检索型“微型搜索引擎”</strong>：</p><ul><li><strong>混合检索架构</strong>：它结合了传统的关键词匹配（BM25）、高维度的向量检索（Vector Search）以及语义重排（Reranking）技术，使得 AI 能够根据“语义相似度”极其精准地回忆起过去的对话或文档资料。</li><li><strong>完全本地化（隐私安全）</strong>：底层基于 <code>Bun</code> 运行时、<code>node-llama-cpp</code> 和轻量级数据库 <code>SQLite</code> 构建。它会在用户本地机器上自动下载 HuggingFace 的 GGUF 模型来将文本转化为向量（Embedding）。这意味着<strong>数据完全不需要离开你的电脑</strong>，不会上传给第三方 API，极大保障了隐私和安全。</li><li><strong>“边车”模式（Sidecar）</strong>：在 OpenClaw 框架中，QMD 作为一个独立的后台服务运行。它会在后台定期（例如每5分钟）自动为你工作区的文件和对话记录建立索引。</li></ul><h2 id="为什么它能改变-AI-Agent-的体验？"><a href="#为什么它能改变-AI-Agent-的体验？" class="headerlink" title="为什么它能改变 AI Agent 的体验？"></a>为什么它能改变 AI Agent 的体验？</h2><ul><li><strong>从“背全文”到“查重点”，节省高达 96% 的 Token 成本</strong>：过去，AI 为了记住历史任务，需要把几万字的上下文全部重新读一遍（极其消耗 API 费用）。有了 QMD 后，采用的是 <strong>Memory-First（记忆优先）工作流</strong>——AI 在处理任务前会先在 QMD 中检索相关经验，只提取最核心的少量片段注入到上下文中。实测中，它可以让 Token 消耗降低 60% 到 96% 以上。</li><li><strong>大幅提升响应速度</strong>：由于发给大模型的文本量大幅减少，AI 从”卡顿像蜗牛”变为了”秒回”，响应速度可提升 5 至 50 倍。</li><li><strong>支持“梦境循环”（Dream Cycle）</strong>：高级玩家常将 QMD 与记忆优化插件结合使用。AI 可以在夜间待机时启动“梦境循环”，像人类大脑睡觉一样，自动对白天的繁杂记忆进行清洗、压缩、分类和巩固索引，防止记忆库变得臃肿。</li></ul><h2 id="典型应用场景"><a href="#典型应用场景" class="headerlink" title="典型应用场景"></a>典型应用场景</h2><p>QMD 非常适合需要“落地执行长期流程”的个人开发者和企业团队。例如：</p><ul><li><strong>研发协同</strong>：AI 可以记住三个月前你定下的代码规范或某个冷门 Bug 的解决思路。</li><li><strong>文档与知识库管理</strong>：丢入成堆的技术文档或历史记录，AI 可以依靠 QMD 精准回答文档深处的技术细节。</li><li><strong>多智能体协作</strong>：一个 AI 智能体研究出来的成果写入记忆，其他智能体可以通过 QMD 瞬间读取并复用，避免重复劳动。</li></ul><h2 id="常见问题与挑战"><a href="#常见问题与挑战" class="headerlink" title="常见问题与挑战"></a>常见问题与挑战</h2><p>尽管 QMD 非常强大，但在部署和使用时也有一些明显的“坑”：</p><ol><li><strong>首次启动缓慢</strong>：因为第一次检索时，QMD 需要在本地下载数十甚至数百兆的 GGUF 嵌入模型和重排模型，会导致第一次搜索非常慢。</li><li><strong>环境门槛限制</strong>：在 macOS 和 Linux 上可以开箱即用，但在 Windows 系统上，官方强烈建议依赖 WSL2（Windows的Linux子系统）来运行。</li><li><strong>超时假死（EXIT:124 报错）</strong>：如果记忆库庞大或参数设置不当，QMD 的本地检索进程可能会发生超时甚至阻塞整个 AI 的运行。用户通常需要手动调低最大注入字符数（maxInjectedChars）或调整超时时间限制（timeoutMs）来缓解该问题。</li></ol><p>总结而言，QMD 记忆系统代表了 2026 年 AI 智能体在<strong>长期记忆管理</strong>和<strong>本地成本控制</strong>上的重要技术演进，是让 AI 从“一次性聊天机器人”蜕变为“长期数字员工”的关键基础设施。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;strong&gt;QMD记忆系统&lt;/strong&gt;（全称为 &lt;strong&gt;Quantum Memory Drive&lt;/strong&gt;）是一个专为 AI Agent（智能体）设计的&lt;strong&gt;长期记忆与本地语义搜索引擎&lt;/strong&gt;。在 2026 年初，它伴随著名开源</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>AI核心术语介绍</title>
    <link href="https://www.silenceboy.com/2026/03/20/AI%E6%A0%B8%E5%BF%83%E6%9C%AF%E8%AF%AD%E4%BB%8B%E7%BB%8D/"/>
    <id>https://www.silenceboy.com/2026/03/20/AI%E6%A0%B8%E5%BF%83%E6%9C%AF%E8%AF%AD%E4%BB%8B%E7%BB%8D/</id>
    <published>2026-03-20T07:06:50.000Z</published>
    <updated>2026-03-26T07:48:03.954Z</updated>
    
    <content type="html"><![CDATA[<p>为了让团队中无论技术背景深浅的成员都能在同一套话语体系下交流，我将这些词汇分成了七大类，并为每个词提供了 <strong>“标准定义”</strong> 和 <strong>“通俗比喻”</strong>，让你和团队一看就懂。</p><hr><h2 id="第一部分：模型基础概念（Model-Fundamentals）"><a href="#第一部分：模型基础概念（Model-Fundamentals）" class="headerlink" title="第一部分：模型基础概念（Model Fundamentals）"></a>第一部分：模型基础概念（Model Fundamentals）</h2><p><em>这一部分是理解一切AI技术的地基，建议优先掌握。</em></p><h3 id="LLM（Large-Language-Model-大语言模型）"><a href="#LLM（Large-Language-Model-大语言模型）" class="headerlink" title="LLM（Large Language Model &#x2F; 大语言模型）"></a>LLM（Large Language Model &#x2F; 大语言模型）</h3><ul><li><strong>标准定义</strong>：基于Transformer架构、经过海量文本数据预训练的大规模神经网络模型，能够理解和生成自然语言。GPT、Claude、Gemini等现代AI产品的核心技术基础均属此类。</li><li><strong>通俗比喻</strong>：<strong>“AI的大脑本体”</strong>。我们平时说的”问AI”，背后就是在调用一个LLM。它不是某个具体产品，而是一类技术的统称，就像说”汽车的发动机”而不是”某辆车”。</li></ul><h3 id="Foundation-Model（基础模型-大模型）"><a href="#Foundation-Model（基础模型-大模型）" class="headerlink" title="Foundation Model（基础模型 &#x2F; 大模型）"></a>Foundation Model（基础模型 &#x2F; 大模型）</h3><ul><li><strong>标准定义</strong>：在极大规模数据上预训练的通用模型，可作为各类下游任务的起点，通过微调适配不同场景。LLM是Foundation Model的一个子集（专指语言模型），视觉大模型、多模态大模型也属此类。</li><li><strong>通俗比喻</strong>：<strong>“乐高底座”</strong>。Foundation Model就是那块大底板，上面可以搭出医疗AI、法律AI、客服AI……各种形态的应用，而不用每次从零开始搭。</li></ul><h3 id="Multimodal（多模态）"><a href="#Multimodal（多模态）" class="headerlink" title="Multimodal（多模态）"></a>Multimodal（多模态）</h3><ul><li><strong>标准定义</strong>：能够同时理解和处理多种类型信息（文字、图像、音频、视频等）的AI能力。与只能处理文字的纯语言模型相区别。</li><li><strong>通俗比喻</strong>：<strong>“五感俱全的AI”</strong>。早期AI只能”读字”，多模态AI能同时”看图、听声音、读文字”。你可以给它发一张菜单照片，问它”这家餐厅有没有适合素食者的菜”，它直接看图回答。</li></ul><h3 id="Hallucination（幻觉）"><a href="#Hallucination（幻觉）" class="headerlink" title="Hallucination（幻觉）"></a>Hallucination（幻觉）</h3><ul><li><strong>标准定义</strong>：AI模型生成看似合理但实际上不准确、无中生有甚至完全错误信息的现象。这是当前大语言模型的主要缺陷之一，源于模型基于统计概率生成文本而非真实理解。</li><li><strong>通俗比喻</strong>：<strong>“AI在一本正经地胡说八道”</strong>。AI会自信地编造不存在的论文引用、错误的历史事件、假冒的统计数据。RAG、Grounding等技术的核心目标之一，就是减少幻觉的发生。</li></ul><h3 id="Grounding（落地-接地）"><a href="#Grounding（落地-接地）" class="headerlink" title="Grounding（落地 &#x2F; 接地）"></a>Grounding（落地 &#x2F; 接地）</h3><ul><li><strong>标准定义</strong>：将AI的生成内容与真实、可验证的信息来源绑定的能力和过程，确保模型输出有据可查，而非凭空捏造。是解决Hallucination问题的核心手段。</li><li><strong>通俗比喻</strong>：<strong>“让AI说话有出处”</strong>。未接地的AI像没有参考资料的学生，靠感觉写答案；Grounding就是要求AI每句话都注明”来源于哪份文件第几页”，确保输出可信、可追溯。</li></ul><h3 id="Inference（推理-模型服务）"><a href="#Inference（推理-模型服务）" class="headerlink" title="Inference（推理 &#x2F; 模型服务）"></a>Inference（推理 &#x2F; 模型服务）</h3><ul><li><strong>标准定义</strong>：使用已训练好的模型对新输入进行处理并生成输出的过程，与”训练”阶段相对。工程层面通常指将模型部署为服务（Inference Service），供应用调用。</li><li><strong>通俗比喻</strong>：<strong>“AI上班干活”</strong>。训练是AI”读书学习”，Inference是AI”学完了正式上岗接活”。你每次发消息给ChatGPT，触发的就是一次Inference，不会改变模型本身。</li></ul><h3 id="Benchmark（基准测试）"><a href="#Benchmark（基准测试）" class="headerlink" title="Benchmark（基准测试）"></a>Benchmark（基准测试）</h3><ul><li><strong>标准定义</strong>：用于客观、标准化地衡量和比较AI模型能力的测试集合，通常包含特定任务的题目和评分标准。常见的有MMLU（综合知识）、HumanEval（代码能力）、GSM8K（数学推理）等。</li><li><strong>通俗比喻</strong>：<strong>“AI的高考成绩单”</strong>。不同AI厂商都说自己的模型”最强”，Benchmark就是用统一的试卷让所有模型参加同一场考试，用分数说话。发布新模型时，厂商通常会附上一堆Benchmark得分证明实力。</li></ul><hr><h2 id="第二部分：智能体家族（Agent-Ecosystem）"><a href="#第二部分：智能体家族（Agent-Ecosystem）" class="headerlink" title="第二部分：智能体家族（Agent Ecosystem）"></a>第二部分：智能体家族（Agent Ecosystem）</h2><p><em>这一部分描述的是AI”打工人”的不同形态和组织架构。</em></p><h3 id="Agent（智能体）"><a href="#Agent（智能体）" class="headerlink" title="Agent（智能体）"></a>Agent（智能体）</h3><ul><li><p><strong>标准定义</strong>：具备自主感知环境、进行决策并执行动作的AI系统。它不仅能”陪聊”，还能使用工具自动完成特定目标。一个完整的Agent由以下部分组成：</p><table><thead><tr><th align="left">组成要素</th><th align="left">说明</th></tr></thead><tbody><tr><td align="left">LLM</td><td align="left">推理大脑，负责理解意图、规划步骤、生成输出</td></tr><tr><td align="left">Memory</td><td align="left">短期记忆（上下文窗口）+ 长期记忆（向量数据库检索）</td></tr><tr><td align="left">Tools</td><td align="left">Agent 可调用的能力，如搜索、代码执行、数据库查询</td></tr><tr><td align="left">MCP</td><td align="left">工具的标准化接入协议，统一定义工具的描述、调用方式和权限边界</td></tr><tr><td align="left">Skills</td><td align="left">结构化行为指南，告诉 Agent”在特定场景下应该怎么做”，类似 SOP</td></tr><tr><td align="left">RAG</td><td align="left">知识检索增强，在推理前注入领域知识，弥补 LLM 训练数据的盲区</td></tr><tr><td align="left">State&#x2F;Context</td><td align="left">Agent 当前任务的工作状态，驱动多步骤执行的”中间记忆”</td></tr><tr><td align="left">A2A</td><td align="left">Agent 之间的通信标准，用于跨系统发现能力和委托任务</td></tr></tbody></table><p>一句话类比：</p><ul><li>LLM &#x3D; 大脑</li><li>Tools&#x2F;MCP &#x3D; 双手（能做什么）</li><li>Skills &#x3D; 工作手册（怎么做）</li><li>Memory&#x2F;RAG &#x3D; 笔记本（知道什么）</li><li>State &#x3D; 便利贴（正在做什么）</li><li>A2A &#x3D; 对讲机（和其他 Agent 协作）</li></ul></li><li><p><strong>通俗比喻</strong>：<strong>“独立打工人”</strong>。你给它一个任务（比如”帮我策划一场三亚旅行并订票”），它能自己上网查攻略、比对价格、最终完成预订，而不是每次都需要你手把手教。</p></li></ul><h3 id="SubAgent（子智能体）"><a href="#SubAgent（子智能体）" class="headerlink" title="SubAgent（子智能体）"></a>SubAgent（子智能体）</h3><ul><li><strong>标准定义</strong>：在复杂任务中，由主Agent衍生或调用的，专门负责解决某一特定子任务的轻量级智能体。</li><li><strong>通俗比喻</strong>：<strong>“外包小弟”</strong>。主Agent是项目经理，当遇到需要写代码的环节时，它把任务派给专门负责写代码的”SubAgent”，SubAgent写完后再把结果交还给主Agent。</li></ul><h3 id="Multi-Agent（多智能体系统）"><a href="#Multi-Agent（多智能体系统）" class="headerlink" title="Multi-Agent（多智能体系统）"></a>Multi-Agent（多智能体系统）</h3><ul><li><strong>标准定义</strong>：由多个Agent组成的系统，它们具有不同的角色和设定，通过相互交流、协作或竞争来完成复杂的宏大任务。</li><li><strong>通俗比喻</strong>：<strong>“一个项目团队”</strong>。比如一个写代码的AI团队里，有”产品经理Agent”提需求，”程序员Agent”写代码，”测试员Agent”找Bug。大家在同一个群里互相协作。</li></ul><h3 id="Copilot（副驾驶-助手）"><a href="#Copilot（副驾驶-助手）" class="headerlink" title="Copilot（副驾驶 &#x2F; 助手）"></a>Copilot（副驾驶 &#x2F; 助手）</h3><ul><li><strong>标准定义</strong>：一种辅助型AI，需要人类主导，AI在其侧提供建议、补全或草稿生成。</li><li><strong>通俗比喻</strong>：<strong>“坐在副驾的导航员”</strong>。方向盘在你手里，它只负责帮你指路和递水（比如帮你自动补全一行代码，或帮你润色一封邮件）。</li></ul><h3 id="Agentic（智能体化）"><a href="#Agentic（智能体化）" class="headerlink" title="Agentic（智能体化）"></a>Agentic（智能体化）</h3><ul><li><strong>标准定义</strong>：描述AI系统具备自主规划、多步骤执行和工具调用能力的特性，强调AI从被动”问答”转向主动”行动”的范式转变。</li><li><strong>通俗比喻</strong>：<strong>“从收银员到店长”</strong>。普通AI就像收银员，只负责回答你的问题；Agentic AI则像店长，会主动帮你安排进货、排班、处理投诉，全程不用你操心每一步。</li></ul><h3 id="Orchestration（编排）"><a href="#Orchestration（编排）" class="headerlink" title="Orchestration（编排）"></a>Orchestration（编排）</h3><ul><li><strong>标准定义</strong>：协调多个Agent、工具或处理步骤按照特定逻辑（顺序、并行、条件分支）自动执行的能力，是Multi-Agent系统和复杂Workflow的核心控制机制。</li><li><strong>通俗比喻</strong>：<strong>“乐队指挥”</strong>。多个Agent就像乐手，各有其职；Orchestration就是那位指挥，决定谁先演奏、谁同时演奏、某个乐手出错了下一步怎么应对，保证整体节奏协调一致。</li></ul><h3 id="Human-in-the-Loop（人机协作回路）"><a href="#Human-in-the-Loop（人机协作回路）" class="headerlink" title="Human-in-the-Loop（人机协作回路）"></a>Human-in-the-Loop（人机协作回路）</h3><ul><li><strong>标准定义</strong>：在AI自动化流程中的关键节点引入人工审核、确认或干预的设计模式，确保高风险决策或重要步骤经过人类把关，而非完全依赖AI自主执行。</li><li><strong>通俗比喻</strong>：<strong>“AI先起草，人再签字”</strong>。比如AI写好合同草案后，不直接发出，而是暂停等待法务人员审核确认。这套机制在金融、医疗、法律等高风险场景中至关重要，平衡了效率与安全。</li></ul><h3 id="Guardrails（护栏）"><a href="#Guardrails（护栏）" class="headerlink" title="Guardrails（护栏）"></a>Guardrails（护栏）</h3><ul><li><strong>标准定义</strong>：约束AI系统行为边界的安全机制，包括内容过滤、输出格式校验、禁止特定话题、防止越权操作等，确保AI在预设的安全范围内运行。</li><li><strong>通俗比喻</strong>：<strong>“给AI装的保险装置”</strong>。就像汽车有安全带、防撞系统，Guardrails是给AI加的”护栏”——防止它说出有害内容、泄露敏感数据或执行危险操作。System Prompt中的边界规定和HOOK拦截，都是Guardrails的实现形式。</li></ul><h3 id="A2A（Agent-to-Agent-Protocol-智能体间通信协议）"><a href="#A2A（Agent-to-Agent-Protocol-智能体间通信协议）" class="headerlink" title="A2A（Agent-to-Agent Protocol &#x2F; 智能体间通信协议）"></a>A2A（Agent-to-Agent Protocol &#x2F; 智能体间通信协议）</h3><ul><li><strong>标准定义</strong>：由Google等公司推动的开放协议标准，定义了不同AI智能体之间如何互相发现、通信和委托任务，实现跨系统、跨平台的Agent协作。</li><li><strong>通俗比喻</strong>：<strong>“Agent界的外交协议”</strong>。就像不同国家之间需要统一的外交礼仪才能沟通，不同公司的AI Agent也需要A2A这套”通用语言”，才能互相认识、分配任务、传递结果。</li></ul><h3 id="ACP（Agent-Communication-Protocol-智能体通信协议）"><a href="#ACP（Agent-Communication-Protocol-智能体通信协议）" class="headerlink" title="ACP（Agent Communication Protocol &#x2F; 智能体通信协议）"></a>ACP（Agent Communication Protocol &#x2F; 智能体通信协议）</h3><ul><li><strong>标准定义</strong>：由IBM等公司推动的智能体通信协议，侧重于本地&#x2F;局域网环境中多个智能体之间的消息格式规范与通信方式，与A2A互为补充。</li><li><strong>通俗比喻</strong>：<strong>“公司内部通讯系统”</strong>。如果A2A是国际外交协议，ACP更像是公司内部的对讲机或飞书系统，专门负责同一个”园区”内的Agent快速沟通，效率更高，安全性更强。</li></ul><hr><h2 id="第三部分：能力与工具（Capabilities-Tools）"><a href="#第三部分：能力与工具（Capabilities-Tools）" class="headerlink" title="第三部分：能力与工具（Capabilities &amp; Tools）"></a>第三部分：能力与工具（Capabilities &amp; Tools）</h2><p><em>这一部分描述的是AI如何与外部世界互动，以及它的”武器库”。</em></p><h3 id="SKILLS（技能-技能文件）"><a href="#SKILLS（技能-技能文件）" class="headerlink" title="SKILLS（技能&#x2F;技能文件）"></a>SKILLS（技能&#x2F;技能文件）</h3><ul><li><strong>标准定义</strong>：Agent Skills 是一种以 Markdown 文件形式定义的、面向特定任务类型的<strong>行为指引与工作流程模板</strong>。它不是可执行代码，而是告诉 AI Agent “遇到这类任务时，应该按照哪套步骤、以什么方式去处理”的结构化指令集。当 Agent 识别出当前任务与某个 Skill 匹配时，便会主动加载并遵循该 Skill 中定义的流程。</li><li><strong>通俗比喻</strong>：<strong>“新员工入职时拿到的SOP手册”</strong>。公司不会口头告诉每个新人”遇到客诉怎么办”，而是提前写好一本《客诉处理标准流程》。同理，给 AI Agent 配上一个”代码审查 Skill”，它每次做 Code Review 时就会自动翻出这本”操作手册”，按章办事，而不是每次靠自己临场发挥。</li></ul><h3 id="Plugin（插件）"><a href="#Plugin（插件）" class="headerlink" title="Plugin（插件）"></a>Plugin（插件）</h3><ul><li><strong>标准定义</strong>：一种可插拔的软件组件，允许AI系统连接到第三方的应用程序或服务中，从而扩展AI的原生能力。</li><li><strong>通俗比喻</strong>：<strong>“AI的App Store”</strong>。就像你的手机安装了”美团”App就能点外卖一样，AI安装了”携程插件”就能查机票，安装了”PDF阅读插件”就能读长文档。</li></ul><h3 id="Function-Calling-Tool-Use（工具调用-函数调用）"><a href="#Function-Calling-Tool-Use（工具调用-函数调用）" class="headerlink" title="Function Calling &#x2F; Tool Use（工具调用 &#x2F; 函数调用）"></a>Function Calling &#x2F; Tool Use（工具调用 &#x2F; 函数调用）</h3><ul><li><strong>标准定义</strong>：允许LLM在生成回答时，识别出需要调用外部工具（如搜索引擎、数据库、API、代码解释器）的时机，生成结构化的调用指令，并将工具返回的结果整合进最终回答的能力。</li><li><strong>通俗比喻</strong>：<strong>“AI学会使用工具了”</strong>。没有Tool Use的AI只能凭记忆回答；有了Tool Use，AI发现”这个问题需要查最新股价”时，能自己调出股票API查询，再把结果告诉你。Plugin的底层实现机制，正是Function Calling。</li></ul><h3 id="Embedding（向量嵌入）"><a href="#Embedding（向量嵌入）" class="headerlink" title="Embedding（向量嵌入）"></a>Embedding（向量嵌入）</h3><ul><li><strong>标准定义</strong>：将文字、图像等非结构化信息转化为高维数值向量的技术。语义相近的内容在向量空间中距离更近，使得计算机能够通过数学运算来衡量语义相似度。</li><li><strong>通俗比喻</strong>：<strong>“把意思翻译成坐标”</strong>。”苹果”和”梨”的向量坐标会很接近，”苹果”和”火箭”的坐标会相距很远。RAG检索时，系统正是通过比较向量之间的”距离”，来判断哪些文档与问题最相关。</li></ul><h3 id="RAG（Retrieval-Augmented-Generation-检索增强生成）"><a href="#RAG（Retrieval-Augmented-Generation-检索增强生成）" class="headerlink" title="RAG（Retrieval-Augmented Generation &#x2F; 检索增强生成）"></a>RAG（Retrieval-Augmented Generation &#x2F; 检索增强生成）</h3><ul><li><strong>标准定义</strong>：在让大模型回答问题前，先从外部知识库中检索出相关信息，然后把这些信息喂给模型，让它基于这些信息生成答案。</li><li><strong>通俗比喻</strong>：<strong>“开卷考试”</strong>。AI的记忆力有限且可能会过时，RAG就是让AI在回答前，先去翻阅你给它的内部资料库，然后再作答，避免它产生”幻觉（Hallucination）”。</li></ul><h3 id="Agentic-RAG（智能体化检索增强生成）"><a href="#Agentic-RAG（智能体化检索增强生成）" class="headerlink" title="Agentic RAG（智能体化检索增强生成）"></a>Agentic RAG（智能体化检索增强生成）</h3><ul><li><strong>标准定义</strong>：将Agent的主动决策能力与RAG的知识检索能力结合，使AI能够根据问题复杂度，自主决定是否检索、检索什么、检索多少次，而非被动地一次性检索。</li><li><strong>通俗比喻</strong>：<strong>“会主动查资料的研究员”</strong>。普通RAG像一个助手，你问什么它就查什么，查一次给你答案；Agentic RAG更像一个研究员，它能自己判断”这个问题需要查三个方向的资料”，然后分多次查阅、综合分析后再给你结论。</li></ul><h3 id="AIGC（AI-Generated-Content-AI生成内容）"><a href="#AIGC（AI-Generated-Content-AI生成内容）" class="headerlink" title="AIGC（AI Generated Content &#x2F; AI生成内容）"></a>AIGC（AI Generated Content &#x2F; AI生成内容）</h3><ul><li><strong>标准定义</strong>：泛指由人工智能模型自主生成的所有类型内容，包括文本、图像、音频、视频、代码等，是当前AI应用的核心价值输出形式。</li><li><strong>通俗比喻</strong>：<strong>“AI的作品集”</strong>。以前内容都是人创作的（PGC）或用户创作的（UGC），现在AI也能独立产出内容了。你让它写稿、画图、作曲、生成视频，这些产出物统称为AIGC。</li></ul><hr><h2 id="第四部分：系统连接与工程（System-Engineering）"><a href="#第四部分：系统连接与工程（System-Engineering）" class="headerlink" title="第四部分：系统连接与工程（System &amp; Engineering）"></a>第四部分：系统连接与工程（System &amp; Engineering）</h2><p><em>这一部分稍微偏技术，但对理解目前的AI产品架构至关重要。</em></p><h3 id="MCP（Model-Context-Protocol-模型上下文协议）"><a href="#MCP（Model-Context-Protocol-模型上下文协议）" class="headerlink" title="MCP（Model Context Protocol &#x2F; 模型上下文协议）"></a>MCP（Model Context Protocol &#x2F; 模型上下文协议）</h3><ul><li><strong>标准定义</strong>：由Anthropic（Claude背后的公司）等推出的一种开源标准协议，旨在标准化AI模型连接外部数据源、本地文件和工具的方式。</li><li><strong>通俗比喻</strong>：<strong>“万能插座&#x2F;Type-C接口”</strong>。以前每个AI想读取你的本地文件或数据库，都要写一套专门的接口；有了MCP，就像统一了Type-C接口，无论什么AI，只要插上这个”数据线”，就能安全、无缝地读取你的工作环境和数据。</li></ul><h3 id="HOOK（钩子）"><a href="#HOOK（钩子）" class="headerlink" title="HOOK（钩子）"></a>HOOK（钩子）</h3><ul><li><strong>标准定义</strong>：在AI处理流程（如接收用户输入、生成回答之前&#x2F;之后）中预设的拦截点。开发者可以在这些点”挂载”自定义的代码逻辑。</li><li><strong>通俗比喻</strong>：<strong>“流水线上的安检站”</strong>。比如用户输入了一句话，在交给AI处理之前，先被一个”Hook”拦住，检查里面有没有敏感词；如果有，Hook就直接驳回。它能让系统更加灵活可控。</li></ul><h3 id="Memory（记忆机制）"><a href="#Memory（记忆机制）" class="headerlink" title="Memory（记忆机制）"></a>Memory（记忆机制）</h3><ul><li><strong>标准定义</strong>：AI系统保存、检索和利用历史对话信息的能力。分为短期记忆（当前对话上下文）和长期记忆（跨越多次对话的用户画像和历史记录）。</li><li><strong>通俗比喻</strong>：<strong>“AI的记事本”</strong>。没有记忆的AI就像拥有”金鱼的记忆”，每次聊天都是初次见面；有了记忆机制，它就会记住你喜欢喝无糖咖啡，下次帮你点单时会自动备注。</li></ul><h3 id="Token（令牌）"><a href="#Token（令牌）" class="headerlink" title="Token（令牌）"></a>Token（令牌）</h3><ul><li><strong>标准定义</strong>：AI语言模型处理和生成文本的基本单位。一个Token大约对应英文中3-4个字符或中文中1-2个汉字，模型的计费和上下文长度都以Token为单位计算。</li><li><strong>通俗比喻</strong>：<strong>“AI的原子&#x2F;乐高颗粒”</strong>。AI读取和生成内容时，不是逐字处理，而是把文本切成一小块一小块的Token来理解。就像乐高积木，无论多复杂的建筑，都是由基础颗粒拼成的；AI的所有输入输出，都是Token的组合与生成。</li></ul><h3 id="Context-Window（上下文窗口）"><a href="#Context-Window（上下文窗口）" class="headerlink" title="Context Window（上下文窗口）"></a>Context Window（上下文窗口）</h3><ul><li><strong>标准定义</strong>：AI模型在单次交互中能够同时”看到”和处理的最大Token数量。超出这个窗口的内容，模型将无法感知和引用。</li><li><strong>通俗比喻</strong>：<strong>“AI的工作桌面大小”</strong>。想象AI的注意力是一张桌子，上下文窗口就是桌面面积。桌子越大（如200K Tokens），能同时摊开的资料越多；桌子太小，先放上去的资料就会被推下去，AI就”忘了”之前说过什么。</li></ul><h3 id="Streaming（流式输出）"><a href="#Streaming（流式输出）" class="headerlink" title="Streaming（流式输出）"></a>Streaming（流式输出）</h3><ul><li><strong>标准定义</strong>：AI模型边生成边向客户端推送输出内容的技术，用户能看到文字逐字出现，而无需等待模型生成全部内容后再显示，显著提升交互体验。</li><li><strong>通俗比喻</strong>：<strong>“打字机效果”</strong>。你问AI一个问题，它不是思考5秒后一次性弹出500字，而是像有人在实时打字一样，字一个个出现。基于WebSocket或SSE协议实现，是几乎所有AI对话产品的标配体验。</li></ul><h3 id="Latency-Throughput（延迟-吞吐量）"><a href="#Latency-Throughput（延迟-吞吐量）" class="headerlink" title="Latency &#x2F; Throughput（延迟 &#x2F; 吞吐量）"></a>Latency &#x2F; Throughput（延迟 &#x2F; 吞吐量）</h3><ul><li><strong>标准定义</strong>：衡量AI服务性能的两个核心指标。**延迟（Latency）**指从发送请求到收到第一个Token的时间（首字延迟&#x2F;TTFT），反映响应速度；**吞吐量（Throughput）**指系统单位时间内能处理的Token总量，反映并发处理能力。</li><li><strong>通俗比喻</strong>：<strong>“外卖的出餐速度 vs 厨房产能”</strong>。延迟是”你下单到拿到第一道菜要等多久”；吞吐量是”这家厨房每小时最多能出多少份菜”。高延迟影响单个用户体验，低吞吐量则限制同时服务的用户数量。</li></ul><h3 id="Temperature（温度-随机性）"><a href="#Temperature（温度-随机性）" class="headerlink" title="Temperature（温度 &#x2F; 随机性）"></a>Temperature（温度 &#x2F; 随机性）</h3><ul><li><strong>标准定义</strong>：控制AI输出随机性的参数。Temperature越高（如1.0-2.0），输出越多样、富有创意但不稳定；Temperature越低（如0-0.3），输出越稳定、确定但缺乏变化。</li><li><strong>通俗比喻</strong>：<strong>“AI的创意旋钮”</strong>。想让AI写出奇思妙想的故事？把旋钮拧高；想让AI严格按照格式输出固定的数据报告？把旋钮调低。同一个问题，低温度AI每次回答几乎相同，高温度AI则充满惊喜（或惊吓）。</li></ul><h3 id="TOP-P（核采样）"><a href="#TOP-P（核采样）" class="headerlink" title="TOP-P（核采样）"></a>TOP-P（核采样）</h3><ul><li><strong>标准定义</strong>：另一种控制AI输出多样性的参数。模型每次生成下一个词时，只在累积概率达到P值（如0.9）的候选词集合中随机选择，避免选到概率极低的”奇怪词汇”。</li><li><strong>通俗比喻</strong>：<strong>“给候选答案划定范围”</strong>。AI下一个词有成千上万种可能，TOP-P就像规定”只从可能性前90%的候选词里挑”，把那些”匪夷所思”的极低概率选项排除在外。它与Temperature配合使用，共同调节AI输出的质量与多样性。</li></ul><hr><h2 id="第五部分：交互与用户界面（Interaction-UI）"><a href="#第五部分：交互与用户界面（Interaction-UI）" class="headerlink" title="第五部分：交互与用户界面（Interaction &amp; UI）"></a>第五部分：交互与用户界面（Interaction &amp; UI）</h2><p><em>这一部分关乎用户如何更高效地给AI下指令。</em></p><h3 id="Slash-command（斜杠命令）"><a href="#Slash-command（斜杠命令）" class="headerlink" title="Slash command（斜杠命令）"></a>Slash command（斜杠命令）</h3><ul><li><strong>标准定义</strong>：一种基于文本的快捷输入方式。用户在输入框键入”&#x2F;“加上特定词汇（如 <code>/search</code>, <code>/image</code>），即可快速唤起AI的特定功能或切换模式，而无需用自然语言赘述。</li><li><strong>通俗比喻</strong>：<strong>“AI的快捷键”</strong>。当你想要AI帮你画图时，与其打字说”请帮我画一张……的图”，不如直接输入 <code>/画图</code>，系统立刻秒懂并切换到画图模式。它能消除自然语言的模糊性，做到精准指挥。</li></ul><h3 id="Prompt（提示词）"><a href="#Prompt（提示词）" class="headerlink" title="Prompt（提示词）"></a>Prompt（提示词）</h3><ul><li><strong>标准定义</strong>：人类向AI模型输入的自然语言文本，用于指导模型输出特定的内容或执行特定的任务。</li><li><strong>通俗比喻</strong>：<strong>“给AI的任务简书”</strong>。你对AI说的话就是Prompt。如果指令太模糊（”写篇稿子”），AI就乱写；如果指令清晰（”用幽默的语气，写一篇关于咖啡的300字科普文章”），AI就能精准完成任务。</li></ul><h3 id="User-Prompt（用户提示词）"><a href="#User-Prompt（用户提示词）" class="headerlink" title="User Prompt（用户提示词）"></a>User Prompt（用户提示词）</h3><ul><li><strong>标准定义</strong>：对话中由用户实时输入的消息部分，代表用户的具体请求、问题或指令，是AI模型进行当前轮次响应的直接依据。</li><li><strong>通俗比喻</strong>：<strong>“你当场说的话”</strong>。每次你在对话框里打的那句”帮我翻译这段话”或”分析一下这份数据”，就是User Prompt。它是你与AI实时沟通的”话筒”。</li></ul><h3 id="System-Prompt（系统提示词）"><a href="#System-Prompt（系统提示词）" class="headerlink" title="System Prompt（系统提示词）"></a>System Prompt（系统提示词）</h3><ul><li><strong>标准定义</strong>：在对话开始前，由开发者或产品方预先设定的隐藏指令，用于规定AI的角色身份、行为边界、回答风格和任务目标。用户通常看不到，但它持续影响AI的每一个回答。</li><li><strong>通俗比喻</strong>：<strong>“AI上岗前的入职培训手册”</strong>。在你和AI聊天之前，开发者已经悄悄告诉AI：”你是一名专业的法律顾问，只回答法律相关问题，语气要严谨正式，不得提供投资建议。”你说的每句话，AI都会在这套规则框架下进行回答。</li></ul><h3 id="Prompt-Engineering（提示词工程）"><a href="#Prompt-Engineering（提示词工程）" class="headerlink" title="Prompt Engineering（提示词工程）"></a>Prompt Engineering（提示词工程）</h3><ul><li><strong>标准定义</strong>：通过系统性地设计、优化和迭代输入给AI的提示词，以提升模型输出质量、准确性和可控性的技术与方法论。</li><li><strong>通俗比喻</strong>：<strong>“学会跟AI说话的艺术”</strong>。同样是问”写个营销方案”，高手的Prompt会写成”请以某品牌市场总监的身份，针对18-25岁女性用户，用AIDA模型写一份……”。Prompt Engineering就是这门把模糊需求变成精准指令的学问。</li></ul><h3 id="Few-shot（少样本学习）"><a href="#Few-shot（少样本学习）" class="headerlink" title="Few-shot（少样本学习）"></a>Few-shot（少样本学习）</h3><ul><li><strong>标准定义</strong>：在Prompt中提供少量（通常2-5个）示例，让AI通过模式识别来理解任务格式和期望输出风格，无需重新训练模型。</li><li><strong>通俗比喻</strong>：<strong>“举例子教学”</strong>。你想让AI按照特定格式写东西，与其反复描述，不如直接给它看2-3个例子：”就像这样写：[示例1]，[示例2]……现在轮到你了。” AI看完例子就能举一反三。</li></ul><h3 id="Zero-shot（零样本学习）"><a href="#Zero-shot（零样本学习）" class="headerlink" title="Zero-shot（零样本学习）"></a>Zero-shot（零样本学习）</h3><ul><li><strong>标准定义</strong>：不提供任何示例，直接用自然语言描述任务，让AI依靠自身预训练的知识和理解能力完成任务。</li><li><strong>通俗比喻</strong>：<strong>“直接考试，不给例题”</strong>。你直接告诉AI”帮我把这句话翻译成法语”，不给任何范例，AI就凭借自己的知识储备来完成。能力越强的模型，Zero-shot表现越好。</li></ul><h3 id="Workflow（工作流）"><a href="#Workflow（工作流）" class="headerlink" title="Workflow（工作流）"></a>Workflow（工作流）</h3><ul><li><strong>标准定义</strong>：将一个复杂的任务拆解成多个节点（如大模型处理、条件判断、代码执行等），并按照固定的顺序连接起来执行的过程。</li><li><strong>通俗比喻</strong>：<strong>“工厂的流水线”</strong>。当你发现每天都要做”查阅新闻 -&gt; 提取摘要 -&gt; 翻译成中文 -&gt; 发送到飞书”这件事时，你可以用Workflow把这些步骤固化下来，以后一键就能跑完整个流水线。</li></ul><hr><h2 id="第六部分：推理策略与技巧（Reasoning-Strategies）"><a href="#第六部分：推理策略与技巧（Reasoning-Strategies）" class="headerlink" title="第六部分：推理策略与技巧（Reasoning Strategies）"></a>第六部分：推理策略与技巧（Reasoning Strategies）</h2><p><em>这一部分介绍如何让AI”思考得更好”的方法论。</em></p><h3 id="CoT（Chain-of-Thought-思维链）"><a href="#CoT（Chain-of-Thought-思维链）" class="headerlink" title="CoT（Chain of Thought &#x2F; 思维链）"></a>CoT（Chain of Thought &#x2F; 思维链）</h3><ul><li><strong>标准定义</strong>：一种提示技术，通过在Prompt中加入”请一步一步思考”或提供推理步骤示例，引导AI在给出最终答案前，先展示完整的中间推理过程。</li><li><strong>通俗比喻</strong>：<strong>“要求AI展示解题过程”</strong>。就像老师要求学生”不能只写答案，要写出解题步骤”，CoT让AI把”思考过程”写出来，不仅最终答案更准确，还能让你看出它是否真的”理解了”问题。</li></ul><h3 id="ToT（Tree-of-Thought-思维树）"><a href="#ToT（Tree-of-Thought-思维树）" class="headerlink" title="ToT（Tree of Thought &#x2F; 思维树）"></a>ToT（Tree of Thought &#x2F; 思维树）</h3><ul><li><strong>标准定义</strong>：CoT的进阶版本，引导AI在思考过程中探索多个平行的推理分支，并对每条路径进行评估和回溯，最终选出最优解路径。</li><li><strong>通俗比喻</strong>：<strong>“下棋时的多步预判”</strong>。CoT是一条直线往下想，ToT则像下棋高手，同时考虑”如果走这步棋……””如果走那步棋……”，在脑中构建多条候选路径并比较优劣，最终选最好的那条。</li></ul><h3 id="ReACT（Reasoning-and-Acting-推理与行动）"><a href="#ReACT（Reasoning-and-Acting-推理与行动）" class="headerlink" title="ReACT（Reasoning and Acting &#x2F; 推理与行动）"></a>ReACT（Reasoning and Acting &#x2F; 推理与行动）</h3><ul><li><strong>标准定义</strong>：一种Agent推理框架，让AI交替进行”思考（Reasoning）”和”行动（Acting）”两个步骤——先想清楚要做什么，执行工具调用后，再根据结果继续思考下一步，形成循环。</li><li><strong>通俗比喻</strong>：<strong>“边做边想的侦探”</strong>。就像侦探破案：先推理（”凶器可能在卧室”）→ 行动（搜查卧室）→ 根据新发现再推理（”有血迹，但没有凶器”）→ 继续行动……ReACT就是让AI像侦探一样，思考和行动交替推进，直到找到答案。</li></ul><h3 id="Extended-Thinking（深度思考-扩展推理）"><a href="#Extended-Thinking（深度思考-扩展推理）" class="headerlink" title="Extended Thinking（深度思考 &#x2F; 扩展推理）"></a>Extended Thinking（深度思考 &#x2F; 扩展推理）</h3><ul><li><strong>标准定义</strong>：AI模型在给出最终回答前，进行大量内部推理和自我反思的能力模式。模型会花更多计算资源”想清楚”再回答，类似人类的慢思考，尤其适合复杂数学、逻辑推理和多步骤规划任务。</li><li><strong>通俗比喻</strong>：<strong>“AI从抢答模式切换到深思熟虑模式”</strong>。平时AI像快速口答，Extended Thinking模式是把AI放进考场，让它打草稿、验算、反复检查后再写答案。Claude 3.7的”思考模式”、OpenAI o1&#x2F;o3系列，都是这一技术的代表产品。</li></ul><hr><h2 id="第七部分：模型训练与优化（Model-Training-Optimization）"><a href="#第七部分：模型训练与优化（Model-Training-Optimization）" class="headerlink" title="第七部分：模型训练与优化（Model Training &amp; Optimization）"></a>第七部分：模型训练与优化（Model Training &amp; Optimization）</h2><p><em>这一部分解释AI模型是如何被”教会”的，以及常见的改进方法。</em></p><h3 id="Pre-training（预训练）"><a href="#Pre-training（预训练）" class="headerlink" title="Pre-training（预训练）"></a>Pre-training（预训练）</h3><ul><li><strong>标准定义</strong>：在海量通用文本数据（互联网、书籍等）上对大语言模型进行的初始大规模训练阶段。模型在此阶段习得语言规律、世界知识和通用推理能力，是所有后续能力的基础。</li><li><strong>通俗比喻</strong>：<strong>“AI的九年义务教育”</strong>。把互联网上几乎所有公开文字都读了一遍，掌握了语言、常识、各学科基础知识。这个阶段耗资巨大（动辄数千万甚至数亿美元），由大型AI公司（OpenAI、Anthropic等）完成。</li></ul><h3 id="SFT（Supervised-Fine-Tuning-监督微调）"><a href="#SFT（Supervised-Fine-Tuning-监督微调）" class="headerlink" title="SFT（Supervised Fine-Tuning &#x2F; 监督微调）"></a>SFT（Supervised Fine-Tuning &#x2F; 监督微调）</h3><ul><li><strong>标准定义</strong>：使用人工标注的高质量”输入-输出”配对数据对预训练模型进行微调的方法，是RLHF流程的第一步，也是最常用的基础微调方式。</li><li><strong>通俗比喻</strong>：<strong>“用标准答案做习题册”</strong>。给AI一大本”问题+标准答案”的练习册，让它反复做题对照答案，逐渐学会按照你期望的方式回答。预训练之后先SFT，再RLHF，是目前训练对话AI的标准流程。</li></ul><h3 id="Fine-tuning（微调）"><a href="#Fine-tuning（微调）" class="headerlink" title="Fine-tuning（微调）"></a>Fine-tuning（微调）</h3><ul><li><strong>标准定义</strong>：在预训练模型基础上，使用特定领域的小规模数据集继续训练，使模型在特定任务或领域上表现更好，同时保留通用能力。SFT是最常见的Fine-tuning方式。</li><li><strong>通俗比喻</strong>：<strong>“毕业后的岗位专项培训”</strong>。预训练让AI成了”全科生”，而Fine-tuning就是入职后的”专业培训”——让医疗AI额外学10万份病历，让法律AI读遍判决书。成本远低于预训练，企业可以自己做。</li></ul><h3 id="LoRA（Low-Rank-Adaptation-低秩适应）"><a href="#LoRA（Low-Rank-Adaptation-低秩适应）" class="headerlink" title="LoRA（Low-Rank Adaptation &#x2F; 低秩适应）"></a>LoRA（Low-Rank Adaptation &#x2F; 低秩适应）</h3><ul><li><strong>标准定义</strong>：一种高效的参数微调方法。不修改原始模型的巨量参数，而是在模型的关键层旁边并联一组小型矩阵（适配器），只训练这些小矩阵，以极低的计算成本实现特定任务的适配。</li><li><strong>通俗比喻</strong>：<strong>“给模型装一个外挂小芯片”</strong>。不用花大钱重新改造整个AI大脑，只需在旁边加一块专门针对你业务的”小芯片”。想换风格？换芯片就行，原始模型不动。LoRA让普通公司也能用有限GPU完成模型微调。</li></ul><h3 id="RLHF（Reinforcement-Learning-from-Human-Feedback-人类反馈强化学习）"><a href="#RLHF（Reinforcement-Learning-from-Human-Feedback-人类反馈强化学习）" class="headerlink" title="RLHF（Reinforcement Learning from Human Feedback &#x2F; 人类反馈强化学习）"></a>RLHF（Reinforcement Learning from Human Feedback &#x2F; 人类反馈强化学习）</h3><ul><li><strong>标准定义</strong>：通过收集人类对AI输出结果的排名和评分，训练一个”奖励模型”，再以此奖励模型为信号，用强化学习方法持续优化AI的输出，使其更符合人类偏好。</li><li><strong>通俗比喻</strong>：<strong>“让人给AI的作业打分来训练它”</strong>。AI产出两个答案，让真人标注员选哪个更好，用这些评分训练AI的品味。ChatGPT&#x2F;Claude等主流模型能说话”像人”、不乱说话，主要归功于RLHF这道关键工序。</li></ul><h3 id="DPO（Direct-Preference-Optimization-直接偏好优化）"><a href="#DPO（Direct-Preference-Optimization-直接偏好优化）" class="headerlink" title="DPO（Direct Preference Optimization &#x2F; 直接偏好优化）"></a>DPO（Direct Preference Optimization &#x2F; 直接偏好优化）</h3><ul><li><strong>标准定义</strong>：RLHF的简化替代方案。无需单独训练奖励模型，直接利用人类偏好数据（”更好的答案”vs”更差的答案”对）对语言模型进行优化，训练流程更简单，效果相当。</li><li><strong>通俗比喻</strong>：<strong>“RLHF的简装版”</strong>。RLHF是三步走（收集偏好→训练奖励模型→再训练语言模型），DPO把流程压缩成一步走，直接告诉模型”这样回答更好，那样回答更差”，更快更省资源。目前大量开源模型（如Llama系列）都用DPO做对齐。</li></ul><h3 id="Distillation（知识蒸馏）"><a href="#Distillation（知识蒸馏）" class="headerlink" title="Distillation（知识蒸馏）"></a>Distillation（知识蒸馏）</h3><ul><li><strong>标准定义</strong>：将一个大型、高性能的”教师模型”的知识迁移到一个小型、轻量的”学生模型”中。学生模型通过学习教师模型的输出分布（而非原始训练数据），实现以小博大的效果。</li><li><strong>通俗比喻</strong>：<strong>“让小模型拜大模型为师”</strong>。GPT-4这样的大模型能力强但很贵，Distillation就是让GPT-4大量做题并写出解题思路，再用这些思路训练一个小模型。小模型学会了大模型的”思维方式”，在特定任务上以1%的成本实现80%的大模型效果。</li></ul><h3 id="MoE（Mixture-of-Experts-混合专家模型）"><a href="#MoE（Mixture-of-Experts-混合专家模型）" class="headerlink" title="MoE（Mixture of Experts &#x2F; 混合专家模型）"></a>MoE（Mixture of Experts &#x2F; 混合专家模型）</h3><ul><li><strong>标准定义</strong>：一种模型架构，将大模型的参数分成若干”专家”模块，每次处理输入时只激活其中最相关的少数专家（通常2-8个），而非全部参数，在保持高能力的同时大幅降低计算成本。</li><li><strong>通俗比喻</strong>：<strong>“公司有100个专家，每次只叫2个开会”</strong>。传统模型像开全体大会，MoE像精准派单——这个问题和代码有关，就叫代码专家和逻辑专家；和翻译有关，就叫语言专家。GPT-4、Gemini、Mixtral等主流模型均采用MoE架构。</li></ul><h3 id="Quantization（量化）"><a href="#Quantization（量化）" class="headerlink" title="Quantization（量化）"></a>Quantization（量化）</h3><ul><li><strong>标准定义</strong>：将模型参数从高精度浮点数（如32位&#x2F;16位）压缩为低精度整数（如8位&#x2F;4位）的技术，可大幅减少模型内存占用和计算量，使大模型能在消费级显卡或移动设备上运行。</li><li><strong>通俗比喻</strong>：<strong>“给模型瘦身减肥”</strong>。原始模型动辄几百GB，普通电脑根本跑不起来；量化后精度略有损失，但体积缩小4-8倍，让70B参数的大模型也能在个人电脑上流畅运行。Ollama等本地部署工具，核心就依赖量化技术。</li></ul><hr><h2 id="💡-总结一句话速记："><a href="#💡-总结一句话速记：" class="headerlink" title="💡 总结一句话速记："></a>💡 总结一句话速记：</h2><ul><li><strong>LLM</strong> 是AI大脑的技术统称，<strong>Foundation Model</strong> 是它的上位概念，<strong>Multimodal</strong> 让它同时拥有”眼睛和耳朵”；</li><li>AI最大的缺陷是<strong>Hallucination（幻觉）</strong>，<strong>Grounding</strong> 是解法，<strong>Benchmark</strong> 是衡量能力的标准考卷；</li><li><strong>Prompt</strong> 是你给AI布置的任务（<strong>User Prompt</strong> 是你说的话，<strong>System Prompt</strong> 是开发者预设的规则）；</li><li><strong>Slash command</strong> 是最快速下达任务的快捷键；</li><li><strong>Prompt Engineering</strong> 是把Prompt写好的学问；教AI时可以举例子（<strong>Few-shot</strong>）或直接考（<strong>Zero-shot</strong>）；</li><li>接收任务的是 <strong>Agent</strong>（或者辅助你的 <strong>Copilot</strong>），<strong>Agentic</strong> 描述它主动干活的特性；</li><li>多个Agent的协同靠 <strong>Orchestration（编排）</strong> 调度，<strong>Human-in-the-Loop</strong> 在关键节点引入人工审核，<strong>Guardrails</strong> 确保AI不越界；</li><li>不同系统的Agent之间用 <strong>A2A</strong> 或 <strong>ACP</strong> 协议通信；</li><li>干活时需要用到 <strong>SKILLS</strong>、<strong>Plugin</strong> 和 <strong>Function Calling（工具调用）</strong>；</li><li>干活的数据用 <strong>Embedding</strong> 向量化后存入知识库，通过 <strong>RAG</strong>（或更智能的 <strong>Agentic RAG</strong>）检索，再经 <strong>MCP</strong> 接入本地数据；</li><li>AI产出的一切内容统称为 <strong>AIGC</strong>；</li><li>系统层面，<strong>HOOK</strong> 负责拦截，<strong>Memory</strong> 负责记忆，<strong>Streaming</strong> 让回答实时可见，<strong>Latency&#x2F;Throughput</strong> 是衡量性能的两把尺子；</li><li>AI处理的基本单位是 <strong>Token</strong>，能处理多少取决于 <strong>Context Window</strong>；<strong>Temperature</strong> 和 <strong>TOP-P</strong> 控制输出的发散程度；</li><li>让AI思考得更好：<strong>CoT</strong>（逐步推理）→ <strong>ToT</strong>（多路径探索）→ <strong>ReACT</strong>（边想边做）→ <strong>Extended Thinking</strong>（深度慢想）；</li><li>复杂任务固化成 <strong>Workflow</strong> 自动运行；</li><li>AI的能力来自 <strong>Pre-training</strong>，用 <strong>SFT</strong> 和 <strong>Fine-tuning&#x2F;LoRA</strong> 定制，用 <strong>RLHF&#x2F;DPO</strong> 对齐人类偏好，用 <strong>Distillation</strong> 压缩，用 <strong>MoE</strong> 架构提效，用 <strong>Quantization</strong> 让大模型跑在普通电脑上！</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;为了让团队中无论技术背景深浅的成员都能在同一套话语体系下交流，我将这些词汇分成了七大类，并为每个词提供了 &lt;strong&gt;“标准定义”&lt;/strong&gt; 和 &lt;strong&gt;“通俗比喻”&lt;/strong&gt;，让你和团队一看就懂。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&quot;第一部分：模</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>OpenClaw 与自研 Multi-Agent 平台的对比分析</title>
    <link href="https://www.silenceboy.com/2026/03/20/OpenClaw-%E4%B8%8E%E8%87%AA%E7%A0%94-Multi-Agent-%E5%B9%B3%E5%8F%B0%E7%9A%84%E5%AF%B9%E6%AF%94%E5%88%86%E6%9E%90/"/>
    <id>https://www.silenceboy.com/2026/03/20/OpenClaw-%E4%B8%8E%E8%87%AA%E7%A0%94-Multi-Agent-%E5%B9%B3%E5%8F%B0%E7%9A%84%E5%AF%B9%E6%AF%94%E5%88%86%E6%9E%90/</id>
    <published>2026-03-20T06:55:06.000Z</published>
    <updated>2026-03-20T07:05:31.585Z</updated>
    
    <content type="html"><![CDATA[<p>2026年初，<strong>OpenClaw</strong>（曾用名 Clawdbot&#x2F;Moltbot）作为一款现象级开源 AI 助手，在 GitHub 上以创纪录的速度突破了 20 万乃至 30 万 Star。下面对比 OpenClaw 与基于 <strong>LangGraph 自研</strong>的 Multi-Agent 系统，结合研发流程的实际场景，厘清两者的定位差异，为技术选型提供决策依据。</p><hr><h2 id="两者是什么？一句话定位"><a href="#两者是什么？一句话定位" class="headerlink" title="两者是什么？一句话定位"></a>两者是什么？一句话定位</h2><table><thead><tr><th></th><th>OpenClaw</th><th>LangGraph 自研系统</th></tr></thead><tbody><tr><td><strong>本质</strong></td><td>一款造好的”智能助理产品”</td><td>搭建智能系统的”底层工具箱”</td></tr><tr><td><strong>目标用户</strong></td><td>个人用户、极客</td><td>企业开发团队</td></tr><tr><td><strong>使用方式</strong></td><td>下载即用，配置接入聊天工具</td><td>需要开发团队编写代码定制</td></tr><tr><td><strong>运行形态</strong></td><td>24 小时常驻在个人电脑&#x2F;服务器上</td><td>作为企业后端服务，通过接口调用</td></tr></tbody></table><blockquote><p><strong>类比</strong>：OpenClaw 是一辆造好的智能汽车，可以直接开；LangGraph 是发动机图纸，你可以用它造出卡车、跑车或挖掘机，但需要自己动手。</p></blockquote><hr><h2 id="核心能力对比"><a href="#核心能力对比" class="headerlink" title="核心能力对比"></a>核心能力对比</h2><h3 id="基础架构"><a href="#基础架构" class="headerlink" title="基础架构"></a>基础架构</h3><table><thead><tr><th>对比维度</th><th>OpenClaw</th><th>LangGraph 自研系统</th></tr></thead><tbody><tr><td><strong>架构层次</strong></td><td>固定四层：接入层→推理层→记忆层→执行层</td><td>灵活的状态流转图，开发者自由定义节点和流程</td></tr><tr><td><strong>流程控制</strong></td><td>由 AI 自主判断下一步（发散型）</td><td>严格按代码定义的 A→B→C 流转（确定型）</td></tr><tr><td><strong>记忆方式</strong></td><td>用 Markdown 文件记录，个人助手场景无需数据库</td><td>依赖数据库持久化状态，支持随时恢复中断的任务</td></tr><tr><td><strong>定制程度</strong></td><td>低，通过插件（Skills）扩展</td><td>高，每个节点&#x2F;分支均可完全定制</td></tr></tbody></table><h3 id="多-Agent-协同"><a href="#多-Agent-协同" class="headerlink" title="多 Agent 协同"></a>多 Agent 协同</h3><table><thead><tr><th>对比维度</th><th>OpenClaw</th><th>LangGraph 自研系统</th></tr></thead><tbody><tr><td><strong>协同模式</strong></td><td>“分身”模式：多个 Agent 是同一助理在不同场景下的角色切换</td><td>“团队协作”模式：多个 Agent 各司其职，可做主管-下属、辩论、多轮审核等</td></tr><tr><td><strong>适用场景</strong></td><td>个人任务分类处理（工作号&#x2F;私人号&#x2F;项目号分开）</td><td>企业级复杂任务（多人审核、交叉验证、多轮反思）</td></tr><tr><td><strong>流程复杂度</strong></td><td>简单，适合线性任务</td><td>支持任意复杂拓扑，包括循环、条件分支、并行</td></tr></tbody></table><h3 id="安全与执行隔离"><a href="#安全与执行隔离" class="headerlink" title="安全与执行隔离"></a>安全与执行隔离</h3><table><thead><tr><th>对比维度</th><th>OpenClaw</th><th>LangGraph 自研系统</th></tr></thead><tbody><tr><td><strong>沙盒能力</strong></td><td>内置系统级安全隔离（2026年 NVIDIA 联合推出 NemoClaw，在操作系统层面严格限制文件和网络访问）</td><td>框架本身不含沙盒，需开发团队自行集成第三方隔离方案</td></tr><tr><td><strong>数据安全</strong></td><td>本地运行，敏感数据不出本机</td><td>灵活部署，但代码执行隔离需额外投入</td></tr></tbody></table><h3 id="工程与运维能力"><a href="#工程与运维能力" class="headerlink" title="工程与运维能力"></a>工程与运维能力</h3><table><thead><tr><th>对比维度</th><th>OpenClaw</th><th>LangGraph 自研系统</th></tr></thead><tbody><tr><td><strong>过程追踪</strong></td><td>依赖聊天记录，黑盒较多</td><td>支持全链路追踪（每个步骤的耗时、费用、输入输出均可记录和回放）</td></tr><tr><td><strong>人工介入</strong></td><td>不支持暂停等待人工审批</td><td>支持在任意步骤暂停、等待人工确认后继续（适合合规审查场景）</td></tr><tr><td><strong>实时反馈</strong></td><td>聊天消息级别的流式输出</td><td>支持更细粒度的实时数据流，适合对接实时看板或前端界面</td></tr><tr><td><strong>运维成本</strong></td><td>低，本地进程，无需额外基础设施</td><td>较高，需维护数据库、缓存、向量库等一套基础设施</td></tr></tbody></table><hr><h2 id="结合典型研发流程的实际应用场景分析"><a href="#结合典型研发流程的实际应用场景分析" class="headerlink" title="结合典型研发流程的实际应用场景分析"></a>结合典型研发流程的实际应用场景分析</h2><p>以下以通用软件研发流程为例，按各阶段列举具体应用场景，说明适合使用哪类工具解决。</p><h3 id="需求分析阶段"><a href="#需求分析阶段" class="headerlink" title="需求分析阶段"></a>需求分析阶段</h3><table><thead><tr><th>具体任务</th><th>推荐方案</th><th>理由</th></tr></thead><tbody><tr><td>将客户或产品原始需求（自然语言）整理为标准的结构化需求列表</td><td>✅ <strong>LangGraph 自研</strong></td><td>需要按固定模板结构化输出，并自动检查每条需求是否符合 SMART 原则，流程需确定可追溯</td></tr><tr><td>从高层需求拆解为详细功能需求，并建立双向追踪矩阵</td><td>✅ <strong>LangGraph 自研</strong></td><td>涉及多个 Agent 协作：需求拆解 Agent → 编号分配 Agent → 追踪矩阵生成 Agent，需严格的上下游关系</td></tr><tr><td>研发人员随时询问”这条需求背后的业务意图是什么”</td><td>✅ <strong>OpenClaw</strong></td><td>即时问答场景，接入聊天工具开箱即用，无需走严格流程</td></tr><tr><td>对已有需求文档进行规范性自动预检（如：是否存在表述歧义、是否缺少可验证性描述）</td><td>✅ <strong>LangGraph 自研</strong></td><td>需要按检查规则逐条扫描并生成审核报告，每一步结果需可审计</td></tr></tbody></table><h3 id="架构与设计阶段"><a href="#架构与设计阶段" class="headerlink" title="架构与设计阶段"></a>架构与设计阶段</h3><table><thead><tr><th>具体任务</th><th>推荐方案</th><th>理由</th></tr></thead><tbody><tr><td>根据需求规格自动生成软件架构设计文档初稿（模块划分、接口定义、通信协议）</td><td>✅ <strong>LangGraph 自研</strong></td><td>架构设计需多轮推理：先生成草案 → 一致性检查 Agent 检查是否与需求对齐 → 安全审查 Agent 检查关键约束 → 输出最终版本</td></tr><tr><td>自动生成模块交互逻辑的详细设计文档（含状态机、时序描述）</td><td>✅ <strong>LangGraph 自研</strong></td><td>交互逻辑复杂，需要专门的逻辑生成 Agent 与规范检查 Agent 配合，输出须符合团队设计规范</td></tr><tr><td>设计评审会前，快速了解本次设计变更的影响范围</td><td>✅ <strong>OpenClaw</strong></td><td>问答场景，通过接入文档仓库即可实时回答，无需定制流程</td></tr><tr><td>对设计文档进行变更影响分析（Change Impact Analysis），识别哪些下游需求&#x2F;测试用例受影响</td><td>✅ <strong>LangGraph 自研</strong></td><td>需要跨文档、跨层级的追踪关系分析，流程复杂且结果需精确可追溯</td></tr></tbody></table><h3 id="编码实现阶段"><a href="#编码实现阶段" class="headerlink" title="编码实现阶段"></a>编码实现阶段</h3><table><thead><tr><th>具体任务</th><th>推荐方案</th><th>理由</th></tr></thead><tbody><tr><td>根据详细设计文档自动生成代码骨架（含接口定义、模块结构、注释模板）</td><td>✅ <strong>LangGraph 自研</strong></td><td>代码生成需要：设计解析 Agent → 代码生成 Agent → 静态规则检查 Agent → 人工确认节点，每步均需留存审计记录</td></tr><tr><td>自动生成代码注释并同步更新到文档系统</td><td>✅ <strong>LangGraph 自研</strong></td><td>需与代码仓库、文档仓库同时交互，多步骤串联，结果需写回系统</td></tr><tr><td>开发人员在 IDE 内问”这个函数应该怎么实现”</td><td>✅ <strong>OpenClaw</strong></td><td>即时编程辅助场景，OpenClaw 接入代码库后可直接对话，轻量高效</td></tr><tr><td>代码规范违规自动扫描 + 修复建议生成</td><td>✅ <strong>LangGraph 自研</strong></td><td>需要按规则逐项检查，生成的修复建议须逐条经人工确认后方可提交，不能由 AI 自主决策</td></tr></tbody></table><h3 id="测试验证阶段"><a href="#测试验证阶段" class="headerlink" title="测试验证阶段"></a>测试验证阶段</h3><table><thead><tr><th>具体任务</th><th>推荐方案</th><th>理由</th></tr></thead><tbody><tr><td>根据每条功能需求自动生成对应的单元测试用例（含边界值、等价类）</td><td>✅ <strong>LangGraph 自研</strong></td><td>测试用例生成需要：需求解析 → 测试策略选择 → 用例生成 → 覆盖率分析的完整流程，且输出需与需求 ID 建立追踪关系</td></tr><tr><td>自动生成集成测试脚本，并关联到架构中的接口定义</td><td>✅ <strong>LangGraph 自研</strong></td><td>需要架构文档、接口定义、测试框架三方联动，多 Agent 协作完成</td></tr><tr><td>测试报告自动生成：汇总测试结果、统计覆盖率、标注未覆盖需求</td><td>✅ <strong>LangGraph 自研</strong></td><td>报告格式须符合团队规范，需严格的模板控制和数据聚合，不能由 AI 随意发挥</td></tr><tr><td>测试人员问”这个测试失败的根本原因可能是什么”</td><td>✅ <strong>OpenClaw</strong></td><td>即时诊断问答，接入日志和代码库后可快速给出分析，不需要走固定流程</td></tr><tr><td>对测试用例集做需求覆盖度分析，生成缺口报告（哪些需求还没有对应测试）</td><td>✅ <strong>LangGraph 自研</strong></td><td>需要跨需求文档与测试用例库做矩阵比对，结果须精确、可审计</td></tr></tbody></table><h3 id="发布与交付阶段"><a href="#发布与交付阶段" class="headerlink" title="发布与交付阶段"></a>发布与交付阶段</h3><table><thead><tr><th>具体任务</th><th>推荐方案</th><th>理由</th></tr></thead><tbody><tr><td>发布前的文档完整性自动预检（逐项核对评审清单，生成差距报告）</td><td>✅ <strong>LangGraph 自研</strong></td><td>评审清单条目多、规则严格，需要多个检查 Agent 并行扫描不同文档，人工确认后输出官方报告</td></tr><tr><td>自动生成软件发布说明（Release Note），汇总本版本需求变更、已修复缺陷、未关闭风险</td><td>✅ <strong>LangGraph 自研</strong></td><td>需从需求库、缺陷库、风险库多来源汇总，格式须符合团队交付标准</td></tr><tr><td>项目经理快速了解当前项目各节点的完成状态</td><td>✅ <strong>OpenClaw</strong></td><td>问答 + 仪表盘展示场景，接入项目管理系统后可对话式查询，无需定制流程</td></tr></tbody></table><hr><h2 id="OpenClaw-能否替代我们的自研系统？"><a href="#OpenClaw-能否替代我们的自研系统？" class="headerlink" title="OpenClaw 能否替代我们的自研系统？"></a>OpenClaw 能否替代我们的自研系统？</h2><p><strong>结论：不能替代。</strong> 两者面向的是完全不同的问题。</p><table><thead><tr><th>场景类型</th><th>典型例子</th><th>适合方案</th><th>原因</th></tr></thead><tbody><tr><td><strong>即时问答与日常辅助</strong></td><td>研发人员随时提问、查文档、了解项目状态</td><td>✅ OpenClaw</td><td>开箱即用，无需开发，接入聊天工具即可使用</td></tr><tr><td><strong>标准化文档自动生成</strong></td><td>需求规格、架构设计、测试报告的批量生成</td><td>✅ LangGraph 自研</td><td>输出格式须严格可控，流程须可追溯，不能由 AI 自主发挥</td></tr><tr><td><strong>跨文档一致性检查</strong></td><td>需求-设计-测试三层追踪矩阵验证、代码规范扫描</td><td>✅ LangGraph 自研</td><td>多步骤、跨系统、需人工审批节点，必须有确定性的流程控制</td></tr><tr><td><strong>代码与测试自动化</strong></td><td>代码骨架生成、单元测试用例生成、覆盖率分析</td><td>✅ LangGraph 自研</td><td>生成结果须与需求 ID 建立追踪，且每步结果需留存审计记录</td></tr><tr><td><strong>评审前质量预检</strong></td><td>发布评审清单自动核对、交付文档完整性检查</td><td>✅ LangGraph 自研</td><td>检查规则多且复杂，需并行多个专项检查 Agent，结果须精确</td></tr></tbody></table><hr><h2 id="两者如何配合使用？"><a href="#两者如何配合使用？" class="headerlink" title="两者如何配合使用？"></a>两者如何配合使用？</h2><p><strong>推荐融合架构</strong>：OpenClaw 作为研发团队的”前台助理”，LangGraph 自研系统作为”后台流水线引擎”，两者通过接口打通。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">研发人员（HiEcarx）</span><br><span class="line">       ↓</span><br><span class="line">  OpenClaw（前台助理）</span><br><span class="line">  · 接收自然语言指令（&quot;帮我生成这个模块的测试用例&quot;）</span><br><span class="line">  · 意图识别与任务分类</span><br><span class="line">  · 简单问答直接回答</span><br><span class="line">       ↓ 遇到需要走标准化流程的任务</span><br><span class="line">  LangGraph 自研系统（后台流水线）</span><br><span class="line">  · 文档解析 Agent + 内容生成 Agent + 规范检查 Agent 协作</span><br><span class="line">  · 严格按团队模板和规则执行，关键节点等待人工确认</span><br><span class="line">  · 结果写入文档系统 / 代码仓库，并生成审计记录</span><br><span class="line">       ↓</span><br><span class="line">  OpenClaw 将执行结果汇报给研发人员，支持追问和调整</span><br></pre></td></tr></table></figure><p>这种分工让两者各扬所长：<strong>OpenClaw 负责”和人打交道”，LangGraph 负责”把事情做对、做得可审计”</strong>。</p><hr><h2 id="总结建议"><a href="#总结建议" class="headerlink" title="总结建议"></a>总结建议</h2><table><thead><tr><th></th><th>OpenClaw</th><th>LangGraph 自研</th></tr></thead><tbody><tr><td><strong>擅长</strong></td><td>即时问答、日常辅助、轻量自动化</td><td>标准化文档生成、规范检查、跨层追踪、代码&#x2F;测试自动化</td></tr><tr><td><strong>不擅长</strong></td><td>严格 SOP 流转、结构化文档输出、审计记录</td><td>开箱即用的对话交互、轻量临时任务</td></tr><tr><td><strong>在团队中的定位</strong></td><td>前端接入层：研发人员的对话入口</td><td>核心引擎：研发各阶段流程自动化的执行主体</td></tr></tbody></table><blockquote><p><strong>核心判断</strong>：凡是需要”留痕、可审计、格式严格、多步骤协作”的工作，都应走 LangGraph 自研系统；凡是”随时问、随时答、不需要留痕”的日常辅助，OpenClaw 更合适。<strong>LangGraph 自研系统承载的是流程自动化的核心价值，OpenClaw 是提升日常效率的补充工具</strong>。</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;2026年初，&lt;strong&gt;OpenClaw&lt;/strong&gt;（曾用名 Clawdbot&amp;#x2F;Moltbot）作为一款现象级开源 AI 助手，在 GitHub 上以创纪录的速度突破了 20 万乃至 30 万 Star。下面对比 OpenClaw 与基于 &lt;stron</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>MoE（Mixture of Experts）架构详解</title>
    <link href="https://www.silenceboy.com/2026/03/20/MoE%EF%BC%88Mixture-of-Experts%EF%BC%89%E6%9E%B6%E6%9E%84%E8%AF%A6%E8%A7%A3/"/>
    <id>https://www.silenceboy.com/2026/03/20/MoE%EF%BC%88Mixture-of-Experts%EF%BC%89%E6%9E%B6%E6%9E%84%E8%AF%A6%E8%A7%A3/</id>
    <published>2026-03-20T01:39:37.000Z</published>
    <updated>2026-03-20T03:12:13.740Z</updated>
    
    <content type="html"><![CDATA[<h1 id="核心思想与动机"><a href="#核心思想与动机" class="headerlink" title="核心思想与动机"></a>核心思想与动机</h1><h2 id="核心思想"><a href="#核心思想" class="headerlink" title="核心思想"></a>核心思想</h2><p>MoE 的核心思想可以用一句话概括：<strong>不是所有输入都需要经过模型的全部参数——让不同的”专家”处理不同类型的输入，每次只激活其中一小部分</strong>。</p><p>这本质上是一种 <strong>条件计算（Conditional Computation）</strong> 的范式：模型的总参数量可以非常大，但对于任意一个输入 token，只有一小部分参数参与计算。这打破了传统 Dense Model 中”参数量 ≈ 计算量”的线性绑定关系。</p><h2 id="动机"><a href="#动机" class="headerlink" title="动机"></a>动机</h2><p>MoE 的出现源于深度学习的一个根本性矛盾：</p><table><thead><tr><th align="left">矛盾</th><th align="left">说明</th></tr></thead><tbody><tr><td align="left"><strong>更大的模型 → 更好的性能</strong></td><td align="left">Scaling Law 告诉我们，增加参数量几乎总能提升模型能力</td></tr><tr><td align="left"><strong>更大的模型 → 更高的计算成本</strong></td><td align="left">Dense Model 的 FLOPs 与参数量成正比，训练和推理成本急剧上升</td></tr></tbody></table><p>MoE 提供了一条”鱼和熊掌兼得”的路径：</p><blockquote><p>在保持计算量（FLOPs）基本不变的前提下，大幅扩展模型的参数量和容量。</p></blockquote><p>举个直觉性的类比：一家大医院有 100 位专科医生（参数量大），但每个患者只需要看 2-3 位相关科室的医生（激活参数少），而不是让所有 100 位医生都会诊。</p><h1 id="架构组成"><a href="#架构组成" class="headerlink" title="架构组成"></a>架构组成</h1><p>一个典型的 MoE 层由两个核心组件构成：<strong>专家网络（Experts）</strong> 和 <strong>门控网络（Gating Network / Router）</strong>。</p><h2 id="专家网络（Expert-Networks）"><a href="#专家网络（Expert-Networks）" class="headerlink" title="专家网络（Expert Networks）"></a>专家网络（Expert Networks）</h2><ul><li>每个”专家”本质上就是一个独立的 <strong>前馈网络（FFN）</strong>，结构通常与标准 Transformer 中的 FFN 完全相同（两层线性变换 + 激活函数）。</li><li>一个 MoE 层包含 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.009ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 888 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g></g></g></svg></mjx-container> 个专家：<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="14.64ex" height="1.977ex" role="img" focusable="false" viewBox="0 -680 6470.7 874"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D438" d="M492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213Z"></path></g><g data-mml-node="mn" transform="translate(771,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(1174.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msub" transform="translate(1619.2,0)"><g data-mml-node="mi"><path data-c="1D438" d="M492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213Z"></path></g><g data-mml-node="mn" transform="translate(771,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(2793.8,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mo" transform="translate(3238.4,0)"><path data-c="2026" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60ZM525 60Q525 84 542 102T585 120Q609 120 627 104T646 61Q646 36 629 18T586 0T543 17T525 60ZM972 60Q972 84 989 102T1032 120Q1056 120 1074 104T1093 61Q1093 36 1076 18T1033 0T990 17T972 60Z"></path></g><g data-mml-node="mo" transform="translate(4577.1,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msub" transform="translate(5021.8,0)"><g data-mml-node="mi"><path data-c="1D438" d="M492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213Z"></path></g><g data-mml-node="mi" transform="translate(771,-150) scale(0.707)"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g></g></g></g></svg></mjx-container>，典型的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.009ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 888 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g></g></g></svg></mjx-container> 值从 8 到数千不等。</li><li><strong>所有专家共享相同的架构，但参数完全独立</strong>——它们各自学习不同的”专业技能”。</li></ul><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Expert_i(x) = W_2^{(i)} · σ(W_1^{(i)} · x)     # 每个专家是一个标准 FFN</span><br></pre></td></tr></table></figure><h2 id="门控网络-路由器（Gating-Network-Router）"><a href="#门控网络-路由器（Gating-Network-Router）" class="headerlink" title="门控网络 / 路由器（Gating Network / Router）"></a>门控网络 / 路由器（Gating Network / Router）</h2><p>门控网络是 MoE 的”调度中心”，决定每个输入 token 应该被发送给哪些专家。</p><p>最经典的设计（Shazeer et al., 2017）：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.667ex;" xmlns="http://www.w3.org/2000/svg" width="31.34ex" height="2.364ex" role="img" focusable="false" viewBox="0 -750 13852.3 1045"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43A" d="M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252Z"></path></g><g data-mml-node="mo" transform="translate(786,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(1175,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(1747,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(2413.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mtext" transform="translate(3469.6,0)"><path data-c="53" d="M55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(556,0)"></path><path data-c="66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z" transform="translate(1056,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(1362,0)"></path><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(1751,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(2584,0)"></path><path data-c="78" d="M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z" transform="translate(3084,0)"></path></g><g data-mml-node="mo" transform="translate(7081.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mtext" transform="translate(7470.6,0)"><path data-c="54" d="M36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(722,0)"></path><path data-c="70" d="M36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218Z" transform="translate(1222,0)"></path><path data-c="4B" d="M128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H313Q235 637 233 620Q232 618 232 462L233 307L379 449Q425 494 479 546Q518 584 524 591T531 607V608Q531 630 503 636Q501 636 498 636T493 637H489V683H499Q517 680 630 680Q704 680 716 683H722V637H708Q633 633 589 597Q584 592 495 506T406 419T515 254T631 80Q644 60 662 54T715 46H736V0H728Q719 3 615 3Q493 3 472 0H461V46H469Q515 46 515 72Q515 78 512 84L336 351Q332 348 278 296L232 251V156Q232 62 235 58Q243 47 302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622Z" transform="translate(1778,0)"></path></g><g data-mml-node="mo" transform="translate(10026.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(10415.6,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(11209.8,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="msub" transform="translate(11710,0)"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mi" transform="translate(977,-150) scale(0.707)"><path data-c="1D454" d="M311 43Q296 30 267 15T206 0Q143 0 105 45T66 160Q66 265 143 353T314 442Q361 442 401 394L404 398Q406 401 409 404T418 412T431 419T447 422Q461 422 470 413T480 394Q480 379 423 152T363 -80Q345 -134 286 -169T151 -205Q10 -205 10 -137Q10 -111 28 -91T74 -71Q89 -71 102 -80T116 -111Q116 -121 114 -130T107 -144T99 -154T92 -162L90 -164H91Q101 -167 151 -167Q189 -167 211 -155Q234 -144 254 -122T282 -75Q288 -56 298 -13Q311 35 311 43ZM384 328L380 339Q377 350 375 354T369 368T359 382T346 393T328 402T306 405Q262 405 221 352Q191 313 171 233T151 117Q151 38 213 38Q269 38 323 108L331 118L384 328Z"></path></g></g><g data-mml-node="mo" transform="translate(13074.3,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(13463.3,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container></p><p>其中：</p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.294ex" height="1.025ex" role="img" focusable="false" viewBox="0 -442 572 453"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g></g></g></svg></mjx-container> 是输入 token 的隐状态向量（维度 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.023ex;" xmlns="http://www.w3.org/2000/svg" width="1.176ex" height="1.593ex" role="img" focusable="false" viewBox="0 -694 520 704"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g></g></g></svg></mjx-container>）</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.667ex;" xmlns="http://www.w3.org/2000/svg" width="11.171ex" height="2.599ex" role="img" focusable="false" viewBox="0 -853.7 4937.6 1148.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mi" transform="translate(977,-150) scale(0.707)"><path data-c="1D454" d="M311 43Q296 30 267 15T206 0Q143 0 105 45T66 160Q66 265 143 353T314 442Q361 442 401 394L404 398Q406 401 409 404T418 412T431 419T447 422Q461 422 470 413T480 394Q480 379 423 152T363 -80Q345 -134 286 -169T151 -205Q10 -205 10 -137Q10 -111 28 -91T74 -71Q89 -71 102 -80T116 -111Q116 -121 114 -130T107 -144T99 -154T92 -162L90 -164H91Q101 -167 151 -167Q189 -167 211 -155Q234 -144 254 -122T282 -75Q288 -56 298 -13Q311 35 311 43ZM384 328L380 339Q377 350 375 354T369 368T359 382T346 393T328 402T306 405Q262 405 221 352Q191 313 171 233T151 117Q151 38 213 38Q269 38 323 108L331 118L384 328Z"></path></g></g><g data-mml-node="mo" transform="translate(1642.1,0)"><path data-c="2208" d="M84 250Q84 372 166 450T360 539Q361 539 377 539T419 540T469 540H568Q583 532 583 520Q583 511 570 501L466 500Q355 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H568Q583 262 583 250T568 230H124V228Q124 207 134 177T167 112T231 48T328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 446 -40T417 -41Q262 -41 172 45Q84 127 84 250Z"></path></g><g data-mml-node="msup" transform="translate(2586.8,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="211D" d="M17 665Q17 672 28 683H221Q415 681 439 677Q461 673 481 667T516 654T544 639T566 623T584 607T597 592T607 578T614 565T618 554L621 548Q626 530 626 497Q626 447 613 419Q578 348 473 326L455 321Q462 310 473 292T517 226T578 141T637 72T686 35Q705 30 705 16Q705 7 693 -1H510Q503 6 404 159L306 310H268V183Q270 67 271 59Q274 42 291 38Q295 37 319 35Q344 35 353 28Q362 17 353 3L346 -1H28Q16 5 16 16Q16 35 55 35Q96 38 101 52Q106 60 106 341T101 632Q95 645 55 648Q17 648 17 665ZM241 35Q238 42 237 45T235 78T233 163T233 337V621L237 635L244 648H133Q136 641 137 638T139 603T141 517T141 341Q141 131 140 89T134 37Q133 36 133 35H241ZM457 496Q457 540 449 570T425 615T400 634T377 643Q374 643 339 648Q300 648 281 635Q271 628 270 610T268 481V346H284Q327 346 375 352Q421 364 439 392T457 496ZM492 537T492 496T488 427T478 389T469 371T464 361Q464 360 465 360Q469 360 497 370Q593 400 593 495Q593 592 477 630L457 637L461 626Q474 611 488 561Q492 537 492 496ZM464 243Q411 317 410 317Q404 317 401 315Q384 315 370 312H346L526 35H619L606 50Q553 109 464 243Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(755,363) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mo" transform="translate(520,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(1298,0)"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g></g></g></g></g></svg></mjx-container> 是可学习的路由权重矩阵</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.667ex;" xmlns="http://www.w3.org/2000/svg" width="6.015ex" height="2.213ex" role="img" focusable="false" viewBox="0 -683 2658.7 978"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(794.2,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="msub" transform="translate(1294.4,0)"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mi" transform="translate(977,-150) scale(0.707)"><path data-c="1D454" d="M311 43Q296 30 267 15T206 0Q143 0 105 45T66 160Q66 265 143 353T314 442Q361 442 401 394L404 398Q406 401 409 404T418 412T431 419T447 422Q461 422 470 413T480 394Q480 379 423 152T363 -80Q345 -134 286 -169T151 -205Q10 -205 10 -137Q10 -111 28 -91T74 -71Q89 -71 102 -80T116 -111Q116 -121 114 -130T107 -144T99 -154T92 -162L90 -164H91Q101 -167 151 -167Q189 -167 211 -155Q234 -144 254 -122T282 -75Q288 -56 298 -13Q311 35 311 43ZM384 328L380 339Q377 350 375 354T369 368T359 382T346 393T328 402T306 405Q262 405 221 352Q191 313 171 233T151 117Q151 38 213 38Q269 38 323 108L331 118L384 328Z"></path></g></g></g></g></svg></mjx-container> 产生 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.009ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 888 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g></g></g></svg></mjx-container> 个 logits，表示该 token 对每个专家的”亲和度”</li><li><strong>TopK</strong> 只保留得分最高的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="2.011ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 889 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g></g></g></svg></mjx-container> 个专家（其余置为 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="4.023ex" height="1.505ex" role="img" focusable="false" viewBox="0 -583 1778 665"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mi" transform="translate(778,0)"><path data-c="221E" d="M55 217Q55 305 111 373T254 442Q342 442 419 381Q457 350 493 303L507 284L514 294Q618 442 747 442Q833 442 888 374T944 214Q944 128 889 59T743 -11Q657 -11 580 50Q542 81 506 128L492 147L485 137Q381 -11 252 -11Q166 -11 111 57T55 217ZM907 217Q907 285 869 341T761 397Q740 397 720 392T682 378T648 359T619 335T594 310T574 285T559 263T548 246L543 238L574 198Q605 158 622 138T664 94T714 61T765 51Q827 51 867 100T907 217ZM92 214Q92 145 131 89T239 33Q357 33 456 193L425 233Q364 312 334 337Q285 380 233 380Q171 380 132 331T92 214Z"></path></g></g></g></svg></mjx-container>）</li><li><strong>Softmax</strong> 将 TopK 的结果归一化为概率权重</li></ul><h2 id="MoE-层的完整计算"><a href="#MoE-层的完整计算" class="headerlink" title="MoE 层的完整计算"></a>MoE 层的完整计算</h2><p>一个 MoE 层的输出为：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -3.025ex;" xmlns="http://www.w3.org/2000/svg" width="22.881ex" height="5.175ex" role="img" focusable="false" viewBox="0 -950 10113.5 2287.1"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D466" d="M21 287Q21 301 36 335T84 406T158 442Q199 442 224 419T250 355Q248 336 247 334Q247 331 231 288T198 191T182 105Q182 62 196 45T238 27Q261 27 281 38T312 61T339 94Q339 95 344 114T358 173T377 247Q415 397 419 404Q432 431 462 431Q475 431 483 424T494 412T496 403Q496 390 447 193T391 -23Q363 -106 294 -155T156 -205Q111 -205 77 -183T43 -117Q43 -95 50 -80T69 -58T89 -48T106 -45Q150 -45 150 -87Q150 -107 138 -122T115 -142T102 -147L99 -148Q101 -153 118 -160T152 -167H160Q177 -167 186 -165Q219 -156 247 -127T290 -65T313 -9T321 21L315 17Q309 13 296 6T270 -6Q250 -11 231 -11Q185 -11 150 11T104 82Q103 89 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(767.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="munder" transform="translate(1823.6,0)"><g data-mml-node="mo" transform="translate(539.5,0)"><path data-c="2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path></g><g data-mml-node="TeXAtom" transform="translate(0,-1100) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(345,0)"><path data-c="2208" d="M84 250Q84 372 166 450T360 539Q361 539 377 539T419 540T469 540H568Q583 532 583 520Q583 511 570 501L466 500Q355 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H568Q583 262 583 250T568 230H124V228Q124 207 134 177T167 112T231 48T328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 446 -40T417 -41Q262 -41 172 45Q84 127 84 250Z"></path></g><g data-mml-node="mtext" transform="translate(1012,0)"><path data-c="54" d="M36 443Q37 448 46 558T55 671V677H666V671Q667 666 676 556T685 443V437H645V443Q645 445 642 478T631 544T610 593Q593 614 555 625Q534 630 478 630H451H443Q417 630 414 618Q413 616 413 339V63Q420 53 439 50T528 46H558V0H545L361 3Q186 1 177 0H164V46H194Q264 46 283 49T309 63V339V550Q309 620 304 625T271 630H244H224Q154 630 119 601Q101 585 93 554T81 486T76 443V437H36V443Z"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(722,0)"></path><path data-c="70" d="M36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218Z" transform="translate(1222,0)"></path><path data-c="4B" d="M128 622Q121 629 117 631T101 634T58 637H25V683H36Q57 680 180 680Q315 680 324 683H335V637H313Q235 637 233 620Q232 618 232 462L233 307L379 449Q425 494 479 546Q518 584 524 591T531 607V608Q531 630 503 636Q501 636 498 636T493 637H489V683H499Q517 680 630 680Q704 680 716 683H722V637H708Q633 633 589 597Q584 592 495 506T406 419T515 254T631 80Q644 60 662 54T715 46H736V0H728Q719 3 615 3Q493 3 472 0H461V46H469Q515 46 515 72Q515 78 512 84L336 351Q332 348 278 296L232 251V156Q232 62 235 58Q243 47 302 46H335V0H324Q303 3 180 3Q45 3 36 0H25V46H58Q100 47 109 49T128 61V622Z" transform="translate(1778,0)"></path></g></g></g><g data-mml-node="msub" transform="translate(4513.2,0)"><g data-mml-node="mi"><path data-c="1D43A" d="M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252Z"></path></g><g data-mml-node="mi" transform="translate(819,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(5626.1,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(6015.1,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(6587.1,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(7198.4,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="msub" transform="translate(7698.6,0)"><g data-mml-node="mi"><path data-c="1D438" d="M492 213Q472 213 472 226Q472 230 477 250T482 285Q482 316 461 323T364 330H312Q311 328 277 192T243 52Q243 48 254 48T334 46Q428 46 458 48T518 61Q567 77 599 117T670 248Q680 270 683 272Q690 274 698 274Q718 274 718 261Q613 7 608 2Q605 0 322 0H133Q31 0 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H757Q764 676 764 669Q764 664 751 557T737 447Q735 440 717 440H705Q698 445 698 453L701 476Q704 500 704 528Q704 558 697 578T678 609T643 625T596 632T532 634H485Q397 633 392 631Q388 629 386 622Q385 619 355 499T324 377Q347 376 372 376H398Q464 376 489 391T534 472Q538 488 540 490T557 493Q562 493 565 493T570 492T572 491T574 487T577 483L544 351Q511 218 508 216Q505 213 492 213Z"></path></g><g data-mml-node="mi" transform="translate(771,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(8763.5,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(9152.5,0)"><path data-c="1D465" d="M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"></path></g><g data-mml-node="mo" transform="translate(9724.5,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container></p><p>即：<strong>被选中专家的输出，按门控权重加权求和。</strong></p><h2 id="在-Transformer-中的集成方式"><a href="#在-Transformer-中的集成方式" class="headerlink" title="在 Transformer 中的集成方式"></a>在 Transformer 中的集成方式</h2><p>MoE 通常 <strong>替换 Transformer 中的 FFN 层</strong>，而非注意力层。一个典型的部署模式：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">标准 Transformer Block:     MoE Transformer Block:</span><br><span class="line">┌──────────────────┐       ┌──────────────────┐</span><br><span class="line">│  Self-Attention   │       │  Self-Attention   │</span><br><span class="line">├──────────────────┤       ├──────────────────┤</span><br><span class="line">│     FFN          │  →    │   MoE Layer       │</span><br><span class="line">│  (单一专家)       │       │  (N个专家+Router) │</span><br><span class="line">└──────────────────┘       └──────────────────┘</span><br></pre></td></tr></table></figure><p>常见做法是 <strong>每隔若干层</strong> 将一个标准 FFN 替换为 MoE 层（如每 2 层或每 4 层替换一次），而非全部替换。</p><h1 id="工作流程：路由机制与稀疏激活"><a href="#工作流程：路由机制与稀疏激活" class="headerlink" title="工作流程：路由机制与稀疏激活"></a>工作流程：路由机制与稀疏激活</h1><h2 id="详细路由流程"><a href="#详细路由流程" class="headerlink" title="详细路由流程"></a>详细路由流程</h2><p>以 Top-2 路由为例，处理一个 batch 的完整流程：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">Step 1: Token Embedding</span><br><span class="line">  输入序列 → [t1, t2, t3, ..., tn]  每个 ti ∈ R^d</span><br><span class="line"></span><br><span class="line">Step 2: 路由计算</span><br><span class="line">  对每个 token ti:</span><br><span class="line">    logits_i = ti · W_g           # → R^N (N个专家的分数)</span><br><span class="line">    top2_indices = TopK(logits_i, k=2)  # 选出分数最高的2个专家</span><br><span class="line">    weights_i = Softmax(logits_i[top2_indices])  # 归一化权重</span><br><span class="line"></span><br><span class="line">Step 3: Token 分发 (Dispatch)</span><br><span class="line">  将每个 token 发送给它选中的2个专家</span><br><span class="line">  (在分布式场景中，这涉及跨设备的 All-to-All 通信)</span><br><span class="line"></span><br><span class="line">Step 4: 专家计算</span><br><span class="line">  每个专家 E_j 并行处理分配给自己的所有 token</span><br><span class="line"></span><br><span class="line">Step 5: 结果合并 (Combine)</span><br><span class="line">  y_i = w_i1 · E_{j1}(t_i) + w_i2 · E_{j2}(t_i)</span><br><span class="line">  (加权合并两个专家的输出)</span><br><span class="line"></span><br><span class="line">Step 6: 继续下一层</span><br></pre></td></tr></table></figure><h2 id="稀疏激活的本质"><a href="#稀疏激活的本质" class="headerlink" title="稀疏激活的本质"></a>稀疏激活的本质</h2><p><strong>稀疏性</strong> 是 MoE 的核心优势来源：</p><ul><li>假设模型有 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="7.289ex" height="1.731ex" role="img" focusable="false" viewBox="0 -683 3221.6 765"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g><g data-mml-node="mo" transform="translate(1165.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(2221.6,0)"><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z"></path><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" transform="translate(500,0)"></path></g></g></g></svg></mjx-container> 个专家，Top-2 路由</li><li>每个 token 只激活 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="12.696ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 5611.6 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(500,0)"><g data-mml-node="mo"><path data-c="2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path></g></g><g data-mml-node="mn" transform="translate(1000,0)"><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z"></path><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(2277.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(3333.6,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path data-c="2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" transform="translate(500,0)"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(778,0)"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(1278,0)"></path><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z" transform="translate(1778,0)"></path></g></g></g></svg></mjx-container> 的专家参数</li><li>模型总参数量 = 64 × 单个专家参数量 + 共享参数（Attention 等）</li><li><strong>实际计算量 ≈ 2 × 单个专家参数量 + 共享参数</strong></li></ul><p>这就是为什么 MoE 能做到 “<strong>参数量巨大，但计算量可控</strong>“。</p><h2 id="路由机制的演进"><a href="#路由机制的演进" class="headerlink" title="路由机制的演进"></a>路由机制的演进</h2><table><thead><tr><th align="left">方法</th><th align="left">提出者</th><th align="center">核心思想</th></tr></thead><tbody><tr><td align="left">Top-K Routing</td><td align="left">Shazeer et al., 2017</td><td align="center">经典方案，每个 token 选 K 个专家</td></tr><tr><td align="left">Switch Routing (Top-1)</td><td align="left">Fedus et al., 2021</td><td align="center">极端稀疏，每个 token 只选 1 个专家</td></tr><tr><td align="left">Expert Choice</td><td align="left">Zhou et al., 2022</td><td align="center">反转视角——让专家选 token，而非 token 选专家</td></tr><tr><td align="left">Soft MoE</td><td align="left">Puigcerver et al., 2023</td><td align="center">取消离散路由，用 soft 加权组合所有专家</td></tr><tr><td align="left">Hash Routing</td><td align="left">Roller et al., 2021</td><td align="center">用固定哈希函数路由，无需可学习参数</td></tr></tbody></table><h1 id="优势与挑战"><a href="#优势与挑战" class="headerlink" title="优势与挑战"></a>优势与挑战</h1><h2 id="核心优势"><a href="#核心优势" class="headerlink" title="核心优势"></a>核心优势</h2><h3 id="✅-计算效率的根本性提升"><a href="#✅-计算效率的根本性提升" class="headerlink" title="✅ 计算效率的根本性提升"></a>✅ 计算效率的根本性提升</h3><p>这是 MoE 最大的卖点。以具体数字说明：</p><table><thead><tr><th align="left">模型</th><th align="left">总参数量</th><th align="center">激活参数量</th><th align="center">比值</th></tr></thead><tbody><tr><td align="left">Mixtral 8×7B</td><td align="left">~47B</td><td align="center">~13B</td><td align="center">3.6×</td></tr><tr><td align="left">Switch-XXL</td><td align="left">1.6T</td><td align="center">~同 T5-XXL</td><td align="center">~10×</td></tr><tr><td align="left">GPT-4 (传闻)</td><td align="left">~1.8T</td><td align="center">~280B per forward</td><td align="center">~6×</td></tr></tbody></table><p><strong>关键结论：MoE 让你用 13B 的计算成本，获得接近 47B Dense 模型的性能。</strong></p><h3 id="✅-训练速度快"><a href="#✅-训练速度快" class="headerlink" title="✅ 训练速度快"></a>✅ 训练速度快</h3><p>在相同的计算预算（FLOPs）下，MoE 模型通常比 Dense 模型 <strong>收敛更快</strong>，因为更大的参数空间提供了更强的拟合能力。</p><h3 id="✅-天然的并行性"><a href="#✅-天然的并行性" class="headerlink" title="✅ 天然的并行性"></a>✅ 天然的并行性</h3><p>不同专家可以部署在不同的 GPU/节点上，实现 <strong>专家并行（Expert Parallelism）</strong>，这与数据并行、张量并行、流水线并行正交，提供了额外的并行维度。</p><h2 id="核心挑战"><a href="#核心挑战" class="headerlink" title="核心挑战"></a>核心挑战</h2><h3 id="⚠️-挑战一：负载均衡（Load-Balancing）"><a href="#⚠️-挑战一：负载均衡（Load-Balancing）" class="headerlink" title="⚠️ 挑战一：负载均衡（Load Balancing）"></a>⚠️ 挑战一：负载均衡（Load Balancing）</h3><p><strong>问题本质</strong>： 路由网络倾向于将大部分 token 集中发送给少数几个”热门”专家，导致：</p><ul><li>热门专家过载，成为计算瓶颈</li><li>冷门专家得不到充分训练，参数浪费</li><li>极端情况下退化为只用 1-2 个专家的 Dense 模型</li></ul><p><strong>解决方案</strong>： 引入 <strong>辅助负载均衡损失（Auxiliary Load Balancing Loss）</strong>：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -1.018ex;" xmlns="http://www.w3.org/2000/svg" width="34.59ex" height="3.167ex" role="img" focusable="false" viewBox="0 -950 15288.9 1400"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="4C" d="M62 -22T47 -22T32 -11Q32 -1 56 24T83 55Q113 96 138 172T180 320T234 473T323 609Q364 649 419 677T531 705Q559 705 578 696T604 671T615 645T618 623V611Q618 582 615 571T598 548Q581 531 558 520T518 509Q503 509 503 520Q503 523 505 536T507 560Q507 590 494 610T452 630Q423 630 410 617Q367 578 333 492T271 301T233 170Q211 123 204 112L198 103L224 102Q281 102 369 79T509 52H523Q535 64 544 87T579 128Q616 152 641 152Q656 152 656 142Q656 101 588 40T433 -22Q381 -22 289 1T156 28L141 29L131 20Q111 0 87 -11Z"></path></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(690,0)"><g data-mml-node="mi"><path data-c="1D44F" d="M73 647Q73 657 77 670T89 683Q90 683 161 688T234 694Q246 694 246 685T212 542Q204 508 195 472T180 418L176 399Q176 396 182 402Q231 442 283 442Q345 442 383 396T422 280Q422 169 343 79T173 -11Q123 -11 82 27T40 150V159Q40 180 48 217T97 414Q147 611 147 623T109 637Q104 637 101 637H96Q86 637 83 637T76 640T73 647ZM336 325V331Q336 405 275 405Q258 405 240 397T207 376T181 352T163 330L157 322L136 236Q114 150 114 114Q114 66 138 42Q154 26 178 26Q211 26 245 58Q270 81 285 114T318 219Q336 291 336 325Z"></path></g><g data-mml-node="mi" transform="translate(429,0)"><path data-c="1D44E" d="M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"></path></g><g data-mml-node="mi" transform="translate(958,0)"><path data-c="1D459" d="M117 59Q117 26 142 26Q179 26 205 131Q211 151 215 152Q217 153 225 153H229Q238 153 241 153T246 151T248 144Q247 138 245 128T234 90T214 43T183 6T137 -11Q101 -11 70 11T38 85Q38 97 39 102L104 360Q167 615 167 623Q167 626 166 628T162 632T157 634T149 635T141 636T132 637T122 637Q112 637 109 637T101 638T95 641T94 647Q94 649 96 661Q101 680 107 682T179 688Q194 689 213 690T243 693T254 694Q266 694 266 686Q266 675 193 386T118 83Q118 81 118 75T117 65V59Z"></path></g><g data-mml-node="mi" transform="translate(1256,0)"><path data-c="1D44E" d="M33 157Q33 258 109 349T280 441Q331 441 370 392Q386 422 416 422Q429 422 439 414T449 394Q449 381 412 234T374 68Q374 43 381 35T402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487Q506 153 506 144Q506 138 501 117T481 63T449 13Q436 0 417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157ZM351 328Q351 334 346 350T323 385T277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q217 26 254 59T298 110Q300 114 325 217T351 328Z"></path></g><g data-mml-node="mi" transform="translate(1785,0)"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mi" transform="translate(2385,0)"><path data-c="1D450" d="M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z"></path></g><g data-mml-node="mi" transform="translate(2818,0)"><path data-c="1D452" d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z"></path></g></g><g data-mml-node="mo" transform="translate(4251.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(5307.6,0)"><path data-c="1D6FC" d="M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z"></path></g><g data-mml-node="mo" transform="translate(6169.8,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="mi" transform="translate(6670,0)"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g><g data-mml-node="mo" transform="translate(7780.2,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="mo" transform="translate(8280.4,0)"><path data-c="2211" d="M60 948Q63 950 665 950H1267L1325 815Q1384 677 1388 669H1348L1341 683Q1320 724 1285 761Q1235 809 1174 838T1033 881T882 898T699 902H574H543H251L259 891Q722 258 724 252Q725 250 724 246Q721 243 460 -56L196 -356Q196 -357 407 -357Q459 -357 548 -357T676 -358Q812 -358 896 -353T1063 -332T1204 -283T1307 -196Q1328 -170 1348 -124H1388Q1388 -125 1381 -145T1356 -210T1325 -294L1267 -449L666 -450Q64 -450 61 -448Q55 -446 55 -439Q55 -437 57 -433L590 177Q590 178 557 222T452 366T322 544L56 909L55 924Q55 945 60 948Z"></path></g><g data-mml-node="msup" transform="translate(9891.1,0)"><g data-mml-node="TeXAtom" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(622.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1678.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="TeXAtom" transform="translate(2211.6,413) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D441" d="M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z"></path></g></g></g><g data-mml-node="msub" transform="translate(12780.6,0)"><g data-mml-node="mi"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mi" transform="translate(523,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(13819.8,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="msub" transform="translate(14320,0)"><g data-mml-node="mi"><path data-c="1D443" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path></g><g data-mml-node="mi" transform="translate(675,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container></p><p>其中：</p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.464ex;" xmlns="http://www.w3.org/2000/svg" width="1.848ex" height="2.059ex" role="img" focusable="false" viewBox="0 -705 817 910"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mi" transform="translate(523,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container>：专家 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="0.781ex" height="1.52ex" role="img" focusable="false" viewBox="0 -661 345 672"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container> 实际接收到的 token 比例</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.357ex;" xmlns="http://www.w3.org/2000/svg" width="2.192ex" height="1.902ex" role="img" focusable="false" viewBox="0 -683 969 840.8"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D443" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path></g><g data-mml-node="mi" transform="translate(675,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container>：路由器分配给专家 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="0.781ex" height="1.52ex" role="img" focusable="false" viewBox="0 -661 345 672"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container> 的平均概率</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.448ex" height="1.025ex" role="img" focusable="false" viewBox="0 -442 640 453"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D6FC" d="M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z"></path></g></g></g></svg></mjx-container>：平衡系数（通常 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="4.495ex" height="2.005ex" role="img" focusable="false" viewBox="0 -864 1986.7 886"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,393.1) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mo"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(778,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></g></svg></mjx-container> 量级）</li><li>这个损失鼓励 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.464ex;" xmlns="http://www.w3.org/2000/svg" width="1.848ex" height="2.059ex" role="img" focusable="false" viewBox="0 -705 817 910"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mi" transform="translate(523,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.357ex;" xmlns="http://www.w3.org/2000/svg" width="2.192ex" height="1.902ex" role="img" focusable="false" viewBox="0 -683 969 840.8"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D443" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path></g><g data-mml-node="mi" transform="translate(675,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g></svg></mjx-container> 趋于均匀分布</li></ul><p>此外还有 <strong>容量因子（Capacity Factor）</strong> 机制：为每个专家设置一个 token 缓冲区上限，超出的 token 会被丢弃（overflow）或通过残差连接跳过 MoE 层。</p><h3 id="⚠️-挑战二：通信开销"><a href="#⚠️-挑战二：通信开销" class="headerlink" title="⚠️ 挑战二：通信开销"></a>⚠️ 挑战二：通信开销</h3><p>在分布式训练/推理中，MoE 的 token 分发（dispatch）和结果合并（combine）需要 <strong>All-to-All 通信</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">GPU 0 (Expert 0,1)    GPU 1 (Expert 2,3)    GPU 2 (Expert 4,5)</span><br><span class="line">    ↕ All-to-All ↕         ↕ All-to-All ↕</span><br><span class="line">  每个 GPU 上的 token 需要发送给位于其他 GPU 上的专家</span><br></pre></td></tr></table></figure><p><strong>通信量 = O(batch_size × seq_len × hidden_dim × top_k / num_gpus)</strong></p><p>在专家数量很大时，All-to-All 通信容易成为瓶颈，尤其在跨节点（跨机器）场景下。</p><p><strong>缓解策略</strong>：</p><ul><li>使用 NVLink/NVSwitch 等高带宽互联</li><li>Expert Parallelism + Tensor Parallelism 混合策略</li><li>减少 Top-K 值（如 Switch Transformer 用 Top-1）</li><li>采用 Expert Buffering 和通信-计算重叠</li></ul><h3 id="⚠️-挑战三：训练不稳定性"><a href="#⚠️-挑战三：训练不稳定性" class="headerlink" title="⚠️ 挑战三：训练不稳定性"></a>⚠️ 挑战三：训练不稳定性</h3><p>MoE 模型的训练比 Dense 模型更容易出现不稳定现象：</p><ul><li>路由器的离散决策（TopK 操作）不可微，需要近似梯度</li><li>专家利用率的动态变化可能导致梯度波动</li><li><strong>解决方案</strong>： Router z-loss（Zoph et al., 2022）、更精细的初始化策略、使用 BFloat16 等</li></ul><h3 id="⚠️-挑战四：推理效率的复杂性"><a href="#⚠️-挑战四：推理效率的复杂性" class="headerlink" title="⚠️ 挑战四：推理效率的复杂性"></a>⚠️ 挑战四：推理效率的复杂性</h3><p>虽然理论 FLOPs 低，但 MoE 推理有独特的效率挑战：</p><ul><li><strong>显存需求大</strong>： 所有专家参数都需加载到显存（或通过 offloading 管理）</li><li><strong>Batch 效率低</strong>： 不同 token 路由到不同专家，导致每个专家处理的 batch 很小，GPU 利用率低</li><li><strong>缓存不友好</strong>： 动态路由导致内存访问模式不规则</li></ul><h1 id="典型应用与里程碑"><a href="#典型应用与里程碑" class="headerlink" title="典型应用与里程碑"></a>典型应用与里程碑</h1><h2 id="发展时间线"><a href="#发展时间线" class="headerlink" title="发展时间线"></a>发展时间线</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">1991  Jacobs et al.   → 最早提出 Mixture of Experts 概念（浅层网络）</span><br><span class="line">2017  Shazeer et al.  → "Outrageously Large Neural Networks"</span><br><span class="line">                         首次将 MoE 扩展到深度学习（LSTM + MoE, 137B 参数）</span><br><span class="line">2021  Fedus et al.    → Switch Transformer</span><br><span class="line">                         简化为 Top-1 路由，扩展到 1.6T 参数</span><br><span class="line">2022  Zoph et al.     → ST-MoE</span><br><span class="line">                         系统性研究 MoE 训练稳定性</span><br><span class="line">2023  Mistral AI      → Mixtral 8×7B</span><br><span class="line">                         首个高质量开源 MoE LLM，性能比肩 LLaMA-2 70B</span><br><span class="line">2023  OpenAI          → GPT-4 (传闻使用 MoE)</span><br><span class="line">2024  DeepSeek        → DeepSeek-V2 / V3</span><br><span class="line">                         提出 DeepSeekMoE 架构，细粒度专家 + 共享专家</span><br><span class="line">2025  Qwen            → Qwen2.5-MoE / Qwen3 系列</span><br></pre></td></tr></table></figure><h2 id="关键模型详解"><a href="#关键模型详解" class="headerlink" title="关键模型详解"></a>关键模型详解</h2><p>🔹 Switch Transformer（Fedus et al., 2021, Google）</p><p><strong>核心创新</strong>： 将 Top-K 极简化为 <strong>Top-1</strong>（每个 token 只路由到 1 个专家）。</p><ul><li>极大简化了路由逻辑和通信开销</li><li>使用容量因子（Capacity Factor）解决负载不均</li><li>在相同计算预算下，训练速度比 T5 快 <strong>4-7 倍</strong></li><li>模型规模扩展到 <strong>1.6 万亿参数</strong></li></ul><p><strong>关键洞察</strong>： Top-1 虽然看似”信息损失大”，但在足够大的专家数量下表现依然优异，且工程实现更简洁。</p><p>🔹 GPT-4（OpenAI, 2023，架构未公开确认）</p><p>根据多方信息（George Hotz 等泄露），GPT-4 很可能采用 MoE 架构：</p><ul><li>约 <strong>8 个专家</strong>，每次激活 2 个</li><li>总参数量约 <strong>1.8T</strong>，激活参数约 <strong>280B</strong></li><li>这解释了为什么 GPT-4 在参数效率上远超预期</li></ul><blockquote><p>⚠️ 需要注意：OpenAI 从未官方确认 GPT-4 的架构细节，以上信息来自非官方渠道。</p></blockquote><p>🔹 Mixtral 8×7B（Mistral AI, 2023）</p><p><strong>意义</strong>： 第一个真正高质量的 <strong>开源 MoE 大语言模型</strong>。</p><ul><li>8 个专家，每次激活 2 个</li><li>总参数 ~47B，激活参数 ~13B</li><li>性能 <strong>匹配甚至超越 LLaMA-2 70B</strong>，但推理成本接近 13B 模型</li><li>开源后极大推动了社区对 MoE 的研究</li></ul><p>🔹 DeepSeek-V2/V3（DeepSeek, 2024-2025）</p><p><strong>核心创新</strong>： DeepSeekMoE 架构</p><ul><li><strong>细粒度专家（Fine-Grained Experts）</strong>： 将标准专家拆分为更小的单元（如 160 个小专家），每次激活 6 个，提升路由灵活性</li><li><strong>共享专家（Shared Experts）</strong>： 始终激活 2 个”通才”专家，处理所有 token 都需要的通用知识</li><li>结合 <strong>MLA（Multi-head Latent Attention）</strong> 进一步压缩 KV Cache</li></ul><p>DeepSeek-V3 总参数 <strong>671B</strong>，激活参数 <strong>37B</strong>，以极低的训练成本达到了 GPT-4 级别的性能，是 MoE 架构工程化的标杆。</p><h1 id="总结：MoE-的核心-Insight"><a href="#总结：MoE-的核心-Insight" class="headerlink" title="总结：MoE 的核心 Insight"></a>总结：MoE 的核心 Insight</h1><table><thead><tr><th align="left">维度</th><th align="left">Dense Model</th><th align="left">MoE Model</th></tr></thead><tbody><tr><td align="left">参数量与计算量</td><td align="left">线性绑定</td><td align="left"><strong>解耦</strong></td></tr><tr><td align="left">每个 token 的计算路径</td><td align="left">固定（全部参数）</td><td align="left"><strong>动态（条件选择）</strong></td></tr><tr><td align="left">扩展方式</td><td align="left">增加宽度/深度 → 成本线性增长</td><td align="left"><strong>增加专家数 → 成本亚线性增长</strong></td></tr><tr><td align="left">核心瓶颈</td><td align="left">计算量</td><td align="left">通信 + 显存</td></tr></tbody></table><p><strong>一句话总结 MoE 的本质：</strong></p><blockquote><p><strong>MoE 是深度学习中”分治法”的体现——通过将模型容量分散到多个专家中，用路由机制实现按需激活，从而在参数规模和计算效率之间取得最优平衡。</strong></p></blockquote><p>它是当前大模型时代最重要的架构创新之一，是实现”用有限算力训练超大模型”的关键技术路径。随着 DeepSeek-V3、Mixtral 等模型的成功，MoE 已经从研究概念走向了工程主流。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;核心思想与动机&quot;&gt;&lt;a href=&quot;#核心思想与动机&quot; class=&quot;headerlink&quot; title=&quot;核心思想与动机&quot;&gt;&lt;/a&gt;核心思想与动机&lt;/h1&gt;&lt;h2 id=&quot;核心思想&quot;&gt;&lt;a href=&quot;#核心思想&quot; class=&quot;headerlink&quot; titl</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>传统RAG与Agentic RAG的架构演进与差异分析</title>
    <link href="https://www.silenceboy.com/2026/03/18/%E4%BC%A0%E7%BB%9FRAG%E4%B8%8EAgentic-RAG%E7%9A%84%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E4%B8%8E%E5%B7%AE%E5%BC%82%E5%88%86%E6%9E%90/"/>
    <id>https://www.silenceboy.com/2026/03/18/%E4%BC%A0%E7%BB%9FRAG%E4%B8%8EAgentic-RAG%E7%9A%84%E6%9E%B6%E6%9E%84%E6%BC%94%E8%BF%9B%E4%B8%8E%E5%B7%AE%E5%BC%82%E5%88%86%E6%9E%90/</id>
    <published>2026-03-18T07:56:24.000Z</published>
    <updated>2026-03-18T08:12:43.355Z</updated>
    
    <content type="html"><![CDATA[<h2 id="摘要"><a href="#摘要" class="headerlink" title="摘要"></a>摘要</h2><p>检索增强生成（RAG）技术最初的目的是为了解决大型语言模型（LLM）的幻觉问题并接入外部私有知识。然而，随着业务需求从”简单的知识问答”演进为”复杂的任务解决”，传统RAG暴露出线性流程的局限性。<strong>Agentic RAG</strong> 应运而生，它不仅仅是RAG的升级版，而是将传统RAG的”单向流水线（Pipeline）”重构为了一个基于智能体（AI Agent）的”动态控制循环（Control Loop）”。通过引入推理、规划、记忆和多工具调用能力，Agentic RAG 能够实现更高质量的回答和自主的任务执行。</p><hr><h2 id="RAG-技术演进路径"><a href="#RAG-技术演进路径" class="headerlink" title="RAG 技术演进路径"></a>RAG 技术演进路径</h2><p>在深入对比两种架构之前，有必要先明确 RAG 技术的完整演进脉络，以便准确理解”传统 RAG”和”Agentic RAG”各自处于哪个阶段：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Naive RAG  →  Advanced RAG  →  Modular RAG  →  Agentic RAG</span><br><span class="line">（基础检索）  （Pre/Post处理）  （模块化组合）   （Agent控制循环）</span><br></pre></td></tr></table></figure><table><thead><tr><th align="left">阶段</th><th align="left">核心特征</th><th align="left">代表改进</th></tr></thead><tbody><tr><td align="left"><strong>Naive RAG</strong></td><td align="left">最基础的”检索-生成”管道，一次检索、一次生成</td><td align="left">最早期实现，奠定基本范式</td></tr><tr><td align="left"><strong>Advanced RAG</strong></td><td align="left">在检索前后引入增强步骤</td><td align="left">Pre-retrieval（Query Rewrite）、Post-retrieval（Reranking）</td></tr><tr><td align="left"><strong>Modular RAG</strong></td><td align="left">将各环节模块化，可灵活组合替换</td><td align="left">Hybrid Search、Routing、自定义 Pipeline</td></tr><tr><td align="left"><strong>Agentic RAG</strong></td><td align="left">引入 Agent 控制循环，具备自主决策与多步执行能力</td><td align="left">ReAct、Self-RAG、CRAG、Plan-and-Execute</td></tr></tbody></table><blockquote><p>本文中”传统 RAG”泛指 Naive RAG 至 Advanced RAG 阶段，与 Agentic RAG 形成对比。</p></blockquote><hr><h2 id="概念界定"><a href="#概念界定" class="headerlink" title="概念界定"></a>概念界定</h2><h3 id="传统-RAG"><a href="#传统-RAG" class="headerlink" title="传统 RAG"></a>传统 RAG</h3><p>传统RAG是一种<strong>被动式、线性的检索系统</strong>。其核心逻辑是：接收用户查询 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> 在向量数据库中进行一次性相似度检索 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> 将检索到的文档片段（Context）与原问题拼接 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> 交由LLM生成最终回答。</p><ul><li><strong>特点</strong>：单次传递（One-pass）、无记忆、流程固定、完全依赖单次检索的质量。</li><li><strong>瓶颈</strong>：流程中没有任何反馈机制，一旦检索结果质量差，下游生成质量几乎无法挽救，即”垃圾进，垃圾出（Garbage In, Garbage Out）”。</li></ul><h3 id="Agentic-RAG"><a href="#Agentic-RAG" class="headerlink" title="Agentic RAG"></a>Agentic RAG</h3><p>Agentic RAG 是一种<strong>主动式、自主的决策系统</strong>。它将LLM视为具备”大脑”的智能体（Agent），在检索和生成过程中引入了自主规划（Planning）、工具使用（Tool Use）、反思（Reflection）和迭代重试（Iteration）机制。</p><ul><li><strong>特点</strong>：多步推理（Multi-step reasoning）、支持多种检索策略（向量、图谱、SQL等）、具备自我纠错与长效记忆（Memory）。</li><li><strong>本质区别</strong>：从”数据流”转变为”控制流”，LLM 不再只是最后的生成器，而是整个任务的调度者和决策者。</li></ul><hr><h2 id="核心差异对标分析"><a href="#核心差异对标分析" class="headerlink" title="核心差异对标分析"></a>核心差异对标分析</h2><table><thead><tr><th align="left">维度</th><th align="left">传统 RAG (Traditional RAG)</th><th align="left">Agentic RAG</th></tr></thead><tbody><tr><td align="left"><strong>工作流模式</strong></td><td align="left"><strong>静态单向管道</strong> (Pipeline)：查询 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> 检索 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> 生成</td><td align="left"><strong>动态控制循环</strong> (Control Loop)：查询 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> 思考 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> 规划 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> 检索/工具调用 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> 评估 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="2.262ex" height="1.181ex" role="img" focusable="false" viewBox="0 -511 1000 522"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mo"><path data-c="2192" d="M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z"></path></g></g></g></svg></mjx-container> (循环或输出)</td></tr><tr><td align="left"><strong>任务拆解与推理</strong></td><td align="left">无。将整个用户问题作为一个查询语句直接去检索。</td><td align="left">强。面对复杂问题（如多跳查询），Agent会将其拆解为多个子任务逐步解决。</td></tr><tr><td align="left"><strong>信息源与工具</strong></td><td align="left">通常局限于单一的向量数据库（Vector DB）。</td><td align="left">支持多工具调度：可同时调用向量库、图数据库、SQL数据库、Web搜索、外部API（如CRM系统）等。</td></tr><tr><td align="left"><strong>容错与纠错机制</strong></td><td align="left"><strong>“垃圾进，垃圾出”</strong>：如果检索到无关信息，LLM大概率会生成错误回答。</td><td align="left"><strong>闭环评估</strong>：Agent会评估检索到的信息是否足够。如果置信度低，它会修改检索词或更换数据源重新检索（Re-query）。</td></tr><tr><td align="left"><strong>上下文与记忆</strong></td><td align="left">通常是无状态的（Stateless）：会话内可维持短期上下文，但无法跨会话保留用户历史。</td><td align="left">具备持久化记忆层（如 Mem0、Zep 等），能够跨会话记住用户偏好和历史交互，实现持续学习与个性化。</td></tr><tr><td align="left"><strong>人工干预</strong></td><td align="left">高度依赖开发者预设好的提示词模板和检索策略（如Top-K设置）。</td><td align="left">高度自主（Autonomy），由AI动态决定如何执行检索、何时停止检索。</td></tr><tr><td align="left"><strong>幻觉率（Hallucination）</strong></td><td align="left">较高，无法识别”检索到的内容与问题无关”的情形。</td><td align="left">显著更低，反思机制可主动过滤低相关性内容后再生成。</td></tr></tbody></table><hr><h2 id="架构对比"><a href="#架构对比" class="headerlink" title="架构对比"></a>架构对比</h2><h3 id="传统-RAG-架构"><a href="#传统-RAG-架构" class="headerlink" title="传统 RAG 架构"></a>传统 RAG 架构</h3><p>传统 RAG 由<strong>离线构建</strong>和<strong>在线查询</strong>两个阶段组成，文档必须先经过 Ingestion Pipeline 写入向量库，才能在查询时被检索到。</p><p><strong>阶段一：离线 Ingestion Pipeline（数据构建）</strong></p><pre class="mermaid">flowchart LR    A[📄 原始文档\nPDF/Word/Web] --&gt; B[Document Loader\n文档加载]    B --&gt; C[Text Splitter\n分块 Chunking]    C --&gt; D[Embedding Model\n向量化]    D --&gt; E[(Vector DB\n写入索引)]</pre><blockquote><p>Chunking 策略（如固定大小、语义分块、递归分块）对最终检索质量有决定性影响，是传统 RAG 调优的核心抓手之一。</p></blockquote><p><strong>阶段二：在线 Query Pipeline（推理查询）</strong></p><pre class="mermaid">flowchart LR    A[用户输入 Query] --&gt; B[Embedding Model\n查询向量化]    B --&gt; C[(Vector DB\n相似度检索 Top-K)]    C --&gt; D[Context Stuffing\n拼接上下文到 Prompt]    D --&gt; E[LLM\n生成回答]    E --&gt; F[最终答案]</pre><p><strong>架构特点</strong>：流程清晰、延迟低、成本可预测，但检索结果与生成质量之间没有任何反馈回路。</p><hr><h3 id="Agentic-RAG-架构"><a href="#Agentic-RAG-架构" class="headerlink" title="Agentic RAG 架构"></a>Agentic RAG 架构</h3><p>Agentic RAG 的架构复杂度显著提升，通常基于 LangChain、LlamaIndex 或专用平台（如 Vellum）构建。其本质是将检索过程嵌入到 Agent 的”思考-行动-观察”循环中。</p><p><strong>核心控制循环：</strong></p><pre class="mermaid">flowchart TD    A[用户 Query] --&gt; B[Planner\n意图理解 &amp; 任务拆解]    B --&gt; C{Router\n工具选择器}    C --&gt;|结构化数据| D[(SQL Database)]    C --&gt;|非结构化文档| E[(Vector DB)]    C --&gt;|实时信息| F[Web Search / API]    C --&gt;|关联推理| G[(Knowledge Graph)]    D &amp; E &amp; F &amp; G --&gt; H[Evaluator\n自我反思 Self-Reflection]    H --&gt;|置信度低\nInsufficient| C    H --&gt;|置信度足够\nSufficient| I[Generator\n最终合成]    I --&gt; J[答案 / 实质性动作\nAnswer / Action]</pre><p><strong>核心模块说明：</strong></p><ol><li><strong>Query Understanding &amp; Planner（意图理解与规划器）</strong>：识别用户意图，重构问题或拆分多步任务（Sub-tasks）。这是 Agentic RAG 与传统 RAG 的第一个本质分叉点。</li><li><strong>Router / Tool Selector（路由与工具选择）</strong>：决定去哪里找信息（如：财报查SQL，规章制度查向量库，实时股价查API）。</li><li><strong>Iterative Execution（迭代执行）</strong>：执行工具调用并获取返回结果。</li><li><strong>Evaluator（验证与反思器）</strong>：Agent 对获得的数据进行自我提问（Self-reflection）：<em>“这些信息足以回答用户的问题吗？”</em> 如果置信度不足，修改策略重新回到路由步骤。</li><li><strong>Generator &amp; Action（生成与行动）</strong>：最终合成高精度答案，甚至可以触发实质性动作（如替用户发送邮件、在系统中提交申请）。</li></ol><hr><h2 id="Agentic-RAG-核心设计模式"><a href="#Agentic-RAG-核心设计模式" class="headerlink" title="Agentic RAG 核心设计模式"></a>Agentic RAG 核心设计模式</h2><p>Agentic RAG 并非单一实现，而是一类架构模式的统称。以下是四种主流设计模式，代表了工程实现的不同侧重点：</p><h3 id="1-ReAct（Reason-Act）"><a href="#1-ReAct（Reason-Act）" class="headerlink" title="1. ReAct（Reason + Act）"></a>1. ReAct（Reason + Act）</h3><p><strong>最基础、最通用</strong>的 Agentic RAG 实现范式，出自论文 <em>“ReAct: Synergizing Reasoning and Acting in Language Models”（Yao et al., 2022）</em>。</p><p>LLM 在每一步交替进行三种操作，形成闭环：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Thought（思考）→ Action（执行工具调用）→ Observation（观察结果）→ Thought（继续思考）→ ...</span><br></pre></td></tr></table></figure><p><strong>示例轨迹：</strong></p><blockquote><p><strong>Thought</strong>: 用户问”2023年Q4苹果的营收增长率”，需要先查财报数据再计算。<br><strong>Action</strong>: <code>search_database(query="Apple Q4 2023 revenue")</code><br><strong>Observation</strong>: <code>{"Q4 2023": 119.6B, "Q4 2022": 117.2B}</code><br><strong>Thought</strong>: 增长率 = (119.6 - 117.2) / 117.2 ≈ 2.05%，可以回答了。<br><strong>Final Answer</strong>: 苹果2023年Q4营收同比增长约2.05%。</p></blockquote><h3 id="2-CRAG（Corrective-RAG）"><a href="#2-CRAG（Corrective-RAG）" class="headerlink" title="2. CRAG（Corrective RAG）"></a>2. CRAG（Corrective RAG）</h3><p><strong>核心创新</strong>：在检索结果进入 LLM 之前，引入一个轻量级 <strong>相关性评估器（Relevance Evaluator）</strong> 对每个检索到的文档打分，根据置信度决定下一步行动：</p><table><thead><tr><th align="left">置信度</th><th align="left">决策</th></tr></thead><tbody><tr><td align="left"><strong>高（Correct）</strong></td><td align="left">直接使用检索结果生成</td></tr><tr><td align="left"><strong>中（Ambiguous）</strong></td><td align="left">对文档进行知识精炼（Knowledge Refinement）后使用</td></tr><tr><td align="left"><strong>低（Incorrect）</strong></td><td align="left">降级到 Web Search 获取实时信息</td></tr></tbody></table><p>CRAG 相比 Naive RAG 显著降低了因”检索到错误文档”导致的幻觉率，同时比完整的 ReAct 循环有更低的延迟。</p><h3 id="3-Self-RAG（Self-Reflective-RAG）"><a href="#3-Self-RAG（Self-Reflective-RAG）" class="headerlink" title="3. Self-RAG（Self-Reflective RAG）"></a>3. Self-RAG（Self-Reflective RAG）</h3><p><strong>核心创新</strong>：训练 LLM 在生成过程中主动发出特殊的<strong>反思 Token（Reflection Tokens）</strong>，对自身的检索决策和生成内容进行批判性评分：</p><ul><li><code>[Retrieve]</code>：是否需要检索（动态决定是否触发检索，而非每次强制检索）</li><li><code>[IsRel]</code>：检索到的段落是否与问题相关</li><li><code>[IsSup]</code>：生成的内容是否被检索结果支撑</li><li><code>[IsUse]</code>：最终答案对用户是否有用</li></ul><p>Self-RAG 将”评估”内化到模型参数本身，而非依赖外部评估器，推理效率更高，但需要专门的微调（Fine-tuning）。</p><h3 id="4-Plan-and-Execute（计划-执行分离）"><a href="#4-Plan-and-Execute（计划-执行分离）" class="headerlink" title="4. Plan-and-Execute（计划-执行分离）"></a>4. Plan-and-Execute（计划-执行分离）</h3><p><strong>适用于长链路、多阶段任务</strong>。与 ReAct 的”边想边做”不同，Plan-and-Execute 将任务明确分为两个角色：</p><ul><li><strong>Planner（规划器）</strong>：一次性生成完整的任务分解计划，列出所有子任务和执行顺序。</li><li><strong>Executor（执行器）</strong>：按照计划逐步调用工具并执行，每步结果可反馈给 Planner 进行计划修订。</li></ul><p><strong>优势</strong>：任务逻辑更清晰，适合需要人工审查中间步骤的企业场景（Human-in-the-loop）。</p><hr><h2 id="多智能体（Multi-Agent）RAG-架构"><a href="#多智能体（Multi-Agent）RAG-架构" class="headerlink" title="多智能体（Multi-Agent）RAG 架构"></a>多智能体（Multi-Agent）RAG 架构</h2><p>当任务复杂度进一步提升时，单 Agent 内部循环已经不够，需要引入<strong>多 Agent 协作架构</strong>。这是 Agentic RAG 的最高阶形态：</p><pre class="mermaid">flowchart TD    U[用户 Query] --&gt; O[Orchestrator Agent\n任务分发 &amp; 汇总]    O --&gt; R[Retrieval Agent\n专职检索]    O --&gt; C[Critique Agent\n专职质量评估]    O --&gt; S[Synthesis Agent\n专职答案合成]    R --&gt;|检索结果| C    C --&gt;|评估反馈| R    C --&gt;|通过验证| S    S --&gt; O    O --&gt; A[最终答案 / 动作]</pre><p><strong>各 Agent 职责分工：</strong></p><table><thead><tr><th align="left">Agent</th><th align="left">职责</th></tr></thead><tbody><tr><td align="left"><strong>Orchestrator Agent</strong></td><td align="left">接收用户任务，拆解后分发给各专职 Agent，最终汇总结果</td></tr><tr><td align="left"><strong>Retrieval Agent</strong></td><td align="left">专门负责多源检索（向量库 + SQL + Web），不做推理</td></tr><tr><td align="left"><strong>Critique Agent</strong></td><td align="left">专门负责对检索结果进行 RAGAS 评分，决定是否需要重新检索</td></tr><tr><td align="left"><strong>Synthesis Agent</strong></td><td align="left">专门负责将多路检索结果合并，生成结构化最终答案</td></tr></tbody></table><p>这种架构的核心优势在于<strong>职责隔离</strong>：每个 Agent 只做一件事，便于独立优化和替换，系统整体鲁棒性大幅提升。</p><hr><h2 id="质量评估体系：RAGAS-指标对比"><a href="#质量评估体系：RAGAS-指标对比" class="headerlink" title="质量评估体系：RAGAS 指标对比"></a>质量评估体系：RAGAS 指标对比</h2><p>量化两种架构的质量差异，需要借助 <strong>RAGAS（RAG Assessment）</strong> 评估框架。RAGAS 提供了四个正交的核心指标，覆盖检索和生成两个维度：</p><table><thead><tr><th align="left">指标</th><th align="left">说明</th><th align="center">传统 RAG</th><th align="center">Agentic RAG</th></tr></thead><tbody><tr><td align="left"><strong>Faithfulness（忠实度）</strong></td><td align="left">答案中的每一个声明是否都能从检索上下文中找到依据，衡量幻觉率</td><td align="center">一般</td><td align="center"><strong>显著更高</strong>（反思机制主动过滤不相关内容）</td></tr><tr><td align="left"><strong>Answer Relevancy（答案相关性）</strong></td><td align="left">生成的答案对用户提出的问题的回答程度</td><td align="center">对简单问题良好</td><td align="center"><strong>显著更高</strong>（多步推理后更准确理解意图）</td></tr><tr><td align="left"><strong>Context Precision（上下文精准率）</strong></td><td align="left">所有检索到的文档中，真正与问题相关的文档占比</td><td align="center">较低（Top-K 中混有噪声）</td><td align="center"><strong>更高</strong>（路由器过滤 + 评估器剔除低质量文档）</td></tr><tr><td align="left"><strong>Context Recall（上下文召回率）</strong></td><td align="left">回答问题所需的所有关键信息是否都被检索到</td><td align="center">对单跳问题尚可</td><td align="center"><strong>显著更高</strong>（迭代检索弥补单次遗漏）</td></tr></tbody></table><blockquote><p><strong>实践建议</strong>：在上线 Agentic RAG 系统前，应建立基于 RAGAS 的 Offline Evaluation Pipeline，定期使用测试集对系统进行回归测试，防止因 Prompt 调整或模型升级引入质量退化（Quality Regression）。</p></blockquote><hr><h2 id="工程与运维代价"><a href="#工程与运维代价" class="headerlink" title="工程与运维代价"></a>工程与运维代价</h2><p>企业在选择从传统RAG升级到Agentic RAG时，必须考量以下工程代价：</p><ul><li><p><strong>成本 (Cost)</strong>：</p><ul><li><strong>传统 RAG</strong>：成本可控且具有高度可预测性。每次查询固定消耗一次大模型请求（Token数量固定）。</li><li><strong>Agentic RAG</strong>：由于内部包含循环思考（Reasoning）、多次调用工具和反复验证，Token 消耗量倍增，且单次查询的成本难以精准预测。以 GPT-4o 为例，一次 Agentic RAG 查询的 Token 消耗通常是传统 RAG 的 3-8 倍。</li></ul></li><li><p><strong>延迟 (Latency)</strong>：</p><ul><li><strong>传统 RAG</strong>：响应速度快，通常在数百毫秒到几秒之间。</li><li><strong>Agentic RAG</strong>：存在长尾延迟（P95 Latency 较高）。因为大模型需要”思考（Thinking）”并经历多轮往返操作（Round-trips），可能会导致用户需要等待更长时间（通常需要搭配流式输出（Streaming）或过程步骤展示来缓解用户等待焦虑）。</li></ul></li><li><p><strong>系统复杂性与调试 (Debugging)</strong>：</p><ul><li><strong>传统 RAG</strong>：出错点明确（要么是检索命中率低，要么是Prompt没写好），易于调试。</li><li><strong>Agentic RAG</strong>：是一个复杂的黑盒状态机。失败可能源于：规划失败、工具调用失败、陷入死循环等。需要引入专业的<strong>可观测性工具</strong>（如 <strong>LangSmith</strong>、<strong>Langfuse</strong>）追踪多步 Agent 的执行轨迹（Trace），以及 <strong>LLM 评估框架</strong>（如 <strong>RAGAS</strong>、<strong>Patronus AI</strong>）对答案质量进行定量评估。</li></ul></li></ul><hr><h2 id="适用场景建议"><a href="#适用场景建议" class="headerlink" title="适用场景建议"></a>适用场景建议</h2><h3 id="适合【传统-RAG】的场景："><a href="#适合【传统-RAG】的场景：" class="headerlink" title="适合【传统 RAG】的场景："></a>适合【传统 RAG】的场景：</h3><ul><li><strong>静态文档问答</strong>：如内部员工手册查询、固定流程的FAQ机器人。</li><li><strong>对延迟极度敏感的应用</strong>：需要在1-2秒内必须返回结果的实时C端应用。</li><li><strong>开发预算与算力有限</strong>：不需要复杂的逻辑推理，仅需基础知识锚定。</li></ul><h3 id="适合【Agentic-RAG】的场景："><a href="#适合【Agentic-RAG】的场景：" class="headerlink" title="适合【Agentic RAG】的场景："></a>适合【Agentic RAG】的场景：</h3><ul><li><strong>复杂的企业级跨域检索</strong>：如金融合规助手（需要调取财报数据库、比对内部政策文档、抓取最新监管网页，并交叉验证以生成研报）。</li><li><strong>主动式客户支持 (Action-oriented Support)</strong>：不仅要回答”退货政策是什么”，还需要Agent根据用户的账户权限，自主调取CRM数据，判断是否符合退换条件，并<strong>直接在系统内触发退货工单</strong>。</li><li><strong>模糊查询与多跳推理 (Multi-hop Queries)</strong>：如”对比过去三年我们在亚太区和欧洲区遇到最多的客诉问题及解决方案”，传统RAG无法一次性拼凑这些分散数据，而Agentic RAG可以分步拆解执行。</li></ul><h3 id="【混合架构（Hybrid）】：工程实践中的过渡方案"><a href="#【混合架构（Hybrid）】：工程实践中的过渡方案" class="headerlink" title="【混合架构（Hybrid）】：工程实践中的过渡方案"></a>【混合架构（Hybrid）】：工程实践中的过渡方案</h3><p>在”成本/延迟”与”智能水平”之间寻求最优平衡的企业，往往会采用<strong>混合部署策略</strong>：</p><pre class="mermaid">flowchart LR    A[用户 Query] --&gt; B{Query 复杂度判断}    B --&gt;|简单/高频| C[传统 RAG\n快速返回初步答案]    B --&gt;|复杂/低频| D[Agentic RAG\n深度推理与多步检索]    C --&gt;|置信度低| D    D --&gt; E[高质量最终答案]    C --&gt; E</pre><p><strong>核心思路</strong>：先由传统 RAG 快速返回初步答案（解决延迟问题），同时在后台判断该问题是否需要 Agent 深度处理。若 Agent 的结果置信度更高，则通过流式更新替换初步答案。这种”先出草稿，再精修”的模式在 C 端产品中用户体验更佳。</p><hr><h2 id="结论"><a href="#结论" class="headerlink" title="结论"></a>结论</h2><p>传统RAG解决的是AI的 <strong>“信息获取问题（What）”</strong>，它将大模型变成了开卷考试的学生；而Agentic RAG解决的则是 <strong>“问题解决能力（How）”</strong>，它将大模型升级为一个具备思考能力、拥有工具箱并懂得自我检查的”研究员兼执行者”。</p><p>两者并非简单的替代关系，而是面向不同任务复杂度的<strong>工程选择</strong>。在实际落地中，企业需要根据具体的<strong>容错率（Error Tolerance，即业务能接受多少比例的错误答案）<strong>和</strong>任务复杂度（Query Complexity）</strong>，在成本、延迟与智能水平之间做出合理的工程取舍。</p><p>随着大模型基础推理能力的不断提升和推理成本（Inference Cost）的持续下降（GPT-4 级别模型的推理成本在过去两年已下降超过90%），<strong>Agentic RAG 将成为企业级复杂 AI 应用的必然架构趋势</strong>，而今天的工程权衡，将随着成本曲线的下降而逐渐消解。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;摘要&quot;&gt;&lt;a href=&quot;#摘要&quot; class=&quot;headerlink&quot; title=&quot;摘要&quot;&gt;&lt;/a&gt;摘要&lt;/h2&gt;&lt;p&gt;检索增强生成（RAG）技术最初的目的是为了解决大型语言模型（LLM）的幻觉问题并接入外部私有知识。然而，随着业务需求从”简单的知识问答”演进</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>MMR在Agent系统中的应用</title>
    <link href="https://www.silenceboy.com/2026/03/17/MMR%E5%9C%A8Agent%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8/"/>
    <id>https://www.silenceboy.com/2026/03/17/MMR%E5%9C%A8Agent%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8/</id>
    <published>2026-03-17T09:43:36.000Z</published>
    <updated>2026-03-17T10:01:40.401Z</updated>
    
    <content type="html"><![CDATA[<p><strong>MMR（Maximal Marginal Relevance，最大边际相关性）<strong>是信息检索领域的经典算法，由 Carbonell 和 Goldstein 于 1998 年在 SIGIR 会议上提出。它的核心作用是</strong>在检索结果中同时兼顾”相关性”（Relevance）和”多样性”（Diversity）</strong>。</p><p>在以大语言模型（LLM）为核心的 Agent（智能体）系统中，由于模型的上下文窗口存在限制，如何向模型”喂”入最高质量、信息密度最大的外部知识至关重要。MMR 现已成为 Agent 系统和 RAG（检索增强生成）架构中不可或缺的高阶检索策略。</p><h2 id="什么是-MMR？它的核心原理是什么？"><a href="#什么是-MMR？它的核心原理是什么？" class="headerlink" title="什么是 MMR？它的核心原理是什么？"></a>什么是 MMR？它的核心原理是什么？</h2><p>在传统的向量检索中（如纯余弦相似度搜索），系统往往会返回与用户查询最相似的 Top-K 个文档。但这会导致一个致命问题：<strong>信息冗余</strong>。例如，用户查询”2026年AI的发展”，系统可能会返回 5 篇内容几乎完全相同的报道，虽然它们都高度相关，但没有提供额外的新信息。</p><p><strong>MMR 的目标就是打破这种冗余。</strong> 它不仅要求候选文档与用户的问题相关，还要求候选文档与<strong>已经选出的文档</strong>尽可能不同。</p><h3 id="核心数学公式"><a href="#核心数学公式" class="headerlink" title="核心数学公式"></a>核心数学公式</h3><p>MMR 的本质是一个<strong>贪心选择算子</strong>，每轮从剩余候选集中挑出令下式最大的文档加入结果集。其正式定义为：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.229ex;" xmlns="http://www.w3.org/2000/svg" width="66.357ex" height="5.508ex" role="img" focusable="false" viewBox="0 -1449.5 29329.7 2434.6"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D440" d="M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z"></path></g><g data-mml-node="mi" transform="translate(1051,0)"><path data-c="1D440" d="M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z"></path></g><g data-mml-node="mi" transform="translate(2102,0)"><path data-c="1D445" d="M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"></path></g><g data-mml-node="mo" transform="translate(3138.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(4194.6,0)"><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z"></path><path data-c="72" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36Z" transform="translate(500,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(892,0)"></path></g><g data-mml-node="mo" transform="translate(5586.6,0)"><path data-c="2061" d=""></path></g><g data-mml-node="munder" transform="translate(5753.2,0)"><g data-mml-node="mo" transform="translate(386.8,0)"><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(833,0)"></path><path data-c="78" d="M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z" transform="translate(1333,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(0,-708.3) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D437" d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z"></path></g><g data-mml-node="mi" transform="translate(861,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(1155,0)"><path data-c="2208" d="M84 250Q84 372 166 450T360 539Q361 539 377 539T419 540T469 540H568Q583 532 583 520Q583 511 570 501L466 500Q355 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H568Q583 262 583 250T568 230H124V228Q124 207 134 177T167 112T231 48T328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 446 -40T417 -41Q262 -41 172 45Q84 127 84 250Z"></path></g><g data-mml-node="mi" transform="translate(1822,0)"><path data-c="1D445" d="M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"></path></g><g data-mml-node="mo" transform="translate(2581,0)"><path data-c="2216" d="M56 731Q56 740 62 745T75 750Q85 750 92 740Q96 733 270 255T444 -231Q444 -239 438 -244T424 -250Q414 -250 407 -240Q404 -236 230 242T56 731Z"></path></g><g data-mml-node="mi" transform="translate(3081,0)"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g></g></g><g data-mml-node="mrow" transform="translate(8554.5,0)"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="5B" d="M247 -949V1450H516V1388H309V-887H516V-949H247Z"></path></g><g data-mml-node="mi" transform="translate(528,0)"><path data-c="1D706" d="M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z"></path></g><g data-mml-node="mo" transform="translate(1333.2,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="mi" transform="translate(1833.4,0)"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g><g data-mml-node="mi" transform="translate(2478.4,0)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="msub" transform="translate(2823.4,0)"><g data-mml-node="mi"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(911,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(4138,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(4527,0)"><g data-mml-node="mi"><path data-c="1D437" d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z"></path></g><g data-mml-node="mi" transform="translate(861,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(5681.9,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(6126.6,0)"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="mo" transform="translate(6917.6,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(7528.8,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mo" transform="translate(8529.1,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mn" transform="translate(8918.1,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(9640.3,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mi" transform="translate(10640.5,0)"><path data-c="1D706" d="M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z"></path></g><g data-mml-node="mo" transform="translate(11223.5,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(11834.7,0)"><path data-c="22C5" d="M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z"></path></g><g data-mml-node="munder" transform="translate(12334.9,0)"><g data-mml-node="mo"><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(833,0)"></path><path data-c="78" d="M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z" transform="translate(1333,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(41.6,-676.5) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D437" d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z"></path></g><g data-mml-node="mi" transform="translate(861,-150) scale(0.707)"><path data-c="1D457" d="M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z"></path></g></g><g data-mml-node="mo" transform="translate(1202.3,0)"><path data-c="2208" d="M84 250Q84 372 166 450T360 539Q361 539 377 539T419 540T469 540H568Q583 532 583 520Q583 511 570 501L466 500Q355 499 329 494Q280 482 242 458T183 409T147 354T129 306T124 272V270H568Q583 262 583 250T568 230H124V228Q124 207 134 177T167 112T231 48T328 7Q355 1 466 0H570Q583 -10 583 -20Q583 -32 568 -40H471Q464 -40 446 -40T417 -41Q262 -41 172 45Q84 127 84 250Z"></path></g><g data-mml-node="mi" transform="translate(1869.3,0)"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g></g></g><g data-mml-node="mi" transform="translate(14362.6,0)"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g><g data-mml-node="mi" transform="translate(15007.6,0)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="msub" transform="translate(15352.6,0)"><g data-mml-node="mi"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(911,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(16667.2,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(17056.2,0)"><g data-mml-node="mi"><path data-c="1D437" d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z"></path></g><g data-mml-node="mi" transform="translate(861,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(18211.1,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msub" transform="translate(18655.8,0)"><g data-mml-node="mi"><path data-c="1D437" d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z"></path></g><g data-mml-node="mi" transform="translate(861,-150) scale(0.707)"><path data-c="1D457" d="M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z"></path></g></g><g data-mml-node="mo" transform="translate(19858.1,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g><g data-mml-node="mo" transform="translate(20247.1,0) translate(0 -0.5)"><path data-c="5D" d="M11 1388V1450H280V-949H11V-887H218V1388H11Z"></path></g></g></g></g></svg></mjx-container></p><p>各符号含义如下：</p><ul><li><strong><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="1.79ex" height="2.032ex" role="img" focusable="false" viewBox="0 -704 791 898"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g></g></g></svg></mjx-container></strong>：用户的查询（Query）。</li><li><strong><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.048ex;" xmlns="http://www.w3.org/2000/svg" width="1.717ex" height="1.593ex" role="img" focusable="false" viewBox="0 -683 759 704"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D445" d="M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"></path></g></g></g></svg></mjx-container></strong>：初始粗筛得到的候选文档集合（对应代码中的 <code>fetch_k</code>）。</li><li><strong><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.459ex" height="1.645ex" role="img" focusable="false" viewBox="0 -705 645 727"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g></g></g></svg></mjx-container></strong>：已选定并放入最终结果的文档集合（初始为空）。</li><li><strong><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="5.313ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 2348.4 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D445" d="M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"></path></g><g data-mml-node="mo" transform="translate(981.2,0)"><path data-c="2216" d="M56 731Q56 740 62 745T75 750Q85 750 92 740Q96 733 270 255T444 -231Q444 -239 438 -244T424 -250Q414 -250 407 -240Q404 -236 230 242T56 731Z"></path></g><g data-mml-node="mi" transform="translate(1703.4,0)"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g></g></g></svg></mjx-container></strong>：<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.048ex;" xmlns="http://www.w3.org/2000/svg" width="1.717ex" height="1.593ex" role="img" focusable="false" viewBox="0 -683 759 704"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D445" d="M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"></path></g></g></g></svg></mjx-container> 中尚未被选中的剩余文档，这是每轮迭代的选择范围。</li><li><strong><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="12.383ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 5473.2 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g><g data-mml-node="mi" transform="translate(645,0)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="msub" transform="translate(990,0)"><g data-mml-node="mi"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(911,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g><g data-mml-node="mo" transform="translate(2304.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(2693.6,0)"><g data-mml-node="mi"><path data-c="1D437" d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z"></path></g><g data-mml-node="mi" transform="translate(861,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(3848.5,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(4293.2,0)"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g><g data-mml-node="mo" transform="translate(5084.2,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container></strong>：<strong>相关性得分</strong>——候选文档与查询的相似度（通常为余弦相似度）。</li><li><strong><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.666ex;" xmlns="http://www.w3.org/2000/svg" width="13.313ex" height="2.363ex" role="img" focusable="false" viewBox="0 -750 5884.5 1044.2"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g><g data-mml-node="mi" transform="translate(645,0)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="msub" transform="translate(990,0)"><g data-mml-node="mi"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(911,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(2304.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(2693.6,0)"><g data-mml-node="mi"><path data-c="1D437" d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z"></path></g><g data-mml-node="mi" transform="translate(861,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(3848.5,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msub" transform="translate(4293.2,0)"><g data-mml-node="mi"><path data-c="1D437" d="M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z"></path></g><g data-mml-node="mi" transform="translate(861,-150) scale(0.707)"><path data-c="1D457" d="M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z"></path></g></g><g data-mml-node="mo" transform="translate(5495.5,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container></strong>：<strong>冗余度得分</strong>——候选文档与已选文档之间的最大相似度，衡量重复程度。<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.339ex;" xmlns="http://www.w3.org/2000/svg" width="5.214ex" height="1.934ex" role="img" focusable="false" viewBox="0 -705 2304.6 855"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g><g data-mml-node="mi" transform="translate(645,0)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="msub" transform="translate(990,0)"><g data-mml-node="mi"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(911,-150) scale(0.707)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.339ex;" xmlns="http://www.w3.org/2000/svg" width="5.214ex" height="1.934ex" role="img" focusable="false" viewBox="0 -705 2304.6 855"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g><g data-mml-node="mi" transform="translate(645,0)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="msub" transform="translate(990,0)"><g data-mml-node="mi"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mn" transform="translate(911,-150) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g></g></g></svg></mjx-container> 可以是不同的相似度函数，实践中通常均采用余弦相似度。</li><li><strong><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.027ex;" xmlns="http://www.w3.org/2000/svg" width="1.319ex" height="1.597ex" role="img" focusable="false" viewBox="0 -694 583 706"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D706" d="M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z"></path></g></g></g></svg></mjx-container>（Lambda）</strong>：<strong>平衡相关性与多样性的超参数（0 到 1 之间）</strong>。<ul><li>当 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="5.467ex" height="1.756ex" role="img" focusable="false" viewBox="0 -694 2416.6 776"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D706" d="M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z"></path></g><g data-mml-node="mo" transform="translate(860.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1916.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g></svg></mjx-container> 时，退化为纯相似度检索，不考虑多样性。</li><li>当 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="5.467ex" height="1.756ex" role="img" focusable="false" viewBox="0 -694 2416.6 776"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D706" d="M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z"></path></g><g data-mml-node="mo" transform="translate(860.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1916.6,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></svg></mjx-container> 时，完全不考虑查询相关性，只选与已选文档最不相似的文档（极端情况，实际无意义）。</li><li>通常在 Agent 系统中，<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.027ex;" xmlns="http://www.w3.org/2000/svg" width="1.319ex" height="1.597ex" role="img" focusable="false" viewBox="0 -694 583 706"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D706" d="M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z"></path></g></g></g></svg></mjx-container> 默认设为 0.5 到 0.7 之间。</li></ul></li></ul><h3 id="算法的迭代执行过程"><a href="#算法的迭代执行过程" class="headerlink" title="算法的迭代执行过程"></a>算法的迭代执行过程</h3><p>MMR 并不是对所有文档一次性打分排序，而是一个<strong>逐步贪心迭代</strong>的过程，共执行 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.179ex" height="1.595ex" role="img" focusable="false" viewBox="0 -694 521 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g></svg></mjx-container> 轮：</p><ol><li><strong>粗筛</strong>：从向量库中按纯相似度检索出 <code>fetch_k</code> 个候选文档，构成集合 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.048ex;" xmlns="http://www.w3.org/2000/svg" width="1.717ex" height="1.593ex" role="img" focusable="false" viewBox="0 -683 759 704"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D445" d="M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"></path></g></g></g></svg></mjx-container>，初始化 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="5.608ex" height="1.932ex" role="img" focusable="false" viewBox="0 -772 2478.6 854"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g><g data-mml-node="mo" transform="translate(922.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(1978.6,0)"><path data-c="2205" d="M331 696Q335 708 339 722T345 744T350 759T357 769T367 772Q374 772 381 767T388 754Q388 746 377 712L366 673L378 661Q460 575 460 344Q460 281 456 234T432 126T373 27Q319 -22 250 -22Q214 -22 180 -7Q168 -3 168 -4L159 -33Q148 -71 142 -75Q138 -78 132 -78Q124 -78 118 -72T111 -60Q111 -52 122 -18L133 21L125 29Q39 111 39 344Q39 596 137 675Q187 716 251 716Q265 716 278 714T296 710T315 703T331 696ZM276 676Q264 679 246 679Q196 679 159 631Q134 597 128 536T121 356Q121 234 127 174T151 80L234 366Q253 430 275 506T308 618L318 654Q318 656 294 669L276 676ZM181 42Q207 16 250 16Q291 16 324 47Q354 78 366 136T378 356Q378 470 372 528T349 616L348 613Q348 611 264 326L181 42Z"></path></g></g></g></svg></mjx-container>。</li><li><strong>首选</strong>：将 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.048ex;" xmlns="http://www.w3.org/2000/svg" width="1.717ex" height="1.593ex" role="img" focusable="false" viewBox="0 -683 759 704"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D445" d="M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"></path></g></g></g></svg></mjx-container> 中与 Query 余弦相似度最高的文档直接加入 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.459ex" height="1.645ex" role="img" focusable="false" viewBox="0 -705 645 727"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g></g></g></svg></mjx-container>（第一个文档无需考虑多样性惩罚）。</li><li><strong>迭代</strong>：对 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="5.313ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 2348.4 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D445" d="M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"></path></g><g data-mml-node="mo" transform="translate(981.2,0)"><path data-c="2216" d="M56 731Q56 740 62 745T75 750Q85 750 92 740Q96 733 270 255T444 -231Q444 -239 438 -244T424 -250Q414 -250 407 -240Q404 -236 230 242T56 731Z"></path></g><g data-mml-node="mi" transform="translate(1703.4,0)"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g></g></g></svg></mjx-container> 中每个剩余文档，计算其 MMR 得分；选出得分最高者加入 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.459ex" height="1.645ex" role="img" focusable="false" viewBox="0 -705 645 727"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g></g></g></svg></mjx-container>。</li><li><strong>重复步骤 3</strong>，直到 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.459ex" height="1.645ex" role="img" focusable="false" viewBox="0 -705 645 727"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g></g></g></svg></mjx-container> 中已有 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.179ex" height="1.595ex" role="img" focusable="false" viewBox="0 -694 521 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g></svg></mjx-container> 个文档为止。</li><li>将 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="1.459ex" height="1.645ex" role="img" focusable="false" viewBox="0 -705 645 727"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D446" d="M308 24Q367 24 416 76T466 197Q466 260 414 284Q308 311 278 321T236 341Q176 383 176 462Q176 523 208 573T273 648Q302 673 343 688T407 704H418H425Q521 704 564 640Q565 640 577 653T603 682T623 704Q624 704 627 704T632 705Q645 705 645 698T617 577T585 459T569 456Q549 456 549 465Q549 471 550 475Q550 478 551 494T553 520Q553 554 544 579T526 616T501 641Q465 662 419 662Q362 662 313 616T263 510Q263 480 278 458T319 427Q323 425 389 408T456 390Q490 379 522 342T554 242Q554 216 546 186Q541 164 528 137T492 78T426 18T332 -20Q320 -22 298 -22Q199 -22 144 33L134 44L106 13Q83 -14 78 -18T65 -22Q52 -22 52 -14Q52 -11 110 221Q112 227 130 227H143Q149 221 149 216Q149 214 148 207T144 186T142 153Q144 114 160 87T203 47T255 29T308 24Z"></path></g></g></g></svg></mjx-container> 中的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.179ex" height="1.595ex" role="img" focusable="false" viewBox="0 -694 521 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g></svg></mjx-container> 个文档作为最终检索结果交给 LLM。</li></ol><hr><h2 id="为什么-Agent-系统极度需要-MMR？"><a href="#为什么-Agent-系统极度需要-MMR？" class="headerlink" title="为什么 Agent 系统极度需要 MMR？"></a>为什么 Agent 系统极度需要 MMR？</h2><ol><li><p><strong>上下文窗口（Context Window）寸土寸金</strong>：<br>LLM 的上下文长度有限（且越长计算成本越高）。如果检索到的背景知识全都是重复内容，就浪费了宝贵的 Token，导致 Agent 无法全面了解事件全貌，进而产生”幻觉”。</p></li><li><p><strong>避免陷入”信息回音室”</strong>：<br>当 Agent 执行多步推理（Multi-hop Reasoning）或总结任务时，需要从多维度收集信息。MMR 能确保 Agent 看到一个问题的”正反两面”或”不同侧面”，而不是单方面的重复观点。</p></li><li><p><strong>提升长期记忆（Long-term Memory）的召回质量</strong>：<br>Agent 拥有记忆库时，传统检索会把过去十次完全一样的历史记录都调出来。MMR 可以帮 Agent 召回那些”相关但包含不同细节”的历史记忆，为推理提供更广泛的参考。</p></li></ol><hr><h2 id="MMR-在-Agent-系统中的具体应用场景"><a href="#MMR-在-Agent-系统中的具体应用场景" class="headerlink" title="MMR 在 Agent 系统中的具体应用场景"></a>MMR 在 Agent 系统中的具体应用场景</h2><h3 id="RAG-中的知识库检索"><a href="#RAG-中的知识库检索" class="headerlink" title="RAG 中的知识库检索"></a>RAG 中的知识库检索</h3><p>这是 MMR 最典型的应用场景。当 Agent 需要调用 <code>Search_KnowledgeBase</code> 工具时：</p><ul><li><strong>传统做法</strong>：从向量数据库中提取 5 个与 Query 距离最近的 Chunk（文本块），结果这 5 个块可能都来自同一篇文章的相邻段落。</li><li><strong>MMR 做法</strong>：Agent 首先检索出 Top 20 个相关的 Chunk（<code>fetch_k</code>），然后通过 MMR 算法从中贪心筛选出最具差异性的 5 个 Chunk（<code>k</code>）交给 LLM。这样 Agent 就能在一轮检索中同时获得定义、案例、优缺点等不同维度的知识。</li></ul><h3 id="多文档摘要与分析-Agent"><a href="#多文档摘要与分析-Agent" class="headerlink" title="多文档摘要与分析 Agent"></a>多文档摘要与分析 Agent</h3><p>当 Agent 被要求”总结今天所有的科技新闻”时，如果使用纯相似度，Agent 可能会提取 10 篇关于同一款手机发布的通稿。引入 MMR 后，Agent 在抓取内容时会刻意避开相似度过高的文章，从而在摘要中同时涵盖手机发布、AI 突破、航空航天等多个不同的科技热点。</p><h3 id="Few-Shot-Prompting-的动态样本选择"><a href="#Few-Shot-Prompting-的动态样本选择" class="headerlink" title="Few-Shot Prompting 的动态样本选择"></a>Few-Shot Prompting 的动态样本选择</h3><p>在高级 Agent 设计中，为了让 LLM 更好地使用外部工具，我们会动态从向量库中检索”历史成功调用工具的样例”（Few-shot examples）放入 Prompt 中。如果只用相似度，选出的可能全都是某种特定参数的调用样例。使用 MMR 可以确保 Prompt 样例在语境和参数上具备多样性，极大提升 Agent 举一反三的泛化能力。（LangChain 中的 <code>SemanticSimilarityExampleSelector</code> 也支持 MMR 模式。）</p><hr><h2 id="如何在-Agent-框架中应用-MMR？"><a href="#如何在-Agent-框架中应用-MMR？" class="headerlink" title="如何在 Agent 框架中应用 MMR？"></a>如何在 Agent 框架中应用 MMR？</h2><p>在主流的 Agent 与 LLM 编排框架中（如 LangChain、LlamaIndex 等），MMR 已经被封装为开箱即用的模块。以下是基于 <strong>LangChain v0.2+</strong> 的完整示例：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> langchain_chroma <span class="keyword">import</span> Chroma</span><br><span class="line"><span class="keyword">from</span> langchain_openai <span class="keyword">import</span> OpenAIEmbeddings</span><br><span class="line"><span class="keyword">from</span> langchain_core.documents <span class="keyword">import</span> Document</span><br><span class="line"></span><br><span class="line"><span class="comment"># 初始化 Embedding 模型</span></span><br><span class="line">embeddings = OpenAIEmbeddings(model=<span class="string">"text-embedding-3-small"</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 构造示例文档并写入向量库</span></span><br><span class="line">docs = [</span><br><span class="line">    Document(page_content=<span class="string">"电动车锂电池的能量密度正在快速提升，主流乘用车续航已达 800km。"</span>),</span><br><span class="line">    Document(page_content=<span class="string">"固态电池是下一代动力电池的主流技术路线，循环寿命和安全性更优。"</span>),</span><br><span class="line">    Document(page_content=<span class="string">"宁德时代发布了新一代 4680 圆柱电池，能量密度达到 500Wh/kg。"</span>),</span><br><span class="line">    Document(page_content=<span class="string">"电池热管理系统是影响快充速度和电池寿命的关键因素之一。"</span>),</span><br><span class="line">    Document(page_content=<span class="string">"锂电池的回收与梯次利用已成为电动车行业可持续发展的重要议题。"</span>),</span><br><span class="line">]</span><br><span class="line">vectorstore = Chroma.from_documents(docs, embedding=embeddings)</span><br><span class="line"></span><br><span class="line"><span class="comment"># ---- 传统检索（纯相似度）：容易出现冗余结果 ----</span></span><br><span class="line">similarity_retriever = vectorstore.as_retriever(</span><br><span class="line">    search_type=<span class="string">"similarity"</span>,</span><br><span class="line">    search_kwargs={<span class="string">"k"</span>: <span class="number">3</span>}</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># ---- MMR 检索：兼顾相关性与多样性 ----</span></span><br><span class="line">mmr_retriever = vectorstore.as_retriever(</span><br><span class="line">    search_type=<span class="string">"mmr"</span>,</span><br><span class="line">    search_kwargs={</span><br><span class="line">        <span class="string">"k"</span>: <span class="number">3</span>,             <span class="comment"># 最终交给 LLM 的文档数量</span></span><br><span class="line">        <span class="string">"fetch_k"</span>: <span class="number">15</span>,      <span class="comment"># 初始粗筛的候选文档数量（建议为 k 的 3~5 倍）</span></span><br><span class="line">        <span class="string">"lambda_mult"</span>: <span class="number">0.5</span>  <span class="comment"># λ=0.5：相关性与多样性各占一半</span></span><br><span class="line">    }</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 在 RAG Chain 中使用 MMR Retriever</span></span><br><span class="line"><span class="keyword">from</span> langchain_core.prompts <span class="keyword">import</span> ChatPromptTemplate</span><br><span class="line"><span class="keyword">from</span> langchain_openai <span class="keyword">import</span> ChatOpenAI</span><br><span class="line"><span class="keyword">from</span> langchain_core.runnables <span class="keyword">import</span> RunnablePassthrough</span><br><span class="line"><span class="keyword">from</span> langchain_core.output_parsers <span class="keyword">import</span> StrOutputParser</span><br><span class="line"></span><br><span class="line">prompt = ChatPromptTemplate.from_template(</span><br><span class="line">    <span class="string">"请根据以下背景知识，综合回答问题。\n\n背景知识:\n{context}\n\n问题: {question}"</span></span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">format_docs</span>(<span class="params">docs</span>):</span><br><span class="line">    <span class="keyword">return</span> <span class="string">"\n\n"</span>.join(doc.page_content <span class="keyword">for</span> doc <span class="keyword">in</span> docs)</span><br><span class="line"></span><br><span class="line">rag_chain = (</span><br><span class="line">    {<span class="string">"context"</span>: mmr_retriever | format_docs, <span class="string">"question"</span>: RunnablePassthrough()}</span><br><span class="line">    | prompt</span><br><span class="line">    | ChatOpenAI(model=<span class="string">"gpt-4o"</span>)</span><br><span class="line">    | StrOutputParser()</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line">answer = rag_chain.invoke(<span class="string">"请综合各方观点告诉我当前电动车的电池技术瓶颈"</span>)</span><br><span class="line"><span class="built_in">print</span>(answer)</span><br></pre></td></tr></table></figure><p><strong>调参经验法则：</strong></p><ul><li><code>fetch_k</code> 建议设为 <code>k</code> 的 <strong>3~5 倍</strong>。过小则多样性空间有限，过大则引入过多低质量候选文档并增加计算延迟。</li><li>如果用户的问题需要<strong>精准的特定事实</strong>（如”某某人的出生日期”），多样性意义不大，将 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.027ex;" xmlns="http://www.w3.org/2000/svg" width="1.319ex" height="1.597ex" role="img" focusable="false" viewBox="0 -694 583 706"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D706" d="M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z"></path></g></g></g></svg></mjx-container> 调高（如 0.8~1.0）。</li><li>如果用户的问题是<strong>开放性、探索性</strong>的（如”分析中东局势的多种原因”），将 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.027ex;" xmlns="http://www.w3.org/2000/svg" width="1.319ex" height="1.597ex" role="img" focusable="false" viewBox="0 -694 583 706"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D706" d="M166 673Q166 685 183 694H202Q292 691 316 644Q322 629 373 486T474 207T524 67Q531 47 537 34T546 15T551 6T555 2T556 -2T550 -11H482Q457 3 450 18T399 152L354 277L340 262Q327 246 293 207T236 141Q211 112 174 69Q123 9 111 -1T83 -12Q47 -12 47 20Q47 37 61 52T199 187Q229 216 266 252T321 306L338 322Q338 323 288 462T234 612Q214 657 183 657Q166 657 166 673Z"></path></g></g></g></svg></mjx-container> 调低（如 0.3~0.5），引导检索从更多视角收集信息。</li></ul><hr><h2 id="MMR-与其他多样性检索方法的对比"><a href="#MMR-与其他多样性检索方法的对比" class="headerlink" title="MMR 与其他多样性检索方法的对比"></a>MMR 与其他多样性检索方法的对比</h2><table><thead><tr><th>方法</th><th>核心思路</th><th>优点</th><th>缺点</th></tr></thead><tbody><tr><td><strong>MMR</strong></td><td>贪心迭代，每步惩罚已选文档的冗余度</td><td>实现简单，已集成主流框架，效果稳定</td><td>λ 需人工调参，无法动态适应任务类型</td></tr><tr><td><strong>阈值去重</strong></td><td>过滤余弦相似度超过阈值的文档</td><td>极其简单，零额外参数</td><td>只能粗粒度去重，无法精细控制多样性程度</td></tr><tr><td><strong>聚类采样</strong></td><td>先对候选集聚类，再从每个簇取代表性文档</td><td>能保证空间分布的全局多样性</td><td>引入聚类算法的额外复杂度和超参数</td></tr><tr><td><strong>DPP（行列式点过程）</strong></td><td>用行列式衡量文档集合的体积（多样性的严格数学定义）</td><td>多样性保证最严格，理论最优</td><td>计算成本远高于 MMR，工程集成复杂</td></tr></tbody></table><p>在大多数生产级 RAG 场景中，<strong>MMR 是性价比最高的选择</strong>：效果足够好，延迟可控，主流框架开箱即用。</p><hr><h2 id="MMR-的局限性"><a href="#MMR-的局限性" class="headerlink" title="MMR 的局限性"></a>MMR 的局限性</h2><p>在将 MMR 引入 Agent 系统前，应了解其固有局限：</p><ol><li><p><strong>计算复杂度随 <code>fetch_k</code> 线性增长</strong>：每轮迭代需遍历所有剩余候选文档，总复杂度约为 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="13.85ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 6121.8 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D442" d="M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"></path></g><g data-mml-node="mo" transform="translate(763,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mi" transform="translate(1152,0)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g><g data-mml-node="mo" transform="translate(1895.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(2895.4,0)"><path data-c="1D453" d="M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z"></path></g><g data-mml-node="mi" transform="translate(3445.4,0)"><path data-c="1D452" d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z"></path></g><g data-mml-node="mi" transform="translate(3911.4,0)"><path data-c="1D461" d="M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z"></path></g><g data-mml-node="mi" transform="translate(4272.4,0)"><path data-c="1D450" d="M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z"></path></g><g data-mml-node="msub" transform="translate(4705.4,0)"><g data-mml-node="mi"><path data-c="210E" d="M137 683Q138 683 209 688T282 694Q294 694 294 685Q294 674 258 534Q220 386 220 383Q220 381 227 388Q288 442 357 442Q411 442 444 415T478 336Q478 285 440 178T402 50Q403 36 407 31T422 26Q450 26 474 56T513 138Q516 149 519 151T535 153Q555 153 555 145Q555 144 551 130Q535 71 500 33Q466 -10 419 -10H414Q367 -10 346 17T325 74Q325 90 361 192T398 345Q398 404 354 404H349Q266 404 205 306L198 293L164 158Q132 28 127 16Q114 -11 83 -11Q69 -11 59 -2T48 16Q48 30 121 320L195 616Q195 629 188 632T149 637H128Q122 643 122 645T124 664Q129 683 137 683Z"></path></g><g data-mml-node="mi" transform="translate(609,-150) scale(0.707)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g><g data-mml-node="mo" transform="translate(5732.8,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container>。当 <code>fetch_k</code> 超过 200 时，在高并发场景下延迟会显著上升。</p></li><li><p><strong>λ 无法自适应调整</strong>：当前实现中 λ 是静态超参数，无法根据用户查询的类型（事实类 vs. 开放类）动态调整。工程上通常需要针对不同任务分别配置。</p></li><li><p><strong>效果上限由 Embedding 质量决定</strong>：MMR 依赖余弦相似度判断文档间的冗余度。若所用 Embedding 模型对特定领域语义捕捉不准确，MMR 判断出的”多样”在语义上未必真正多样。</p></li><li><p><strong>两阶段漏洞</strong>：若初始粗筛（<code>fetch_k</code> 阶段）本身就漏掉了关键文档，MMR 无法将其召回——最终结果的上限由第一阶段的召回率决定。</p></li></ol><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>在 Agent 系统中，<strong>信息检索的质量直接决定了 Agent 行动和回答的质量</strong>。MMR 扮演了”内容策展人”（Curator）的角色，它在应用层过滤掉了冗余信息，将具有广度的高价值知识拼图交给 LLM。</p><p>理解 MMR 的数学本质（贪心 argmax 迭代）、合理配置 <code>fetch_k</code>、<code>k</code> 和 <code>λ</code>，并清楚认识其局限性，是实现从”玩具级 RAG”跨越到”生产级高可靠 Agent”的必备技术手段。</p><hr><p><strong>参考文献</strong></p><blockquote><p>Carbonell, J., &amp; Goldstein, J. (1998). The use of MMR, diversity-based reranking for reordering documents and producing summaries. <em>Proceedings of the 21st Annual International ACM SIGIR Conference on Research and Development in Information Retrieval (SIGIR ‘98)</em>, 335–336.</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;strong&gt;MMR（Maximal Marginal Relevance，最大边际相关性）&lt;strong&gt;是信息检索领域的经典算法，由 Carbonell 和 Goldstein 于 1998 年在 SIGIR 会议上提出。它的核心作用是&lt;/strong&gt;在检索结果中同</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>跨越&quot;语义鸿沟&quot;：为什么RAG系统离不开Query重写</title>
    <link href="https://www.silenceboy.com/2026/03/12/%E8%B7%A8%E8%B6%8A%E2%80%9C%E8%AF%AD%E4%B9%89%E9%B8%BF%E6%B2%9F%E2%80%9D%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88RAG%E7%B3%BB%E7%BB%9F%E7%A6%BB%E4%B8%8D%E5%BC%80Query%E9%87%8D%E5%86%99/"/>
    <id>https://www.silenceboy.com/2026/03/12/%E8%B7%A8%E8%B6%8A%E2%80%9C%E8%AF%AD%E4%B9%89%E9%B8%BF%E6%B2%9F%E2%80%9D%EF%BC%9A%E4%B8%BA%E4%BB%80%E4%B9%88RAG%E7%B3%BB%E7%BB%9F%E7%A6%BB%E4%B8%8D%E5%BC%80Query%E9%87%8D%E5%86%99/</id>
    <published>2026-03-12T03:21:07.000Z</published>
    <updated>2026-03-12T06:22:33.218Z</updated>
    
    <content type="html"><![CDATA[<h2 id="核心摘要"><a href="#核心摘要" class="headerlink" title="核心摘要"></a>核心摘要</h2><p>在RAG系统中，检索质量直接决定了最终生成的回答质量，即所谓的”Garbage in, garbage out（垃圾进，垃圾出）”。然而，<strong>人类用户的真实提问往往是口语化、简略、缺乏上下文或包含多重意图的</strong>。</p><p><strong>Query重写（Query Rewriting）</strong> 就是在用户的原始提问和检索系统（如向量数据库）之间加入一个”翻译&#x2F;优化”层，利用大模型（LLM）将低质量的原始提问转化为更适合检索的高质量Query。</p><p>本文将系统梳理 Query 重写的核心价值、主流技术方案，并提供一套可直接落地的<strong>选型决策框架</strong>。</p><hr><h2 id="为什么我们需要Query重写？"><a href="#为什么我们需要Query重写？" class="headerlink" title="为什么我们需要Query重写？"></a>为什么我们需要Query重写？</h2><p>在理想状态下，用户会输入完美的、关键词精准的提问，但这在现实应用中几乎不存在。RAG系统引入Query重写主要为了解决以下四个痛点：</p><h3 id="多轮对话中的”上下文缺失”与”指代不清”"><a href="#多轮对话中的”上下文缺失”与”指代不清”" class="headerlink" title="多轮对话中的”上下文缺失”与”指代不清”"></a>多轮对话中的”上下文缺失”与”指代不清”</h3><p>在Chatbot场景中，用户习惯于连续追问。</p><ul><li><strong>User 第一轮:</strong> “特斯拉目前的CEO是谁？”（系统回答：马斯克）</li><li><strong>User 第二轮:</strong> “他今年多大了？”</li><li><strong>灾难发生:</strong> 如果直接把”他今年多大了？”转化为向量去数据库中检索，向量数据库会匹配到无数包含”他”、”多大”的无关文档。因为检索系统本身没有记忆。</li><li><strong>重写的价值:</strong> 通过Query重写（上下文压缩&#x2F;指代消解），系统会将第二轮问题重写为：<strong>“埃隆·马斯克今年多大了？”</strong>，从而实现精准检索。</li></ul><h3 id="词汇不匹配（语义鸿沟与表达习惯差异）"><a href="#词汇不匹配（语义鸿沟与表达习惯差异）" class="headerlink" title="词汇不匹配（语义鸿沟与表达习惯差异）"></a>词汇不匹配（语义鸿沟与表达习惯差异）</h3><p>用户提问的用词，往往与专业文档中的用词存在巨大差异。</p><ul><li><strong>User提问:</strong> “吃完饭肚子疼怎么回事？”</li><li><strong>医学文档内容:</strong> “餐后腹痛可能由胃溃疡或胆囊炎引起……”</li><li><strong>灾难发生:</strong> 传统的关键词检索（BM25）会直接在词汇层面失配。<strong>向量检索理论上可以捕捉语义相似性，但当嵌入模型未经医疗等专业领域微调时，口语表达与专业术语在向量空间中的距离依然可能偏大</strong>，同样导致检索不准。</li><li><strong>重写的价值:</strong> 将Query扩展为包含同义词和专业术语的形式：<strong>“饭后肚子疼 餐后腹痛 消化不良 症状 原因”</strong>，覆盖更多可能命中的表达方式。</li></ul><h3 id="复杂问题与多跳推理（Multi-hop-Reasoning）"><a href="#复杂问题与多跳推理（Multi-hop-Reasoning）" class="headerlink" title="复杂问题与多跳推理（Multi-hop Reasoning）"></a>复杂问题与多跳推理（Multi-hop Reasoning）</h3><p>用户经常在一个句子里提出需要综合多方信息才能回答的问题。</p><ul><li><p><strong>User提问:</strong> “对比一下2023年第三季度苹果和微软的营收增长率。”</p></li><li><p><strong>灾难发生:</strong> 数据库里通常没有一篇文档正好把这两者放在一起对比。直接检索这个长句，可能只搜到苹果的财报，或者只搜到微软的财报。</p></li><li><p><strong>重写的价值:</strong> 将复杂问题拆解（Decomposition）为多个子查询：</p><ul><li>子查询 1: “2023年第三季度苹果的营收增长率”</li><li>子查询 2: “2023年第三季度微软的营收增长率”</li></ul><p>系统分别检索这两条信息，再交给LLM进行综合对比。</p></li></ul><h3 id="提问过于宽泛或抽象"><a href="#提问过于宽泛或抽象" class="headerlink" title="提问过于宽泛或抽象"></a>提问过于宽泛或抽象</h3><ul><li><strong>User提问:</strong> “讲讲人工智能。”</li><li><strong>灾难发生:</strong> 这种提问在包含数百万文档的企业知识库中会触发海量毫无关联的匹配。</li><li><strong>重写的价值:</strong> 结合系统设定的角色或当前业务场景（如HR系统），重写为：<strong>“人工智能在人力资源和招聘领域的应用案例”</strong>，使检索更有针对性。</li></ul><hr><h2 id="业界主流的Query重写技术与方案"><a href="#业界主流的Query重写技术与方案" class="headerlink" title="业界主流的Query重写技术与方案"></a>业界主流的Query重写技术与方案</h2><p>了解了”为什么”，我们来看看在工程实践中（如LangChain、LlamaIndex等框架中）常用的几种Query重写策略：</p><h3 id="指代消解与上下文重写"><a href="#指代消解与上下文重写" class="headerlink" title="指代消解与上下文重写"></a>指代消解与上下文重写</h3><ul><li><strong>原理:</strong> 把历史对话记录和当前问题一起发给LLM，让LLM生成一个脱离上下文也能看懂的独立问题（Standalone Query）。</li><li><strong>应用场景:</strong> 所有具备多轮对话能力的RAG系统（最基础也是最必要的重写）。</li><li><strong>LangChain支持:</strong> <code>create_history_aware_retriever</code> 原生支持，开箱即用。</li></ul><h3 id="查询扩展-Query-Expansion-Multi-Query"><a href="#查询扩展-Query-Expansion-Multi-Query" class="headerlink" title="查询扩展 (Query Expansion &#x2F; Multi-Query)"></a>查询扩展 (Query Expansion &#x2F; Multi-Query)</h3><ul><li><strong>原理:</strong> LLM针对原始问题，从不同的角度生成多个相关的问题（通常是3-5个）。</li><li><strong>机制:</strong> 将这多个问题分别进行向量检索，取检索结果的并集，再通过 <strong>RRF（Reciprocal Rank Fusion，倒数排名融合）算法</strong> 将多路结果合并排序，从而大大提高检索的<strong>召回率（Recall）</strong>。</li><li><strong>注意:</strong> RRF 是一种<strong>排名融合</strong>算法，与基于 Cross-Encoder 的语义重排序（Reranking）是两个不同的概念，切勿混淆。</li><li><strong>例子:</strong><ul><li>原问题：”气候变化对北极熊有什么影响？”</li><li>扩展问题：”全球变暖如何改变北极熊的栖息地？”、”海冰融化对北极熊觅食的威胁有哪些？”</li></ul></li><li><strong>LangChain支持:</strong> <code>MultiQueryRetriever</code> 原生支持。</li></ul><h3 id="RAG-Fusion"><a href="#RAG-Fusion" class="headerlink" title="RAG-Fusion"></a>RAG-Fusion</h3><ul><li><strong>背景:</strong> 由开发者 Adrian Raudaschl 于2023年提出，是 Multi-Query + RRF 的工程化整合方案，在社区获得了广泛关注。</li><li><strong>原理:</strong> 与 Multi-Query 类似，核心区别在于对 RRF 融合步骤的更强调和规范化——同一文档在多个子查询结果中排名越靠前，最终加权得分越高，从而让真正相关的文档浮出水面。</li><li><strong>适用场景:</strong> 知识库庞大、单次检索召回率不足、需要综合多个角度信息的场景。</li></ul><h3 id="HyDE-Hypothetical-Document-Embeddings-假设性文档嵌入"><a href="#HyDE-Hypothetical-Document-Embeddings-假设性文档嵌入" class="headerlink" title="HyDE (Hypothetical Document Embeddings - 假设性文档嵌入)"></a>HyDE (Hypothetical Document Embeddings - 假设性文档嵌入)</h3><ul><li><strong>出处:</strong> 2022年由<strong>卡内基梅隆大学（CMU）</strong> 等机构提出，论文为《Precise Zero-Shot Dense Retrieval without Relevance Labels》。</li><li><strong>原理:</strong> 非常巧妙的逆向思维。遇到用户提问时，<strong>先让大模型（”盲猜”）生成一篇假设性的答案（文档）</strong>。虽然这个答案可能包含幻觉或事实错误，但它的<strong>句式结构和词汇分布</strong>与真实的参考文档非常相似。然后，用这篇”假文档”的向量去检索数据库里的”真文档”。</li><li><strong>为什么有效:</strong> 因为”文档到文档”的向量匹配，通常比”简短提问到长文档”的匹配效果更好。用户的提问往往只有十几个字，而语料库里的文档动辄数百字，两者的向量天然存在分布差异；HyDE 将提问侧的向量”升维”到与文档相近的长度和风格。</li><li><strong>LlamaIndex支持:</strong> <code>HyDEQueryTransform</code> 原生支持。</li></ul><h3 id="退一步提示-Step-back-Prompting"><a href="#退一步提示-Step-back-Prompting" class="headerlink" title="退一步提示 (Step-back Prompting)"></a>退一步提示 (Step-back Prompting)</h3><ul><li><strong>出处:</strong> 谷歌DeepMind提出的技术（2023年）。</li><li><strong>原理:</strong> 当遇到非常具体的细节问题时，让大模型后退一步，生成一个更宽泛、更高维度的背景问题，先检索出底层原理文档，再用该背景知识辅助回答具体问题。</li><li><strong>例子:</strong><ul><li>原问题：”为什么我的Python代码里 <code>x = [1,2]; y = x; y.append(3)</code> 会导致 <code>x</code> 也变成 <code>[1,2,3]</code>？”</li><li>退一步重写：”Python中的变量引用机制和可变对象（Mutable Objects）是如何工作的？”</li><li><strong>效果:</strong> 先检索到 Python 内存模型&#x2F;引用机制的通用原理文档，模型以此为背景，再回答具体的代码问题，准确率显著提升。</li></ul></li><li><strong>适用场景:</strong> 技术支持、故障排查、学习问答等场景，用户的具体问题往往指向某个更基础的原理性知识盲区。</li></ul><h3 id="FLARE-Forward-Looking-Active-REtrieval"><a href="#FLARE-Forward-Looking-Active-REtrieval" class="headerlink" title="FLARE (Forward-Looking Active REtrieval)"></a>FLARE (Forward-Looking Active REtrieval)</h3><ul><li><strong>背景:</strong> 2023年由 UCBerkeley 等机构提出，适合需要生成长文本的场景。</li><li><strong>原理:</strong> 与上述静态重写不同，FLARE 是<strong>迭代式</strong>的动态重写策略。模型在生成回答的过程中，一旦遇到低置信度的预测（即模型”不确定”该写什么），就自动暂停，以当前预测内容为 Query 主动触发一次新的检索，补充上下文后继续生成。</li><li><strong>适用场景:</strong> 报告生成、长文摘要等长文本输出场景，不适合低延迟的实时问答。</li></ul><hr><h2 id="技术方案横向对比"><a href="#技术方案横向对比" class="headerlink" title="技术方案横向对比"></a>技术方案横向对比</h2><table><thead><tr><th>技术方案</th><th>解决的核心问题</th><th>额外延迟</th><th>额外成本</th><th>实现复杂度</th><th>典型适用场景</th></tr></thead><tbody><tr><td>上下文重写</td><td>多轮指代消解、上下文缺失</td><td>低</td><td>低</td><td>⭐</td><td>所有多轮对话场景（必选）</td></tr><tr><td>Query Expansion &#x2F; Multi-Query</td><td>召回率不足、单角度覆盖窄</td><td>中</td><td>中</td><td>⭐⭐</td><td>企业知识库、宽覆盖检索</td></tr><tr><td>RAG-Fusion</td><td>多路结果融合与排名质量</td><td>中</td><td>中</td><td>⭐⭐</td><td>知识库庞大、需综合多角度</td></tr><tr><td>HyDE</td><td>短查询-长文档向量匹配差</td><td>中</td><td>中</td><td>⭐⭐</td><td>学术&#x2F;技术文档、专业知识库</td></tr><tr><td>Step-back Prompting</td><td>细节问题缺乏背景原理支撑</td><td>低</td><td>低</td><td>⭐</td><td>技术支持、故障排查、学习问答</td></tr><tr><td>FLARE</td><td>长文本生成中的知识不完整</td><td>高</td><td>高</td><td>⭐⭐⭐</td><td>长报告生成、深度摘要</td></tr></tbody></table><hr><h2 id="选型决策框架"><a href="#选型决策框架" class="headerlink" title="选型决策框架"></a>选型决策框架</h2><p>不同场景对 Query 重写的需求差异很大。下图提供一个可直接落地的决策路径：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">你的系统是多轮对话吗？</span><br><span class="line">  └─ 是 → 【上下文重写】是必选基础项，其他技术在此之上叠加</span><br><span class="line">  └─ 否 → 直接评估以下场景</span><br><span class="line"></span><br><span class="line">用户提问简短，但文档都是长篇专业文档（学术、法律、医学）？</span><br><span class="line">  └─ 是 → 优先考虑【HyDE】</span><br><span class="line"></span><br><span class="line">用户提问涉及比较、综合多方信息或多跳推理？</span><br><span class="line">  └─ 是 → 优先考虑【Multi-Query / RAG-Fusion + 子查询拆解】</span><br><span class="line"></span><br><span class="line">用户的具体问题背后有更基础的原理知识需要检索？</span><br><span class="line">  └─ 是 → 优先考虑【Step-back Prompting】</span><br><span class="line"></span><br><span class="line">需要生成长篇报告/摘要，且生成过程中知识需求动态变化？</span><br><span class="line">  └─ 是 → 优先考虑【FLARE】</span><br><span class="line"></span><br><span class="line">单次检索召回率不理想，文档覆盖面广但密度低？</span><br><span class="line">  └─ 是 → 优先考虑【Multi-Query / RAG-Fusion】</span><br></pre></td></tr></table></figure><p><strong>黄金组合推荐：</strong></p><ul><li><strong>多轮问答（标准）:</strong> 上下文重写 + Multi-Query</li><li><strong>技术&#x2F;专业知识库:</strong> 上下文重写 + HyDE</li><li><strong>企业级复杂问答:</strong> 上下文重写 + Multi-Query + Step-back Prompting（三层叠加）</li><li><strong>长文本生成场景:</strong> 上下文重写 + FLARE</li></ul><hr><h2 id="组合使用：实际工程中如何叠加"><a href="#组合使用：实际工程中如何叠加" class="headerlink" title="组合使用：实际工程中如何叠加"></a>组合使用：实际工程中如何叠加</h2><p>上述技术并非互斥，在生产环境中通常是<strong>流水线式叠加</strong>使用的：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">用户输入</span><br><span class="line">    │</span><br><span class="line">    ▼</span><br><span class="line">[第一层] 上下文重写（Contextual Rewrite）</span><br><span class="line">    │ 将多轮指代消解为独立问题</span><br><span class="line">    ▼</span><br><span class="line">[第二层] 问题分类路由</span><br><span class="line">    │ 简单直接问题 → 直接检索</span><br><span class="line">    │ 复杂/多跳问题 → Multi-Query 拆解</span><br><span class="line">    │ 过于细节问题 → Step-back 退一步</span><br><span class="line">    │ 专业文档场景 → HyDE 生成假设文档</span><br><span class="line">    ▼</span><br><span class="line">[第三层] 检索 + RRF 融合</span><br><span class="line">    │ 多路结果通过 RRF 合并</span><br><span class="line">    ▼</span><br><span class="line">[第四层] 语义重排序（Reranking，可选）</span><br><span class="line">    │ Cross-Encoder 对候选文档精排</span><br><span class="line">    ▼</span><br><span class="line">[最终] 送入 LLM 生成答案</span><br></pre></td></tr></table></figure><p><strong>成本控制技巧：</strong> 第一、二层的 Query 重写可以使用<strong>体积小、速度快的轻量级模型</strong>（如 GPT-4o-mini、Qwen-7B 等），而非每次都调用 GPT-4 级别的大模型，在保持效果的同时将延迟和成本控制在合理范围内。</p><hr><h2 id="何时不引入Query重写"><a href="#何时不引入Query重写" class="headerlink" title="何时不引入Query重写"></a>何时不引入Query重写</h2><p>Query 重写并非所有场景的最优解。以下情况引入反而可能有害：</p><ol><li><strong>用户本身是专业人员，提问已经足够精准。</strong> 例如开发者在代码助手里粘贴完整报错信息，再次重写可能导致信息丢失（Semantic Drift）。</li><li><strong>对延迟极度敏感的实时场景。</strong> 如语音助手、实时客服，额外的 LLM 调用会带来不可接受的响应延迟。</li><li><strong>知识库规模极小（百条以内）。</strong> 检索本身不存在精度问题，引入重写只是增加了不必要的复杂度。</li><li><strong>知识库内容高度结构化，用户查询意图明确。</strong> 如数据库查询、代码文档检索，传统关键词或精确匹配往往优于语义检索。</li></ol><hr><h2 id="Query重写的代价与挑战"><a href="#Query重写的代价与挑战" class="headerlink" title="Query重写的代价与挑战"></a>Query重写的代价与挑战</h2><p>虽然Query重写能大幅提升RAG的准确率，但它并非完美无缺的银弹，引入它需要权衡以下成本：</p><ol><li><strong>延迟增加 (Latency):</strong> 引入重写意味着在检索前多了一次LLM的调用。这通常会增加几百毫秒到几秒的响应时间，对实时性要求极高的场景不友好。（<em>解决方案：使用体积更小、速度更快的专门做重写的小模型来替代庞大的GPT-4</em>）。</li><li><strong>成本上升 (Cost):</strong> 额外的LLM调用意味着消耗更多的Token，增加了系统的运行成本。</li><li><strong>重写偏移 (Semantic Drift):</strong> 有时候大模型”自作聪明”，错误理解了用户的真实意图，导致重写后的Query与用户想问的内容南辕北辙，反而降低了检索质量。</li><li><strong>重写质量强依赖Prompt工程:</strong> 重写效果高度依赖 Prompt 设计质量，需要针对不同业务场景持续迭代 Prompt，存在一定的维护成本。</li></ol><hr><h2 id="如何衡量Query重写的效果"><a href="#如何衡量Query重写的效果" class="headerlink" title="如何衡量Query重写的效果"></a>如何衡量Query重写的效果</h2><p>引入 Query 重写后，如何验证它真的有效？工程实践中常用以下指标：</p><ul><li><strong>Hit Rate（命中率）:</strong> 检索结果中包含正确答案的提问比例，是最直接的指标。</li><li><strong>MRR（Mean Reciprocal Rank，平均倒数排名）:</strong> 衡量正确文档在检索结果列表中的平均排位，排名越靠前，MRR 越高。</li><li><strong>Context Precision &#x2F; Context Recall:</strong> 来自 <strong>RAGAS 评测框架</strong>，分别衡量检索文档的精确度（有多少是相关的）和召回度（相关文档被检索到的比例）。</li><li><strong>A&#x2F;B 对照实验:</strong> 在灰度流量中，对比开启&#x2F;关闭 Query 重写两组的最终答案质量（可通过 LLM-as-Judge 自动化评分）。</li></ul><p><strong>最小化验证路径:</strong> 从 Hit Rate 开始，构建一组包含多轮对话、词汇不匹配、复杂多跳三类问题的评测集（20-50条），在引入重写前后对比 Hit Rate 变化，即可快速判断投入是否值得。</p><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>在RAG系统中，<strong>向量检索天然依赖于文本特征的相似度，而用户提问往往是随性且充满信息缺失的。</strong></p><p>Query重写扮演了 <strong>“提问翻译官”</strong> 的角色，它填补了用户意图与数据库索引之间的鸿沟。选型时的核心逻辑是：</p><ul><li><strong>上下文重写</strong> 是多轮对话场景的强制项，无论如何都应该引入；</li><li><strong>Multi-Query &#x2F; RAG-Fusion</strong> 是提升召回率的通用解法，性价比高；</li><li><strong>HyDE</strong> 在专业文档检索场景中效果最为突出；</li><li><strong>Step-back Prompting</strong> 适合以原理性知识为核心的问答系统；</li><li><strong>FLARE</strong> 是长文本生成场景的特化方案，不适合实时对话。</li></ul><p>没有一种技术是万能的，理解每种方案背后的问题假设，才能在具体场景中做出正确的取舍。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;核心摘要&quot;&gt;&lt;a href=&quot;#核心摘要&quot; class=&quot;headerlink&quot; title=&quot;核心摘要&quot;&gt;&lt;/a&gt;核心摘要&lt;/h2&gt;&lt;p&gt;在RAG系统中，检索质量直接决定了最终生成的回答质量，即所谓的”Garbage in, garbage out（垃圾进，垃圾</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>Agent编排平台和Agent开发框架应该如何选择</title>
    <link href="https://www.silenceboy.com/2026/03/11/Agent%E7%BC%96%E6%8E%92%E5%B9%B3%E5%8F%B0%E5%92%8CAgent%E5%BC%80%E5%8F%91%E6%A1%86%E6%9E%B6%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9/"/>
    <id>https://www.silenceboy.com/2026/03/11/Agent%E7%BC%96%E6%8E%92%E5%B9%B3%E5%8F%B0%E5%92%8CAgent%E5%BC%80%E5%8F%91%E6%A1%86%E6%9E%B6%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E9%80%89%E6%8B%A9/</id>
    <published>2026-03-11T07:23:14.000Z</published>
    <updated>2026-03-11T07:49:49.326Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p><strong>本文使用的代表性工具</strong></p><ul><li>Agent 编排平台（低代码）：<strong>n8n</strong>（工作流自动化）、<strong>Dify</strong>（LLM 应用平台）</li><li>Agent 开发框架（Pro-code）：<strong>LangGraph</strong>、<strong>LangChain</strong>、<strong>CrewAI</strong>、<strong>AutoGen</strong>、<strong>OpenAI Agents SDK</strong></li></ul></blockquote><hr><p>这是当前 AI 应用落地中最频繁被讨论的选型问题之一。在深入对比之前，有一个重要的前提需要先厘清：<strong>本文中提到的几类工具，并非同一维度的竞争关系，而是分属不同的技术层次</strong>，误解这一点是导致选型错误的最主要原因。</p><hr><h2 id="先厘清：这些工具各自是什么"><a href="#先厘清：这些工具各自是什么" class="headerlink" title="先厘清：这些工具各自是什么"></a>先厘清：这些工具各自是什么</h2><p>在做对比之前，必须先分别认识这几类工具，因为即便是同一阵营内部，它们的差异也很大。</p><h3 id="低代码编排平台阵营"><a href="#低代码编排平台阵营" class="headerlink" title="低代码编排平台阵营"></a>低代码编排平台阵营</h3><p><strong>n8n</strong> 和 <strong>Dify</strong> 常被并列，但它们的出发点截然不同：</p><table><thead><tr><th align="left"></th><th align="left">n8n</th><th align="left">Dify</th></tr></thead><tbody><tr><td align="left"><strong>定位</strong></td><td align="left">通用<strong>工作流自动化</strong>平台，AI 是众多集成之一</td><td align="left"><strong>LLM-native</strong> 的 AI 应用开发平台</td></tr><tr><td align="left"><strong>核心强项</strong></td><td align="left">数百个 SaaS 系统打通（飞书、Gmail、Jira、Webhook 等），授权极为方便</td><td align="left">Prompt 管理、知识库（RAG）、Agent 推理循环，专为 AI 应用设计</td></tr><tr><td align="left"><strong>适合场景</strong></td><td align="left">“收到邮件 → AI提取摘要 → 写入Notion → 发送企微”此类业务流程自动化</td><td align="left">“构建知识库问答机器人、多工具 Agent、RAG 应用”</td></tr><tr><td align="left"><strong>AI 能力</strong></td><td align="left">基础，依赖外部 LLM 节点</td><td align="left">深度内置，支持复杂的 Agent 推理模式</td></tr></tbody></table><blockquote><p><strong>一句话区分</strong>：如果你的需求是”让各个 SaaS 系统动起来，顺手接入 AI”，选 n8n；如果你的需求是”构建一个 AI 应用，顺手连接外部系统”，选 Dify。</p></blockquote><h3 id="Pro-code-框架阵营"><a href="#Pro-code-框架阵营" class="headerlink" title="Pro-code 框架阵营"></a>Pro-code 框架阵营</h3><p><strong>LangChain</strong> 和 <strong>LangGraph</strong> 同属一个生态，但定位完全不同，不应混为一谈：</p><table><thead><tr><th align="left"></th><th align="left">LangChain（含 LCEL）</th><th align="left">LangGraph</th></tr></thead><tbody><tr><td align="left"><strong>定位</strong></td><td align="left">LLM 应用的<strong>组件工具箱</strong>，以链式调用（Chain）为核心</td><td align="left">独立库，基于<strong>有向图状态机</strong>，专为有状态、循环的 Agent 系统设计</td></tr><tr><td align="left"><strong>适合场景</strong></td><td align="left">线性工作流、标准 RAG Pipeline、工具调用</td><td align="left">复杂 Agent、Multi-Agent 协作、需要循环与回溯的推理系统</td></tr><tr><td align="left"><strong>控制粒度</strong></td><td align="left">中等，链式调用较为固定</td><td align="left">极细，完全控制每个节点的状态读写与路由逻辑</td></tr></tbody></table><blockquote><p><strong>关键结论</strong>：当你想用代码构建 Multi-Agent 系统时，正确的选择是 <strong>LangGraph</strong>，而非 LangChain（LangChain 本身并不特别适合 Multi-Agent）。</p></blockquote><hr><h2 id="核心维度深度对比"><a href="#核心维度深度对比" class="headerlink" title="核心维度深度对比"></a>核心维度深度对比</h2><table><thead><tr><th align="left">对比维度</th><th align="left">n8n &#x2F; Dify（低代码编排平台）</th><th align="left">LangChain &#x2F; LangGraph（代码级框架）</th></tr></thead><tbody><tr><td align="left"><strong>开发门槛</strong></td><td align="left"><strong>低</strong>。可视化拖拽，非研发人员（产品、运营）也能快速上手</td><td align="left"><strong>高</strong>。需要熟练掌握 Python，理解异步编程、面向对象等概念</td></tr><tr><td align="left"><strong>迭代速度</strong></td><td align="left"><strong>极快</strong>。标准 RAG 或带几个工具的 Agent，几十分钟内跑通</td><td align="left"><strong>较慢</strong>。初期需搭建基础架构、处理依赖、接口封装、测试等</td></tr><tr><td align="left"><strong>灵活性</strong></td><td align="left"><strong>受限</strong>。控制流和 Agent 推理循环被封装，底层逻辑难以修改</td><td align="left"><strong>无限</strong>。完全控制每次 LLM 调用、自定义解析器、循环机制、算法</td></tr><tr><td align="left"><strong>状态管理</strong></td><td align="left"><strong>黑盒或简单管理</strong>。复杂多分支状态、临时变量隔离时力不从心</td><td align="left"><strong>精确控制</strong>。LangGraph 本质是状态机，可精确定义全局 State 和节点间状态传递</td></tr><tr><td align="left"><strong>可观测性</strong></td><td align="left"><strong>内置，体验极佳</strong>。自带运行日志、可视化 Trace，每步的输入输出、Token 消耗一目了然</td><td align="left"><strong>需自行集成</strong>。通常引入 LangSmith、Phoenix 等第三方工具（注：LangGraph Platform 托管版已内置）</td></tr><tr><td align="left"><strong>SaaS 系统集成</strong></td><td align="left"><strong>n8n 天生优势</strong>。数百个 SaaS 集成，OAuth 授权极为方便</td><td align="left">需自己调用各 SaaS 的 API 文档，<strong>手写请求和鉴权代码</strong></td></tr><tr><td align="left"><strong>工程化能力</strong></td><td align="left"><strong>较弱</strong>。难以融入 CI&#x2F;CD，无法进行标准单元测试</td><td align="left"><strong>极强</strong>。代码直接进 Git，走 Code Review、自动化测试、CI&#x2F;CD 流水线</td></tr><tr><td align="left"><strong>Vendor Lock-in</strong></td><td align="left"><strong>高风险</strong>。工作流配置（JSON）与平台强绑定，难以迁移到其他平台</td><td align="left"><strong>无风险</strong>。开源代码完全自主，可随时迁移、替换任何组件</td></tr><tr><td align="left"><strong>部署与成本</strong></td><td align="left">社区版开源可自托管；云服务按使用量收费</td><td align="left">完全开源免费；LangGraph Platform 托管版按节点执行次数收费</td></tr><tr><td align="left"><strong>高并发与性能</strong></td><td align="left">受平台架构限制，高并发场景下扩展性有天花板</td><td align="left">完全自主控制并发、资源分配，可深度融入微服务架构</td></tr></tbody></table><hr><h2 id="选型决策树"><a href="#选型决策树" class="headerlink" title="选型决策树"></a>选型决策树</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">你的团队是否有 Python 研发能力？</span><br><span class="line">│</span><br><span class="line">├── 否 ──────────────────────────────────────►  Dify 或 n8n</span><br><span class="line">│                                                  │</span><br><span class="line">│                                        需要打通大量 SaaS？</span><br><span class="line">│                                        ├── 是 → n8n</span><br><span class="line">│                                        └── 否 → Dify</span><br><span class="line">│</span><br><span class="line">└── 是 → 当前处于 MVP / 快速验证阶段？</span><br><span class="line">          │</span><br><span class="line">          ├── 是 → 先用 Dify/n8n 跑通，待业务稳定后再重构</span><br><span class="line">          │</span><br><span class="line">          └── 否 → 逻辑是否复杂（循环、多分支、状态机）？</span><br><span class="line">                    │</span><br><span class="line">                    ├── 否（线性流程、标准 RAG）→ LangChain LCEL</span><br><span class="line">                    │</span><br><span class="line">                    └── 是 → 是否需要多个 Agent 协作？</span><br><span class="line">                              │</span><br><span class="line">                              ├── 否（单 Agent 复杂逻辑）→ LangGraph</span><br><span class="line">                              │</span><br><span class="line">                              └── 是（Multi-Agent）→</span><br><span class="line">                                    ├── 已深度使用 OpenAI → OpenAI Agents SDK</span><br><span class="line">                                    ├── 快速原型 / 角色驱动 → CrewAI</span><br><span class="line">                                    └── 生产级、需精确控制 → LangGraph</span><br></pre></td></tr></table></figure><hr><h2 id="各场景选型建议"><a href="#各场景选型建议" class="headerlink" title="各场景选型建议"></a>各场景选型建议</h2><h3 id="选择低代码编排平台的场景"><a href="#选择低代码编排平台的场景" class="headerlink" title="选择低代码编排平台的场景"></a>选择低代码编排平台的场景</h3><ol><li><strong>MVP 快速验证</strong>：想法刚成型，需要在几天内跑通一个 Demo。此时用 Dify&#x2F;n8n 省去大量基础架构工作。</li><li><strong>业务流程自动化</strong>：核心诉求是打通各个 SaaS 系统，AI 只是其中一个处理节点。<strong>n8n 是这个场景的王者</strong>，Dify 并不适合。</li><li><strong>团队以产品&#x2F;运营为主</strong>：缺乏资深 AI 后端研发能力，需要非技术人员也能维护。</li><li><strong>标准化 AI 应用</strong>：客服问答、知识库检索（RAG）、简单”单 Agent + 几项工具”调用，<strong>Dify 完全够用</strong>且极其稳定。</li><li><strong>低预算启动阶段</strong>：无法负担专职 AI 工程师的初创团队。</li></ol><h3 id="选择-Pro-code-框架的场景"><a href="#选择-Pro-code-框架的场景" class="headerlink" title="选择 Pro-code 框架的场景"></a>选择 Pro-code 框架的场景</h3><ol><li><strong>核心产品 &#x2F; 高并发系统</strong>：Agent 是公司核心产品，对响应延迟、并发处理、数据安全要求极高，必须深度融入现有微服务架构。</li><li><strong>复杂非标逻辑</strong>：需要 Human-in-the-loop（人工干预）、复杂条件循环、自定义 LLM 输出解析、特殊异常重试机制。</li><li><strong>严格的工程规范</strong>：需要 Code Review、单测、符合企业 CI&#x2F;CD 发布规范，有明确的版本管理需求。</li><li><strong>打造核心壁垒</strong>：平台封装无法满足需要针对垂类行业优化底层 Agent 推理算法的需求。</li><li><strong>规避供应商风险</strong>：对平台稳定性、数据主权有严格要求，不能接受 Vendor Lock-in。</li></ol><h3 id="何时从低代码平台迁移到代码框架？"><a href="#何时从低代码平台迁移到代码框架？" class="headerlink" title="何时从低代码平台迁移到代码框架？"></a>何时从低代码平台迁移到代码框架？</h3><p>以下任一触发点出现时，应考虑迁移：</p><ul><li>可视化画布的节点数量超过 <strong>20 个</strong>，维护成本开始超过收益</li><li>需要<strong>灰度发布</strong>或对 Agent 逻辑进行 A&#x2F;B 测试</li><li>需要接入企业内部<strong>权限系统</strong>（RBAC、SSO）做精细化控制</li><li>业务<strong>并发量</strong>达到平台瓶颈，出现稳定性问题</li><li>有多个团队需要在同一个 Agent 系统上<strong>并行开发</strong></li></ul><blockquote><p><strong>💡 混合方案（实战中最常见）</strong><br>初期用 Dify&#x2F;n8n 快速跑通业务逻辑和 Prompt，验证商业价值。当上述迁移触发点出现时，由研发团队用 LangGraph 将其重构成代码，并将原低代码平台保留用于非核心的辅助流程自动化（如通知推送、报表生成等）。</p></blockquote><hr><h2 id="Multi-Agent-系统应该用什么方案？"><a href="#Multi-Agent-系统应该用什么方案？" class="headerlink" title="Multi-Agent 系统应该用什么方案？"></a>Multi-Agent 系统应该用什么方案？</h2><p><strong>结论：Multi-Agent 是软件工程级别的挑战，必须使用 Pro-code 框架。</strong></p><h3 id="为什么不推荐用-Dify-n8n-搭建复杂-Multi-Agent？"><a href="#为什么不推荐用-Dify-n8n-搭建复杂-Multi-Agent？" class="headerlink" title="为什么不推荐用 Dify&#x2F;n8n 搭建复杂 Multi-Agent？"></a>为什么不推荐用 Dify&#x2F;n8n 搭建复杂 Multi-Agent？</h3><ol><li><strong>“面条危机”（Spaghetti Nodes）</strong>：Multi-Agent 的核心在于协作与循环流转。写手 Agent 写完 → 审查 Agent 打回 → 写手重写，这种多重循环在可视化画布上会让连线瞬间变得无法阅读和维护。</li><li><strong>状态共享困难</strong>：多个 Agent 协作需要”全局黑板（Shared State）”。在低代码平台中，把庞大的状态在各节点之间来回传递并进行局部修改，在架构上非常别扭。</li><li><strong>无法动态实例化 Agent</strong>：高级场景中，主管 Agent 需要根据任务拆分，动态召唤 N 个并发子 Agent 执行。可视化连线是<strong>静态</strong>的，无法做到运行时动态生成节点。</li></ol><h3 id="主流-Multi-Agent-框架横向对比"><a href="#主流-Multi-Agent-框架横向对比" class="headerlink" title="主流 Multi-Agent 框架横向对比"></a>主流 Multi-Agent 框架横向对比</h3><table><thead><tr><th align="left">框架</th><th align="left">定位</th><th align="left">控制力</th><th align="left">上手难度</th><th align="left">适合场景</th></tr></thead><tbody><tr><td align="left"><strong>LangGraph</strong></td><td align="left">有向图状态机，底层构建工具</td><td align="left">⭐⭐⭐⭐⭐</td><td align="left">较高</td><td align="left">生产级复杂 Multi-Agent，需精确控制路由、状态、断点恢复</td></tr><tr><td align="left"><strong>OpenAI Agents SDK</strong></td><td align="left">OpenAI 官方 Agent 编排库（2025 正式发布）</td><td align="left">⭐⭐⭐⭐</td><td align="left">低</td><td align="left">已深度使用 OpenAI 模型的团队，内置 Handoff、Guardrails、Tracing</td></tr><tr><td align="left"><strong>CrewAI</strong></td><td align="left">角色驱动（Role-based）的高层框架</td><td align="left">⭐⭐⭐</td><td align="left">低</td><td align="left">快速原型，”给 Agent 分配角色和目标，让他们协作”</td></tr><tr><td align="left"><strong>AutoGen（v0.4+）</strong></td><td align="left">基于 Actor 模型重构，事件驱动架构</td><td align="left">⭐⭐⭐⭐</td><td align="left">中等</td><td align="left">异步、分布式的 Multi-Agent 系统；v0.4 已大幅提升可控性</td></tr></tbody></table><blockquote><p>⚠️ <strong>AutoGen 重要说明</strong>：AutoGen v0.4（现名 <code>AutoGen-Core</code> + <code>AutoGen-AgentChat</code>）已进行完全重写，引入了 Actor 模型和事件驱动架构，可扩展性和可控性大幅提升，与早期版本”容易脱离控制”的印象已有显著差距。选型时请以最新版本为准。</p></blockquote><h3 id="为什么-LangGraph-最适合生产级-Multi-Agent？"><a href="#为什么-LangGraph-最适合生产级-Multi-Agent？" class="headerlink" title="为什么 LangGraph 最适合生产级 Multi-Agent？"></a>为什么 LangGraph 最适合生产级 Multi-Agent？</h3><ol><li><p><strong>天生契合 Agent 的计算模型</strong>：Multi-Agent 本质是一个<strong>有向图</strong>，节点既可以是 DAG（有向无环），也可以有循环（Cyclic）。LangGraph 的底层设计完全基于图计算，完美支持”循环、路由、打回重试”。</p></li><li><p><strong>精确的全局状态管理</strong>：允许定义一个结构化的全局 <code>State</code>（如包含 <code>messages</code>、<code>current_assignee</code>、<code>errors</code> 等字段）。每个 Agent 节点只负责读取并更新 State，彻底解决多智能体间的数据同步问题。</p></li><li><p><strong>Human-in-the-loop 优雅实现</strong>：在关键节点（如发送邮件前、扣款前）设置<strong>代码级断点（Interrupt）</strong>，将当前 State 持久化到数据库，等待人类确认后从原点恢复执行。这在低代码平台中极难实现。</p></li><li><p><strong>层级化子图（Hierarchical Sub-graphs）</strong>：可以将一组 Agent 封装成子图，再嵌套进上层图中。例如”研发团队子图”与”市场团队子图”协作，在工程组织上极为清晰。</p></li><li><p><strong>LangGraph Platform 补足了工程化短板</strong>：官方托管版本提供内置的持久化、API 暴露、Tracing 和 Checkpoint 恢复，使 LangGraph 在便利性上已向低代码平台大幅靠近，而不再需要完全从零搭建基础设施。</p></li></ol><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><ul><li><strong>单体 Agent 或线性工作流</strong>：用 Dify&#x2F;n8n，省去巨大麻烦；但注意 Dify 偏 AI 应用，n8n 偏流程自动化，按场景选择</li><li><strong>生产级、需深度工程化的 Agent</strong>：LangGraph 是当前工业界最成熟的底层框架</li><li><strong>已深度绑定 OpenAI</strong>：OpenAI Agents SDK 是低门槛但功能完备的官方选项，值得优先评估</li><li><strong>快速验证 Multi-Agent 原型</strong>：CrewAI 代码量少、上手极快，但不建议用于生产环境核心链路</li><li><strong>需要异步分布式 Multi-Agent</strong>：AutoGen v0.4+ 是值得重新评估的选项</li><li><strong>无论如何，都警惕 Vendor Lock-in</strong>：低代码平台在早期阶段是加速器，但应在架构设计上预留迁移出口</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;本文使用的代表性工具&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agent 编排平台（低代码）：&lt;strong&gt;n8n&lt;/strong&gt;（工作流自动化）、&lt;strong&gt;Dify&lt;/strong&gt;（LLM 应用平台）&lt;/li&gt;
&lt;</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>告别单一检索：BM25与稀疏向量深度对比，及RAG混合检索策略指南</title>
    <link href="https://www.silenceboy.com/2026/03/11/%E5%91%8A%E5%88%AB%E5%8D%95%E4%B8%80%E6%A3%80%E7%B4%A2%EF%BC%9ABM25%E4%B8%8E%E7%A8%80%E7%96%8F%E5%90%91%E9%87%8F%E6%B7%B1%E5%BA%A6%E5%AF%B9%E6%AF%94%EF%BC%8C%E5%8F%8ARAG%E6%B7%B7%E5%90%88%E6%A3%80%E7%B4%A2%E7%AD%96%E7%95%A5%E6%8C%87%E5%8D%97/"/>
    <id>https://www.silenceboy.com/2026/03/11/%E5%91%8A%E5%88%AB%E5%8D%95%E4%B8%80%E6%A3%80%E7%B4%A2%EF%BC%9ABM25%E4%B8%8E%E7%A8%80%E7%96%8F%E5%90%91%E9%87%8F%E6%B7%B1%E5%BA%A6%E5%AF%B9%E6%AF%94%EF%BC%8C%E5%8F%8ARAG%E6%B7%B7%E5%90%88%E6%A3%80%E7%B4%A2%E7%AD%96%E7%95%A5%E6%8C%87%E5%8D%97/</id>
    <published>2026-03-11T02:52:41.000Z</published>
    <updated>2026-03-11T07:19:43.853Z</updated>
    
    <content type="html"><![CDATA[<p>在检索增强生成（RAG）系统的构建中，开发者们常常面临一个残酷的现实：<strong>“检索质量决定了RAG的上限，而LLM只能决定它逼近这个上限的程度。”</strong> </p><p>过去的一两年里，基于稠密向量（Dense Embeddings）的语义检索成为了绝对的标配。然而，随着应用深入真实业务场景，稠密向量在面对<strong>专有名字、缩写、工业代码、或者是要求精准匹配的特定术语</strong>时，常常表现得力不从心。为了弥补这一缺陷，行业逐渐回归到“混合检索”（Hybrid Search）的架构上。</p><p>在构建混合检索时，我们往往需要在传统的 <strong>BM25</strong> 和现代的基于机器学习的 <strong>稀疏向量（Sparse Vectors，如 SPLADE）</strong> 之间做出选择。本文将为你深度拆解两者的技术差异，并教你如何在 RAG 系统中选择最适合的混合检索策略。</p><hr><h2 id="核心概念解析"><a href="#核心概念解析" class="headerlink" title="核心概念解析"></a>核心概念解析</h2><p>在探讨对比之前，我们先理清这两种“字面匹配”流派的底层逻辑。</p><h3 id="BM25：基于统计的传统检索之王"><a href="#BM25：基于统计的传统检索之王" class="headerlink" title="BM25：基于统计的传统检索之王"></a>BM25：基于统计的传统检索之王</h3><p>BM25 是一种经典的词袋模型（Bag-of-Words）排序算法，可以看作是 TF-IDF 的进化版。它通过评估查询词在文档中出现的频率（TF）、文档长度的惩罚（Length Normalization），以及词在整个语料库中的罕见程度（IDF）来计算相关性得分。BM25 真正超越 TF-IDF 的关键在于引入了两个可调参数：<strong>k1</strong>（词频饱和因子，通常取 1.2-2.0，防止词频线性无限放大相关性得分）和 <strong>b</strong>（长度归一化强度，取值 0-1，默认 0.75，b&#x3D;0 则完全不做长度惩罚），使召回效果对参数调整更具鲁棒性。</p><ul><li><strong>工作机制</strong>：完全基于精确的字面匹配。依靠倒排索引（Inverted Index）运行，速度极快。</li><li><strong>优势</strong>：开箱即用（无需训练）、计算资源消耗极低、对专有名词（如报错日志、特定产品型号、人名）匹配极其精准、具备极强的可解释性。</li><li><strong>劣势</strong>：存在 <strong>词汇不匹配（Vocabulary Mismatch）</strong> 问题。如果用户搜“汽车”，文档里写的是“轿车”，BM25 将完全无法召回。</li></ul><h3 id="稀疏向量：AI赋能的词法检索"><a href="#稀疏向量：AI赋能的词法检索" class="headerlink" title="稀疏向量：AI赋能的词法检索"></a>稀疏向量：AI赋能的词法检索</h3><p>稀疏向量本质上是将文本映射到一个极高维度（通常与词表大小一致，如3万维）的空间中，但其中绝大多数维度的值为 0。以 <strong>SPLADE</strong>（SParse Lexical AnD Expansion model）为代表的神经稀疏检索模型，通过类似 BERT 的掩码语言模型（MLM）来生成稀疏表示。</p><ul><li><strong>工作机制</strong>：不仅为文本中已有的词汇分配权重，还会进行<strong>上下文感知的词汇扩展（Term Expansion）</strong>。例如，输入“矢量数据库”，它可能会自动激活“向量搜索”、“相似度计算”、“高维空间”、“近似最近邻”、“embedding”等语义相关词汇的非零权重。</li><li><strong>优势</strong>：巧妙地结合了词法匹配和部分语义能力，自动解决了同义词和词汇不匹配问题，在公共数据集（如 MS MARCO）的召回率上通常碾压 BM25。</li><li><strong>劣势</strong>：需要 GPU&#x2F;CPU 进行模型推理来生成向量，索引体积（因为扩展了词汇，非零元素更多）通常比 BM25 大，且存在领域偏移（Domain Shift）问题——如果在极其生僻的专有领域，它扩展的词汇可能反而带来噪音。</li><li><strong>代表模型</strong>：除 SPLADE 外，Elasticsearch 官方推出的 <strong>ELSER（Elastic Learned Sparse EncodeR）</strong> 也是工业界广泛采用的学习型稀疏模型，对于已经使用 ES 技术栈的团队，ELSER 可无缝集成，无需自建推理服务。</li></ul><hr><h2 id="BM25-vs-稀疏向量：多维对比总结"><a href="#BM25-vs-稀疏向量：多维对比总结" class="headerlink" title="BM25 vs 稀疏向量：多维对比总结"></a>BM25 vs 稀疏向量：多维对比总结</h2><p>为了更直观地展示，我们可以从以下几个维度对两者进行打分对比：</p><table><thead><tr><th align="left">对比维度</th><th align="left">BM25 (传统倒排索引)</th><th align="left">稀疏向量 (SPLADE等神经稀疏模型)</th></tr></thead><tbody><tr><td align="left"><strong>精确匹配能力</strong></td><td align="left">⭐️⭐️⭐️⭐️⭐️ (专攻精准匹配)</td><td align="left">⭐️⭐️⭐️⭐️ (保留了大部分精确匹配)</td></tr><tr><td align="left"><strong>语义&#x2F;同义词能力</strong></td><td align="left">⭐️ (极弱，依赖人工维护同义词典)</td><td align="left">⭐️⭐️⭐️⭐️ (自动进行上下文词汇扩展)</td></tr><tr><td align="left"><strong>计算开销 (生成阶段)</strong></td><td align="left">⭐️ (极低，仅需分词)</td><td align="left">⭐️⭐️⭐️⭐️ (较高，需运行Transformer模型推理)</td></tr><tr><td align="left"><strong>开箱即用性</strong></td><td align="left">⭐️⭐️⭐️⭐️⭐️ (无需任何训练，直接建索引)</td><td align="left">⭐️⭐️ (需要加载模型权重，特定领域可能需微调)</td></tr><tr><td align="left"><strong>可解释性</strong></td><td align="left">⭐️⭐️⭐️⭐️⭐️ (完全透明，权重可溯源)</td><td align="left">⭐️⭐️⭐️ (非零维度对应真实词汇，但扩展词可能出乎意料)</td></tr><tr><td align="left"><strong>生僻领域适应性</strong></td><td align="left">⭐️⭐️⭐️⭐️ (生词也是词，直接匹配即可)</td><td align="left">⭐️⭐️ (受限于预训练语料，未见过的行业黑话扩展效果差)</td></tr><tr><td align="left"><strong>查询阶段延迟</strong></td><td align="left">⭐️⭐️⭐️⭐️⭐️ (极低，倒排索引直接命中，通常 &lt; 10ms)</td><td align="left">⭐️⭐️⭐️⭐️ (稍高于BM25，但借助WAND等稀疏索引算法仍较快)</td></tr></tbody></table><hr><h2 id="RAG-系统中的混合检索策略选择"><a href="#RAG-系统中的混合检索策略选择" class="headerlink" title="RAG 系统中的混合检索策略选择"></a>RAG 系统中的混合检索策略选择</h2><p>在 RAG 系统中，“混合检索”通常意味着 <strong>“语义检索（稠密向量 Dense Embedding） + 词法检索（BM25 或 稀疏向量）”</strong> 的组合。通过如 RRF（Reciprocal Rank Fusion，倒数秩融合）或线性加权（Alpha Weighting）将两者结果融合，可以取长补短。两种融合方式各有侧重：</p><ul><li><strong>RRF</strong> 只依赖排名而非绝对分值，天然免疫不同来源分数量纲不一致的问题，鲁棒性强，是大多数场景的默认首选；</li><li><strong>Alpha Weighting</strong> 允许手动分配各路权重比例，但必须先对各路分数做 Min-Max 归一化处理，否则量纲差异会导致效果劣于 RRF。</li></ul><p>那么，作为架构师或开发者，应该如何选择混合策略？</p><h3 id="策略-1：稠密向量-BM25"><a href="#策略-1：稠密向量-BM25" class="headerlink" title="策略 1：稠密向量 + BM25"></a>策略 1：稠密向量 + BM25</h3><p><strong>🔥 适用场景：通用 RAG、高频实时搜索、极度垂直的细分领域（医疗、法律、代码库）。</strong></p><p>这是目前<strong>工业界最成熟、性价比最高、也是默认的黄金组合</strong>。</p><ul><li><strong>为什么选它</strong>：稠密向量负责解决同义词、语义泛化问题；BM25 作为最坚实的兜底方案，确保用户输入产品 ID、具体数字、报错代码时能够 100% 命中。</li><li><strong>技术栈支持</strong>：目前主流搜索引擎（如 Elasticsearch、OpenSearch）和专用向量数据库（如 Qdrant、Weaviate，以及原生支持稀疏向量的 Milvus 2.5）均已直接或间接原生支持这种架构。</li><li><strong>缺点</strong>：如果文档结构极度口语化，且用户搜索的词非常非标，BM25 这路的召回可能会失效。</li></ul><h3 id="策略-2：稠密向量-稀疏向量"><a href="#策略-2：稠密向量-稀疏向量" class="headerlink" title="策略 2：稠密向量 + 稀疏向量"></a>策略 2：稠密向量 + 稀疏向量</h3><p><strong>🔥 适用场景：追求极致召回率、公共知识问答系统、计算资源充足的团队。</strong></p><ul><li><strong>为什么选它</strong>：这是一种“双模型驱动”的架构。SPLADE 作为稀疏向量，在语义与词法之间架起了一座桥梁。在很多测评（如 BEIR）中，这种组合能刷出极高的 NDCG 和 Recall 分数。它免去了人工维护“停用词表”和“同义词典”的繁琐操作。</li><li><strong>缺点</strong>：存在能力重叠（Dense和SPLADE都在解决语义和同义词问题），且你需要维护两个推理 Pipeline。当系统 QPS 极高时，SPLADE 的推理成本和内存占用是不容忽视的隐患。</li></ul><h3 id="策略-3：三路召回-Dense-BM25-Sparse"><a href="#策略-3：三路召回-Dense-BM25-Sparse" class="headerlink" title="策略 3：三路召回 (Dense + BM25 + Sparse)"></a>策略 3：三路召回 (Dense + BM25 + Sparse)</h3><p><strong>🔥 适用场景：不差钱的巨型企业应用、对查全率要求达到苛刻级别的场景。</strong></p><ul><li><strong>前沿实践</strong>：IBM 近期的研究和某些原生 AI 数据库（如 Infinity）提出了多维度的 N 路召回机制。研究表明，稠密向量（捕获深层语义）、稀疏向量（捕获泛化关键词和局部上下文）、以及原始 BM25（确保纯正的字面不丢失）的 3 路融合，能够产生当前最鲁棒的检索效果。</li><li><strong>缺点</strong>：架构极度复杂，延迟可能增加，且调参（融合权重）难度呈指数级上升。</li></ul><hr><h2 id="给开发者的落地建议"><a href="#给开发者的落地建议" class="headerlink" title="给开发者的落地建议"></a>给开发者的落地建议</h2><p>如果你正在准备重构你们团队的 RAG 检索链路，请参考以下决策流：</p><ol><li><strong>从 Baseline 开始</strong>：无脑选择 <strong>Dense Embedding + BM25 + RRF 融合</strong>。这个组合能够以最低的开发成本，解决 80% 的检索不匹配问题。</li><li><strong>评估领域词汇</strong>：如果你的文档里全是公司内部代号、特定机器型号（例如 “TX-9902”、”NullPointerException”），坚守 BM25。因为 SPLADE 等稀疏模型根本没见过这些词，强行词汇扩展反而会引入噪声破坏检索。</li><li><strong>何时切换到稀疏向量 (SPLADE)</strong>：如果你的业务是面向 C 端的通用知识库，用户提问非常多样化（经常用各种大白话去搜专业的文档），且你不想花精力去维护庞大的同义词库（Synonym Dictionary），此时引入 SPLADE 替换 BM25，会带来肉眼可见的体验提升。</li><li><strong>关注基础设施能力</strong>：引入前必须考虑底层数据库是否支持。例如，Milvus 2.5 引入了原生稀疏浮点向量（Sparse Float Vector）的存储与索引支持，Elasticsearch 和 OpenSearch 也推出了基于 ELSER 的 Neural Sparse Search。选择与你当前基建对齐的方案，能避免系统架构变得过于臃肿。</li></ol><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>在 RAG 的世界里，并没有“一招鲜吃遍天”的银弹。BM25 并不是过时的老古董，它是工程上最优雅的词法兜底方案；而稀疏向量也不是华而不实的玩具，它是 AI 时代对词法检索的又一次重要升级。深刻理解业务场景中的“Query 长什么样”，才是选择检索策略的唯一真理。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在检索增强生成（RAG）系统的构建中，开发者们常常面临一个残酷的现实：&lt;strong&gt;“检索质量决定了RAG的上限，而LLM只能决定它逼近这个上限的程度。”&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;过去的一两年里，基于稠密向量（Dense Embeddings）的语义检索成为了绝</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>RAG系统中如何实现租户隔离</title>
    <link href="https://www.silenceboy.com/2026/03/03/RAG%E7%B3%BB%E7%BB%9F%E4%B8%AD%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%A7%9F%E6%88%B7%E9%9A%94%E7%A6%BB/"/>
    <id>https://www.silenceboy.com/2026/03/03/RAG%E7%B3%BB%E7%BB%9F%E4%B8%AD%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E7%A7%9F%E6%88%B7%E9%9A%94%E7%A6%BB/</id>
    <published>2026-03-03T03:15:33.000Z</published>
    <updated>2026-03-03T07:57:02.334Z</updated>
    
    <content type="html"><![CDATA[<p>随着企业级 AI 应用的爆发，RAG（Retrieval-Augmented Generation）已成为连接私有数据与大模型的标准架构。然而，当我们将 RAG 从 Demo 推向 SaaS 生产环境时，最大的挑战并非来自模型的智能程度，而是 <strong>数据安全与多租户隔离</strong>。</p><p>想象一下，用户 A 询问”我的合同条款是什么？”，RAG 系统检索到的却是用户 B 的工资单。这不仅是 Bug，更是灾难性的合规事故。</p><p>如何在保证系统性能和成本效益的同时，实现”滴水不漏”的严格多租户隔离？本文将深入拆解 RAG 系统中多租户隔离的技术手段与最佳实践。</p><hr><h2 id="RAG-的隔离维度"><a href="#RAG-的隔离维度" class="headerlink" title="RAG 的隔离维度"></a>RAG 的隔离维度</h2><p>在传统 CRUD 应用中，多租户隔离通常通过数据库字段 <code>tenant_id</code> 解决。但在 RAG 系统中，链路更长、组件更复杂，隔离需要在以下三个层面同时生效：</p><ol><li><strong>存储层（Storage Layer）：</strong> 向量数据库与原始文档的物理或逻辑隔离。</li><li><strong>检索层（Retrieval Layer）：</strong> 确保语义搜索范围严格限定在租户命名空间内。</li><li><strong>生成层（Generation Layer）：</strong> 防止 Prompt 注入导致的跨租户数据泄露，以及上下文污染。</li></ol><p>下图展示了一次多租户 RAG 请求的完整链路，以及隔离机制发生的关键节点：</p><pre class="mermaid">sequenceDiagram    actor User as 用户 (Tenant A)    participant GW as API Gateway<br/>(Auth Middleware)    participant App as RAG Application    participant VDB as Vector DB<br/>(Namespace: tenant_a)    participant ObjStore as Object Storage<br/>(Path Prefix: /tenant_a/)    participant LLM as LLM Service    User->>GW: 发送查询请求 (携带 JWT Token)    GW->>GW: 验证身份，解析 tenant_id    GW->>App: 注入 tenant_id 到请求上下文    App->>App: 对查询文本进行 Embedding    App->>VDB: similarity_search(query_vec, namespace=tenant_a)    VDB-->>App: 返回相关 Chunks（严格限于 Tenant A 数据）    App->>ObjStore: 按需获取原始文档 (路径前缀: /tenant_a/)    ObjStore-->>App: 返回原始内容    App->>App: PII 过滤 & 组装 Prompt    App->>LLM: 发送 Prompt（含 System 隔离指令）    LLM-->>App: 生成回答    App->>App: 写入审计日志（tenant_id + query + doc_ids）    App-->>User: 返回最终响应</pre><hr><h2 id="技术方案详解"><a href="#技术方案详解" class="headerlink" title="技术方案详解"></a>技术方案详解</h2><p>我们将隔离方案由轻量到严格分为三个等级，企业应根据业务场景（如：内部工具 vs 金融级 SaaS）选择合适的策略。</p><h3 id="策略一：逻辑隔离-——-经济高效"><a href="#策略一：逻辑隔离-——-经济高效" class="headerlink" title="策略一：逻辑隔离 —— 经济高效"></a>策略一：逻辑隔离 —— 经济高效</h3><p>这是最常见的 SaaS 模式。所有租户的数据存储在同一个向量索引（Index）或集合（Collection）中，通过元数据（Metadata）进行区分。</p><ul><li><strong>实现方式：</strong><ul><li>在 Data Ingestion（数据写入）阶段，为每个 Document Chunk 强制附加 <code>tenant_id</code> 标签。</li><li>在 Query（检索）阶段，通过向量数据库的 <code>filter</code> 参数强制进行预过滤（Pre-filtering）。</li></ul></li><li><strong>代码示例 (伪代码)：</strong><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 写入时</span></span><br><span class="line">vector_store.add_documents(</span><br><span class="line">    texts=[<span class="string">&quot;合同内容...&quot;</span>], </span><br><span class="line">    metadatas=[&#123;<span class="string">&quot;tenant_id&quot;</span>: <span class="string">&quot;tenant_001&quot;</span>, <span class="string">&quot;doc_type&quot;</span>: <span class="string">&quot;contract&quot;</span>&#125;]</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 检索时（必须强制注入 Filter）</span></span><br><span class="line">results = vector_store.similarity_search(</span><br><span class="line">    query=<span class="string">&quot;我的合同规定&quot;</span>,</span><br><span class="line">    <span class="built_in">filter</span>=&#123;<span class="string">&quot;tenant_id&quot;</span>: <span class="string">&quot;tenant_001&quot;</span>&#125; <span class="comment"># 核心隔离逻辑</span></span><br><span class="line">)</span><br></pre></td></tr></table></figure></li><li><strong>优点：</strong> 资源利用率极高，运维成本低，无需频繁创建资源。</li><li><strong>缺点：</strong> 属于”软隔离”。如果代码逻辑出现 Bug（如忘记加 Filter），会导致数据泄露。且当 Collection&#x2F;Index 的数据量达到亿级时，过滤性能可能下降（需要在检索结果上做后置过滤，降低 ANN 召回效率）。</li><li><strong>适用场景：</strong> 中小企业 SaaS，非敏感数据场景。</li></ul><h3 id="策略二：命名空间隔离-——-性能平衡"><a href="#策略二：命名空间隔离-——-性能平衡" class="headerlink" title="策略二：命名空间隔离 —— 性能平衡"></a>策略二：命名空间隔离 —— 性能平衡</h3><p>许多现代向量数据库提供了 Namespace 或 Partition 的概念，这是一种介于逻辑和物理之间的隔离。不同数据库的实现机制略有差异：</p><ul><li><p><strong>Pinecone Namespace：</strong> 在同一 Index 的底层存储中按 Namespace 做数据分片，查询时必须指定 Namespace，引擎仅在该分片内执行 ANN 搜索，有效缩小搜索范围。</p></li><li><p><strong>Milvus Partition：</strong> 将一个 Collection 物理切分为多个分区，查询时加载指定分区，资源隔离效果更明显，内存占用可精确控制。</p></li><li><p><strong>Weaviate Tenant（Multi-tenancy API）：</strong> 从 v1.20 起原生支持 Multi-tenancy，每个租户的数据存储在独立的磁盘分片上，可按需冷热切换（active&#x2F;inactive）。</p></li><li><p><strong>实现方式：</strong></p><ul><li>在同一个物理索引（Index）下，为每个租户创建一个独立的 Namespace。</li><li>查询时必须指定 Namespace，否则无法访问任何数据，这一约束由数据库层强制执行。</li></ul></li><li><p><strong>技术优势：</strong></p><ul><li><strong>查询速度：</strong> 引擎只需在特定分区内进行 ANN（近似最近邻）搜索，有效减少参与计算的向量数量。</li><li><strong>安全性：</strong> 比纯元数据过滤更安全，查询范围由数据库层而非应用层决定。</li></ul></li><li><p><strong>适用场景：</strong> 大多数企业级 RAG 应用，租户数量在千&#x2F;万级别。</p></li></ul><h3 id="策略三：物理隔离-——-极致安全"><a href="#策略三：物理隔离-——-极致安全" class="headerlink" title="策略三：物理隔离 —— 极致安全"></a>策略三：物理隔离 —— 极致安全</h3><p>为每个租户创建独立的 Collection，甚至独立的 Database 实例&#x2F;集群。</p><ul><li><strong>实现方式：</strong><ul><li>租户 A 使用 <code>Collection_A</code>，租户 B 使用 <code>Collection_B</code>。</li><li>配合 RBAC（基于角色的访问控制），为不同租户分配不同的数据库连接凭证（User&#x2F;Password）。</li></ul></li><li><strong>优点：</strong> 物理层面的”硬隔离”。即使应用层代码写错，也不可能查到隔壁租户的数据。支持针对大客户做独立的资源扩容和性能调优。</li><li><strong>缺点：</strong> <ul><li><strong>资源浪费：</strong> 即使是空闲租户也会占用索引内存资源。</li><li><strong>运维噩梦：</strong> 维护数万个 Collection 的 Schema 变更和版本升级非常困难；同时需要管理大量数据库连接，连接池爆炸问题需要专门的连接代理（如 PgBouncer 类方案）来处理。</li><li><strong>冷启动问题：</strong> 新租户需要动态创建资源，有一定初始化延迟。</li></ul></li><li><strong>适用场景：</strong> 银行、医疗、政府项目，或付费意愿极高的 VIP 客户。</li></ul><hr><h2 id="进阶：构建零信任-RAG-架构"><a href="#进阶：构建零信任-RAG-架构" class="headerlink" title="进阶：构建零信任 RAG 架构"></a>进阶：构建零信任 RAG 架构</h2><p>仅仅依靠数据库隔离是不够的，我们需要在架构层面实施纵深防御。</p><h3 id="应用层的中间件拦截"><a href="#应用层的中间件拦截" class="headerlink" title="应用层的中间件拦截"></a>应用层的中间件拦截</h3><p>不要在每个业务函数里手动写 <code>filter=&#123;&quot;tenant_id&quot;: ...&#125;</code>，这是 Bug 的温床。<br>应在 Service 层或 DAO 层实现拦截器：</p><ul><li><strong>Context 传递：</strong> 从 HTTP Request Header（JWT）中解析 <code>tenant_id</code>，并存入请求上下文。在 Python 中，同步服务使用 <code>threading.local()</code>，异步服务（FastAPI&#x2F;asyncio）应使用 <code>contextvars.ContextVar</code> 以避免协程间上下文串扰。</li><li><strong>自动注入：</strong> 封装向量数据库 Client，重写 <code>search</code> 方法，自动从上下文读取 <code>tenant_id</code> 并注入过滤条件，业务代码完全无感知。</li></ul><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> contextvars</span><br><span class="line"><span class="keyword">from</span> functools <span class="keyword">import</span> wraps</span><br><span class="line"></span><br><span class="line"><span class="comment"># 请求上下文变量（适用于 asyncio）</span></span><br><span class="line">_current_tenant: contextvars.ContextVar[<span class="built_in">str</span>] = contextvars.ContextVar(<span class="string">&quot;current_tenant&quot;</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">class</span> <span class="title class_">TenantAwareVectorStore</span>:</span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">__init__</span>(<span class="params">self, client</span>):</span><br><span class="line">        <span class="variable language_">self</span>._client = client</span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">search</span>(<span class="params">self, query_vec, **kwargs</span>):</span><br><span class="line">        tenant_id = _current_tenant.get()  <span class="comment"># 自动从上下文获取，无需调用方传入</span></span><br><span class="line">        <span class="keyword">return</span> <span class="variable language_">self</span>._client.search(query_vec, <span class="built_in">filter</span>=&#123;<span class="string">&quot;tenant_id&quot;</span>: tenant_id&#125;, **kwargs)</span><br></pre></td></tr></table></figure><h3 id="原始文档存储隔离"><a href="#原始文档存储隔离" class="headerlink" title="原始文档存储隔离"></a>原始文档存储隔离</h3><p>RAG 系统中除向量数据库外，还需存储原始文档（PDF、Word 等）用于引用或 Re-ranking。对象存储（如 S3、OSS）的隔离同样不可忽视：</p><ul><li><strong>路径前缀隔离：</strong> 所有文档写入 <code>s3://your-bucket/&#123;tenant_id&#125;/...</code>，通过 IAM Policy 或 Presigned URL 限制跨前缀访问。</li><li><strong>独立 Bucket（高安全）：</strong> 为 VIP 租户分配独立 Bucket，配置独立的加密 Key 和访问策略，满足 GDPR&#x2F;数据本地化合规要求。</li><li><strong>删除联动：</strong> 租户注销时，向量数据和原始文档需要同步清理，建议通过任务队列异步执行，并记录清理审计日志。</li></ul><h3 id="密钥管理"><a href="#密钥管理" class="headerlink" title="密钥管理"></a>密钥管理</h3><p>针对高敏感场景，可以结合加密技术：</p><ul><li><strong>静态加密（at-rest encryption）：</strong> 每个租户拥有独立的数据加密 Key（DEK），DEK 由租户自己的主密钥（KEK）加密后存储，即 BYOK 模式。云厂商（AWS KMS、阿里云 KMS）原生支持此模式。</li><li><strong>向量层加密：</strong> 向量本身理论上难以精确还原原文，但在极高安全等级下，仍需关注成员推断攻击（Membership Inference Attack）风险。高安全场景可在向量入库前结合租户 Key 进行加盐混淆（需定制算法，成本较高，需权衡必要性）。</li></ul><h3 id="LLM-上下文隔离"><a href="#LLM-上下文隔离" class="headerlink" title="LLM 上下文隔离"></a>LLM 上下文隔离</h3><p>虽然 LLM 本身是无状态的，但必须防止 Prompt 注入攻击窃取上下文。</p><ul><li><strong>系统提示词（System Prompt）：</strong> 明确指令模型”仅使用提供的上下文回答，严禁通过已知训练数据回答其他租户信息”。</li><li><strong>PII 过滤：</strong> 在将检索到的 Chunks 发送给 LLM 之前，使用 NLP 模型识别并掩盖敏感信息（如身份证号、手机号），防止其出现在公有云 LLM 的服务日志中。</li></ul><h3 id="审计日志"><a href="#审计日志" class="headerlink" title="审计日志"></a>审计日志</h3><p>审计日志是合规（GDPR、SOC2、等保）的刚性要求，也是事后溯源的唯一依据：</p><ul><li><strong>记录内容：</strong> 每次检索应记录 <code>tenant_id</code>、<code>user_id</code>、查询原文（或其哈希）、命中的 <code>doc_id</code> 列表、响应时间、时间戳。</li><li><strong>存储要求：</strong> 审计日志必须与业务数据物理隔离，写入专用的不可篡改存储（如 append-only 日志系统），并设置合理的保留期（通常 ≥ 6 个月）。</li><li><strong>异常告警：</strong> 对异常访问模式（如高频跨文档访问、深夜批量查询）设置实时告警，及早发现数据侦察行为。</li></ul><h3 id="速率限制与配额管理"><a href="#速率限制与配额管理" class="headerlink" title="速率限制与配额管理"></a>速率限制与配额管理</h3><p>多租户场景下，”嘈杂邻居”（Noisy Neighbor）问题会导致一个租户的突发流量影响其他租户的服务质量：</p><ul><li><strong>Query 级限流：</strong> 在 API Gateway 层按 <code>tenant_id</code> 做请求速率限制（如 Token Bucket 算法）。</li><li><strong>存储配额：</strong> 限制每个租户可写入的向量数量上限，防止恶意或失控的数据写入。</li><li><strong>资源隔离（高级）：</strong> 对 VIP 租户分配独立的推理资源（如独立 Embedding 服务实例），从根本上消除资源竞争。</li></ul><hr><h2 id="架构选型建议表"><a href="#架构选型建议表" class="headerlink" title="架构选型建议表"></a>架构选型建议表</h2><table><thead><tr><th align="left">维度</th><th align="left">方案 A：元数据过滤</th><th align="left">方案 B：命名空间&#x2F;分区</th><th align="left">方案 C：物理分库&#x2F;分表</th></tr></thead><tbody><tr><td align="left"><strong>隔离级别</strong></td><td align="left">低 (代码级)</td><td align="left">中 (数据库逻辑级)</td><td align="left">高 (资源级)</td></tr><tr><td align="left"><strong>成本</strong></td><td align="left">$</td><td align="left">$$</td><td align="left">$$$$</td></tr><tr><td align="left"><strong>性能</strong></td><td align="left">数据量大时下降</td><td align="left">稳定</td><td align="left">极佳 (无干扰)</td></tr><tr><td align="left"><strong>运维复杂度</strong></td><td align="left">低</td><td align="left">中</td><td align="left">极高</td></tr><tr><td align="left"><strong>推荐场景</strong></td><td align="left">免费用户、小微企业</td><td align="left">标准企业版 SaaS</td><td align="left">金融&#x2F;政企私有化部署</td></tr></tbody></table><hr><h2 id="最佳实践清单"><a href="#最佳实践清单" class="headerlink" title="最佳实践清单"></a>最佳实践清单</h2><p>在上线你的多租户 RAG 系统前，请核对以下几点：</p><ul><li><input disabled="" type="checkbox"> <strong>强制性 Filter：</strong> 是否在最底层的数据访问代码中强制注入了 Tenant ID？（通过中间件自动注入，禁止业务层手动传参）</li><li><input disabled="" type="checkbox"> <strong>索引设计：</strong> 向量数据库的索引是否对 <code>tenant_id</code> 字段建立了过滤索引？（能显著提升元数据过滤性能）</li><li><input disabled="" type="checkbox"> <strong>Object Storage：</strong> 原始文档存储是否也按租户进行了路径&#x2F;Bucket 隔离，并配置了相应的访问策略？</li><li><input disabled="" type="checkbox"> <strong>数据清理：</strong> 当租户注销时，是否有机制能通过 <code>tenant_id</code> 快速物理删除其所有向量数据与原始文档？</li><li><input disabled="" type="checkbox"> <strong>审计日志：</strong> 每次检索操作是否写入了包含 tenant_id、user_id、命中 doc_id 的不可篡改审计日志？</li><li><input disabled="" type="checkbox"> <strong>速率限制：</strong> 是否在 API Gateway 层按 <code>tenant_id</code> 配置了请求速率限制，防止嘈杂邻居问题？</li><li><input disabled="" type="checkbox"> <strong>渗透测试：</strong> 是否尝试过构造恶意 Query 试图检索其他租户数据？（包括 Prompt 注入攻击测试）</li><li><input disabled="" type="checkbox"> <strong>权限隔离：</strong> 知识库的管理接口（上传、删除）是否也校验了租户权限？</li></ul><hr><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>RAG 的多租户隔离不是一个单一的功能，而是一套贯穿数据存储、检索逻辑和模型交互的防御体系。在设计之初选择正确的隔离策略（通常推荐 <strong>命名空间&#x2F;分区隔离</strong> 作为默认起点），辅以应用层中间件、审计日志和速率限制，可以避免后期重构的巨大痛苦。</p><p><strong>安全是 AI 落地的基石，别让你的 RAG 系统成为数据泄露的漏洞。</strong></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;随着企业级 AI 应用的爆发，RAG（Retrieval-Augmented Generation）已成为连接私有数据与大模型的标准架构。然而，当我们将 RAG 从 Demo 推向 SaaS 生产环境时，最大的挑战并非来自模型的智能程度，而是 &lt;strong&gt;数据安全与多租</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>Lora为何能大幅减少训练参数</title>
    <link href="https://www.silenceboy.com/2026/02/12/Lora%E4%B8%BA%E4%BD%95%E8%83%BD%E5%A4%A7%E5%B9%85%E5%87%8F%E5%B0%91%E8%AE%AD%E7%BB%83%E5%8F%82%E6%95%B0/"/>
    <id>https://www.silenceboy.com/2026/02/12/Lora%E4%B8%BA%E4%BD%95%E8%83%BD%E5%A4%A7%E5%B9%85%E5%87%8F%E5%B0%91%E8%AE%AD%E7%BB%83%E5%8F%82%E6%95%B0/</id>
    <published>2026-02-12T06:53:30.000Z</published>
    <updated>2026-02-12T07:56:14.291Z</updated>
    
    <content type="html"><![CDATA[<p>LoRA (Low-Rank Adaptation，低秩自适应) 能大幅减少可训练参数的核心原因在于它利用了<strong>矩阵分解（Matrix Decomposition）<strong>和</strong>低秩（Low-Rank）假设</strong>。</p><p>简单来说，LoRA 不去更新模型原本庞大的所有参数，而是通过训练两个非常小的矩阵来模拟参数的变化。</p><p>以下是详细的原理拆解：</p><h2 id="核心思想：冻结主干-旁路更新"><a href="#核心思想：冻结主干-旁路更新" class="headerlink" title="核心思想：冻结主干 + 旁路更新"></a>核心思想：冻结主干 + 旁路更新</h2><p>在传统的全量微调（Full Fine-tuning）中，如果预训练模型有一个权重矩阵 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="2.371ex" height="1.595ex" role="img" focusable="false" viewBox="0 -683 1048 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g></g></svg></mjx-container>，我们需要更新这个矩阵中的每一个数字。</p><ul><li><strong>全量微调：</strong> <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.357ex;" xmlns="http://www.w3.org/2000/svg" width="19.621ex" height="1.977ex" role="img" focusable="false" viewBox="0 -716 8672.4 873.8"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="TeXAtom" transform="translate(977,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D45B" d="M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mi" transform="translate(600,0)"><path data-c="1D452" d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z"></path></g><g data-mml-node="mi" transform="translate(1066,0)"><path data-c="1D464" d="M580 385Q580 406 599 424T641 443Q659 443 674 425T690 368Q690 339 671 253Q656 197 644 161T609 80T554 12T482 -11Q438 -11 404 5T355 48Q354 47 352 44Q311 -11 252 -11Q226 -11 202 -5T155 14T118 53T104 116Q104 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 293 29 315T52 366T96 418T161 441Q204 441 227 416T250 358Q250 340 217 250T184 111Q184 65 205 46T258 26Q301 26 334 87L339 96V119Q339 122 339 128T340 136T341 143T342 152T345 165T348 182T354 206T362 238T373 281Q402 395 406 404Q419 431 449 431Q468 431 475 421T483 402Q483 389 454 274T422 142Q420 131 420 107V100Q420 85 423 71T442 42T487 26Q558 26 600 148Q609 171 620 213T632 273Q632 306 619 325T593 357T580 385Z"></path></g></g></g><g data-mml-node="mo" transform="translate(2564.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="msub" transform="translate(3620.6,0)"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="TeXAtom" transform="translate(977,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D45C" d="M201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120Z"></path></g><g data-mml-node="mi" transform="translate(485,0)"><path data-c="1D459" d="M117 59Q117 26 142 26Q179 26 205 131Q211 151 215 152Q217 153 225 153H229Q238 153 241 153T246 151T248 144Q247 138 245 128T234 90T214 43T183 6T137 -11Q101 -11 70 11T38 85Q38 97 39 102L104 360Q167 615 167 623Q167 626 166 628T162 632T157 634T149 635T141 636T132 637T122 637Q112 637 109 637T101 638T95 641T94 647Q94 649 96 661Q101 680 107 682T179 688Q194 689 213 690T243 693T254 694Q266 694 266 686Q266 675 193 386T118 83Q118 81 118 75T117 65V59Z"></path></g><g data-mml-node="mi" transform="translate(783,0)"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g></g></g><g data-mml-node="mo" transform="translate(5791.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(6791.4,0)"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(7624.4,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g></g></svg></mjx-container>。我们需要学习完整的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="4.256ex" height="1.67ex" role="img" focusable="false" viewBox="0 -716 1881 738"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g></g></svg></mjx-container>（参数更新量）。</li></ul><p>LoRA 的做法是：</p><ol><li><strong>冻结</strong>预训练模型原本的权重 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.357ex;" xmlns="http://www.w3.org/2000/svg" width="4.408ex" height="1.902ex" role="img" focusable="false" viewBox="0 -683 1948.4 840.8"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="TeXAtom" transform="translate(977,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D45C" d="M201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120Z"></path></g><g data-mml-node="mi" transform="translate(485,0)"><path data-c="1D459" d="M117 59Q117 26 142 26Q179 26 205 131Q211 151 215 152Q217 153 225 153H229Q238 153 241 153T246 151T248 144Q247 138 245 128T234 90T214 43T183 6T137 -11Q101 -11 70 11T38 85Q38 97 39 102L104 360Q167 615 167 623Q167 626 166 628T162 632T157 634T149 635T141 636T132 637T122 637Q112 637 109 637T101 638T95 641T94 647Q94 649 96 661Q101 680 107 682T179 688Q194 689 213 690T243 693T254 694Q266 694 266 686Q266 675 193 386T118 83Q118 81 118 75T117 65V59Z"></path></g><g data-mml-node="mi" transform="translate(783,0)"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g></g></g></g></g></svg></mjx-container>（不参与训练，不占梯度显存）。</li><li>在旁边增加一个“旁路”来模拟变化量 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="4.256ex" height="1.67ex" role="img" focusable="false" viewBox="0 -716 1881 738"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g></g></svg></mjx-container>。</li></ol><h2 id="数学原理：矩阵分解"><a href="#数学原理：矩阵分解" class="headerlink" title="数学原理：矩阵分解"></a>数学原理：矩阵分解</h2><p>这是 LoRA 省参数的关键。</p><p>假设模型某一层权重的维度是 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="5.121ex" height="1.595ex" role="img" focusable="false" viewBox="0 -694 2263.4 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mo" transform="translate(742.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(1742.4,0)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g></svg></mjx-container>（例如 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="18.445ex" height="2.009ex" role="img" focusable="false" viewBox="0 -694 8152.8 888"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mo" transform="translate(797.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1853.6,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z" transform="translate(1000,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1500,0)"></path></g><g data-mml-node="mo" transform="translate(3853.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mi" transform="translate(4298.2,0)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g><g data-mml-node="mo" transform="translate(5097,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(6152.8,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z" transform="translate(1000,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1500,0)"></path></g></g></g></svg></mjx-container>）。</p><ul><li>如果要学习完整的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="4.256ex" height="1.67ex" role="img" focusable="false" viewBox="0 -716 1881 738"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g></g></svg></mjx-container>，你需要训练 <strong><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="5.121ex" height="1.595ex" role="img" focusable="false" viewBox="0 -694 2263.4 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mo" transform="translate(742.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(1742.4,0)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g></svg></mjx-container></strong> 个参数。</li></ul><p>LoRA 假设：<strong>参数的更新量 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="4.256ex" height="1.67ex" role="img" focusable="false" viewBox="0 -716 1881 738"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g></g></svg></mjx-container> 不需要那么高的“秩”（Rank），它可以通过两个小矩阵相乘来近似。</strong></p><p>LoRA 将 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="4.256ex" height="1.67ex" role="img" focusable="false" viewBox="0 -716 1881 738"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g></g></svg></mjx-container> 分解为两个小矩阵 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.697ex" height="1.62ex" role="img" focusable="false" viewBox="0 -716 750 716"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.717ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 759 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g></g></g></svg></mjx-container> 的乘积：<br><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="13.452ex" height="1.805ex" role="img" focusable="false" viewBox="0 -716 5946 798"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(2158.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(3214.6,0)"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g><g data-mml-node="mo" transform="translate(4195.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(5196,0)"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g></g></svg></mjx-container></p><p>其中：</p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.717ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 759 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g></g></g></svg></mjx-container> 的维度是 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="4.963ex" height="1.595ex" role="img" focusable="false" viewBox="0 -694 2193.4 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mo" transform="translate(742.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(1742.4,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container></li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.697ex" height="1.62ex" role="img" focusable="false" viewBox="0 -716 750 716"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g></g></svg></mjx-container> 的维度是 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="4.965ex" height="1.595ex" role="img" focusable="false" viewBox="0 -694 2194.4 705"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(673.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(1673.4,0)"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g></g></g></svg></mjx-container></li><li><strong><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.02ex" height="1.025ex" role="img" focusable="false" viewBox="0 -442 451 453"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container> 是秩（Rank）</strong>，这是一个我们可以设定的超参数，通常非常小（例如 4, 8, 16, 64）。</li></ul><h2 id="直观的算账对比"><a href="#直观的算账对比" class="headerlink" title="直观的算账对比"></a>直观的算账对比</h2><p>让我们用具体的数字来感受一下差距。</p><p>假设一个 Transformer 层的维度 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="8.718ex" height="1.756ex" role="img" focusable="false" viewBox="0 -694 3853.6 776"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g><g data-mml-node="mo" transform="translate(797.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1853.6,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z" transform="translate(1000,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1500,0)"></path></g></g></g></svg></mjx-container>，我们也设 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="8.721ex" height="1.756ex" role="img" focusable="false" viewBox="0 -694 3854.6 776"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D458" d="M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z"></path></g><g data-mml-node="mo" transform="translate(798.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1854.6,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z" transform="translate(1000,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1500,0)"></path></g></g></g></svg></mjx-container>。我们设定 LoRA 的秩 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="5.169ex" height="1.692ex" role="img" focusable="false" viewBox="0 -666 2284.6 748"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mo" transform="translate(728.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1784.6,0)"><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z"></path></g></g></g></svg></mjx-container>。</p><ul><li><p><strong>全量微调（Full Fine-tuning）：</strong><br>我们需要训练 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="4.256ex" height="1.67ex" role="img" focusable="false" viewBox="0 -716 1881 738"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g></g></svg></mjx-container>，参数量 = <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="14.204ex" height="1.581ex" role="img" focusable="false" viewBox="0 -677 6278.2 699"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z" transform="translate(1000,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1500,0)"></path></g><g data-mml-node="mo" transform="translate(2222.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mn" transform="translate(3222.4,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z" transform="translate(1000,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1500,0)"></path></g><g data-mml-node="mo" transform="translate(5500.2,0)"><path data-c="2248" d="M55 319Q55 360 72 393T114 444T163 472T205 482Q207 482 213 482T223 483Q262 483 296 468T393 413L443 381Q502 346 553 346Q609 346 649 375T694 454Q694 465 698 474T708 483Q722 483 722 452Q722 386 675 338T555 289Q514 289 468 310T388 357T308 404T224 426Q164 426 125 393T83 318Q81 289 69 289Q55 289 55 319ZM55 85Q55 126 72 159T114 210T163 238T205 248Q207 248 213 248T223 249Q262 249 296 234T393 179L443 147Q502 112 553 112Q609 112 649 141T694 220Q694 249 708 249T722 217Q722 153 675 104T555 55Q514 55 468 76T388 123T308 170T224 192Q164 192 125 159T83 84Q80 55 69 55Q55 55 55 85Z"></path></g></g></g></svg></mjx-container> <strong>16,777,216 (1600万)</strong> 个参数。</p></li><li><p><strong>LoRA 微调：</strong><br>我们需要训练矩阵 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.697ex" height="1.62ex" role="img" focusable="false" viewBox="0 -716 750 716"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.717ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 759 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g></g></g></svg></mjx-container>。</p><ul><li>矩阵 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.697ex" height="1.62ex" role="img" focusable="false" viewBox="0 -716 750 716"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g></g></svg></mjx-container> (<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="8.422ex" height="1.581ex" role="img" focusable="false" viewBox="0 -677 3722.4 699"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z"></path></g><g data-mml-node="mo" transform="translate(722.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mn" transform="translate(1722.4,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z" transform="translate(1000,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1500,0)"></path></g></g></g></svg></mjx-container>) 参数量 = 32,768</li><li>矩阵 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.717ex" height="1.545ex" role="img" focusable="false" viewBox="0 -683 759 683"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g></g></g></svg></mjx-container> (<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="8.422ex" height="1.581ex" role="img" focusable="false" viewBox="0 -677 3722.4 699"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z" transform="translate(1000,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1500,0)"></path></g><g data-mml-node="mo" transform="translate(2222.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mn" transform="translate(3222.4,0)"><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z"></path></g></g></g></svg></mjx-container>) 参数量 = 32,768</li><li>总参数量 = <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.439ex;" xmlns="http://www.w3.org/2000/svg" width="18.479ex" height="1.968ex" role="img" focusable="false" viewBox="0 -676 8167.6 870"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(1000,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(1444.7,0)"><path data-c="37" d="M55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458Z"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(500,0)"></path><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(3166.9,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mn" transform="translate(4167.1,0)"><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z"></path><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(5167.1,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(5611.8,0)"><path data-c="37" d="M55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458Z"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(500,0)"></path><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(7389.6,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g></g></g></svg></mjx-container> <strong>65,536 (6.5万)</strong> 个参数。</li></ul></li></ul><p><strong>结论：</strong><br><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -1.991ex;" xmlns="http://www.w3.org/2000/svg" width="21.359ex" height="5.027ex" role="img" focusable="false" viewBox="0 -1342 9440.9 2222"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mfrac"><g data-mml-node="mrow" transform="translate(1192.3,676)"><g data-mml-node="mn"><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z"></path><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(1000,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(1444.7,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(500,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1000,0)"></path></g></g><g data-mml-node="mrow" transform="translate(220,-686)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(500,0)"></path></g><g data-mml-node="mo" transform="translate(1000,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(1444.7,0)"><path data-c="37" d="M55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458Z"></path><path data-c="37" d="M55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458Z" transform="translate(500,0)"></path><path data-c="37" d="M55 458Q56 460 72 567L88 674Q88 676 108 676H128V672Q128 662 143 655T195 646T364 644H485V605L417 512Q408 500 387 472T360 435T339 403T319 367T305 330T292 284T284 230T278 162T275 80Q275 66 275 52T274 28V19Q270 2 255 -10T221 -22Q210 -22 200 -19T179 0T168 40Q168 198 265 368Q285 400 349 489L395 552H302Q128 552 119 546Q113 543 108 522T98 479L95 458V455H55V458Z" transform="translate(1000,0)"></path></g><g data-mml-node="mo" transform="translate(2944.7,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="mn" transform="translate(3389.3,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(500,0)"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(1000,0)"></path></g></g><rect width="5089.3" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(5607.1,0)"><path data-c="2248" d="M55 319Q55 360 72 393T114 444T163 472T205 482Q207 482 213 482T223 483Q262 483 296 468T393 413L443 381Q502 346 553 346Q609 346 649 375T694 454Q694 465 698 474T708 483Q722 483 722 452Q722 386 675 338T555 289Q514 289 468 310T388 357T308 404T224 426Q164 426 125 393T83 318Q81 289 69 289Q55 289 55 319ZM55 85Q55 126 72 159T114 210T163 238T205 248Q207 248 213 248T223 249Q262 249 296 234T393 179L443 147Q502 112 553 112Q609 112 649 141T694 220Q694 249 708 249T722 217Q722 153 675 104T555 55Q514 55 468 76T388 123T308 170T224 192Q164 192 125 159T83 84Q80 55 69 55Q55 55 55 85Z"></path></g><g data-mml-node="mn" transform="translate(6662.9,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path><path data-c="2E" d="M78 60Q78 84 95 102T138 120Q162 120 180 104T199 61Q199 36 182 18T139 0T96 17T78 60Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(778,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1278,0)"></path><path data-c="33" d="M127 463Q100 463 85 480T69 524Q69 579 117 622T233 665Q268 665 277 664Q351 652 390 611T430 522Q430 470 396 421T302 350L299 348Q299 347 308 345T337 336T375 315Q457 262 457 175Q457 96 395 37T238 -22Q158 -22 100 21T42 130Q42 158 60 175T105 193Q133 193 151 175T169 130Q169 119 166 110T159 94T148 82T136 74T126 70T118 67L114 66Q165 21 238 21Q293 21 321 74Q338 107 338 175V195Q338 290 274 322Q259 328 213 329L171 330L168 332Q166 335 166 348Q166 366 174 366Q202 366 232 371Q266 376 294 413T322 525V533Q322 590 287 612Q265 626 240 626Q208 626 181 615T143 592T132 580H135Q138 579 143 578T153 573T165 566T175 555T183 540T186 520Q186 498 172 481T127 463Z" transform="translate(1778,0)"></path><path data-c="39" d="M352 287Q304 211 232 211Q154 211 104 270T44 396Q42 412 42 436V444Q42 537 111 606Q171 666 243 666Q245 666 249 666T257 665H261Q273 665 286 663T323 651T370 619T413 560Q456 472 456 334Q456 194 396 97Q361 41 312 10T208 -22Q147 -22 108 7T68 93T121 149Q143 149 158 135T173 96Q173 78 164 65T148 49T135 44L131 43Q131 41 138 37T164 27T206 22H212Q272 22 313 86Q352 142 352 280V287ZM244 248Q292 248 321 297T351 430Q351 508 343 542Q341 552 337 562T323 588T293 615T246 625Q208 625 181 598Q160 576 154 546T147 441Q147 358 152 329T172 282Q197 248 244 248Z" transform="translate(2278,0)"></path></g></g></g></svg></mjx-container><br><strong>LoRA 的参数量仅为全量微调的 0.4% 左右。</strong> 这就是为什么它能“大幅”减少参数。</p><h2 id="为什么这样做有效？"><a href="#为什么这样做有效？" class="headerlink" title="为什么这样做有效？"></a>为什么这样做有效？</h2><p>你可能会问：<em>“用这么少的参数去代替原来的大矩阵，效果不会变差吗？”</em></p><p>这基于一个理论发现（Aghajanyan et al. 2020）：<strong>大型预训练模型是过度参数化的，它们具有很低的“本征维度”（Intrinsic Dimension）。</strong></p><p>意思是说，虽然模型有千亿参数，但当我们为了某个特定任务（比如写代码或把英语翻译成中文）去微调它时，真正起作用、发生变化的参数空间其实非常小。所有的变化都可以被压缩到一个低秩空间里，而不会丢失太多信息。LoRA 正是利用了这个特性。</p><h2 id="LoRA-应用于模型的哪些层？"><a href="#LoRA-应用于模型的哪些层？" class="headerlink" title="LoRA 应用于模型的哪些层？"></a>LoRA 应用于模型的哪些层？</h2><p>在实际应用中，LoRA 并不是对模型的所有参数都进行低秩分解，而是有选择性地应用于特定的模块。</p><p><strong>在 Transformer 架构中，LoRA 通常应用于：</strong></p><ol><li><p><strong>Attention 层的投影矩阵</strong>：</p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.65ex;" xmlns="http://www.w3.org/2000/svg" width="3.589ex" height="2.195ex" role="img" focusable="false" viewBox="0 -683 1586.3 970.2"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mi" transform="translate(977,-150) scale(0.707)"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g></g></g></g></svg></mjx-container>（Query 投影矩阵）</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.339ex;" xmlns="http://www.w3.org/2000/svg" width="3.746ex" height="1.885ex" role="img" focusable="false" viewBox="0 -683 1655.6 833"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mi" transform="translate(977,-150) scale(0.707)"><path data-c="1D43E" d="M285 628Q285 635 228 637Q205 637 198 638T191 647Q191 649 193 661Q199 681 203 682Q205 683 214 683H219Q260 681 355 681Q389 681 418 681T463 682T483 682Q500 682 500 674Q500 669 497 660Q496 658 496 654T495 648T493 644T490 641T486 639T479 638T470 637T456 637Q416 636 405 634T387 623L306 305Q307 305 490 449T678 597Q692 611 692 620Q692 635 667 637Q651 637 651 648Q651 650 654 662T659 677Q662 682 676 682Q680 682 711 681T791 680Q814 680 839 681T869 682Q889 682 889 672Q889 650 881 642Q878 637 862 637Q787 632 726 586Q710 576 656 534T556 455L509 418L518 396Q527 374 546 329T581 244Q656 67 661 61Q663 59 666 57Q680 47 717 46H738Q744 38 744 37T741 19Q737 6 731 0H720Q680 3 625 3Q503 3 488 0H478Q472 6 472 9T474 27Q478 40 480 43T491 46H494Q544 46 544 71Q544 75 517 141T485 216L427 354L359 301L291 248L268 155Q245 63 245 58Q245 51 253 49T303 46H334Q340 37 340 35Q340 19 333 5Q328 0 317 0Q314 0 280 1T180 2Q118 2 85 2T49 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Z"></path></g></g></g></g></svg></mjx-container>（Key 投影矩阵）</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.375ex;" xmlns="http://www.w3.org/2000/svg" width="3.554ex" height="1.92ex" role="img" focusable="false" viewBox="0 -683 1570.8 848.6"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mi" transform="translate(977,-150) scale(0.707)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></g></svg></mjx-container>（Value 投影矩阵）</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.375ex;" xmlns="http://www.w3.org/2000/svg" width="3.544ex" height="1.92ex" role="img" focusable="false" viewBox="0 -683 1566.5 848.6"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mi" transform="translate(977,-150) scale(0.707)"><path data-c="1D442" d="M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z"></path></g></g></g></g></svg></mjx-container>（Output 投影矩阵）</li></ul></li><li><p><strong>前馈神经网络（FFN）层</strong>：</p><ul><li>第一个线性层（up projection）</li><li>第二个线性层（down projection）</li></ul></li></ol><p><strong>不同的配置策略：</strong></p><ul><li><strong>最小配置</strong>（节省参数）：只对 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.65ex;" xmlns="http://www.w3.org/2000/svg" width="3.589ex" height="2.195ex" role="img" focusable="false" viewBox="0 -683 1586.3 970.2"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mi" transform="translate(977,-150) scale(0.707)"><path data-c="1D444" d="M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z"></path></g></g></g></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.375ex;" xmlns="http://www.w3.org/2000/svg" width="3.554ex" height="1.92ex" role="img" focusable="false" viewBox="0 -683 1570.8 848.6"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mi" transform="translate(977,-150) scale(0.707)"><path data-c="1D449" d="M52 648Q52 670 65 683H76Q118 680 181 680Q299 680 320 683H330Q336 677 336 674T334 656Q329 641 325 637H304Q282 635 274 635Q245 630 242 620Q242 618 271 369T301 118L374 235Q447 352 520 471T595 594Q599 601 599 609Q599 633 555 637Q537 637 537 648Q537 649 539 661Q542 675 545 679T558 683Q560 683 570 683T604 682T668 681Q737 681 755 683H762Q769 676 769 672Q769 655 760 640Q757 637 743 637Q730 636 719 635T698 630T682 623T670 615T660 608T652 599T645 592L452 282Q272 -9 266 -16Q263 -18 259 -21L241 -22H234Q216 -22 216 -15Q213 -9 177 305Q139 623 138 626Q133 637 76 637H59Q52 642 52 648Z"></path></g></g></g></g></svg></mjx-container> 应用 LoRA</li><li><strong>标准配置</strong>（平衡效果）：对所有 Attention 投影矩阵（Q、K、V、O）应用 LoRA</li><li><strong>完整配置</strong>（最佳效果）：对 Attention 层和 FFN 层的所有线性层应用 LoRA</li></ul><p>选择不同的 <code>target_modules</code> 会直接影响：</p><ul><li>可训练参数的总量</li><li>微调效果的好坏</li><li>训练和推理的速度</li></ul><p>原论文的实验表明，<strong>只对 Attention 层的 Q 和 V 矩阵应用 LoRA 就能达到很好的效果</strong>，这也是最常用的配置。</p><h2 id="代码实现示例"><a href="#代码实现示例" class="headerlink" title="代码实现示例"></a>代码实现示例</h2><p>理论讲完后，让我们看看如何在实际项目中使用 LoRA。这里使用 Hugging Face 的 PEFT 库（Parameter-Efficient Fine-Tuning）。</p><h3 id="安装依赖"><a href="#安装依赖" class="headerlink" title="安装依赖"></a>安装依赖</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install transformers peft datasets accelerate</span><br></pre></td></tr></table></figure><h3 id="基础使用示例"><a href="#基础使用示例" class="headerlink" title="基础使用示例"></a>基础使用示例</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> transformers <span class="keyword">import</span> AutoModelForCausalLM, AutoTokenizer</span><br><span class="line"><span class="keyword">from</span> peft <span class="keyword">import</span> LoraConfig, get_peft_model, TaskType</span><br><span class="line"></span><br><span class="line"><span class="comment"># 1. 加载预训练模型</span></span><br><span class="line">model_name = <span class="string">"meta-llama/Llama-2-7b-hf"</span></span><br><span class="line">model = AutoModelForCausalLM.from_pretrained(</span><br><span class="line">    model_name,</span><br><span class="line">    torch_dtype=torch.float16,</span><br><span class="line">    device_map=<span class="string">"auto"</span></span><br><span class="line">)</span><br><span class="line">tokenizer = AutoTokenizer.from_pretrained(model_name)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 配置 LoRA</span></span><br><span class="line">lora_config = LoraConfig(</span><br><span class="line">    r=<span class="number">8</span>,                                    <span class="comment"># LoRA 的秩（Rank）</span></span><br><span class="line">    lora_alpha=<span class="number">32</span>,                          <span class="comment"># Scaling factor，通常设为 r 的 2-4 倍</span></span><br><span class="line">    target_modules=[<span class="string">"q_proj"</span>, <span class="string">"v_proj"</span>],    <span class="comment"># 应用 LoRA 的目标模块</span></span><br><span class="line">    lora_dropout=<span class="number">0.1</span>,                       <span class="comment"># Dropout 概率，防止过拟合</span></span><br><span class="line">    bias=<span class="string">"none"</span>,                            <span class="comment"># 是否训练 bias，通常设为 "none"</span></span><br><span class="line">    task_type=TaskType.CAUSAL_LM            <span class="comment"># 任务类型</span></span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 将 LoRA 应用到模型</span></span><br><span class="line">model = get_peft_model(model, lora_config)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4. 查看可训练参数</span></span><br><span class="line">model.print_trainable_parameters()</span><br><span class="line"><span class="comment"># 输出示例：trainable params: 4,194,304 || all params: 6,742,609,920 || trainable%: 0.0622</span></span><br></pre></td></tr></table></figure><h3 id="训练-LoRA-模型"><a href="#训练-LoRA-模型" class="headerlink" title="训练 LoRA 模型"></a>训练 LoRA 模型</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> transformers <span class="keyword">import</span> Trainer, TrainingArguments</span><br><span class="line"></span><br><span class="line"><span class="comment"># 训练配置</span></span><br><span class="line">training_args = TrainingArguments(</span><br><span class="line">    output_dir=<span class="string">"./lora_output"</span>,</span><br><span class="line">    num_train_epochs=<span class="number">3</span>,</span><br><span class="line">    per_device_train_batch_size=<span class="number">4</span>,</span><br><span class="line">    gradient_accumulation_steps=<span class="number">4</span>,</span><br><span class="line">    learning_rate=<span class="number">3e-4</span>,                  <span class="comment"># LoRA 可以使用较高的学习率</span></span><br><span class="line">    logging_steps=<span class="number">10</span>,</span><br><span class="line">    save_strategy=<span class="string">"epoch"</span>,</span><br><span class="line">    optim=<span class="string">"adamw_torch"</span>,</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 创建 Trainer 并训练</span></span><br><span class="line">trainer = Trainer(</span><br><span class="line">    model=model,</span><br><span class="line">    args=training_args,</span><br><span class="line">    train_dataset=train_dataset,</span><br><span class="line">    eval_dataset=eval_dataset,</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line">trainer.train()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 保存 LoRA 权重（只保存 A 和 B 矩阵，通常只有几 MB）</span></span><br><span class="line">model.save_pretrained(<span class="string">"./lora_weights"</span>)</span><br></pre></td></tr></table></figure><h3 id="加载和使用-LoRA-权重"><a href="#加载和使用-LoRA-权重" class="headerlink" title="加载和使用 LoRA 权重"></a>加载和使用 LoRA 权重</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> peft <span class="keyword">import</span> PeftModel</span><br><span class="line"></span><br><span class="line"><span class="comment"># 加载基础模型</span></span><br><span class="line">base_model = AutoModelForCausalLM.from_pretrained(model_name)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 加载 LoRA 权重</span></span><br><span class="line">model = PeftModel.from_pretrained(base_model, <span class="string">"./lora_weights"</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 推理</span></span><br><span class="line">inputs = tokenizer(<span class="string">"你的输入文本"</span>, return_tensors=<span class="string">"pt"</span>)</span><br><span class="line">outputs = model.generate(**inputs, max_length=<span class="number">100</span>)</span><br><span class="line"><span class="built_in">print</span>(tokenizer.decode(outputs[<span class="number">0</span>]))</span><br><span class="line"></span><br><span class="line"><span class="comment"># 如果要合并 LoRA 权重到基础模型（用于部署）</span></span><br><span class="line">model = model.merge_and_unload()</span><br><span class="line">model.save_pretrained(<span class="string">"./merged_model"</span>)</span><br></pre></td></tr></table></figure><h2 id="超参数选择指南"><a href="#超参数选择指南" class="headerlink" title="超参数选择指南"></a>超参数选择指南</h2><p>选择合适的超参数对 LoRA 的效果至关重要。以下是基于实践经验的推荐配置：</p><h3 id="核心超参数表"><a href="#核心超参数表" class="headerlink" title="核心超参数表"></a>核心超参数表</h3><table><thead><tr><th>参数</th><th>推荐值</th><th>说明</th><th>影响</th></tr></thead><tbody><tr><td><strong>r (rank)</strong></td><td>4-64</td><td>秩的大小，决定了低秩矩阵的维度</td><td>越大效果越好但参数越多，小任务用 4-8，复杂任务用 16-64</td></tr><tr><td><strong>lora_alpha</strong></td><td>16-64</td><td>Scaling factor，通常是 r 的 2-4 倍</td><td>控制 LoRA 更新的强度，alpha/r 越大，LoRA 的影响越大</td></tr><tr><td><strong>lora_dropout</strong></td><td>0.05-0.1</td><td>Dropout 概率</td><td>防止过拟合，数据集小时可以设高一点</td></tr><tr><td><strong>target_modules</strong></td><td>[“q_proj”, “v_proj”]</td><td>应用 LoRA 的模块</td><td>越多效果越好但参数越多，最常用的是 Q+V</td></tr><tr><td><strong>learning_rate</strong></td><td>1e-4 ~ 3e-4</td><td>学习率</td><td>LoRA 可以用比全量微调高 1-2 个数量级的学习率</td></tr></tbody></table><h3 id="根据任务类型选择配置"><a href="#根据任务类型选择配置" class="headerlink" title="根据任务类型选择配置"></a>根据任务类型选择配置</h3><p><strong>小规模任务</strong>（如情感分析、文本分类，数据量 &lt; 10K）：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">LoraConfig(</span><br><span class="line">    r=<span class="number">4</span>,</span><br><span class="line">    lora_alpha=<span class="number">16</span>,</span><br><span class="line">    target_modules=[<span class="string">"q_proj"</span>, <span class="string">"v_proj"</span>],</span><br><span class="line">    lora_dropout=<span class="number">0.1</span>,</span><br><span class="line">)</span><br></pre></td></tr></table></figure><p><strong>中等规模任务</strong>（如指令微调、对话系统，数据量 10K-100K）：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">LoraConfig(</span><br><span class="line">    r=<span class="number">16</span>,</span><br><span class="line">    lora_alpha=<span class="number">32</span>,</span><br><span class="line">    target_modules=[<span class="string">"q_proj"</span>, <span class="string">"k_proj"</span>, <span class="string">"v_proj"</span>, <span class="string">"o_proj"</span>],</span><br><span class="line">    lora_dropout=<span class="number">0.05</span>,</span><br><span class="line">)</span><br></pre></td></tr></table></figure><p><strong>大规模任务</strong>（如领域适应、知识注入，数据量 &gt; 100K）：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">LoraConfig(</span><br><span class="line">    r=<span class="number">64</span>,</span><br><span class="line">    lora_alpha=<span class="number">128</span>,</span><br><span class="line">    target_modules=[<span class="string">"q_proj"</span>, <span class="string">"k_proj"</span>, <span class="string">"v_proj"</span>, <span class="string">"o_proj"</span>, <span class="string">"gate_proj"</span>, <span class="string">"up_proj"</span>, <span class="string">"down_proj"</span>],</span><br><span class="line">    lora_dropout=<span class="number">0.05</span>,</span><br><span class="line">)</span><br></pre></td></tr></table></figure><h3 id="Rank-r-的选择经验法则"><a href="#Rank-r-的选择经验法则" class="headerlink" title="Rank (r) 的选择经验法则"></a>Rank (r) 的选择经验法则</h3><ul><li><strong>r = 4</strong>：适合简单的风格迁移、格式调整任务</li><li><strong>r = 8</strong>：最常用的默认值，适合大多数微调任务</li><li><strong>r = 16</strong>：适合需要学习新领域知识的任务</li><li><strong>r = 32 或 64</strong>：适合复杂任务或当 r=8/16 效果不理想时</li></ul><p><strong>重要提示</strong>：增大 r 并不总是能带来更好的效果，有时反而会导致过拟合。建议从小的 r 开始实验，逐步增大。</p><h2 id="LoRA-的局限性与适用场景"><a href="#LoRA-的局限性与适用场景" class="headerlink" title="LoRA 的局限性与适用场景"></a>LoRA 的局限性与适用场景</h2><p>虽然 LoRA 非常强大，但它并不是万能的。了解它的局限性和适用场景，可以帮助你做出更好的技术选择。</p><h3 id="✅-LoRA-适合的场景"><a href="#✅-LoRA-适合的场景" class="headerlink" title="✅ LoRA 适合的场景"></a>✅ LoRA 适合的场景</h3><ol><li><p><strong>领域适应（Domain Adaptation）</strong></p><ul><li>将通用语言模型适配到特定领域（如医疗、法律、金融）</li><li>模型已经具备基础能力，只需要学习领域特定的术语和知识</li></ul></li><li><p><strong>指令微调（Instruction Tuning）</strong></p><ul><li>教会模型遵循特定的指令格式</li><li>调整模型的输出风格和行为模式</li></ul></li><li><p><strong>风格迁移</strong></p><ul><li>改变文本生成的风格（如正式/非正式、简洁/详细）</li><li>调整语气和表达方式</li></ul></li><li><p><strong>多任务学习</strong></p><ul><li>为同一个基础模型训练多个 LoRA 权重，分别对应不同任务</li><li>快速切换不同的任务能力</li></ul></li><li><p><strong>资源受限环境</strong></p><ul><li>只有单张消费级显卡（如 RTX 3090/4090）</li><li>需要同时维护多个任务的模型版本</li></ul></li></ol><h3 id="❌-LoRA-不适合的场景"><a href="#❌-LoRA-不适合的场景" class="headerlink" title="❌ LoRA 不适合的场景"></a>❌ LoRA 不适合的场景</h3><ol><li><p><strong>学习全新能力</strong></p><ul><li>预训练模型完全不具备的能力（如让纯英文模型学习中文）</li><li>需要大幅改变模型的知识结构</li><li><strong>为什么？</strong> LoRA 的低秩假设认为变化发生在低维子空间，但学习全新能力可能需要高维空间的变化</li></ul></li><li><p><strong>预训练模型与任务差距过大</strong></p><ul><li>使用对话模型去做代码生成</li><li>使用文本模型去做图像理解</li><li><strong>建议</strong>：选择与任务更匹配的预训练模型</li></ul></li><li><p><strong>需要修改模型架构</strong></p><ul><li>添加新的层或模块</li><li>改变注意力机制</li><li><strong>解决方案</strong>：考虑使用 Adapter 或直接修改模型架构</li></ul></li><li><p><strong>极小数据集</strong></p><ul><li>训练样本少于 100 条</li><li><strong>为什么？</strong> 即使是 LoRA，也需要足够的数据来学习有意义的模式</li><li><strong>建议</strong>：考虑 Few-shot Learning 或 Prompt Engineering</li></ul></li></ol><h3 id="实际效果对比"><a href="#实际效果对比" class="headerlink" title="实际效果对比"></a>实际效果对比</h3><p>根据原论文（Hu et al., 2021）在多个任务上的实验结果：</p><table><thead><tr><th>任务</th><th>模型</th><th>全量微调效果</th><th>LoRA 效果</th><th>LoRA 参数占比</th></tr></thead><tbody><tr><td>MNLI（自然语言推理）</td><td>RoBERTa-base</td><td>90.2%</td><td>90.1%</td><td>0.3%</td></tr><tr><td>SST-2（情感分析）</td><td>RoBERTa-base</td><td>96.4%</td><td>96.3%</td><td>0.3%</td></tr><tr><td>WikiSQL（文本到SQL）</td><td>GPT-3 175B</td><td>73.8%</td><td>73.4%</td><td>0.01%</td></tr><tr><td>SAMSum（摘要）</td><td>GPT-3 175B</td><td>52.0%</td><td>53.8%</td><td>0.01%</td></tr></tbody></table><p><strong>关键发现</strong>：</p><ul><li>在大多数任务上，LoRA 的效果与全量微调<strong>几乎相同</strong></li><li>在某些生成任务上，LoRA 甚至<strong>超过</strong>全量微调（可能因为全量微调容易过拟合）</li><li>参数量只有全量微调的 <strong>0.01% - 0.3%</strong></li></ul><h2 id="与其他参数高效微调（PEFT）方法的对比"><a href="#与其他参数高效微调（PEFT）方法的对比" class="headerlink" title="与其他参数高效微调（PEFT）方法的对比"></a>与其他参数高效微调（PEFT）方法的对比</h2><p>LoRA 是众多参数高效微调方法中的一种。了解不同方法的特点，可以帮助你选择最适合的方案。</p><h3 id="主流-PEFT-方法对比表"><a href="#主流-PEFT-方法对比表" class="headerlink" title="主流 PEFT 方法对比表"></a>主流 PEFT 方法对比表</h3><table><thead><tr><th>方法</th><th>参数量</th><th>推理开销</th><th>训练难度</th><th>主要优势</th><th>主要劣势</th><th>适用场景</th></tr></thead><tbody><tr><td><strong>LoRA</strong></td><td>0.1-1%</td><td><strong>无</strong>（可合并）</td><td>低</td><td>参数少、无推理开销、易于切换</td><td>不适合学习全新能力</td><td><strong>通用，性价比最高</strong></td></tr><tr><td><strong>Adapter</strong></td><td>2-4%</td><td>有（增加层）</td><td>中</td><td>可以插入不同位置、模块化</td><td>推理时有延迟</td><td>需要保留多任务切换能力</td></tr><tr><td><strong>Prefix-Tuning</strong></td><td>&lt;1%</td><td>有（占用序列长度）</td><td>高（训练不稳定）</td><td>参数极少</td><td>训练困难、占用输入长度</td><td>自然语言生成任务</td></tr><tr><td><strong>P-Tuning v2</strong></td><td>&lt;1%</td><td>有（占用序列长度）</td><td>高</td><td>改进的 Prefix-Tuning</td><td>同 Prefix-Tuning</td><td>NLU + NLG 任务</td></tr><tr><td><strong>Prompt Tuning</strong></td><td>&lt;0.01%</td><td>有（占用序列长度）</td><td>高</td><td>参数极少</td><td>需要大模型（&gt;10B）才有效</td><td>超大模型的轻量适配</td></tr><tr><td><strong>BitFit</strong></td><td>&lt;0.1%</td><td><strong>无</strong></td><td>低</td><td>极简单</td><td>效果通常不如 LoRA</td><td>快速验证想法</td></tr><tr><td><strong>Full Fine-tuning</strong></td><td><strong>100%</strong></td><td><strong>无</strong></td><td>低</td><td>效果最好（理论上）</td><td>成本高、易过拟合</td><td>预算充足、数据充足</td></tr></tbody></table><h3 id="各方法的技术细节"><a href="#各方法的技术细节" class="headerlink" title="各方法的技术细节"></a>各方法的技术细节</h3><h4 id="1-LoRA（本文重点）"><a href="#1-LoRA（本文重点）" class="headerlink" title="1. LoRA（本文重点）"></a>1. <strong>LoRA</strong>（本文重点）</h4><ul><li><strong>核心思想</strong>：低秩矩阵分解 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="13.452ex" height="1.805ex" role="img" focusable="false" viewBox="0 -716 5946 798"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(2158.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(3214.6,0)"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g><g data-mml-node="mo" transform="translate(4195.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(5196,0)"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g></g></svg></mjx-container></li><li><strong>特点</strong>：可在推理时合并权重，不增加延迟</li></ul><h4 id="2-Adapter（适配器）"><a href="#2-Adapter（适配器）" class="headerlink" title="2. Adapter（适配器）"></a>2. <strong>Adapter</strong>（适配器）</h4><ul><li><strong>核心思想</strong>：在 Transformer 层之间插入小型的全连接层</li><li><strong>结构</strong>：Down-projection（降维）→ 激活函数 → Up-projection（升维）</li><li><strong>优势</strong>：模块化，可以针对不同任务插入不同的 Adapter</li><li><strong>劣势</strong>：推理时需要经过额外的层，有轻微延迟</li></ul><h4 id="3-Prefix-Tuning-P-Tuning"><a href="#3-Prefix-Tuning-P-Tuning" class="headerlink" title="3. Prefix-Tuning / P-Tuning"></a>3. <strong>Prefix-Tuning / P-Tuning</strong></h4><ul><li><strong>核心思想</strong>：在输入序列前添加可学习的”虚拟 token”（前缀）</li><li><strong>特点</strong>：不修改模型参数，只学习前缀的嵌入</li><li><strong>劣势</strong>：训练不稳定，且前缀会占用输入序列的长度</li></ul><h4 id="4-Prompt-Tuning"><a href="#4-Prompt-Tuning" class="headerlink" title="4. Prompt Tuning"></a>4. <strong>Prompt Tuning</strong></h4><ul><li><strong>核心思想</strong>：只学习 Soft Prompt 的嵌入向量</li><li><strong>特点</strong>：参数量极少（只有几千到几万个参数）</li><li><strong>限制</strong>：只在超大模型（&gt;10B 参数）上有效</li></ul><h4 id="5-BitFit"><a href="#5-BitFit" class="headerlink" title="5. BitFit"></a>5. <strong>BitFit</strong></h4><ul><li><strong>核心思想</strong>：只训练模型的 bias 项，冻结所有其他参数</li><li><strong>特点</strong>：极其简单，但效果通常不如 LoRA</li></ul><h3 id="选择建议"><a href="#选择建议" class="headerlink" title="选择建议"></a>选择建议</h3><ul><li><strong>首选 LoRA</strong>：如果没有特殊需求，LoRA 是性价比最高的选择</li><li><strong>选择 Adapter</strong>：如果需要在推理时动态切换多个任务，且可以接受轻微的推理延迟</li><li><strong>选择 Prefix-Tuning</strong>：如果是纯生成任务（如摘要、翻译），且有调参经验</li><li><strong>选择 Full Fine-tuning</strong>：如果有充足的计算资源，且数据集很大（&gt;100K 样本）</li></ul><h2 id="LoRA-的变种与最新进展"><a href="#LoRA-的变种与最新进展" class="headerlink" title="LoRA 的变种与最新进展"></a>LoRA 的变种与最新进展</h2><p>LoRA 的成功激发了大量后续研究，出现了多种改进版本。</p><h3 id="QLoRA（Quantized-LoRA）"><a href="#QLoRA（Quantized-LoRA）" class="headerlink" title="QLoRA（Quantized LoRA）"></a><strong>QLoRA</strong>（Quantized LoRA）</h3><p><strong>核心创新</strong>：将 4-bit 量化与 LoRA 结合，进一步降低显存需求。</p><p><strong>技术要点</strong>：</p><ul><li><strong>NF4（4-bit NormalFloat）量化</strong>：专门为正态分布的权重设计的 4-bit 数据类型</li><li><strong>双重量化（Double Quantization）</strong>：连量化参数本身也进行量化</li><li><strong>分页优化器（Paged Optimizers）</strong>：使用 CPU 内存作为缓冲，避免显存溢出</li></ul><p><strong>实际效果</strong>：</p><ul><li>在单张 24GB 显卡（如 RTX 3090）上微调 <strong>65B 参数</strong>的模型</li><li>在单张 48GB 显卡（如 A6000）上微调 <strong>33B 参数</strong>的模型，效果接近全量微调</li></ul><p><strong>代码示例</strong>：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> transformers <span class="keyword">import</span> AutoModelForCausalLM, BitsAndBytesConfig</span><br><span class="line"><span class="keyword">from</span> peft <span class="keyword">import</span> prepare_model_for_kbit_training, LoraConfig, get_peft_model</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4-bit 量化配置</span></span><br><span class="line">bnb_config = BitsAndBytesConfig(</span><br><span class="line">    load_in_4bit=<span class="literal">True</span>,</span><br><span class="line">    bnb_4bit_quant_type=<span class="string">"nf4"</span>,</span><br><span class="line">    bnb_4bit_compute_dtype=torch.bfloat16,</span><br><span class="line">    bnb_4bit_use_double_quant=<span class="literal">True</span>,</span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 加载量化模型</span></span><br><span class="line">model = AutoModelForCausalLM.from_pretrained(</span><br><span class="line">    <span class="string">"meta-llama/Llama-2-70b-hf"</span>,</span><br><span class="line">    quantization_config=bnb_config,</span><br><span class="line">    device_map=<span class="string">"auto"</span></span><br><span class="line">)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 准备模型以进行 k-bit 训练</span></span><br><span class="line">model = prepare_model_for_kbit_training(model)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 应用 LoRA</span></span><br><span class="line">lora_config = LoraConfig(r=<span class="number">16</span>, lora_alpha=<span class="number">32</span>, ...)</span><br><span class="line">model = get_peft_model(model, lora_config)</span><br></pre></td></tr></table></figure><h3 id="AdaLoRA（Adaptive-LoRA）"><a href="#AdaLoRA（Adaptive-LoRA）" class="headerlink" title="AdaLoRA（Adaptive LoRA）"></a><strong>AdaLoRA</strong>（Adaptive LoRA）</h3><p><strong>核心创新</strong>：自适应地为不同层分配不同的 rank，而不是所有层使用相同的 r。</p><p><strong>技术原理</strong>：</p><ul><li>使用 <strong>奇异值分解（SVD）</strong> 来评估每一层的”重要性”</li><li>重要的层分配更高的 rank，不重要的层降低 rank</li><li>训练过程中动态调整 rank 分配</li></ul><p><strong>优势</strong>：</p><ul><li>参数预算固定的情况下，效果优于固定 rank 的 LoRA</li><li>自动发现哪些层对任务更重要</li></ul><p><strong>适用场景</strong>：</p><ul><li>对性能要求极致，愿意付出更多训练时间</li><li>需要理解模型的哪些部分对特定任务最重要</li></ul><h3 id="DoRA（Weight-Decomposed-LoRA）"><a href="#DoRA（Weight-Decomposed-LoRA）" class="headerlink" title="DoRA（Weight-Decomposed LoRA）"></a><strong>DoRA</strong>（Weight-Decomposed LoRA）</h3><p><strong>核心创新</strong>：将权重矩阵分解为 <strong>幅度（Magnitude）</strong> 和 <strong>方向（Direction）</strong> 两个部分。</p><p><strong>数学表示</strong>：<br><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.17ex;" xmlns="http://www.w3.org/2000/svg" width="21.031ex" height="5.319ex" role="img" focusable="false" viewBox="0 -1392 9295.7 2351"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msup"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(1136.2,413) scale(0.707)"><path data-c="2032" d="M79 43Q73 43 52 49T30 61Q30 68 85 293T146 528Q161 560 198 560Q218 560 240 545T262 501Q262 496 260 486Q259 479 173 263T84 45T79 43Z"></path></g></g><g data-mml-node="mo" transform="translate(1658.4,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(2714.2,0)"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mfrac" transform="translate(3592.2,0)"><g data-mml-node="mrow" transform="translate(776,676)"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(1270.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(2270.4,0)"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(3103.4,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g><g data-mml-node="mrow" transform="translate(220,-709.5)"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="mo" transform="translate(278,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="mi" transform="translate(556,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(1826.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(2826.4,0)"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(3659.4,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(4707.4,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="mo" transform="translate(4985.4,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g></g><rect width="5463.4" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container></p><p>其中：</p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.986ex" height="1.025ex" role="img" focusable="false" viewBox="0 -442 878 453"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D45A" d="M21 287Q22 293 24 303T36 341T56 388T88 425T132 442T175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q303 442 384 442Q401 442 415 440T441 433T460 423T475 411T485 398T493 385T497 373T500 364T502 357L510 367Q573 442 659 442Q713 442 746 415T780 336Q780 285 742 178T704 50Q705 36 709 31T724 26Q752 26 776 56T815 138Q818 149 821 151T837 153Q857 153 857 145Q857 144 853 130Q845 101 831 73T785 17T716 -10Q669 -10 648 17T627 73Q627 92 663 193T700 345Q700 404 656 404H651Q565 404 506 303L499 291L466 157Q433 26 428 16Q415 -11 385 -11Q372 -11 364 -4T353 8T350 18Q350 29 384 161L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 181Q151 335 151 342Q154 357 154 369Q154 405 129 405Q107 405 92 377T69 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container> 是幅度（标量）</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.236ex;" xmlns="http://www.w3.org/2000/svg" width="8.705ex" height="3.282ex" role="img" focusable="false" viewBox="0 -904.3 3847.5 1450.7"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mfrac"><g data-mml-node="mrow" transform="translate(613.2,398) scale(0.707)"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(1048,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(1826,0)"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(2659,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g></g><g data-mml-node="mrow" transform="translate(220,-370) scale(0.707)"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="mo" transform="translate(278,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="mi" transform="translate(556,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(1604,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(2382,0)"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(3215,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(4263,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g><g data-mml-node="mo" transform="translate(4541,0) translate(0 -0.5)"><path data-c="7C" d="M139 -249H137Q125 -249 119 -235V251L120 737Q130 750 139 750Q152 750 159 735V-235Q151 -249 141 -249H139Z"></path></g></g><rect width="3607.5" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container> 是方向（单位向量）</li><li>只对方向部分应用 LoRA</li></ul><p><strong>实验结果</strong>：</p><ul><li>在 Commonsense Reasoning、视觉指令微调等任务上<strong>超越 LoRA</strong></li><li>特别是在需要精细调整的任务上，效果提升明显</li></ul><p><strong>代码示例</strong>：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> peft <span class="keyword">import</span> LoraConfig</span><br><span class="line"></span><br><span class="line">lora_config = LoraConfig(</span><br><span class="line">    r=<span class="number">8</span>,</span><br><span class="line">    lora_alpha=<span class="number">16</span>,</span><br><span class="line">    use_dora=<span class="literal">True</span>,  <span class="comment"># 启用 DoRA</span></span><br><span class="line">    target_modules=[<span class="string">"q_proj"</span>, <span class="string">"v_proj"</span>],</span><br><span class="line">)</span><br></pre></td></tr></table></figure><h3 id="LoRA-（LoRA-with-Differential-Learning-Rates）"><a href="#LoRA-（LoRA-with-Differential-Learning-Rates）" class="headerlink" title="LoRA+（LoRA with Differential Learning Rates）"></a><strong>LoRA+</strong>（LoRA with Differential Learning Rates）</h3><p><strong>核心创新</strong>：为矩阵 A 和 B 设置<strong>不同的学习率</strong>。</p><p><strong>技术细节</strong>：</p><ul><li>矩阵 B 使用较高的学习率（如 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.489ex;" xmlns="http://www.w3.org/2000/svg" width="11.626ex" height="2.02ex" role="img" focusable="false" viewBox="0 -677 5138.7 893"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D702" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q156 442 175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336V326Q503 302 439 53Q381 -182 377 -189Q364 -216 332 -216Q319 -216 310 -208T299 -186Q299 -177 358 57L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mi" transform="translate(530,-150) scale(0.707)"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g></g><g data-mml-node="mo" transform="translate(1394.5,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(2450.2,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mi" transform="translate(2950.2,0)"><path data-c="1D452" d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z"></path></g><g data-mml-node="mo" transform="translate(3638.5,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(4638.7,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g></g></g></svg></mjx-container>）</li><li>矩阵 A 使用较低的学习率（如 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="11.449ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 5060.6 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D702" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q156 442 175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336V326Q503 302 439 53Q381 -182 377 -189Q364 -216 332 -216Q319 -216 310 -208T299 -186Q299 -177 358 57L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mi" transform="translate(530,-152.7) scale(0.707)"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g><g data-mml-node="mo" transform="translate(1388.1,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="msub" transform="translate(2443.9,0)"><g data-mml-node="mi"><path data-c="1D702" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q156 442 175 435T205 417T221 395T229 376L231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336V326Q503 302 439 53Q381 -182 377 -189Q364 -216 332 -216Q319 -216 310 -208T299 -186Q299 -177 358 57L420 307Q423 322 423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><g data-mml-node="mi" transform="translate(530,-150) scale(0.707)"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(3560.6,0)"><g data-mml-node="mo"><path data-c="2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path></g></g><g data-mml-node="mn" transform="translate(4060.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="36" d="M42 313Q42 476 123 571T303 666Q372 666 402 630T432 550Q432 525 418 510T379 495Q356 495 341 509T326 548Q326 592 373 601Q351 623 311 626Q240 626 194 566Q147 500 147 364L148 360Q153 366 156 373Q197 433 263 433H267Q313 433 348 414Q372 400 396 374T435 317Q456 268 456 210V192Q456 169 451 149Q440 90 387 34T253 -22Q225 -22 199 -14T143 16T92 75T56 172T42 313ZM257 397Q227 397 205 380T171 335T154 278T148 216Q148 133 160 97T198 39Q222 21 251 21Q302 21 329 59Q342 77 347 104T352 209Q352 289 347 316T329 361Q302 397 257 397Z" transform="translate(500,0)"></path></g></g></g></svg></mjx-container>）</li><li><strong>原理</strong>：矩阵 B 在初始化时为零，需要更快地学习；矩阵 A 已有随机初始化，应更保守地更新</li></ul><p><strong>效果</strong>：</p><ul><li>在相同的训练步数下，收敛更快</li><li>最终效果略优于标准 LoRA</li></ul><h3 id="5-其他变种"><a href="#5-其他变种" class="headerlink" title="5. 其他变种"></a>5. <strong>其他变种</strong></h3><ul><li><strong>MultiLoRA</strong>：为同一模型的不同层使用不同的 rank</li><li><strong>LoRA-FA（Frozen-A）</strong>：训练过程中冻结矩阵 A，只训练矩阵 B</li><li><strong>VeRA</strong>（Vector-based LoRA）：用向量代替矩阵，进一步减少参数</li></ul><h3 id="选择建议-1"><a href="#选择建议-1" class="headerlink" title="选择建议"></a>选择建议</h3><ul><li><strong>默认选择</strong>：标准 LoRA（简单、稳定、效果好）</li><li><strong>显存受限</strong>：QLoRA（在消费级显卡上微调大模型）</li><li><strong>追求极致性能</strong>：DoRA 或 AdaLoRA（效果提升，但实现更复杂）</li><li><strong>快速验证</strong>：LoRA+（更快收敛，适合快速实验）</li></ul><h2 id="LoRA-的初始化策略与训练技巧"><a href="#LoRA-的初始化策略与训练技巧" class="headerlink" title="LoRA 的初始化策略与训练技巧"></a>LoRA 的初始化策略与训练技巧</h2><p>正确的初始化和训练策略对 LoRA 的效果至关重要。以下是原论文和实践中总结的技巧。</p><h3 id="初始化策略"><a href="#初始化策略" class="headerlink" title="初始化策略"></a>初始化策略</h3><p>LoRA 使用了一个巧妙的初始化方式，确保训练开始时模型的行为与预训练模型<strong>完全一致</strong>。</p><h4 id="矩阵-A-的初始化"><a href="#矩阵-A-的初始化" class="headerlink" title="矩阵 A 的初始化"></a>矩阵 A 的初始化</h4><ul><li><strong>方法</strong>：<strong>高斯随机初始化</strong> <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="13.106ex" height="2.452ex" role="img" focusable="false" viewBox="0 -833.9 5792.8 1083.9"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g><g data-mml-node="mo" transform="translate(1027.8,0)"><path data-c="223C" d="M55 166Q55 241 101 304T222 367Q260 367 296 349T362 304T421 252T484 208T554 189Q616 189 655 236T694 338Q694 350 698 358T708 367Q722 367 722 334Q722 260 677 197T562 134H554Q517 134 481 152T414 196T355 248T292 293T223 311Q179 311 145 286Q109 257 96 218T80 156T69 133Q55 133 55 166Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2083.6,0)"><g data-mml-node="mi"><path data-c="4E" d="M343 705Q358 705 358 698Q360 696 370 658T411 524T484 319Q536 174 590 82L595 73L615 152Q646 274 683 407Q729 571 752 637T799 727Q852 780 937 788Q939 788 947 788T958 789H962Q979 789 979 765Q979 722 951 692Q942 683 924 683Q888 681 859 672T818 654T803 639Q784 608 708 322T631 15Q631 14 630 15Q630 17 629 15Q628 14 628 12Q621 -4 601 -17T560 -31Q550 -31 546 -28T530 -7Q484 67 458 123T398 272Q352 392 314 514L306 535V534Q306 533 296 488T272 379T234 239T185 100T127 -7T61 -50Q34 -50 4 -34T-27 8Q-27 33 -12 61T18 90Q21 90 36 77T87 57H92Q109 57 123 78T162 173Q206 299 232 417T265 599T276 667Q284 681 304 693T343 705Z"></path></g></g><g data-mml-node="mo" transform="translate(3062.6,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="mn" transform="translate(3451.6,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g><g data-mml-node="mo" transform="translate(3951.6,0)"><path data-c="2C" d="M78 35T78 60T94 103T137 121Q165 121 187 96T210 8Q210 -27 201 -60T180 -117T154 -158T130 -185T117 -194Q113 -194 104 -185T95 -172Q95 -168 106 -156T131 -126T157 -76T173 -3V9L172 8Q170 7 167 6T161 3T152 1T140 0Q113 0 96 17Z"></path></g><g data-mml-node="msup" transform="translate(4396.2,0)"><g data-mml-node="mi"><path data-c="1D70E" d="M184 -11Q116 -11 74 34T31 147Q31 247 104 333T274 430Q275 431 414 431H552Q553 430 555 429T559 427T562 425T565 422T567 420T569 416T570 412T571 407T572 401Q572 357 507 357Q500 357 490 357T476 358H416L421 348Q439 310 439 263Q439 153 359 71T184 -11ZM361 278Q361 358 276 358Q152 358 115 184Q114 180 114 178Q106 141 106 117Q106 67 131 47T188 26Q242 26 287 73Q316 103 334 153T356 233T361 278Z"></path></g><g data-mml-node="mn" transform="translate(604,363) scale(0.707)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g></g><g data-mml-node="mo" transform="translate(5403.8,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g></g></svg></mjx-container></li><li><strong>标准差</strong>：通常 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex;" xmlns="http://www.w3.org/2000/svg" width="7.592ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 3355.6 1000"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D70E" d="M184 -11Q116 -11 74 34T31 147Q31 247 104 333T274 430Q275 431 414 431H552Q553 430 555 429T559 427T562 425T565 422T567 420T569 416T570 412T571 407T572 401Q572 357 507 357Q500 357 490 357T476 358H416L421 348Q439 310 439 263Q439 153 359 71T184 -11ZM361 278Q361 358 276 358Q152 358 115 184Q114 180 114 178Q106 141 106 117Q106 67 131 47T188 26Q242 26 287 73Q316 103 334 153T356 233T361 278Z"></path></g><g data-mml-node="mo" transform="translate(848.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1904.6,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2404.6,0)"><g data-mml-node="mo"><path data-c="2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path></g></g><g data-mml-node="mi" transform="translate(2904.6,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container>（r 是 rank）</li><li><strong>代码</strong>：<code>nn.init.kaiming_uniform_(A, a=math.sqrt(5))</code></li></ul><h4 id="矩阵-B-的初始化"><a href="#矩阵-B-的初始化" class="headerlink" title="矩阵 B 的初始化"></a>矩阵 B 的初始化</h4><ul><li><strong>方法</strong>：<strong>零初始化</strong> <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="5.866ex" height="1.731ex" role="img" focusable="false" viewBox="0 -683 2592.6 765"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g><g data-mml-node="mo" transform="translate(1036.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(2092.6,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></svg></mjx-container></li><li><strong>目的</strong>：确保训练开始时 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="17.601ex" height="1.805ex" role="img" focusable="false" viewBox="0 -716 7779.6 798"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(2158.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(3214.6,0)"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g><g data-mml-node="mo" transform="translate(4195.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(5196,0)"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g><g data-mml-node="mo" transform="translate(6223.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(7279.6,0)"><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z"></path></g></g></g></svg></mjx-container>，模型行为与预训练模型一致</li><li><strong>代码</strong>：<code>nn.init.zeros_(B)</code></li></ul><h4 id="Scaling-Factor"><a href="#Scaling-Factor" class="headerlink" title="Scaling Factor"></a>Scaling Factor</h4><p>LoRA 的更新不是直接 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="13.452ex" height="1.805ex" role="img" focusable="false" viewBox="0 -716 5946 798"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(2158.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(3214.6,0)"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g><g data-mml-node="mo" transform="translate(4195.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(5196,0)"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g></g></svg></mjx-container>，而是：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -1.577ex;" xmlns="http://www.w3.org/2000/svg" width="18.662ex" height="4.106ex" role="img" focusable="false" viewBox="0 -1118 8248.4 1815"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="394" d="M51 0Q46 4 46 7Q46 9 215 357T388 709Q391 716 416 716Q439 716 444 709Q447 705 616 357T786 7Q786 4 781 0H51ZM507 344L384 596L137 92L383 91H630Q630 93 507 344Z"></path></g><g data-mml-node="mi" transform="translate(833,0)"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="mo" transform="translate(2158.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mfrac" transform="translate(3214.6,0)"><g data-mml-node="mi" transform="translate(220,676)"><path data-c="1D6FC" d="M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z"></path></g><g data-mml-node="mi" transform="translate(314.5,-686)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><rect width="840" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(4516.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(5517,0)"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g><g data-mml-node="mo" transform="translate(6498.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(7498.4,0)"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g></g></svg></mjx-container></p><p>其中：</p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.448ex" height="1.025ex" role="img" focusable="false" viewBox="0 -442 640 453"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D6FC" d="M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z"></path></g></g></g></svg></mjx-container> 是 <code>lora_alpha</code>（超参数，通常设为 16、32 或 64）</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.025ex;" xmlns="http://www.w3.org/2000/svg" width="1.02ex" height="1.025ex" role="img" focusable="false" viewBox="0 -442 451 453"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container> 是 rank</li><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.798ex;" xmlns="http://www.w3.org/2000/svg" width="2.019ex" height="2.397ex" role="img" focusable="false" viewBox="0 -706.5 892.5 1059.3"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mfrac"><g data-mml-node="mi" transform="translate(220,394) scale(0.707)"><path data-c="1D6FC" d="M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z"></path></g><g data-mml-node="mi" transform="translate(286.8,-345) scale(0.707)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g><rect width="652.5" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container> 是 scaling factor</li></ul><p><strong>为什么需要 Scaling？</strong></p><ul><li>保持不同 rank 之间的更新幅度一致</li><li>类似于学习率的作用，控制 LoRA 对模型的影响程度</li><li>实验表明，<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="6.617ex" height="1.692ex" role="img" focusable="false" viewBox="0 -666 2924.6 748"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D6FC" d="M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z"></path></g><g data-mml-node="mo" transform="translate(917.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1973.6,0)"><path data-c="32" d="M109 429Q82 429 66 447T50 491Q50 562 103 614T235 666Q326 666 387 610T449 465Q449 422 429 383T381 315T301 241Q265 210 201 149L142 93L218 92Q375 92 385 97Q392 99 409 186V189H449V186Q448 183 436 95T421 3V0H50V19V31Q50 38 56 46T86 81Q115 113 136 137Q145 147 170 174T204 211T233 244T261 278T284 308T305 340T320 369T333 401T340 431T343 464Q343 527 309 573T212 619Q179 619 154 602T119 569T109 550Q109 549 114 549Q132 549 151 535T170 489Q170 464 154 447T109 429Z"></path></g><g data-mml-node="mi" transform="translate(2473.6,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container> 或 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.186ex;" xmlns="http://www.w3.org/2000/svg" width="6.617ex" height="1.717ex" role="img" focusable="false" viewBox="0 -677 2924.6 759"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D6FC" d="M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z"></path></g><g data-mml-node="mo" transform="translate(917.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(1973.6,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g><g data-mml-node="mi" transform="translate(2473.6,0)"><path data-c="1D45F" d="M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z"></path></g></g></g></svg></mjx-container> 通常效果最好</li></ul><h3 id="训练技巧"><a href="#训练技巧" class="headerlink" title="训练技巧"></a>训练技巧</h3><h4 id="1-学习率设置"><a href="#1-学习率设置" class="headerlink" title="1. 学习率设置"></a>1. 学习率设置</h4><ul><li><strong>LoRA 可以使用比全量微调高 10-100 倍的学习率</strong></li><li>推荐范围：<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="8.392ex" height="2.022ex" role="img" focusable="false" viewBox="0 -871.8 3709.1 893.8"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(722.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(1722.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,393.1) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mo"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(778,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g></g></g></g></g></svg></mjx-container> 到 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="8.392ex" height="2.022ex" role="img" focusable="false" viewBox="0 -871.8 3709.1 893.8"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(722.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(1722.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,393.1) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mo"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(778,0)"><path data-c="34" d="M462 0Q444 3 333 3Q217 3 199 0H190V46H221Q241 46 248 46T265 48T279 53T286 61Q287 63 287 115V165H28V211L179 442Q332 674 334 675Q336 677 355 677H373L379 671V211H471V165H379V114Q379 73 379 66T385 54Q393 47 442 46H471V0H462ZM293 211V545L74 212L183 211H293Z"></path></g></g></g></g></g></svg></mjx-container></li><li>全量微调通常用：<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="8.392ex" height="2.005ex" role="img" focusable="false" viewBox="0 -864 3709.1 886"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g><g data-mml-node="mo" transform="translate(722.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(1722.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,393.1) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mo"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(778,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g></g></g></g></g></svg></mjx-container> 到 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.05ex;" xmlns="http://www.w3.org/2000/svg" width="8.392ex" height="2.005ex" role="img" focusable="false" viewBox="0 -864 3709.1 886"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mn"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g><g data-mml-node="mo" transform="translate(722.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="msup" transform="translate(1722.4,0)"><g data-mml-node="mn"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path></g><g data-mml-node="TeXAtom" transform="translate(1033,393.1) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mo"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mn" transform="translate(778,0)"><path data-c="35" d="M164 157Q164 133 148 117T109 101H102Q148 22 224 22Q294 22 326 82Q345 115 345 210Q345 313 318 349Q292 382 260 382H254Q176 382 136 314Q132 307 129 306T114 304Q97 304 95 310Q93 314 93 485V614Q93 664 98 664Q100 666 102 666Q103 666 123 658T178 642T253 634Q324 634 389 662Q397 666 402 666Q410 666 410 648V635Q328 538 205 538Q174 538 149 544L139 546V374Q158 388 169 396T205 412T256 420Q337 420 393 355T449 201Q449 109 385 44T229 -22Q148 -22 99 32T50 154Q50 178 61 192T84 210T107 214Q132 214 148 197T164 157Z"></path></g></g></g></g></g></svg></mjx-container></li></ul><p><strong>为什么 LoRA 能用更高学习率？</strong></p><ul><li>LoRA 只更新很小一部分参数</li><li>预训练模型的权重被冻结，不会被破坏</li><li>即使 LoRA 部分过度更新，也可以通过降低 alpha 来减弱影响</li></ul><h4 id="2-避免过拟合"><a href="#2-避免过拟合" class="headerlink" title="2. 避免过拟合"></a>2. 避免过拟合</h4><ul><li><strong>使用 Dropout</strong>：设置 <code>lora_dropout=0.05</code> 或 <code>0.1</code></li><li><strong>Early Stopping</strong>：监控验证集损失，及时停止训练</li><li><strong>数据增强</strong>：对于小数据集，使用数据增强技术</li><li><strong>降低 Rank</strong>：如果发现过拟合，尝试降低 r（如从 16 降到 8）</li></ul><h4 id="3-优化器选择"><a href="#3-优化器选择" class="headerlink" title="3. 优化器选择"></a>3. 优化器选择</h4><ul><li><strong>推荐</strong>：AdamW（最常用）</li><li><strong>也可尝试</strong>：<ul><li>Adafactor（节省显存，但收敛可能较慢）</li><li>Lion（最新的优化器，在某些任务上表现更好）</li></ul></li></ul><p><strong>AdamW 配置</strong>：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">optimizer = torch.optim.AdamW(</span><br><span class="line">    model.parameters(),</span><br><span class="line">    lr=<span class="number">3e-4</span>,</span><br><span class="line">    betas=(<span class="number">0.9</span>, <span class="number">0.999</span>),</span><br><span class="line">    eps=<span class="number">1e-8</span>,</span><br><span class="line">    weight_decay=<span class="number">0.01</span>  <span class="comment"># 权重衰减有助于防止过拟合</span></span><br><span class="line">)</span><br></pre></td></tr></table></figure><h4 id="4-批次大小与梯度累积"><a href="#4-批次大小与梯度累积" class="headerlink" title="4. 批次大小与梯度累积"></a>4. 批次大小与梯度累积</h4><ul><li><strong>有效批次大小</strong>（Effective Batch Size）= <code>per_device_batch_size × gradient_accumulation_steps × num_gpus</code></li><li>推荐有效批次大小：32-128</li><li>如果显存不足，减小 <code>per_device_batch_size</code>，增大 <code>gradient_accumulation_steps</code></li></ul><p><strong>示例</strong>：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">training_args = TrainingArguments(</span><br><span class="line">    per_device_train_batch_size=<span class="number">4</span>,     <span class="comment"># 单卡批次大小</span></span><br><span class="line">    gradient_accumulation_steps=<span class="number">8</span>,     <span class="comment"># 累积 8 步再更新</span></span><br><span class="line">    <span class="comment"># 有效批次大小 = 4 × 8 = 32</span></span><br><span class="line">)</span><br></pre></td></tr></table></figure><h4 id="5-学习率调度器"><a href="#5-学习率调度器" class="headerlink" title="5. 学习率调度器"></a>5. 学习率调度器</h4><ul><li><strong>推荐</strong>：Cosine Annealing with Warmup</li><li><strong>Warmup 步数</strong>：总步数的 3-10%</li><li><strong>最小学习率</strong>：初始学习率的 0.1 倍</li></ul><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> transformers <span class="keyword">import</span> get_cosine_schedule_with_warmup</span><br><span class="line"></span><br><span class="line">scheduler = get_cosine_schedule_with_warmup(</span><br><span class="line">    optimizer,</span><br><span class="line">    num_warmup_steps=<span class="number">100</span>,</span><br><span class="line">    num_training_steps=<span class="number">1000</span></span><br><span class="line">)</span><br></pre></td></tr></table></figure><h4 id="6-混合精度训练"><a href="#6-混合精度训练" class="headerlink" title="6. 混合精度训练"></a>6. 混合精度训练</h4><ul><li>使用 <code>fp16</code> 或 <code>bf16</code>（BF16 更稳定，但需要较新的 GPU）</li><li>可以进一步节省显存和加速训练</li></ul><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">training_args = TrainingArguments(</span><br><span class="line">    fp16=<span class="literal">True</span>,  <span class="comment"># 或 bf16=True（对于 A100、H100 等）</span></span><br><span class="line">    ...</span><br><span class="line">)</span><br></pre></td></tr></table></figure><h3 id="调试技巧"><a href="#调试技巧" class="headerlink" title="调试技巧"></a>调试技巧</h3><h4 id="检查-LoRA-是否正常工作"><a href="#检查-LoRA-是否正常工作" class="headerlink" title="检查 LoRA 是否正常工作"></a>检查 LoRA 是否正常工作</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 检查可训练参数</span></span><br><span class="line">model.print_trainable_parameters()</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 检查哪些参数被冻结</span></span><br><span class="line"><span class="keyword">for</span> name, param <span class="keyword">in</span> model.named_parameters():</span><br><span class="line">    <span class="keyword">if</span> param.requires_grad:</span><br><span class="line">        <span class="built_in">print</span>(<span class="string">f"Trainable: <span class="subst">{name}</span>"</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 检查 LoRA 的权重是否在更新</span></span><br><span class="line"><span class="comment"># 在训练前后打印 LoRA 权重的范数</span></span><br><span class="line"><span class="keyword">for</span> name, module <span class="keyword">in</span> model.named_modules():</span><br><span class="line">    <span class="keyword">if</span> <span class="string">"lora"</span> <span class="keyword">in</span> name.lower():</span><br><span class="line">        <span class="keyword">if</span> <span class="built_in">hasattr</span>(module, <span class="string">'weight'</span>):</span><br><span class="line">            <span class="built_in">print</span>(<span class="string">f"<span class="subst">{name}</span>: <span class="subst">{module.weight.norm().item()}</span>"</span>)</span><br></pre></td></tr></table></figure><h4 id="常见问题排查"><a href="#常见问题排查" class="headerlink" title="常见问题排查"></a>常见问题排查</h4><ol><li><p><strong>损失不下降</strong>：</p><ul><li>检查学习率是否太小（尝试增大 10 倍）</li><li>检查是否正确设置了 <code>target_modules</code></li><li>检查数据预处理是否正确</li></ul></li><li><p><strong>过拟合严重</strong>：</p><ul><li>增大 <code>lora_dropout</code></li><li>降低 <code>r</code>（rank）</li><li>增加训练数据或使用数据增强</li></ul></li><li><p><strong>显存溢出</strong>：</p><ul><li>降低 <code>per_device_batch_size</code></li><li>增大 <code>gradient_accumulation_steps</code></li><li>使用 <code>gradient_checkpointing</code></li><li>考虑使用 QLoRA</li></ul></li></ol><h2 id="总结：LoRA-的优势"><a href="#总结：LoRA-的优势" class="headerlink" title="总结：LoRA 的优势"></a>总结：LoRA 的优势</h2><ol><li><strong>训练参数极少</strong>：通常只有原模型的 1/1000 甚至更少。</li><li><strong>显存占用低</strong>：因为不需要为原本的大模型权重存储优化器状态（Optimizer States），只需为那两个小矩阵存储，这使得在单张消费级显卡（如 RTX 3090/4090）上微调大模型成为可能。</li><li><strong>推理无延迟</strong>：在推理（Inference）阶段，可以将训练好的 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="6.18ex" height="1.62ex" role="img" focusable="false" viewBox="0 -716 2731.4 716"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D435" d="M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z"></path></g><g data-mml-node="mo" transform="translate(981.2,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mi" transform="translate(1981.4,0)"><path data-c="1D434" d="M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z"></path></g></g></g></svg></mjx-container> 直接加回原权重 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.357ex;" xmlns="http://www.w3.org/2000/svg" width="4.408ex" height="1.902ex" role="img" focusable="false" viewBox="0 -683 1948.4 840.8"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D44A" d="M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z"></path></g><g data-mml-node="TeXAtom" transform="translate(977,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><path data-c="1D45C" d="M201 -11Q126 -11 80 38T34 156Q34 221 64 279T146 380Q222 441 301 441Q333 441 341 440Q354 437 367 433T402 417T438 387T464 338T476 268Q476 161 390 75T201 -11ZM121 120Q121 70 147 48T206 26Q250 26 289 58T351 142Q360 163 374 216T388 308Q388 352 370 375Q346 405 306 405Q243 405 195 347Q158 303 140 230T121 120Z"></path></g><g data-mml-node="mi" transform="translate(485,0)"><path data-c="1D459" d="M117 59Q117 26 142 26Q179 26 205 131Q211 151 215 152Q217 153 225 153H229Q238 153 241 153T246 151T248 144Q247 138 245 128T234 90T214 43T183 6T137 -11Q101 -11 70 11T38 85Q38 97 39 102L104 360Q167 615 167 623Q167 626 166 628T162 632T157 634T149 635T141 636T132 637T122 637Q112 637 109 637T101 638T95 641T94 647Q94 649 96 661Q101 680 107 682T179 688Q194 689 213 690T243 693T254 694Q266 694 266 686Q266 675 193 386T118 83Q118 81 118 75T117 65V59Z"></path></g><g data-mml-node="mi" transform="translate(783,0)"><path data-c="1D451" d="M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z"></path></g></g></g></g></g></svg></mjx-container> 中。这样模型架构没有变化，推理速度和原模型一样快。</li><li><strong>易于切换</strong>：因为 LoRA 文件很小（几 MB 到几百 MB），你可以保留一个基础大模型，然后针对不同任务挂载不同的 LoRA 模块，不需要为每个任务都存一个几十 GB 的大模型。</li><li><strong>效果接近全量微调</strong>：在大多数任务上，LoRA 能达到与全量微调相当的效果，在某些任务上甚至更好。</li><li><strong>生态系统成熟</strong>：有完善的库（PEFT、Diffusers）和社区支持，大量预训练的 LoRA 权重可以直接使用。</li></ol><h2 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h2><ul><li>原论文：<a href="https://arxiv.org/abs/2106.09685">LoRA: Low-Rank Adaptation of Large Language Models</a> (Hu et al., 2021)</li><li>QLoRA 论文：<a href="https://arxiv.org/abs/2305.14314">QLoRA: Efficient Finetuning of Quantized LLMs</a> (Dettmers et al., 2023)</li><li>Hugging Face PEFT 库：<a href="https://github.com/huggingface/peft">https://github.com/huggingface/peft</a></li><li>低本征维度论文：<a href="https://arxiv.org/abs/2012.13255">Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning</a> (Aghajanyan et al., 2020)</li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;LoRA (Low-Rank Adaptation，低秩自适应) 能大幅减少可训练参数的核心原因在于它利用了&lt;strong&gt;矩阵分解（Matrix Decomposition）&lt;strong&gt;和&lt;/strong&gt;低秩（Low-Rank）假设&lt;/strong&gt;。&lt;/p&gt;
&lt;p</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>深度解析LLM的Temperature与Top-p参数</title>
    <link href="https://www.silenceboy.com/2026/02/05/%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90LLM%E7%9A%84Temperature%E4%B8%8ETop-p%E5%8F%82%E6%95%B0/"/>
    <id>https://www.silenceboy.com/2026/02/05/%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90LLM%E7%9A%84Temperature%E4%B8%8ETop-p%E5%8F%82%E6%95%B0/</id>
    <published>2026-02-05T08:50:26.000Z</published>
    <updated>2026-02-05T09:44:38.637Z</updated>
    
    <content type="html"><![CDATA[<p>如果你是 ChatGPT 的深度用户，或者是正在基于 LLM 开发应用的工程师，你一定在 API 文档或 Playground 界面中见过这两个参数：<strong>Temperature（温度）</strong> 和 <strong>Top-p</strong>。</p><p>通常的建议是：”想更有创造力就调高，想更严谨就调低”。但作为一个技术人，你可能并不满足于这种模糊的感性认知。</p><ul><li>它们到底是如何在数学层面影响模型输出的？</li><li>为什么有了 Temperature 还需要 Top-p？</li><li>为什么 OpenAI 建议”通常只调整其中一个”？</li></ul><h2 id="大模型的本质：一场”填空游戏”"><a href="#大模型的本质：一场”填空游戏”" class="headerlink" title="大模型的本质：一场”填空游戏”"></a>大模型的本质：一场”填空游戏”</h2><p>要理解这两个参数，首先得明白 LLM 是如何生成回答的。无论模型多么智能，其核心任务只有一个：<strong>预测下一个 Token（词/字）</strong>。</p><p>假设我们给大模型一个 Prompt（提示词）：</p><blockquote><p><strong>“目前最主流的 AI 开发语言是____”</strong></p></blockquote><p>大模型并不是直接把答案”Python”扔给你，而是会经历以下三个核心步骤：</p><ol><li><strong>打分（Logits Generation）</strong>：模型会扫描词表中的几万个词，根据上下文给每个词打分。<ul><li><em>Python: 4.5分</em></li><li><em>Java: 2.0分</em></li><li><em>C++: 1.5分</em></li><li><em>香蕉: -3.0分</em></li></ul></li><li><strong>转概率（Softmax）</strong>：分数本身无法直接使用，模型通过 Softmax 函数将这些分数转化为概率百分比。<strong>Temperature 正是在这一步发挥作用</strong>，它直接参与 Softmax 计算，调节概率分布的形状。</li><li><strong>采样（Sampling）</strong>：根据概率选择下一个词。<strong>Top-p 在这一步发挥作用</strong>，它通过截断低概率词来限定候选池范围。</li></ol><h2 id="Temperature：改变概率分布的”熵”"><a href="#Temperature：改变概率分布的”熵”" class="headerlink" title="Temperature：改变概率分布的”熵”"></a>Temperature：改变概率分布的”熵”</h2><p><strong>Temperature（温度）</strong> 是一个作用于 Softmax 函数的缩放参数。你可以把它想象成一个 <strong>“概率放大/缩小器”</strong>。</p><p>在数学上，Softmax 的标准公式是 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.293ex;" xmlns="http://www.w3.org/2000/svg" width="4.916ex" height="3.265ex" role="img" focusable="false" viewBox="0 -871.7 2172.8 1443.3"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mfrac"><g data-mml-node="msup" transform="translate(669,394) scale(0.707)"><g data-mml-node="mi"><path data-c="1D452" d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z"></path></g><g data-mml-node="TeXAtom" transform="translate(499,363) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D467" d="M347 338Q337 338 294 349T231 360Q211 360 197 356T174 346T162 335T155 324L153 320Q150 317 138 317Q117 317 117 325Q117 330 120 339Q133 378 163 406T229 440Q241 442 246 442Q271 442 291 425T329 392T367 375Q389 375 411 408T434 441Q435 442 449 442H462Q468 436 468 434Q468 430 463 420T449 399T432 377T418 358L411 349Q368 298 275 214T160 106L148 94L163 93Q185 93 227 82T290 71Q328 71 360 90T402 140Q406 149 409 151T424 153Q443 153 443 143Q443 138 442 134Q425 72 376 31T278 -11Q252 -11 232 6T193 40T155 57Q111 57 76 -3Q70 -11 59 -11H54H41Q35 -5 35 -2Q35 13 93 84Q132 129 225 214T340 322Q352 338 347 338Z"></path></g><g data-mml-node="mi" transform="translate(498,-307.4)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g></g></g><g data-mml-node="mrow" transform="translate(220,-394.8) scale(0.707)"><g data-mml-node="mo"><path data-c="2211" d="M61 748Q64 750 489 750H913L954 640Q965 609 976 579T993 533T999 516H979L959 517Q936 579 886 621T777 682Q724 700 655 705T436 710H319Q183 710 183 709Q186 706 348 484T511 259Q517 250 513 244L490 216Q466 188 420 134T330 27L149 -187Q149 -188 362 -188Q388 -188 436 -188T506 -189Q679 -189 778 -162T936 -43Q946 -27 959 6H999L913 -249L489 -250Q65 -250 62 -248Q56 -246 56 -239Q56 -234 118 -161Q186 -81 245 -11L428 206Q428 207 242 462L57 717L56 728Q56 744 61 748Z"></path></g><g data-mml-node="msup" transform="translate(1222.7,0)"><g data-mml-node="mi"><path data-c="1D452" d="M39 168Q39 225 58 272T107 350T174 402T244 433T307 442H310Q355 442 388 420T421 355Q421 265 310 237Q261 224 176 223Q139 223 138 221Q138 219 132 186T125 128Q125 81 146 54T209 26T302 45T394 111Q403 121 406 121Q410 121 419 112T429 98T420 82T390 55T344 24T281 -1T205 -11Q126 -11 83 42T39 168ZM373 353Q367 405 305 405Q272 405 244 391T199 357T170 316T154 280T149 261Q149 260 169 260Q282 260 327 284T373 353Z"></path></g><g data-mml-node="TeXAtom" transform="translate(499,472.1) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D467" d="M347 338Q337 338 294 349T231 360Q211 360 197 356T174 346T162 335T155 324L153 320Q150 317 138 317Q117 317 117 325Q117 330 120 339Q133 378 163 406T229 440Q241 442 246 442Q271 442 291 425T329 392T367 375Q389 375 411 408T434 441Q435 442 449 442H462Q468 436 468 434Q468 430 463 420T449 399T432 377T418 358L411 349Q368 298 275 214T160 106L148 94L163 93Q185 93 227 82T290 71Q328 71 360 90T402 140Q406 149 409 151T424 153Q443 153 443 143Q443 138 442 134Q425 72 376 31T278 -11Q252 -11 232 6T193 40T155 57Q111 57 76 -3Q70 -11 59 -11H54H41Q35 -5 35 -2Q35 13 93 84Q132 129 225 214T340 322Q352 338 347 338Z"></path></g><g data-mml-node="mi" transform="translate(498,-307.4)"><path data-c="1D457" d="M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z"></path></g></g></g></g></g><rect width="1932.8" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container>。引入 Temperature (<mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.593ex" height="1.532ex" role="img" focusable="false" viewBox="0 -677 704 677"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g></svg></mjx-container>) 后，公式变为：</p><p><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.272ex;" xmlns="http://www.w3.org/2000/svg" width="18.811ex" height="5.575ex" role="img" focusable="false" viewBox="0 -1460 8314.5 2464.2"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="msub"><g data-mml-node="mi"><path data-c="1D443" d="M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z"></path></g><g data-mml-node="mi" transform="translate(675,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="mo" transform="translate(1246.7,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mfrac" transform="translate(2302.5,0)"><g data-mml-node="mrow" transform="translate(855,710)"><g data-mml-node="mi"><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z"></path><path data-c="78" d="M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z" transform="translate(444,0)"></path><path data-c="70" d="M36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218Z" transform="translate(972,0)"></path></g><g data-mml-node="mo" transform="translate(1528,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mo" transform="translate(1528,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(1917,0)"><g data-mml-node="mi"><path data-c="1D467" d="M347 338Q337 338 294 349T231 360Q211 360 197 356T174 346T162 335T155 324L153 320Q150 317 138 317Q117 317 117 325Q117 330 120 339Q133 378 163 406T229 440Q241 442 246 442Q271 442 291 425T329 392T367 375Q389 375 411 408T434 441Q435 442 449 442H462Q468 436 468 434Q468 430 463 420T449 399T432 377T418 358L411 349Q368 298 275 214T160 106L148 94L163 93Q185 93 227 82T290 71Q328 71 360 90T402 140Q406 149 409 151T424 153Q443 153 443 143Q443 138 442 134Q425 72 376 31T278 -11Q252 -11 232 6T193 40T155 57Q111 57 76 -3Q70 -11 59 -11H54H41Q35 -5 35 -2Q35 13 93 84Q132 129 225 214T340 322Q352 338 347 338Z"></path></g><g data-mml-node="mi" transform="translate(498,-150) scale(0.707)"><path data-c="1D456" d="M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z"></path></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(2709,0)"><g data-mml-node="mo"><path data-c="2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path></g></g><g data-mml-node="mi" transform="translate(3209,0)"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g><g data-mml-node="mo" transform="translate(3913,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g><g data-mml-node="mrow" transform="translate(220,-710)"><g data-mml-node="mo"><path data-c="2211" d="M61 748Q64 750 489 750H913L954 640Q965 609 976 579T993 533T999 516H979L959 517Q936 579 886 621T777 682Q724 700 655 705T436 710H319Q183 710 183 709Q186 706 348 484T511 259Q517 250 513 244L490 216Q466 188 420 134T330 27L149 -187Q149 -188 362 -188Q388 -188 436 -188T506 -189Q679 -189 778 -162T936 -43Q946 -27 959 6H999L913 -249L489 -250Q65 -250 62 -248Q56 -246 56 -239Q56 -234 118 -161Q186 -81 245 -11L428 206Q428 207 242 462L57 717L56 728Q56 744 61 748Z"></path></g><g data-mml-node="mi" transform="translate(1222.7,0)"><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z"></path><path data-c="78" d="M201 0Q189 3 102 3Q26 3 17 0H11V46H25Q48 47 67 52T96 61T121 78T139 96T160 122T180 150L226 210L168 288Q159 301 149 315T133 336T122 351T113 363T107 370T100 376T94 379T88 381T80 383Q74 383 44 385H16V431H23Q59 429 126 429Q219 429 229 431H237V385Q201 381 201 369Q201 367 211 353T239 315T268 274L272 270L297 304Q329 345 329 358Q329 364 327 369T322 376T317 380T310 384L307 385H302V431H309Q324 428 408 428Q487 428 493 431H499V385H492Q443 385 411 368Q394 360 377 341T312 257L296 236L358 151Q424 61 429 57T446 50Q464 46 499 46H516V0H510H502Q494 1 482 1T457 2T432 2T414 3Q403 3 377 3T327 1L304 0H295V46H298Q309 46 320 51T331 63Q331 65 291 120L250 175Q249 174 219 133T185 88Q181 83 181 74Q181 63 188 55T206 46Q208 46 208 23V0H201Z" transform="translate(444,0)"></path><path data-c="70" d="M36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218Z" transform="translate(972,0)"></path></g><g data-mml-node="mo" transform="translate(2750.7,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mo" transform="translate(2750.7,0)"><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z"></path></g><g data-mml-node="msub" transform="translate(3139.7,0)"><g data-mml-node="mi"><path data-c="1D467" d="M347 338Q337 338 294 349T231 360Q211 360 197 356T174 346T162 335T155 324L153 320Q150 317 138 317Q117 317 117 325Q117 330 120 339Q133 378 163 406T229 440Q241 442 246 442Q271 442 291 425T329 392T367 375Q389 375 411 408T434 441Q435 442 449 442H462Q468 436 468 434Q468 430 463 420T449 399T432 377T418 358L411 349Q368 298 275 214T160 106L148 94L163 93Q185 93 227 82T290 71Q328 71 360 90T402 140Q406 149 409 151T424 153Q443 153 443 143Q443 138 442 134Q425 72 376 31T278 -11Q252 -11 232 6T193 40T155 57Q111 57 76 -3Q70 -11 59 -11H54H41Q35 -5 35 -2Q35 13 93 84Q132 129 225 214T340 322Q352 338 347 338Z"></path></g><g data-mml-node="mi" transform="translate(498,-150) scale(0.707)"><path data-c="1D457" d="M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z"></path></g></g><g data-mml-node="TeXAtom" data-mjx-texclass="ORD" transform="translate(3979,0)"><g data-mml-node="mo"><path data-c="2F" d="M423 750Q432 750 438 744T444 730Q444 725 271 248T92 -240Q85 -250 75 -250Q68 -250 62 -245T56 -231Q56 -221 230 257T407 740Q411 750 423 750Z"></path></g></g><g data-mml-node="mi" transform="translate(4479,0)"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g><g data-mml-node="mo" transform="translate(5183,0)"><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z"></path></g></g><rect width="5772" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container></p><p>这个简单的除法操作，带来了神奇的变化：</p><h3 id="🥶-低温状态（T-1，例如-0-1）"><a href="#🥶-低温状态（T-1，例如-0-1）" class="headerlink" title="🥶 低温状态（T < 1，例如 0.1）"></a>🥶 低温状态（T &lt; 1，例如 0.1）</h3><ul><li><strong>原理</strong>：当 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.593ex" height="1.532ex" role="img" focusable="false" viewBox="0 -677 704 677"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g></svg></mjx-container> 变小，分母变小，指数运算会急剧<strong>拉大</strong>高分词与低分词的差距。</li><li><strong>现象</strong>：”强者愈强，弱者愈弱”。原本概率只是略高的”Python”，概率可能从 40% 飙升到 90%；而”Java”的概率会被压缩到近乎为 0。</li><li><strong>结果</strong>：模型变得<strong>极度自信、保守、确定</strong>。它只盯着最高分的那个词，生成的代码或答案非常精准，但也极其刻板。</li></ul><h3 id="🔥-高温状态（T-1，例如-1-5）"><a href="#🔥-高温状态（T-1，例如-1-5）" class="headerlink" title="🔥 高温状态（T > 1，例如 1.5）"></a>🔥 高温状态（T &gt; 1，例如 1.5）</h3><ul><li><strong>原理</strong>：当 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: 0;" xmlns="http://www.w3.org/2000/svg" width="1.593ex" height="1.532ex" role="img" focusable="false" viewBox="0 -677 704 677"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D447" d="M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z"></path></g></g></g></svg></mjx-container> 变大，差距被<strong>缩小</strong>。</li><li><strong>现象</strong>：概率分布变得<strong>平缓（Flat）</strong>。”Python”的优势被削弱，”Java”、”C++”甚至长尾词（如”Julia”）的概率都得到了提升。</li><li><strong>结果</strong>：模型变得<strong>活跃、发散、不可预测</strong>。它更愿意尝试冷门词汇，适合创意写作或头脑风暴，但这也意味着更容易一本正经地胡说八道（幻觉）。</li></ul><h3 id="❄️-绝对零度（T-0）：确定性采样的特殊模式"><a href="#❄️-绝对零度（T-0）：确定性采样的特殊模式" class="headerlink" title="❄️ 绝对零度（T = 0）：确定性采样的特殊模式"></a>❄️ 绝对零度（T = 0）：确定性采样的特殊模式</h3><p><strong>Temperature = 0</strong> 是一个非常特殊的边界情况，此时模型进入<strong>完全确定性模式</strong>（Greedy Decoding）。</p><ul><li><strong>数学处理</strong>：由于不能真的除以0，实际实现中会直接选择 logits 最大的 token，<strong>跳过 Softmax 计算</strong>。</li><li><strong>采样特性</strong>：不再是概率采样，而是<strong>永远选择概率最高的那个词</strong>。</li><li><strong>Top-p 失效</strong>：此时 Top-p 参数完全无效，因为根本不进行概率采样。</li></ul><p><strong>实践意义</strong>：</p><ul><li><strong>完全可复现</strong>：同样的输入永远得到同样的输出（同一模型版本下）</li><li><strong>适用场景</strong>：需要稳定结果的任务（测试、基准评测、代码生成、数学解题）</li><li><strong>注意事项</strong>：虽然输出确定，但不代表”最优”，只是”最可能”</li></ul><blockquote><p><strong>一句话总结：</strong> Temperature 调节的是<strong>竞争的激烈程度</strong>。低温是”赢家通吃”，高温是”百花齐放”，零度是”冠军独享”。</p></blockquote><h2 id="Top-p：划定候选人的”VIP圈子”"><a href="#Top-p：划定候选人的”VIP圈子”" class="headerlink" title="Top-p：划定候选人的”VIP圈子”"></a>Top-p：划定候选人的”VIP圈子”</h2><p>虽然 Temperature 能拉平概率，但它无法彻底剔除那些完全离谱的词（比如”香蕉”）。在高温下，即使是垃圾词也有被选中的可能。</p><p>这时候，就需要 <strong>Top-p</strong>（学术上称为<strong>核采样 Nucleus Sampling</strong>）出场了。它不是改变概率数值，而是<strong>直接切断长尾</strong>。</p><h3 id="核心逻辑"><a href="#核心逻辑" class="headerlink" title="核心逻辑"></a>核心逻辑</h3><p>Top-p 设定了一个<strong>累加概率阈值（P）</strong>。模型会将所有候选词按概率从高到低排列，然后逐个累加，直到总和达到 P 值为止。<strong>只有这个圈子里的词，才有资格进入下一轮筛选。</strong></p><p><strong>举个栗子（假设 Top-p = 0.9）：</strong></p><ul><li><em>Python (40%) + Java (25%) + C++ (20%) + Julia (6%) = 91%</em></li><li><strong>截断！</strong> 此时累加概率超过了 0.9。</li><li><strong>结果</strong>：剩下的 9% 概率对应的词（比如”香蕉”、”自行车”等几万个无关词）会被直接<strong>一刀切掉</strong>，哪怕它们在 Temperature 调高时概率有所上升，也无法通过 Top-p 的安检门。</li></ul><h3 id="调节效果"><a href="#调节效果" class="headerlink" title="调节效果"></a>调节效果</h3><ul><li><strong>Top-p 调低（如 0.1）</strong>：只保留头部极少数最确定的词，效果类似于低 Temperature，极其稳健。</li><li><strong>Top-p 调高（如 0.95）</strong>：允许更多可能性的词进入候选池，保留了表达的多样性。</li></ul><blockquote><p><strong>一句话总结：</strong> Top-p 是一个<strong>动态保镖</strong>，它根据当前的确定性自动调整候选池大小，负责切除低概率的”长尾垃圾”，确保生成的每一句话在逻辑上至少是通顺的。</p></blockquote><h3 id="Top-k-vs-Top-p：两种截断策略的区别"><a href="#Top-k-vs-Top-p：两种截断策略的区别" class="headerlink" title="Top-k vs Top-p：两种截断策略的区别"></a>Top-k vs Top-p：两种截断策略的区别</h3><p>除了 Top-p，你可能还听说过 <strong>Top-k 采样</strong>。两者都是截断策略，但机制不同：</p><h4 id="Top-k：固定数量截断"><a href="#Top-k：固定数量截断" class="headerlink" title="Top-k：固定数量截断"></a>Top-k：固定数量截断</h4><ul><li><strong>逻辑</strong>：只保留概率最高的 <strong>k 个词</strong>（如 k=50）</li><li><strong>特点</strong>：候选池大小<strong>固定</strong></li><li><strong>问题</strong>：当高概率词很集中时，会强行保留一些不必要的低质量词；当概率很分散时，可能会截断合理选项</li></ul><p><strong>举例（Top-k=3）：</strong></p><table><thead><tr><th>场景</th><th>概率分布</th><th>保留的词</th><th>问题</th></tr></thead><tbody><tr><td>确定性高</td><td>Python(85%), Java(10%), C++(3%), Rust(2%)</td><td>前3个</td><td>C++(3%)质量很低但被保留</td></tr><tr><td>不确定性高</td><td>Python(20%), Java(18%), C++(15%), Rust(12%), Go(10%)</td><td>仅前3个</td><td>Rust、Go合理但被排除</td></tr></tbody></table><h4 id="Top-p：动态数量截断"><a href="#Top-p：动态数量截断" class="headerlink" title="Top-p：动态数量截断"></a>Top-p：动态数量截断</h4><ul><li><strong>逻辑</strong>：保留累加概率达到 <strong>p% 的词</strong>（如 p=0.9）</li><li><strong>特点</strong>：候选池大小<strong>动态调整</strong></li><li><strong>优势</strong>：自适应当前的确定性程度，更灵活</li></ul><p><strong>同样场景（Top-p=0.9）：</strong></p><table><thead><tr><th>场景</th><th>概率分布</th><th>保留的词</th><th>优势</th></tr></thead><tbody><tr><td>确定性高</td><td>Python(85%), Java(10%), …</td><td>仅2个</td><td>自动排除低质量词</td></tr><tr><td>不确定性高</td><td>Python(20%), Java(18%), C++(15%), Rust(12%), Go(10%),…</td><td>前5个</td><td>保留更多合理选择</td></tr></tbody></table><blockquote><p><strong>推荐</strong>：现代 LLM（如 GPT、Claude）普遍推荐 Top-p，因为它更智能。Top-k 已经较少单独使用。</p></blockquote><h2 id="终极问题：应该怎么调？"><a href="#终极问题：应该怎么调？" class="headerlink" title="终极问题：应该怎么调？"></a>终极问题：应该怎么调？</h2><p>现在我们明白，Temperature 和 Top-p 虽然殊途同归（都是控制随机性），但路径不同：</p><ul><li><strong>Temperature</strong> 调整的是<strong>概率分布的形状</strong>（陡峭 vs 平缓）。</li><li><strong>Top-p</strong> 调整的是<strong>候选词的截断范围</strong>（去长尾）。</li></ul><h3 id="黄金法则：Alter-one-not-both"><a href="#黄金法则：Alter-one-not-both" class="headerlink" title="黄金法则：Alter one, not both"></a>黄金法则：Alter one, not both</h3><p>OpenAI 官方文档和大多数开发者建议：<strong>通常情况下，只调整其中一个即可，不要同时大幅调整两个。</strong></p><p>因为这两个参数同时调整会产生复杂的耦合效应，使得调试变得非常困难。</p><h3 id="为什么不建议同时调整？深入解析"><a href="#为什么不建议同时调整？深入解析" class="headerlink" title="为什么不建议同时调整？深入解析"></a>为什么不建议同时调整？深入解析</h3><p>虽然官方建议”不要同时调整”，但理解它们的交互效应能帮你避免踩坑。</p><h4 id="高Temperature-低Top-p-自相矛盾"><a href="#高Temperature-低Top-p-自相矛盾" class="headerlink" title="高Temperature + 低Top-p = 自相矛盾"></a>高Temperature + 低Top-p = 自相矛盾</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">temperature = <span class="number">1.5</span>  <span class="comment"># 拉平概率分布，让更多词有机会</span></span><br><span class="line">top_p = <span class="number">0.1</span>        <span class="comment"># 只保留最头部的词</span></span><br></pre></td></tr></table></figure><p><strong>结果</strong>：Temperature 好不容易提升了长尾词的概率，却被 Top-p 一刀切掉。<strong>两者互相抵消，白白浪费计算资源。</strong></p><h4 id="低Temperature-高Top-p-后者无用"><a href="#低Temperature-高Top-p-后者无用" class="headerlink" title="低Temperature + 高Top-p = 后者无用"></a>低Temperature + 高Top-p = 后者无用</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">temperature = <span class="number">0.1</span>  <span class="comment"># 概率分布极度尖锐</span></span><br><span class="line">top_p = <span class="number">0.95</span>       <span class="comment"># 保留95%累加概率的词</span></span><br></pre></td></tr></table></figure><p><strong>结果</strong>：因为 Temperature 已经让概率极度集中（如 Top 1 占99%），Top-p 实际只保留了1-2个词，<strong>设置 0.95 和 0.5 效果一样</strong>。</p><h4 id="那什么时候可以同时调整？"><a href="#那什么时候可以同时调整？" class="headerlink" title="那什么时候可以同时调整？"></a>那什么时候可以同时调整？</h4><p><strong>唯一合理场景</strong>：高Temperature + 高Top-p（如 Temp=1.2, Top-p=0.95）</p><ul><li>Temperature 拉平分布，释放创造力</li><li>Top-p 兜底，防止生成垃圾内容</li><li>两者形成 <strong>“加速器+刹车”</strong> 的配合</li></ul><blockquote><p><strong>工程建议</strong>：先固定一个参数（通常是 Top-p=0.9），只调整 Temperature。达到预期后，再考虑微调 Top-p。</p></blockquote><h3 id="真实案例：同一个-Prompt-的不同”面孔”"><a href="#真实案例：同一个-Prompt-的不同”面孔”" class="headerlink" title="真实案例：同一个 Prompt 的不同”面孔”"></a>真实案例：同一个 Prompt 的不同”面孔”</h3><p>让我们用一个实际例子来直观感受参数的影响。</p><p><strong>Prompt</strong>：”请用一句话描述人工智能”</p><table><thead><tr><th>参数设置</th><th>实际输出示例</th></tr></thead><tbody><tr><td><strong>Temp=0</strong></td><td>人工智能是计算机科学的一个分支，致力于创建能够模拟人类智能行为的系统。</td></tr><tr><td><strong>Temp=0.5</strong></td><td>人工智能是一种让机器具备学习、推理和解决问题能力的技术。</td></tr><tr><td><strong>Temp=1.0</strong></td><td>人工智能是赋予计算机”思考”能力的科学，它正在重塑我们的世界。</td></tr><tr><td><strong>Temp=1.5</strong></td><td>人工智能是硅基生命的黎明，是人类智慧在数字世界的延伸与映射。</td></tr></tbody></table><p><strong>观察</strong>：</p><ul><li>Temperature 越低，用词越<strong>学术化、标准化</strong></li><li>Temperature 越高，表达越<strong>诗意化、个性化</strong></li><li>但当 Temp&gt;1.5 时，可能出现”硅基生命”这种过于跳跃的词汇</li></ul><h3 id="✅-最佳实践指南"><a href="#✅-最佳实践指南" class="headerlink" title="✅ 最佳实践指南"></a>✅ 最佳实践指南</h3><table><thead><tr><th align="left">应用场景</th><th align="left">建议参数设置</th><th align="left">预期效果</th></tr></thead><tbody><tr><td align="left"><strong>代码生成 / 数学解题</strong></td><td align="left"><strong>Temp = 0 (或 0.1)</strong></td><td align="left"><strong>极度精准</strong>。此时 Top-p 的影响几乎可以忽略，因为概率分布已经极度尖锐，模型几乎只选 Top 1。</td></tr><tr><td align="left"><strong>事实性问答 / 客服</strong></td><td align="left"><strong>Temp = 0.3 ~ 0.5</strong></td><td align="left"><strong>稳健且自然</strong>。在保持准确性的同时，允许措辞有微小的变化，不至于像机器人一样死板。</td></tr><tr><td align="left"><strong>创意文案 / 小说续写</strong></td><td align="left"><strong>Temp = 0.8 ~ 1.0</strong><br><strong>Top-p = 0.9</strong></td><td align="left"><strong>平衡之选</strong>。既有足够的随机性带来惊喜，又有 Top-p 兜底，防止生成完全不通顺的乱码。</td></tr><tr><td align="left"><strong>头脑风暴 / 寻找灵感</strong></td><td align="left"><strong>Temp = 1.2+</strong><br><strong>Top-p = 0.95</strong></td><td align="left"><strong>疯狂模式</strong>。此时必须配合较高的 Top-p，否则高温带来的多样性会被 Top-p 截断。准备好迎接极其跳跃的思维吧。</td></tr></tbody></table><h2 id="⚠️-常见误区与澄清"><a href="#⚠️-常见误区与澄清" class="headerlink" title="⚠️ 常见误区与澄清"></a>⚠️ 常见误区与澄清</h2><p>在实际使用中，很多开发者对这两个参数存在误解。让我们澄清几个最常见的误区：</p><h3 id="误区1：”Temperature-越高，模型越聪明”"><a href="#误区1：”Temperature-越高，模型越聪明”" class="headerlink" title="误区1：”Temperature 越高，模型越聪明”"></a>误区1：”Temperature 越高，模型越聪明”</h3><p>❌ <strong>错误</strong>：Temperature 不影响模型的智能水平，只影响输出的<strong>随机性</strong>。</p><p>✅ <strong>真相</strong>：高 Temperature 可能让模型选择本不该选的词，反而降低输出质量。模型的”聪明程度”取决于预训练质量，而非采样参数。</p><h3 id="误区2：”Top-p-能提高输出质量”"><a href="#误区2：”Top-p-能提高输出质量”" class="headerlink" title="误区2：”Top-p 能提高输出质量”"></a>误区2：”Top-p 能提高输出质量”</h3><p>❌ <strong>错误</strong>：Top-p 只是<strong>过滤器</strong>，不会让模型生成更好的内容。</p><p>✅ <strong>真相</strong>：它只是防止模型选择低概率垃圾词，质量提升的本质是”避免犯低级错误”，而非”变聪明”。</p><h3 id="误区3：”Temperature-2-比-1-更有创造力”"><a href="#误区3：”Temperature-2-比-1-更有创造力”" class="headerlink" title="误区3：”Temperature=2 比 1 更有创造力”"></a>误区3：”Temperature=2 比 1 更有创造力”</h3><p>❌ <strong>错误</strong>：Temperature 过高会让概率分布过于平坦，导致<strong>随机噪声</strong>而非创造力。</p><p>✅ <strong>真相</strong>：实践中很少超过 1.5，因为再高就是”瞎蒙”了。真正的创造力来自模型对上下文的理解，而非随机性。</p><h3 id="误区4：”设置了-Temp-0-就完全没有随机性”"><a href="#误区4：”设置了-Temp-0-就完全没有随机性”" class="headerlink" title="误区4：”设置了 Temp=0 就完全没有随机性”"></a>误区4：”设置了 Temp=0 就完全没有随机性”</h3><p>⚠️ <strong>部分正确</strong>：在单次生成中确实确定，但：</p><ul><li>如果 Prompt 轻微变化（如多个空格），输出可能不同</li><li>模型版本更新后，即使 Temp=0 输出也可能变化</li><li>某些实现中，浮点运算精度可能带来微小差异</li></ul><h3 id="误区5：”Top-p-1-0-就是不限制”"><a href="#误区5：”Top-p-1-0-就是不限制”" class="headerlink" title="误区5：”Top-p=1.0 就是不限制”"></a>误区5：”Top-p=1.0 就是不限制”</h3><p>✅ <strong>正确</strong>：Top-p=1.0 确实保留所有词，但这通常不是好主意。</p><p>⚠️ <strong>注意</strong>：即使是高温创作，也建议保持 Top-p≤0.95，否则极低概率的荒谬词汇可能污染输出。</p><h2 id="进阶：其他影响生成的参数"><a href="#进阶：其他影响生成的参数" class="headerlink" title="进阶：其他影响生成的参数"></a>进阶：其他影响生成的参数</h2><p>虽然 Temperature 和 Top-p 是核心参数，但在实际开发中，你还会遇到这些”配角”：</p><h3 id="frequency-penalty（频率惩罚，范围-2-0-2-0）"><a href="#frequency-penalty（频率惩罚，范围-2-0-2-0）" class="headerlink" title="frequency_penalty（频率惩罚，范围 -2.0 ~ 2.0）"></a>frequency_penalty（频率惩罚，范围 -2.0 ~ 2.0）</h3><ul><li><strong>作用</strong>：降低模型<strong>重复使用已出现词汇</strong>的概率</li><li><strong>机制</strong>：根据词在当前文本中出现的次数，线性降低其 logits</li><li><strong>应用</strong>：防止”车轱辘话”，让输出更多样化</li></ul><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 适合长文本生成，避免重复</span></span><br><span class="line">response = client.chat.completions.create(</span><br><span class="line">    model=<span class="string">"gpt-4"</span>,</span><br><span class="line">    temperature=<span class="number">0.8</span>,</span><br><span class="line">    frequency_penalty=<span class="number">0.5</span>,  <span class="comment"># 降低重复</span></span><br><span class="line">    messages=[...]</span><br><span class="line">)</span><br></pre></td></tr></table></figure><h3 id="presence-penalty（存在惩罚，范围-2-0-2-0）"><a href="#presence-penalty（存在惩罚，范围-2-0-2-0）" class="headerlink" title="presence_penalty（存在惩罚，范围 -2.0 ~ 2.0）"></a>presence_penalty（存在惩罚，范围 -2.0 ~ 2.0）</h3><ul><li><strong>作用</strong>：降低模型<strong>使用任何已出现过的词</strong>的概率（不看次数，只看是否出现过）</li><li><strong>机制</strong>：对所有已出现的词一视同仁地降低 logits</li><li><strong>应用</strong>：鼓励模型探索新话题</li></ul><p><strong>两者区别</strong>：</p><table><thead><tr><th>参数</th><th>惩罚机制</th><th>适用场景</th></tr></thead><tbody><tr><td>frequency_penalty</td><td>出现越多次，惩罚越重</td><td>避免特定词高频重复（如”然后”、”非常”）</td></tr><tr><td>presence_penalty</td><td>出现过就惩罚，不看次数</td><td>鼓励话题多样性（如头脑风暴）</td></tr></tbody></table><h3 id="max-tokens（最大token数）"><a href="#max-tokens（最大token数）" class="headerlink" title="max_tokens（最大token数）"></a>max_tokens（最大token数）</h3><ul><li>虽然不影响概率分布，但会截断生成</li><li>与 Temperature 配合：高 Temp 时建议设置合理上限，防止”刹不住车”</li></ul><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创意模式 + 长度限制</span></span><br><span class="line">response = client.chat.completions.create(</span><br><span class="line">    model=<span class="string">"gpt-4"</span>,</span><br><span class="line">    temperature=<span class="number">1.2</span>,</span><br><span class="line">    top_p=<span class="number">0.95</span>,</span><br><span class="line">    max_tokens=<span class="number">300</span>,  <span class="comment"># 防止无限发散</span></span><br><span class="line">    messages=[...]</span><br><span class="line">)</span><br></pre></td></tr></table></figure><h3 id="seed（随机种子，部分平台支持）"><a href="#seed（随机种子，部分平台支持）" class="headerlink" title="seed（随机种子，部分平台支持）"></a>seed（随机种子，部分平台支持）</h3><ul><li><strong>作用</strong>：在相同输入下尽可能复现输出（配合 Temperature&gt;0 使用）</li><li><strong>注意</strong>：并非所有平台都支持，且不保证100%复现</li></ul><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># OpenAI API 支持 seed 参数</span></span><br><span class="line">response = client.chat.completions.create(</span><br><span class="line">    model=<span class="string">"gpt-4"</span>,</span><br><span class="line">    temperature=<span class="number">0.7</span>,</span><br><span class="line">    seed=<span class="number">42</span>,  <span class="comment"># 固定随机种子</span></span><br><span class="line">    messages=[...]</span><br><span class="line">)</span><br></pre></td></tr></table></figure><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>让我们回顾一下核心要点：</p><h3 id="核心原理"><a href="#核心原理" class="headerlink" title="核心原理"></a>核心原理</h3><ul><li><strong>Temperature</strong> 作用于 Softmax 阶段，改变概率分布的形状（陡峭 vs 平缓）</li><li><strong>Top-p</strong> 作用于采样阶段，动态截断低概率长尾词</li><li>两者分工明确：一个调形状，一个切范围</li></ul><h3 id="实用建议"><a href="#实用建议" class="headerlink" title="实用建议"></a>实用建议</h3><ul><li>想让 AI <strong>“更专注”</strong>，优先调低 <strong>Temperature</strong></li><li>想让 AI <strong>“不跑题”</strong>，优先微调 <strong>Top-p</strong></li><li><strong>避免同时大幅调整两者</strong>，除非你清楚知道自己在做什么</li></ul><h3 id="快速查询表"><a href="#快速查询表" class="headerlink" title="快速查询表"></a>快速查询表</h3><table><thead><tr><th>需求</th><th>推荐设置</th><th>典型场景</th></tr></thead><tbody><tr><td>极度精准</td><td>Temp=0</td><td>代码生成、数学题、测试</td></tr><tr><td>稳健准确</td><td>Temp=0.3-0.5</td><td>问答、客服、知识查询</td></tr><tr><td>平衡创意</td><td>Temp=0.8-1.0, Top-p=0.9</td><td>文案、博客、对话</td></tr><tr><td>疯狂脑暴</td><td>Temp=1.2+, Top-p=0.95</td><td>创意激发、艺术创作</td></tr></tbody></table><p>掌握了这两个参数，你就掌握了大模型的”情绪调节器”。下次在使用 API 或 Playground 时，不妨试着动手调一调，你会发现同一个模型也能展现出截然不同的两副面孔！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;如果你是 ChatGPT 的深度用户，或者是正在基于 LLM 开发应用的工程师，你一定在 API 文档或 Playground 界面中见过这两个参数：&lt;strong&gt;Temperature（温度）&lt;/strong&gt; 和 &lt;strong&gt;Top-p&lt;/strong&gt;。&lt;/p&gt;</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>LLM是如何读懂文字的</title>
    <link href="https://www.silenceboy.com/2026/02/04/LLM%E6%98%AF%E5%A6%82%E4%BD%95%E8%AF%BB%E6%87%82%E6%96%87%E5%AD%97%E7%9A%84/"/>
    <id>https://www.silenceboy.com/2026/02/04/LLM%E6%98%AF%E5%A6%82%E4%BD%95%E8%AF%BB%E6%87%82%E6%96%87%E5%AD%97%E7%9A%84/</id>
    <published>2026-02-04T09:06:31.000Z</published>
    <updated>2026-02-04T09:38:34.601Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>本文深入浅出地解析了大语言模型（LLM）如何将人类语言转换为数学运算，再将计算结果转换回文字的完整过程。从分词器（Tokenizer）将文字切分为整数ID，到嵌入层（Embedding Layer）将ID映射为高维语义向量，再经过位置编码（Positional Encoding）添加顺序信息，然后通过几十层Transformer进行矩阵计算和语义理解，最后通过反向映射（Unembedding）和采样策略生成输出文字。</p></blockquote><hr><h2 id="分词器（Tokenizer）—-查字典，把字变整数"><a href="#分词器（Tokenizer）—-查字典，把字变整数" class="headerlink" title="分词器（Tokenizer）— 查字典，把字变整数"></a>分词器（Tokenizer）— 查字典，把字变整数</h2><p>在你按下回车键的瞬间，文字并没有直接进入模型的大脑（神经网络），而是先被送到了一个名为 <strong>Tokenizer（分词器）</strong> 的组件中。</p><p>Tokenizer 不是神经网络，它更像是一个静态的<strong>超级字典</strong>。</p><ol><li><strong>切分：</strong> 输入句子 <code>我爱AI</code>。</li><li><strong>查表：</strong> Tokenizer 会查阅一个巨大的词表（Vocabulary），找到每个字对应的<strong>唯一编号（ID）</strong>。<ul><li>“我” -&gt; ID: <code>254</code></li><li>“爱” -&gt; ID: <code>3301</code></li><li>“AI” -&gt; ID: <code>1209</code></li></ul></li><li><strong>输出：</strong> 此时，文字变成了一个整数列表（Tensor）：<code>[254, 3301, 1209]</code>。</li></ol><blockquote><p><strong>注意：</strong> 这一步只是查表，没有任何复杂的矩阵运算，也没有语义理解。电脑只知道现在来了三个代号。</p></blockquote><h3 id="不同的分词算法"><a href="#不同的分词算法" class="headerlink" title="不同的分词算法"></a>不同的分词算法</h3><p>实际上，不同的模型使用不同的分词算法：</p><ul><li><strong>BPE (Byte Pair Encoding)：</strong> GPT系列使用的算法，会把高频出现的字符组合合并成一个token。比如”ing”、”ed”可能是独立的token。</li><li><strong>WordPiece：</strong> BERT使用的算法，类似BPE，但使用不同的合并策略。</li><li><strong>SentencePiece：</strong> 一些多语言模型使用，可以直接处理原始文本，不需要预先分词。</li></ul><p>这就是为什么相同的句子在GPT-4和Claude中，token数量可能不一样——它们用的字典不同！</p><blockquote><p><strong>关键要点：训练与推理的一致性</strong></p><p>这里有一个至关重要的技术细节：<strong>模型在对话（推理）时使用的Tokenizer，必须和训练时使用的Tokenizer完全相同</strong>。</p><p>想象一下，训练时”AI”这个词被分配了ID 1209，Embedding矩阵的第1209行就学习到了”AI”的语义。如果推理时用了不同的Tokenizer，”AI”可能被分配成ID 5678，模型就会去查第5678行——那里存的可能是”香蕉”的语义！整个系统就乱套了。</p><p>所以每个LLM都会把Tokenizer和模型权重<strong>绑定发布</strong>，确保你下载GPT-4模型时，同时拿到的是训练GPT-4时用的那个专属词表和分词规则。这就像是模型的”专属字典”，不能随意更换。</p></blockquote><h3 id="特殊标记（Special-Tokens）"><a href="#特殊标记（Special-Tokens）" class="headerlink" title="特殊标记（Special Tokens）"></a>特殊标记（Special Tokens）</h3><p>除了普通文字，Tokenizer还会添加一些特殊标记：</p><ul><li><strong><code>[CLS]</code>：</strong> 分类标记（BERT），表示句子开始</li><li><strong><code>[SEP]</code>：</strong> 分隔标记，用于分隔不同的句子</li><li><strong><code>[PAD]</code>：</strong> 填充标记，用于对齐批次处理中不同长度的输入</li><li><strong><code>[MASK]</code>：</strong> 掩码标记（BERT），用于训练时遮蔽某些词</li><li><strong><code>&lt;|endoftext|&gt;</code>：</strong> GPT中表示文本结束</li></ul><p>这些特殊标记就像是给模型的”指令符号”，告诉它这段文字的结构。</p><hr><h2 id="Embedding-Layer（嵌入层）—-把整数变向量"><a href="#Embedding-Layer（嵌入层）—-把整数变向量" class="headerlink" title="Embedding Layer（嵌入层）— 把整数变向量"></a>Embedding Layer（嵌入层）— 把整数变向量</h2><p><strong>模型内部自带了一个巨大的 Embedding 矩阵</strong>。外部的 Embedding Model 实际上就是把 Model 的前几层（Tokenization + Embedding Layer）单独拿出来用而已。Model 自己体内天生就”内置”了这个转换器。</p><p>虽然你没有使用外部的 embedding model，但 Base Model 的架构中，<strong>第一层（Layer 0）</strong> 永远是一个巨大的查找表矩阵。</p><ul><li><p><strong>矩阵长什么样？</strong><br>假设词表大小是 50,000 个词，模型的维度（Hidden Size）是 4,096。<br>这个矩阵就是一个 <code>[50000 x 4096]</code> 的巨型表格。每一行都代表一个词的”语义坐标”。</p></li><li><p><strong>发生了什么？</strong><br>模型拿到上一步的 ID <code>[254, 3301, 1209]</code>，然后去这个矩阵里”抽屉取物”：</p><ul><li>去第 254 行，把那一行 4096 个数字复制出来。</li><li>去第 3301 行，把那一行 4096 个数字复制出来。</li><li>…</li></ul></li><li><p><strong>结果：</strong><br>现在的输入变成了一个 <code>[3, 4096]</code> 的浮点数矩阵。</p><ul><li><code>254</code> 变成了 <code>[0.1, -0.9, 0.05 ...]</code> （代表”我”的语义向量）</li><li><code>3301</code> 变成了 <code>[0.8, 0.2, -0.3 ...]</code> （代表”爱”的语义向量）</li></ul></li></ul><blockquote><p><strong>关键点：</strong> 这个 Embedding 矩阵的参数（那些浮点数），是和模型其他部分的参数<strong>一起训练出来的</strong>。所以 Base Model 自己就懂得如何把 ID 转换成它能理解的向量。</p></blockquote><hr><h2 id="位置编码（Positional-Encoding）—-加上顺序信息"><a href="#位置编码（Positional-Encoding）—-加上顺序信息" class="headerlink" title="位置编码（Positional Encoding）— 加上顺序信息"></a>位置编码（Positional Encoding）— 加上顺序信息</h2><p>只有 Embedding 是不够的，因为 Transformer 架构并行处理，它默认不知道”我爱你”和”你爱我”的区别。</p><p>在进入真正的深层网络之前，模型会把表示位置的向量（Position Vector）<strong>加</strong>到刚才的词向量上。</p><ul><li><code>最终向量 = 词义向量 + 位置向量</code></li></ul><h3 id="不同的位置编码方法"><a href="#不同的位置编码方法" class="headerlink" title="不同的位置编码方法"></a>不同的位置编码方法</h3><p>随着技术发展，出现了多种位置编码方案：</p><ul><li><strong>绝对位置编码（Absolute Positional Encoding）：</strong> 原始Transformer使用的方法，使用正弦和余弦函数生成固定的位置向量。每个位置都有一个固定的编码。</li><li><strong>可学习位置编码（Learned Positional Encoding）：</strong> GPT等模型使用，位置向量是训练出来的参数，不是固定的数学函数。</li><li><strong>相对位置编码（Relative Positional Encoding）：</strong> 不编码绝对位置，而是编码词与词之间的相对距离。</li><li><strong>RoPE（Rotary Position Embedding）：</strong> LLaMA等新模型使用，通过旋转变换注入位置信息，在长文本处理上表现更好。</li></ul><p>不同的位置编码方法会影响模型对长文本的理解能力和上下文窗口的最大长度。</p><p>此时，数据正式准备好，可以进入 Transformer 的核心层进行”矩阵计算”了。</p><hr><h2 id="Transformer-内部计算-—-预测下一个字"><a href="#Transformer-内部计算-—-预测下一个字" class="headerlink" title="Transformer 内部计算 — 预测下一个字"></a>Transformer 内部计算 — 预测下一个字</h2><p>现在，数据流经几十层 Transformer Block（如 Self-Attention 和 MLP）。</p><p>每一层都在做大量的<strong>矩阵乘法（Matrix Multiplication）</strong>：</p><ol><li><strong>Attention（注意力）：</strong> 计算词与词之间的关系。比如看到”爱”，模型会回头看”我”和”AI”，通过矩阵运算算出它们之间的关联强度。</li><li><strong>MLP（前馈网络）：</strong> 这一步就是我们在上一条回答中提到的”记忆提取”。模型根据上下文，激活特定的神经元。</li></ol><h3 id="上下文窗口限制"><a href="#上下文窗口限制" class="headerlink" title="上下文窗口限制"></a>上下文窗口限制</h3><p>需要注意的是，模型并不能处理无限长的文本。每个模型都有一个 <strong>上下文窗口（Context Window）</strong> 限制：</p><ul><li><strong>GPT-3.5：</strong> 4,096 tokens（约3,000个中文字）</li><li><strong>GPT-4：</strong> 8,192 tokens 或 32,768 tokens（取决于版本）</li><li><strong>Claude 3：</strong> 200,000 tokens（约15万个中文字）</li><li><strong>Gemini 1.5 Pro：</strong> 1,000,000 tokens</li></ul><p>这个限制来自于Attention机制的计算复杂度——对于 N 个token，需要计算 N×N 的关系矩阵，内存和计算量会快速增长。所以如果输入超过这个长度，模型要么会截断，要么会报错。</p><p><strong>最终输出：</strong><br>经过几十层计算后，最后一个 token（也就是”AI”这个位置）会输出一个新的向量。这个向量包含了”我爱AI”这整句话的上下文含义。</p><hr><h2 id="Unembedding（反向映射）—-向量变回字"><a href="#Unembedding（反向映射）—-向量变回字" class="headerlink" title="Unembedding（反向映射）— 向量变回字"></a>Unembedding（反向映射）— 向量变回字</h2><p>最后一步，模型要把脑子里的”语义向量”变回人类能看的字。</p><ol><li><strong>投影：</strong> 最后的向量会乘以一个巨大的矩阵（通常就是 Embedding 矩阵的转置，或者叫 Head）。这个操作会把向量维度从 4096 映射回 50,000（词表大小）。</li><li><strong>Logits：</strong> 此时，你会得到 50,000 个分数（Logits）。<ul><li>“吗”的分数：5.2</li><li>“。”的分数：12.8</li><li>“的”的分数：-3.0</li></ul></li><li><strong>Softmax：</strong> 这些分数被转化成概率。<ul><li>“。”的概率：90%</li><li>“吗”的概率：5%</li></ul></li><li><strong>采样：</strong> 模型（或者说生成策略）选择概率最高的那个 ID，比如对应的是”。”。</li><li><strong>解码：</strong> Tokenizer 把 ID 换回文字 “。”。</li></ol><h3 id="采样策略-—-控制创造力"><a href="#采样策略-—-控制创造力" class="headerlink" title="采样策略 — 控制创造力"></a>采样策略 — 控制创造力</h3><p>第4步的”采样”其实有很多种策略，它们会极大地影响模型的输出风格：</p><ul><li><p><strong>Greedy Sampling（贪心采样）：</strong> 永远选择概率最高的词。</p><ul><li>优点：输出稳定、确定</li><li>缺点：可能重复、缺乏创造力</li></ul></li><li><p><strong>Temperature（温度参数）：</strong> 在计算概率之前，调整 Logits 的分布。</p><ul><li><code>Temperature = 1.0</code>：原始分布</li><li><code>Temperature &lt; 1.0</code>（如0.5）：让高概率的词更高，输出更确定</li><li><code>Temperature &gt; 1.0</code>（如1.5）：让分布更平坦，输出更随机、更有创造力</li></ul><p>就像调节咖啡的温度——温度越高，味道越不稳定！</p></li><li><p><strong>Top-K Sampling：</strong> 只从概率最高的 K 个词中随机选择。</p><ul><li>例如 <code>K=50</code>，只考虑前50个最可能的词</li><li>避免选到那些概率极低的奇怪词</li></ul></li><li><p><strong>Top-P Sampling（Nucleus Sampling）：</strong> 选择累积概率达到 P 的最小词集合。</p><ul><li>例如 <code>P=0.9</code>，选择那些加起来占90%概率的词</li><li>优点：动态调整候选词数量，更灵活</li></ul></li></ul><p>你在ChatGPT的设置中调整”温度”或”创造力”参数时，实际上就是在控制这些采样策略！</p><hr><h2 id="总结：完整流程"><a href="#总结：完整流程" class="headerlink" title="总结：完整流程"></a>总结：完整流程</h2><p>如果你输入”你好”：</p><ol><li><strong>Text:</strong> “你好”</li><li><strong>Tokenizer:</strong> 查字典 -&gt; <code>[ID: 101, ID: 204]</code></li><li><strong>Internal Embedding Layer:</strong> 查内部矩阵 -&gt; <code>[[0.1, ...], [0.9, ...]]</code> (变成向量)</li><li><strong>Positional Encoding:</strong> 加上位置信息 -&gt; 最终输入向量</li><li><strong>Transformer Layers:</strong> 几十层的矩阵乘法 (混合上下文，提取记忆) -&gt; <code>[Context Vector]</code></li><li><strong>Output Head:</strong> 向量乘回词表大小 -&gt; <code>[Logits]</code> (5万个词的分数)</li><li><strong>Sampling Strategy:</strong> 根据采样策略（如Top-P、Temperature）选择 ID -&gt; <code>ID: 305</code></li><li><strong>Tokenizer:</strong> 查字典 <code>ID: 305</code> -&gt; “！”</li></ol>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;本文深入浅出地解析了大语言模型（LLM）如何将人类语言转换为数学运算，再将计算结果转换回文字的完整过程。从分词器（Tokenizer）将文字切分为整数ID，到嵌入层（Embedding Layer）将ID映射为高维语义向量，再经过位置编码（Posi</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>Base模型如何记住海量的训练数据</title>
    <link href="https://www.silenceboy.com/2026/02/04/Base%E6%A8%A1%E5%9E%8B%E5%A6%82%E4%BD%95%E8%AE%B0%E4%BD%8F%E6%B5%B7%E9%87%8F%E7%9A%84%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE/"/>
    <id>https://www.silenceboy.com/2026/02/04/Base%E6%A8%A1%E5%9E%8B%E5%A6%82%E4%BD%95%E8%AE%B0%E4%BD%8F%E6%B5%B7%E9%87%8F%E7%9A%84%E8%AE%AD%E7%BB%83%E6%95%B0%E6%8D%AE/</id>
    <published>2026-02-04T08:41:40.000Z</published>
    <updated>2026-02-04T09:02:01.844Z</updated>
    
    <content type="html"><![CDATA[<p>这是一个非常深刻且触及大模型本质的问题。很多初学者容易误以为模型是一个“搜索引擎”或者“数据库”，但实际上它的运作机制完全不同。</p><p>以下是对 <strong>Base Model（基座模型）</strong> 如何工作、如何“记忆”数据、以及数据存储方式的系统化解析。</p><hr><h2 id="核心原理"><a href="#核心原理" class="headerlink" title="核心原理"></a>核心原理</h2><p><strong>为什么 Base Model 能对话？</strong></p><p>Base Model（如 Llama-3-Base, GPT-4-Base）的核心训练目标只有一个：<strong>Next Token Prediction（预测下一个词&#x2F;字）</strong>。</p><p>当你给模型输入一段话时，它并不是在“思考”如何回答你，而是在计算：<strong>“根据我见过的所有文本，接下来出现概率最高的词是什么？”</strong></p><ul><li><strong>对话即接龙：</strong> 在互联网的文本中，充满了（问题-&gt;答案）这样的模式（例如论坛帖子、采访稿、书籍对话）。<ul><li>输入：<code>你好</code></li><li>模型预测：<code>！</code> 或 <code>吗？</code> 或 <code>，很高兴见到你</code>。</li></ul></li><li><strong>因为见过，所以会补全：</strong> 如果你输入 <code>法国的首都是</code>，模型补全 <code>巴黎</code>，这看起来像是在回答问题，但本质上它是在做文本补全。</li></ul><p><strong>局限性：</strong></p><p>Base Model 虽然能“对话”，但它往往不可控。如果你问它 <code>怎么做红烧肉？</code>，它可能不会直接给你菜谱，而是补全成 <code>怎么做回锅肉？怎么做水煮鱼？</code>（因为它以为你在列一个问题清单）。只有经过后期的 <strong>Instruction Tuning（指令微调）</strong>，它才会变成像 ChatGPT 那样乖乖听指令的助手。</p><hr><h2 id="记忆机制（“有损压缩”）"><a href="#记忆机制（“有损压缩”）" class="headerlink" title="记忆机制（“有损压缩”）"></a>记忆机制（“有损压缩”）</h2><p>这是最反直觉的部分：<strong>训练数据并不存储在模型里。</strong></p><h3 id="权重（Weights）即知识"><a href="#权重（Weights）即知识" class="headerlink" title="权重（Weights）即知识"></a>权重（Weights）即知识</h3><p>模型是由神经网络组成的，神经网络由数十亿甚至数千亿个 <strong>参数（Parameters&#x2F;Weights）</strong> 构成。这些参数就是一堆浮点数（数字矩阵）。</p><ul><li><strong>训练过程：</strong> 当模型在阅读海量数据时，它不断尝试预测下一个字。<ul><li>如果预测错了，算法（反向传播）会微调这些参数，让它下次预测对。</li><li>如果预测对了，参数就被强化。</li></ul></li><li><strong>结果：</strong> 训练结束后，数据（具体的文字）消失了，留下的是<strong>参数的特定排列组合</strong>。</li></ul><h3 id="最好的比喻：有损压缩（JPEG-图片）"><a href="#最好的比喻：有损压缩（JPEG-图片）" class="headerlink" title="最好的比喻：有损压缩（JPEG 图片）"></a>最好的比喻：有损压缩（JPEG 图片）</h3><p>想象你有一张高清的风景照片（原始训练数据）。</p><ul><li>你把它压缩成一个很小的 JPEG 文件（模型）。</li><li>JPEG 文件里<strong>并没有存储每一个像素点</strong>的原始颜色值，它存储的是<strong>图像的频率和数学规律</strong>。</li><li>当你打开 JPEG 时，电脑根据这些规律“还原”出图像。虽然看起来和原图一样，但细节可能有些许模糊（幻觉&#x2F;Hallucination）。</li></ul><p><strong>结论：</strong> Base Model 记得的不是“原文”，而是原文背后的<strong>概率分布</strong>和<strong>统计规律</strong>。</p><hr><h2 id="物理存储：数据和模型打包在一起了吗？"><a href="#物理存储：数据和模型打包在一起了吗？" class="headerlink" title="物理存储：数据和模型打包在一起了吗？"></a>物理存储：数据和模型打包在一起了吗？</h2><p><strong>绝对没有。</strong> 这是一个巨大的数量级差异。</p><h3 id="并没有“打包”"><a href="#并没有“打包”" class="headerlink" title="并没有“打包”"></a>并没有“打包”</h3><p>当你下载一个开源模型（如 Llama-3-8B）时，你下载的文件通常是 <code>.bin</code> 或 <code>.safetensors</code> 格式。</p><ul><li><strong>里面是什么？</strong> 全是数字（权重矩阵）。没有一句完整的 <code>Hello World</code> 文本。</li><li><strong>能提取数据吗？</strong> 你无法直接从这些数字中还原出原始的训练文本文件（就像你不能把做好的面包还原成面粉和酵母）。虽然可以通过诱导攻击让模型“背诵”出某些训练数据，但那是通过概率触发的，而不是文件解压。</li></ul><h3 id="数量级对比"><a href="#数量级对比" class="headerlink" title="数量级对比"></a>数量级对比</h3><p>让我们看一组典型的数据对比，你就明白为什么不能打包了：</p><ul><li><strong>训练数据量（Training Corpus）：</strong> 假设是 <strong>15 Trillion (15万亿)</strong> 个 Token。<ul><li>纯文本大小：约 <strong>40 TB - 100 TB</strong>（甚至更多）。</li></ul></li><li><strong>模型大小（Model Size）：</strong> 假设是 <strong>8 Billion (80亿)</strong> 参数。<ul><li>文件大小（FP16精度）：约 <strong>16 GB</strong>。</li></ul></li></ul><p><strong>压缩比：</strong> 模型的大小通常只有训练数据的 <strong>1&#x2F;1000 甚至更小</strong>。<br>模型必须学会极度抽象的规律，才能用 16GB 的脑子装下整个互联网的知识。这就是为什么模型有时会“胡说八道”——因为它记不住所有细节，只能根据概率“瞎编”一个最像真的补全。</p><hr><h2 id="系统化总结图解"><a href="#系统化总结图解" class="headerlink" title="系统化总结图解"></a>系统化总结图解</h2><p>为了帮你彻底理清，我们可以把这个过程想象成<strong>读书考试</strong>：</p><ol><li><p><strong>训练数据 (The Books):</strong></p><ul><li>是一座包含几百万本书的图书馆（互联网文本）。</li><li><em>数据状态：原始文本文件。</em></li></ul></li><li><p><strong>训练过程 (Studying):</strong></p><ul><li>模型（学生）拼命阅读这些书。</li><li>但他不准带书进考场，也不准写小抄。</li><li>他只能通过改变大脑神经元的连接（调整权重）来理解书中的逻辑、语法和知识。</li></ul></li><li><p><strong>Base Model (The Graduate):</strong></p><ul><li>训练结束，书（数据）被拿走了。</li><li>学生脑子里只有<strong>神经连接（参数权重）</strong>。</li><li>如果你问他书中某句话，他可能背不出来原话，但他能用自己的话讲出大概意思，或者模仿书的风格说话。</li></ul></li><li><p><strong>推理&#x2F;对话 (Inference):</strong></p><ul><li>你给他一个开头，他根据脑子里的知识（权重），计算出接下来最应该说什么。</li></ul></li></ol><h2 id="结论"><a href="#结论" class="headerlink" title="结论"></a>结论</h2><ol><li><strong>为何能对话？</strong> 因为对话是文本的一种常见模式，模型通过“预测下一个字”的能力，顺势完成了对话的接龙。</li><li><strong>如何记得数据？</strong> 通过<strong>参数化（Parameterization）</strong>。数据被转化为了神经网络中数以亿计的浮点数权重，这是一种<strong>隐式的、分布式的存储</strong>，而非数据库式的存储。</li><li><strong>是否打包？</strong> <strong>没有。</strong> 模型文件仅包含权重，体积远小于训练数据。它是对人类知识的高度抽象和有损压缩。</li></ol>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;这是一个非常深刻且触及大模型本质的问题。很多初学者容易误以为模型是一个“搜索引擎”或者“数据库”，但实际上它的运作机制完全不同。&lt;/p&gt;
&lt;p&gt;以下是对 &lt;strong&gt;Base Model（基座模型）&lt;/strong&gt; 如何工作、如何“记忆”数据、以及数据存储方式的系统化</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>OpenClaw系统架构深度技术分析报告</title>
    <link href="https://www.silenceboy.com/2026/02/03/OpenClaw%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E6%B7%B1%E5%BA%A6%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90%E6%8A%A5%E5%91%8A/"/>
    <id>https://www.silenceboy.com/2026/02/03/OpenClaw%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E6%B7%B1%E5%BA%A6%E6%8A%80%E6%9C%AF%E5%88%86%E6%9E%90%E6%8A%A5%E5%91%8A/</id>
    <published>2026-02-03T05:57:26.000Z</published>
    <updated>2026-02-03T06:06:34.063Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>本报告以系统架构师的视角，深入分析 OpenClaw 的技术架构设计</p></blockquote><h2 id="整体架构设计"><a href="#整体架构设计" class="headerlink" title="整体架构设计"></a>整体架构设计</h2><h3 id="系统分层架构图"><a href="#系统分层架构图" class="headerlink" title="系统分层架构图"></a>系统分层架构图</h3><pre class="mermaid">graph TB    subgraph "客户端层 (Client Layer)"        Web[Web UI]        Mobile[移动应用]        CLI[CLI 工具]        Desktop[桌面应用]    end        subgraph "接入层 (Gateway Layer)"        GW[Gateway 网关服务器]        WS[WebSocket 服务]        HTTP[HTTP/REST API]        Hooks[Webhooks 端点]    end        subgraph "渠道抽象层 (Channel Layer)"        CM[Channel Manager]        Telegram[Telegram 插件]        Discord[Discord 插件]        Slack[Slack 插件]        WhatsApp[WhatsApp 插件]        Signal[Signal 插件]        IMessage[iMessage 插件]        Extensions[扩展渠道插件...]    end        subgraph "路由与控制层 (Routing & Control)"        Router[消息路由器]        Allowlist[Allowlist 过滤]        MentionGate[Mention 网关]        CommandGate[Command 网关]        SessionMgr[会话管理器]    end        subgraph "代理层 (Agent Layer)"        AgentRunner[Agent Runner]        PiCore[Pi Agent Core]        ToolSystem[工具系统]        ModelRegistry[模型注册表]        Failover[容错回退机制]    end        subgraph "媒体处理层 (Media Layer)"        MediaPipeline[媒体处理管道]        ImageProc[图像处理]        AudioProc[音频转录]        VideoProc[视频理解]        PDFProc[PDF 提取]        MediaCache[媒体缓存]    end        subgraph "基础设施层 (Infrastructure)"        DI[依赖注入容器]        Config[配置管理]        Auth[认证系统]        Storage[持久化存储]        Daemon[系统服务管理]    end        subgraph "外部服务 (External Services)"        LLM[大语言模型 API]        Vision[视觉模型 API]        TTS[语音合成 API]        Browser[浏览器控制]    end        %% 连接关系    Web --> GW    Mobile --> GW    CLI --> GW    Desktop --> GW        GW --> WS    GW --> HTTP    GW --> Hooks        WS --> CM    HTTP --> CM    Hooks --> CM        CM --> Telegram    CM --> Discord    CM --> Slack    CM --> WhatsApp    CM --> Signal    CM --> IMessage    CM --> Extensions        Telegram --> Router    Discord --> Router    Slack --> Router    WhatsApp --> Router        Router --> Allowlist    Allowlist --> MentionGate    MentionGate --> CommandGate    CommandGate --> SessionMgr        SessionMgr --> AgentRunner    AgentRunner --> PiCore    PiCore --> ToolSystem    PiCore --> ModelRegistry    PiCore --> Failover        AgentRunner --> MediaPipeline    MediaPipeline --> ImageProc    MediaPipeline --> AudioProc    MediaPipeline --> VideoProc    MediaPipeline --> PDFProc    MediaPipeline --> MediaCache        AgentRunner --> DI    CM --> DI    Router --> DI        DI --> Config    DI --> Auth    DI --> Storage    DI --> Daemon        PiCore --> LLM    MediaPipeline --> Vision    ToolSystem --> Browser    ToolSystem --> TTS        style GW fill:#ff6b6b    style CM fill:#4ecdc4    style Router fill:#45b7d1    style AgentRunner fill:#96ceb4    style MediaPipeline fill:#ffeaa7    style DI fill:#dfe6e9</pre><h3 id="消息流转完整链路图"><a href="#消息流转完整链路图" class="headerlink" title="消息流转完整链路图"></a>消息流转完整链路图</h3><pre class="mermaid">sequenceDiagram    participant User as 用户    participant Channel as 渠道插件    participant Router as 路由器    participant Session as 会话管理    participant Agent as Agent Runner    participant Pi as Pi Core    participant Model as 模型 API    participant Media as 媒体管道    participant Tool as 工具系统        User->>Channel: 1. 发送消息/附件    Channel->>Channel: 2. 归一化消息格式    Channel->>Router: 3. 消息入队        Router->>Router: 4. Allowlist 检查    alt Allowlist 未通过        Router-->>Channel: 丢弃消息    end        Router->>Router: 5. Command-Gating 检查    alt 未授权控制命令        Router-->>Channel: 丢弃消息    end        Router->>Router: 6. Mention-Gating 检查    alt 群组需要 @mention 但未 mention        Router-->>Channel: 跳过处理    end        Router->>Router: 7. 消息去重检查    alt 重复消息        Router-->>Channel: 跳过处理    end        Router->>Session: 8. 路由到 Agent + Session    Session->>Session: 9. 初始化/恢复会话        Session->>Agent: 10. 提交消息到 Agent        alt 包含媒体附件        Agent->>Media: 11a. 媒体理解处理        Media->>Media: 下载/缓存媒体        Media->>Media: 图像描述/音频转录/视频理解        Media-->>Agent: 返回理解结果    end        Agent->>Pi: 11b. 创建 Agent Session    Pi->>Model: 12. 调用模型 API        alt 模型调用失败        Model-->>Pi: 错误响应        Pi->>Pi: 13a. Thinking Level 回退        alt Thinking 回退成功            Pi->>Model: 重试低级别 Thinking        else Auth Profile 切换            Pi->>Pi: 13b. 切换认证 Profile            Pi->>Model: 重试不同 Profile        else Model 回退            Pi->>Pi: 13c. 回退到候选模型            Pi->>Model: 重试候选模型        end    end        Model-->>Pi: 14. 流式响应        loop 流式处理        Pi-->>Agent: 15a. message_update 事件        Agent-->>Channel: 部分回复 (onPartialReply)        Channel-->>User: 实时显示打字状态    end        alt 工具调用        Pi->>Tool: 15b. tool_execution_start        Tool->>Tool: 执行工具 (browser/canvas/message/...)        Tool-->>Pi: 工具结果        Pi-->>Agent: tool_execution_end        Agent-->>Channel: 工具结果消息 (onToolResult)        Channel-->>User: 显示工具执行结果        Pi->>Model: 继续模型调用    end        Pi-->>Agent: 16. message_end 事件    Agent->>Agent: 17. 提取最终文本 + reasoning    Agent->>Agent: 18. 消息去重检查    Agent->>Session: 19. 更新会话状态        Agent-->>Channel: 20. 最终回复 (onBlockReply)        alt 跨渠道路由        Channel->>Router: 21a. 路由到原始渠道        Router->>Channel: 转发到目标渠道    end        Channel-->>User: 22. 发送最终消息</pre><h3 id="依赖注入与模块解耦架构"><a href="#依赖注入与模块解耦架构" class="headerlink" title="依赖注入与模块解耦架构"></a>依赖注入与模块解耦架构</h3><pre class="mermaid">graph TB    subgraph "CLI 层 (Command Layer)"        CMD[命令入口]        CliDeps[CliDeps 类型]    end        subgraph "业务逻辑层 (Business Logic)"        Action[MessageAction]        OutboundDeps[OutboundSendDeps 类型]    end        subgraph "基础设施层 (Infrastructure)"        WhatsApp[sendMessageWhatsApp]        Telegram[sendMessageTelegram]        Discord[sendMessageDiscord]        Slack[sendMessageSlack]        Signal[sendMessageSignal]        IMessage[sendMessageIMessage]    end        subgraph "依赖容器 (Dependency Container)"        Factory[createDefaultDeps 工厂]        Converter[createOutboundSendDeps 转换器]    end        subgraph "测试层 (Test Layer)"        TestDeps[Mock Deps]        TestFactory[makeDeps 工厂]    end        CMD -->|调用| Factory    Factory -->|创建| CliDeps    CliDeps -->|引用| WhatsApp    CliDeps -->|引用| Telegram    CliDeps -->|引用| Discord    CliDeps -->|引用| Slack    CliDeps -->|引用| Signal    CliDeps -->|引用| IMessage        CMD -->|注入| Action    Action -->|依赖| OutboundDeps        CliDeps -->|转换| Converter    Converter -->|创建| OutboundDeps        TestFactory -->|创建| TestDeps    TestDeps -->|Mock| WhatsApp    TestDeps -->|Mock| Telegram    TestDeps -.替换.-> CliDeps        style Factory fill:#96ceb4    style Converter fill:#96ceb4    style TestFactory fill:#ffeaa7    style CliDeps fill:#a29bfe    style OutboundDeps fill:#a29bfe</pre><hr><h2 id="核心子系统深度分析"><a href="#核心子系统深度分析" class="headerlink" title="核心子系统深度分析"></a>核心子系统深度分析</h2><h3 id="Gateway-网关系统"><a href="#Gateway-网关系统" class="headerlink" title="Gateway 网关系统"></a>Gateway 网关系统</h3><h4 id="架构特性"><a href="#架构特性" class="headerlink" title="架构特性"></a>架构特性</h4><p><strong>双协议支持</strong>：</p><ul><li><p><strong>WebSocket</strong>：用于实时双向通信、事件推送、控制台连接</p><ul><li>握手流程：<code>connect.challenge</code> → <code>connect</code> → <code>hello-ok</code></li><li>消息格式：JSON-RPC 风格 (<code>req</code>&#x2F;<code>res</code>&#x2F;<code>event</code>)</li><li>连接管理：<code>GatewayWsClient</code> 维护连接状态</li></ul></li><li><p><strong>HTTP&#x2F;REST</strong>：用于 Webhooks、兼容性端点、工具调用</p><ul><li>Control UI: <code>/</code></li><li>Hooks: <code>/hooks/*</code> (wake, agent, mappings)</li><li>OpenAI 兼容: <code>/v1/chat/completions</code></li><li>Tools Invoke: <code>/tools/invoke</code></li></ul></li></ul><p><strong>请求路由机制</strong>：</p><pre class="mermaid">graph LR    Request[请求] --> Parse[解析消息]    Parse --> Validate[validateRequestFrame]    Validate --> Handle[handleGatewayRequest]    Handle --> Auth[authorizeGatewayMethod]    Auth --> Handler[coreGatewayHandlers]    Handler --> Respond[respond 回调]        Auth -.检查.-> Roles[Role: operator/node]    Auth -.检查.-> Scopes[Scope: admin/read/write]        style Auth fill:#ff6b6b    style Handler fill:#4ecdc4</pre><p><strong>核心特性</strong>：</p><ul><li><strong>方法注册</strong>：<code>coreGatewayHandlers</code> 合并核心方法与插件方法</li><li><strong>权限模型</strong>：基于角色 (operator&#x2F;node) 和 scope 的细粒度授权</li><li><strong>插件扩展</strong>：<code>loadGatewayPlugins()</code> 支持动态加载插件方法</li></ul><h4 id="会话管理策略"><a href="#会话管理策略" class="headerlink" title="会话管理策略"></a>会话管理策略</h4><p><strong>两层持久化架构</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">1. Session Store (sessions.json)</span><br><span class="line">   └─ SessionEntry: 会话元数据 + 配置覆盖</span><br><span class="line">   </span><br><span class="line">2. Transcript (*.jsonl)</span><br><span class="line">   └─ 树形消息历史 (id + parentId)</span><br></pre></td></tr></table></figure><p><strong>会话键格式</strong>：</p><table><thead><tr><th>场景</th><th>Session Key 格式</th><th>示例</th></tr></thead><tbody><tr><td>DM (main)</td><td><code>agent:&#123;agentId&#125;:main</code></td><td><code>agent:assistant:main</code></td></tr><tr><td>DM (per-peer)</td><td><code>agent:&#123;agentId&#125;:dm:&#123;peerId&#125;</code></td><td><code>agent:assistant:dm:123456</code></td></tr><tr><td>DM (per-channel-peer)</td><td><code>agent:&#123;agentId&#125;:&#123;channel&#125;:dm:&#123;peerId&#125;</code></td><td><code>agent:assistant:telegram:dm:123456</code></td></tr><tr><td>Group</td><td><code>agent:&#123;agentId&#125;:&#123;channel&#125;:group:&#123;groupId&#125;</code></td><td><code>agent:assistant:telegram:group:abc</code></td></tr></tbody></table><p><strong>会话元数据管理</strong>：</p><ul><li>Token 统计：<code>inputTokens</code>, <code>outputTokens</code>, <code>totalTokens</code>, <code>contextTokens</code></li><li>模型覆盖：<code>providerOverride</code>, <code>modelOverride</code>, <code>authProfileOverride</code></li><li>压缩控制：<code>compactionCount</code>, <code>memoryFlushAt</code></li><li>交付上下文：<code>deliveryContext</code>, <code>lastChannel</code>, <code>lastTo</code></li></ul><h4 id="配置热重载机制"><a href="#配置热重载机制" class="headerlink" title="配置热重载机制"></a>配置热重载机制</h4><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 重载策略: off | restart | hot | hybrid (默认)</span></span><br><span class="line"><span class="keyword">const</span> hotReloadRules = &#123;</span><br><span class="line">  <span class="string">&quot;hooks.*&quot;</span>: <span class="string">&quot;reload_hooks&quot;</span>,           <span class="comment">// 热重载 hooks</span></span><br><span class="line">  <span class="string">&quot;cron.*&quot;</span>: <span class="string">&quot;restart_cron&quot;</span>,            <span class="comment">// 重启 cron</span></span><br><span class="line">  <span class="string">&quot;gateway.*&quot;</span>: <span class="string">&quot;restart_gateway&quot;</span>,      <span class="comment">// 重启整个 Gateway</span></span><br><span class="line">  <span class="string">&quot;channels.*&quot;</span>: <span class="string">&quot;reload_channels&quot;</span>,     <span class="comment">// 热重载渠道配置</span></span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p><strong>防抖机制</strong>：默认 300ms，避免频繁重载</p><h4 id="系统服务集成"><a href="#系统服务集成" class="headerlink" title="系统服务集成"></a>系统服务集成</h4><table><thead><tr><th>平台</th><th>服务管理器</th><th>服务标签</th><th>安装路径</th></tr></thead><tbody><tr><td>macOS</td><td>launchd</td><td><code>bot.molt.gateway</code></td><td><code>~/Library/LaunchAgents/</code></td></tr><tr><td>Linux</td><td>systemd</td><td><code>openclaw-gateway.service</code></td><td><code>~/.config/systemd/user/</code></td></tr></tbody></table><p><strong>服务抽象层</strong>：</p><ul><li><code>src/daemon/service.ts</code> 提供统一接口</li><li>支持：<code>install</code>, <code>uninstall</code>, <code>stop</code>, <code>restart</code>, <code>isLoaded</code></li></ul><hr><h3 id="Channel-渠道抽象层"><a href="#Channel-渠道抽象层" class="headerlink" title="Channel 渠道抽象层"></a>Channel 渠道抽象层</h3><h4 id="插件化架构设计"><a href="#插件化架构设计" class="headerlink" title="插件化架构设计"></a>插件化架构设计</h4><p><strong>核心接口 - ChannelPlugin</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">type</span> <span class="title class_">ChannelPlugin</span>&lt;<span class="title class_">ResolvedAccount</span> = <span class="built_in">any</span>&gt; = &#123;</span><br><span class="line">  <span class="attr">id</span>: <span class="title class_">ChannelId</span>;                           <span class="comment">// 渠道标识</span></span><br><span class="line">  <span class="attr">meta</span>: <span class="title class_">ChannelMeta</span>;                       <span class="comment">// 元数据（标签、文档）</span></span><br><span class="line">  <span class="attr">capabilities</span>: <span class="title class_">ChannelCapabilities</span>;       <span class="comment">// 能力声明</span></span><br><span class="line">  <span class="attr">config</span>: <span class="title class_">ChannelConfigAdapter</span>;            <span class="comment">// 配置管理</span></span><br><span class="line">  <span class="attr">outbound</span>: <span class="title class_">ChannelOutboundAdapter</span>;        <span class="comment">// 出站消息</span></span><br><span class="line">  <span class="attr">status</span>: <span class="title class_">ChannelStatusAdapter</span>;            <span class="comment">// 状态检查</span></span><br><span class="line">  <span class="attr">gateway</span>: <span class="title class_">ChannelGatewayAdapter</span>;          <span class="comment">// 生命周期管理</span></span><br><span class="line">  <span class="attr">security</span>: <span class="title class_">ChannelSecurityAdapter</span>;        <span class="comment">// 安全策略</span></span><br><span class="line">  <span class="attr">groups</span>: <span class="title class_">ChannelGroupAdapter</span>;             <span class="comment">// 群组策略</span></span><br><span class="line">  <span class="attr">mentions</span>: <span class="title class_">ChannelMentionAdapter</span>;         <span class="comment">// 提及处理</span></span><br><span class="line">  <span class="attr">threading</span>: <span class="title class_">ChannelThreadingAdapter</span>;      <span class="comment">// 线程处理</span></span><br><span class="line">  <span class="attr">messaging</span>: <span class="title class_">ChannelMessagingAdapter</span>;      <span class="comment">// 消息目标解析</span></span><br><span class="line">  <span class="comment">// ... 更多适配器</span></span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p><strong>适配器模式优势</strong>：</p><ul><li>统一接口，不同实现</li><li>可选适配器，按需实现</li><li>类型安全，泛型约束</li></ul><h4 id="消息归一化流程"><a href="#消息归一化流程" class="headerlink" title="消息归一化流程"></a>消息归一化流程</h4><pre class="mermaid">graph LR    Raw[原始消息] --> Clean[清理空白/大小写]    Clean --> Prefix[识别前缀]    Prefix --> Parse[解析格式]    Parse --> Convert[转换为标准格式]    Convert --> Output[统一输出]        Prefix -.识别.-> TgPrefix["telegram:, tg:, t.me/"]    Prefix -.识别.-> DcPrefix["discord:, @username#1234"]    Prefix -.识别.-> SlPrefix["slack:, #channel, <@USER>"]        Parse -.URL.-> ID1[提取 ID]    Parse -.Username.-> ID2[解析为 ID]    Parse -.Display Name.-> ID3[查找 ID]        style Parse fill:#4ecdc4    style Convert fill:#96ceb4</pre><p><strong>归一化示例</strong>：</p><table><thead><tr><th>渠道</th><th>原始输入</th><th>归一化输出</th></tr></thead><tbody><tr><td>Telegram</td><td><code>t.me/username</code></td><td><code>telegram:username</code></td></tr><tr><td>Discord</td><td><code>@user#1234</code></td><td><code>discord:user:1234</code></td></tr><tr><td>Slack</td><td><code>&lt;@U123ABC&gt;</code></td><td><code>slack:U123ABC</code></td></tr><tr><td>WhatsApp</td><td><code>+1234567890</code></td><td><code>whatsapp:1234567890</code></td></tr></tbody></table><h4 id="权限控制三层机制"><a href="#权限控制三层机制" class="headerlink" title="权限控制三层机制"></a>权限控制三层机制</h4><pre class="mermaid">graph TB    Message[消息到达] --> Layer1[第一层: Allowlist]        Layer1 -->|检查| GroupAllow{群组 Allowlist}    GroupAllow -->|未通过| Drop1[丢弃消息]    GroupAllow -->|通过| SenderAllow{发送者 Allowlist}    SenderAllow -->|未通过| Drop2[丢弃消息]    SenderAllow -->|通过| Layer2[第二层: Command-Gating]        Layer2 -->|检查| HasCmd{有控制命令?}    HasCmd -->|否| Layer3[第三层: Mention-Gating]    HasCmd -->|是| CmdAuth{命令授权?}    CmdAuth -->|否| Drop3[丢弃消息]    CmdAuth -->|是| Layer3        Layer3 -->|检查| IsGroup{是群组?}    IsGroup -->|否| Process[处理消息]    IsGroup -->|是| ReqMention{需要 @mention?}    ReqMention -->|否| Process    ReqMention -->|是| WasMentioned{被 @mention?}    WasMentioned -->|否| CanBypass{可绕过?}    WasMentioned -->|是| Process    CanBypass -->|否| Skip[跳过处理]    CanBypass -->|是| Process        style Layer1 fill:#ff6b6b    style Layer2 fill:#feca57    style Layer3 fill:#48dbfb    style Process fill:#1dd1a1</pre><p><strong>Mention-Gating Bypass 条件</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">shouldBypass = </span><br><span class="line">  isGroup &amp;&amp;</span><br><span class="line">  requireMention &amp;&amp;</span><br><span class="line">  !wasMentioned &amp;&amp;</span><br><span class="line">  !hasAnyMention &amp;&amp;</span><br><span class="line">  allowTextCommands &amp;&amp;</span><br><span class="line">  commandAuthorized &amp;&amp;</span><br><span class="line">  hasControlCommand;</span><br></pre></td></tr></table></figure><h4 id="插件发现与注册"><a href="#插件发现与注册" class="headerlink" title="插件发现与注册"></a>插件发现与注册</h4><p><strong>发现流程</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">1. 扫描 extensions/ 目录</span><br><span class="line">   └─ 查找 openclaw.plugin.json</span><br><span class="line">   </span><br><span class="line">2. 加载配置路径插件</span><br><span class="line">   └─ 从 config.plugins.paths 读取</span><br><span class="line">   </span><br><span class="line">3. 优先级去重</span><br><span class="line">   ├─ Workspace 插件 (优先级最高)</span><br><span class="line">   ├─ Extensions 插件</span><br><span class="line">   └─ External 插件 (优先级最低)</span><br><span class="line">   </span><br><span class="line">4. 排序</span><br><span class="line">   └─ 按 meta.order 和 meta.label 排序</span><br></pre></td></tr></table></figure><p><strong>插件清单格式</strong>：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;id&quot;</span><span class="punctuation">:</span> <span class="string">&quot;telegram&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;channel&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;meta&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;label&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Telegram&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;order&quot;</span><span class="punctuation">:</span> <span class="number">10</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;docsPath&quot;</span><span class="punctuation">:</span> <span class="string">&quot;/channels/telegram&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><hr><h3 id="Agent-代理引擎"><a href="#Agent-代理引擎" class="headerlink" title="Agent 代理引擎"></a>Agent 代理引擎</h3><h4 id="Pi-Agent-Core-集成架构"><a href="#Pi-Agent-Core-集成架构" class="headerlink" title="Pi Agent Core 集成架构"></a>Pi Agent Core 集成架构</h4><pre class="mermaid">graph TB    subgraph "OpenClaw 层"        Runner[Agent Runner]        SessionInit[Session 初始化]        ModelResolve[模型解析]        ToolCreate[工具创建]    end        subgraph "Pi Core 层"        PiSession[Agent Session]        SessionMgr[SessionManager]        EventStream[事件流]        ToolExec[工具执行]    end        subgraph "模型层"        ModelAPI[模型 API]        AuthStorage[认证存储]        ModelRegistry[模型注册表]    end        Runner --> SessionInit    Runner --> ModelResolve    Runner --> ToolCreate        SessionInit --> SessionMgr    ModelResolve --> AuthStorage    ModelResolve --> ModelRegistry        Runner -->|createAgentSession| PiSession    PiSession --> EventStream    PiSession --> ToolExec    PiSession --> ModelAPI        EventStream -->|订阅| Runner    ToolExec -->|execute| ToolCreate        ModelAPI -->|失败| Runner    Runner -->|回退| ModelResolve        style PiSession fill:#96ceb4    style SessionMgr fill:#a29bfe    style ModelAPI fill:#ffeaa7</pre><p><strong>集成流程代码</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 1. 模型解析</span></span><br><span class="line"><span class="keyword">const</span> &#123; model, authStorage, modelRegistry &#125; = <span class="title function_">resolveModel</span>(</span><br><span class="line">  provider, modelId, agentDir, config</span><br><span class="line">);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 2. 会话管理器初始化</span></span><br><span class="line">sessionManager = <span class="title class_">SessionManager</span>.<span class="title function_">open</span>(sessionFile);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 3. 创建 Agent Session (Pi Core)</span></span><br><span class="line"><span class="keyword">const</span> &#123; session &#125; = <span class="keyword">await</span> <span class="title function_">createAgentSession</span>(&#123;</span><br><span class="line">  <span class="attr">cwd</span>: workspace,</span><br><span class="line">  agentDir,</span><br><span class="line">  authStorage,</span><br><span class="line">  modelRegistry,</span><br><span class="line">  model,</span><br><span class="line">  <span class="attr">thinkingLevel</span>: <span class="title function_">mapThinkingLevel</span>(thinkLevel),</span><br><span class="line">  <span class="attr">tools</span>: [...builtInTools, ...customTools],</span><br><span class="line">  sessionManager,</span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 4. 订阅事件流</span></span><br><span class="line"><span class="keyword">const</span> subscription = <span class="title function_">subscribeEmbeddedPiSession</span>(&#123;</span><br><span class="line">  session,</span><br><span class="line">  <span class="attr">onPartialReply</span>: <span class="function">(<span class="params">payload</span>) =&gt;</span> &#123; <span class="comment">/* 流式回复 */</span> &#125;,</span><br><span class="line">  <span class="attr">onBlockReply</span>: <span class="function">(<span class="params">payload</span>) =&gt;</span> &#123; <span class="comment">/* 块回复 */</span> &#125;,</span><br><span class="line">  <span class="attr">onToolResult</span>: <span class="function">(<span class="params">payload</span>) =&gt;</span> &#123; <span class="comment">/* 工具结果 */</span> &#125;,</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h4 id="多级容错机制"><a href="#多级容错机制" class="headerlink" title="多级容错机制"></a>多级容错机制</h4><pre class="mermaid">graph TD    Start[开始执行] --> Attempt[尝试调用模型]        Attempt --> Check{调用成功?}    Check -->|是| Success[返回结果]    Check -->|否| ErrorType{错误类型?}        ErrorType -->|Thinking 不支持| ThinkFallback[Thinking Level 回退]    ErrorType -->|认证失败| AuthFallback[Auth Profile 切换]    ErrorType -->|限流/配额| ModelFallback[Model 回退]    ErrorType -->|超时/其他| ModelFallback        ThinkFallback --> ThinkAvail{有可用级别?}    ThinkAvail -->|是| Attempt    ThinkAvail -->|否| AuthFallback        AuthFallback --> AuthAvail{有可用 Profile?}    AuthAvail -->|是| Attempt    AuthAvail -->|否| ModelFallback        ModelFallback --> ModelAvail{有候选模型?}    ModelAvail -->|是| Attempt    ModelAvail -->|否| Fail[抛出错误]        style Success fill:#1dd1a1    style Fail fill:#ff6b6b    style ThinkFallback fill:#feca57    style AuthFallback fill:#48dbfb    style ModelFallback fill:#a29bfe</pre><p><strong>Thinking Level 回退序列</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">xhigh → high → medium → low → minimal → off</span><br></pre></td></tr></table></figure><p><strong>Model 回退配置</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  <span class="attr">agents</span>: &#123;</span><br><span class="line">    <span class="attr">defaults</span>: &#123;</span><br><span class="line">      <span class="attr">model</span>: <span class="string">&quot;openai/gpt-4o&quot;</span>,</span><br><span class="line">      <span class="attr">fallbacks</span>: [</span><br><span class="line">        <span class="string">&quot;anthropic/claude-3-5-sonnet-20241022&quot;</span>,</span><br><span class="line">        <span class="string">&quot;google/gemini-2.0-flash-exp&quot;</span>,</span><br><span class="line">        <span class="string">&quot;openai/gpt-4o-mini&quot;</span></span><br><span class="line">      ]</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><strong>错误分类机制</strong>：</p><table><thead><tr><th>错误类型</th><th>触发条件</th><th>回退策略</th></tr></thead><tbody><tr><td><code>rate_limit</code></td><td>429 状态码</td><td>切换 Auth Profile 或回退模型</td></tr><tr><td><code>quota</code></td><td>配额耗尽</td><td>回退模型</td></tr><tr><td><code>auth</code></td><td>401&#x2F;403 状态码</td><td>切换 Auth Profile</td></tr><tr><td><code>timeout</code></td><td>请求超时</td><td>回退模型</td></tr><tr><td><code>context_overflow</code></td><td>上下文溢出</td><td>压缩会话或回退模型</td></tr></tbody></table><h4 id="Thinking-模式技术实现"><a href="#Thinking-模式技术实现" class="headerlink" title="Thinking 模式技术实现"></a>Thinking 模式技术实现</h4><p><strong>Thinking Level 映射</strong>：</p><table><thead><tr><th>Level</th><th>用途</th><th>成本</th><th>适用场景</th></tr></thead><tbody><tr><td><code>off</code></td><td>无推理</td><td>最低</td><td>简单对话</td></tr><tr><td><code>minimal</code></td><td>最小推理</td><td>低</td><td>日常任务</td></tr><tr><td><code>low</code></td><td>低级推理</td><td>中低</td><td>编码任务</td></tr><tr><td><code>medium</code></td><td>中级推理</td><td>中等</td><td>复杂分析</td></tr><tr><td><code>high</code></td><td>高级推理</td><td>高</td><td>深度思考</td></tr><tr><td><code>xhigh</code></td><td>极高推理</td><td>最高</td><td>研究级任务</td></tr></tbody></table><p><strong>Reasoning Mode 处理</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> reasoningMode = params.<span class="property">reasoningMode</span> ?? <span class="string">&quot;off&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> (reasoningMode === <span class="string">&quot;stream&quot;</span>) &#123;</span><br><span class="line">  <span class="comment">// 流式输出 reasoning</span></span><br><span class="line">  ctx.<span class="title function_">emitReasoningStream</span>(</span><br><span class="line">    <span class="title function_">extractThinkingFromTaggedStream</span>(deltaBuffer)</span><br><span class="line">  );</span><br><span class="line">&#125; <span class="keyword">else</span> <span class="keyword">if</span> (reasoningMode === <span class="string">&quot;on&quot;</span>) &#123;</span><br><span class="line">  <span class="comment">// 在消息结束时发送完整 reasoning</span></span><br><span class="line">  <span class="keyword">const</span> reasoning = <span class="title function_">extractAssistantThinking</span>(message);</span><br><span class="line">  <span class="built_in">void</span> <span class="title function_">onBlockReply</span>(&#123; <span class="attr">text</span>: <span class="title function_">formatReasoningMessage</span>(reasoning) &#125;);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><strong>提取与格式化</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 从 &lt;thinking&gt;...&lt;/thinking&gt; 标签中提取</span></span><br><span class="line"><span class="title function_">extractAssistantThinking</span>(<span class="attr">msg</span>: <span class="title class_">AssistantMessage</span>): <span class="built_in">string</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 格式化为用户可读格式</span></span><br><span class="line"><span class="title function_">formatReasoningMessage</span>(<span class="attr">rawThinking</span>: <span class="built_in">string</span>): <span class="built_in">string</span></span><br></pre></td></tr></table></figure><h4 id="Canvas-实时渲染能力"><a href="#Canvas-实时渲染能力" class="headerlink" title="Canvas 实时渲染能力"></a>Canvas 实时渲染能力</h4><p><strong>Canvas 工具架构</strong>：</p><pre class="mermaid">graph LR    Agent[Agent] -->|调用| CanvasTool[canvas 工具]    CanvasTool -->|node.invoke| Gateway[Gateway]    Gateway -->|转发| Node[目标 Node]    Node -->|执行| Action[Canvas 动作]    Action -->|结果| Node    Node -->|返回| Gateway    Gateway -->|返回| CanvasTool    CanvasTool -->|结果| Agent        Action -.支持.-> Present[显示 Canvas]    Action -.支持.-> Navigate[导航 URL]    Action -.支持.-> Eval[执行 JS]    Action -.支持.-> Snapshot[截图]    Action -.支持.-> A2UI[A2UI 推送]        style CanvasTool fill:#96ceb4    style Action fill:#ffeaa7</pre><p><strong>Canvas 操作类型</strong>：</p><table><thead><tr><th>操作</th><th>参数</th><th>返回</th><th>用途</th></tr></thead><tbody><tr><td><code>present</code></td><td><code>position</code>, <code>size</code></td><td>-</td><td>显示 Canvas</td></tr><tr><td><code>hide</code></td><td>-</td><td>-</td><td>隐藏 Canvas</td></tr><tr><td><code>navigate</code></td><td><code>url</code></td><td>-</td><td>导航到 URL</td></tr><tr><td><code>eval</code></td><td><code>code</code></td><td><code>result</code></td><td>执行 JavaScript</td></tr><tr><td><code>snapshot</code></td><td><code>format</code>, <code>quality</code></td><td><code>base64</code></td><td>截图</td></tr><tr><td><code>a2ui_push</code></td><td><code>jsonl</code></td><td>-</td><td>推送 UI 定义</td></tr><tr><td><code>a2ui_reset</code></td><td>-</td><td>-</td><td>重置 A2UI</td></tr></tbody></table><p><strong>A2UI 集成</strong>：</p><ul><li>JSONL 格式的声明式 UI</li><li>支持表单、按钮、列表等组件</li><li>实时响应用户交互</li></ul><h4 id="工具系统与插件架构"><a href="#工具系统与插件架构" class="headerlink" title="工具系统与插件架构"></a>工具系统与插件架构</h4><p><strong>工具分类体系</strong>：</p><pre class="mermaid">graph TB    Tools[所有工具]        Tools --> BuiltIn[内置工具]    Tools --> OpenClaw[OpenClaw 工具]    Tools --> Plugin[插件工具]        BuiltIn --> FS[文件系统]    BuiltIn --> Runtime[运行时]        FS --> Read[read]    FS --> Write[write]    FS --> Edit[edit]    FS --> Apply[apply_patch]        Runtime --> Exec[exec]    Runtime --> Process[process]        OpenClaw --> Browser[browser]    OpenClaw --> Canvas[canvas]    OpenClaw --> Message[message]    OpenClaw --> Sessions[sessions_*]    OpenClaw --> Memory[memory_*]    OpenClaw --> Web[web_*]    OpenClaw --> Image[image]    OpenClaw --> Cron[cron]    OpenClaw --> Gateway[gateway]    OpenClaw --> Nodes[nodes]        Plugin --> Custom[自定义工具...]        style BuiltIn fill:#ff6b6b    style OpenClaw fill:#4ecdc4    style Plugin fill:#96ceb4</pre><p><strong>工具策略系统</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 工具 Profile 定义</span></span><br><span class="line"><span class="keyword">type</span> <span class="title class_">ToolProfileId</span> = <span class="string">&quot;minimal&quot;</span> | <span class="string">&quot;coding&quot;</span> | <span class="string">&quot;messaging&quot;</span> | <span class="string">&quot;full&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> <span class="attr">TOOL_PROFILES</span>: <span class="title class_">Record</span>&lt;<span class="title class_">ToolProfileId</span>, <span class="title class_">ToolProfilePolicy</span>&gt; = &#123;</span><br><span class="line">  <span class="attr">minimal</span>: &#123;</span><br><span class="line">    <span class="attr">allow</span>: [<span class="string">&quot;session_status&quot;</span>]</span><br><span class="line">  &#125;,</span><br><span class="line">  <span class="attr">coding</span>: &#123;</span><br><span class="line">    <span class="attr">allow</span>: [</span><br><span class="line">      <span class="string">&quot;group:fs&quot;</span>,           <span class="comment">// 文件系统组</span></span><br><span class="line">      <span class="string">&quot;group:runtime&quot;</span>,      <span class="comment">// 运行时组</span></span><br><span class="line">      <span class="string">&quot;group:sessions&quot;</span>,     <span class="comment">// 会话组</span></span><br><span class="line">      <span class="string">&quot;browser&quot;</span>,</span><br><span class="line">      <span class="string">&quot;canvas&quot;</span>,</span><br><span class="line">      <span class="string">&quot;web_search&quot;</span>,</span><br><span class="line">      <span class="string">&quot;web_fetch&quot;</span></span><br><span class="line">    ]</span><br><span class="line">  &#125;,</span><br><span class="line">  <span class="attr">messaging</span>: &#123;</span><br><span class="line">    <span class="attr">allow</span>: [</span><br><span class="line">      <span class="string">&quot;group:messaging&quot;</span>,    <span class="comment">// 消息组</span></span><br><span class="line">      <span class="string">&quot;sessions_list&quot;</span>,</span><br><span class="line">      <span class="string">&quot;web_search&quot;</span>,</span><br><span class="line">      <span class="string">&quot;web_fetch&quot;</span></span><br><span class="line">    ]</span><br><span class="line">  &#125;,</span><br><span class="line">  <span class="attr">full</span>: &#123;&#125;  <span class="comment">// 允许所有工具</span></span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><p><strong>工具策略层级</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">1. 全局策略: tools.global.allow/deny</span><br><span class="line">2. Provider 策略: tools.providers[provider].allow/deny</span><br><span class="line">3. Agent 策略: agents[agentId].tools.allow/deny</span><br><span class="line">4. Group 策略: channels[channel].groups[groupId].tools.allow/deny</span><br><span class="line">5. Subagent 策略: 继承父会话策略</span><br></pre></td></tr></table></figure><p><strong>插件工具解析</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> pluginTools = <span class="title function_">resolvePluginTools</span>(&#123;</span><br><span class="line">  <span class="attr">context</span>: &#123;</span><br><span class="line">    config,</span><br><span class="line">    workspaceDir,</span><br><span class="line">    agentDir,</span><br><span class="line">    agentId,</span><br><span class="line">    sessionKey,</span><br><span class="line">    messageChannel,</span><br><span class="line">    sandboxed,</span><br><span class="line">  &#125;,</span><br><span class="line">  <span class="attr">existingToolNames</span>: <span class="keyword">new</span> <span class="title class_">Set</span>(tools.<span class="title function_">map</span>(<span class="function"><span class="params">t</span> =&gt;</span> t.<span class="property">name</span>)),</span><br><span class="line">  <span class="attr">toolAllowlist</span>: options?.<span class="property">pluginToolAllowlist</span>,</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><hr><h3 id="Media-媒体理解管道"><a href="#Media-媒体理解管道" class="headerlink" title="Media 媒体理解管道"></a>Media 媒体理解管道</h3><h4 id="多模态处理架构"><a href="#多模态处理架构" class="headerlink" title="多模态处理架构"></a>多模态处理架构</h4><pre class="mermaid">graph TB    Entry[applyMediaUnderstanding] --> Select[selectAttachments]        Select --> Image{图像?}    Select --> Audio{音频?}    Select --> Video{视频?}    Select --> PDF{PDF?}        Image --> ImgCache[MediaAttachmentCache]    Audio --> AudCache[MediaAttachmentCache]    Video --> VidCache[MediaAttachmentCache]    PDF --> PDFCache[MediaAttachmentCache]        ImgCache --> Vision[Vision API]    AudCache --> Transcribe[转录 API]    VidCache --> VideoAPI[视频理解 API]    PDFCache --> Extract[文本提取/渲染]        Vision --> ImgDesc[图像描述]    Transcribe --> AudText[音频文本]    VideoAPI --> VidDesc[视频描述]    Extract --> PDFText[PDF 文本/图像]        ImgDesc --> Format[formatMediaUnderstandingBody]    AudText --> Format    VidDesc --> Format    PDFText --> Format        Format --> Output[输出到消息上下文]        style Vision fill:#ffeaa7    style Transcribe fill:#ffeaa7    style VideoAPI fill:#ffeaa7    style Extract fill:#ffeaa7</pre><p><strong>处理能力顺序</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="attr">CAPABILITY_ORDER</span>: <span class="title class_">MediaUnderstandingCapability</span>[] = </span><br><span class="line">  [<span class="string">&quot;image&quot;</span>, <span class="string">&quot;audio&quot;</span>, <span class="string">&quot;video&quot;</span>];</span><br></pre></td></tr></table></figure><p><strong>并发控制</strong>：</p><ul><li>默认并发数：2</li><li>使用 <code>runWithConcurrency()</code> 限制并发</li><li>Worker 池模式，任务队列</li></ul><h4 id="提供商适配策略"><a href="#提供商适配策略" class="headerlink" title="提供商适配策略"></a>提供商适配策略</h4><p><strong>提供商注册表</strong>：</p><table><thead><tr><th>提供商</th><th>图像</th><th>音频</th><th>视频</th><th>默认模型</th></tr></thead><tbody><tr><td>OpenAI</td><td>✅</td><td>✅</td><td>❌</td><td>gpt-4o-mini</td></tr><tr><td>Anthropic</td><td>✅</td><td>❌</td><td>❌</td><td>claude-3-5-sonnet</td></tr><tr><td>Google</td><td>✅</td><td>✅</td><td>✅</td><td>gemini-2.0-flash-exp</td></tr><tr><td>Deepgram</td><td>❌</td><td>✅</td><td>❌</td><td>nova-3</td></tr><tr><td>Groq</td><td>❌</td><td>✅</td><td>❌</td><td>whisper-large-v3-turbo</td></tr><tr><td>Minimax</td><td>✅</td><td>❌</td><td>❌</td><td>-</td></tr></tbody></table><p><strong>统一接口抽象</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">type</span> <span class="title class_">MediaUnderstandingProvider</span> = &#123;</span><br><span class="line">  <span class="attr">id</span>: <span class="built_in">string</span>;</span><br><span class="line">  <span class="attr">capabilities</span>: <span class="title class_">MediaUnderstandingCapability</span>[];</span><br><span class="line">  </span><br><span class="line">  <span class="attr">describeImage</span>?: <span class="function">(<span class="params"><span class="attr">req</span>: <span class="title class_">ImageDescriptionRequest</span></span>) </span></span><br><span class="line"><span class="function">    =&gt;</span> <span class="title class_">Promise</span>&lt;<span class="title class_">ImageDescriptionResult</span>&gt;;</span><br><span class="line">  </span><br><span class="line">  <span class="attr">transcribeAudio</span>?: <span class="function">(<span class="params"><span class="attr">req</span>: <span class="title class_">AudioTranscriptionRequest</span></span>) </span></span><br><span class="line"><span class="function">    =&gt;</span> <span class="title class_">Promise</span>&lt;<span class="title class_">AudioTranscriptionResult</span>&gt;;</span><br><span class="line">  </span><br><span class="line">  <span class="attr">describeVideo</span>?: <span class="function">(<span class="params"><span class="attr">req</span>: <span class="title class_">VideoDescriptionRequest</span></span>) </span></span><br><span class="line"><span class="function">    =&gt;</span> <span class="title class_">Promise</span>&lt;<span class="title class_">VideoDescriptionResult</span>&gt;;</span><br><span class="line">&#125;;</span><br></pre></td></tr></table></figure><h4 id="SSRF-攻击防护体系"><a href="#SSRF-攻击防护体系" class="headerlink" title="SSRF 攻击防护体系"></a>SSRF 攻击防护体系</h4><p><strong>多层防护架构</strong>：</p><pre class="mermaid">graph TB    Request[媒体请求] --> DNS[DNS 解析阶段]        DNS --> CheckPrivate{私有 IP?}    CheckPrivate -->|是| BlockList[检查黑名单]    CheckPrivate -->|否| Resolve[解析域名]        BlockList --> IsBlocked{在黑名单?}    IsBlocked -->|是| Drop1[拒绝请求]    IsBlocked -->|否| Resolve        Resolve --> Pin[固定 IP]    Pin --> Fetch[HTTP 请求阶段]        Fetch --> Policy{SSRF 策略}    Policy -->|禁止私有网络| CheckIP{目标是私有 IP?}    Policy -->|允许私有网络| Execute[执行请求]        CheckIP -->|是| Drop2[拒绝请求]    CheckIP -->|否| Execute        Execute --> Limit[大小限制]    Limit --> Success[返回结果]        style DNS fill:#ff6b6b    style Fetch fill:#feca57    style Success fill:#1dd1a1</pre><p><strong>私有 IP 检测</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="variable constant_">PRIVATE_IP_RANGES</span> = [</span><br><span class="line">  <span class="string">&quot;10.0.0.0/8&quot;</span>,           <span class="comment">// 私有 A 类</span></span><br><span class="line">  <span class="string">&quot;172.16.0.0/12&quot;</span>,        <span class="comment">// 私有 B 类</span></span><br><span class="line">  <span class="string">&quot;192.168.0.0/16&quot;</span>,       <span class="comment">// 私有 C 类</span></span><br><span class="line">  <span class="string">&quot;127.0.0.0/8&quot;</span>,          <span class="comment">// 本地回环</span></span><br><span class="line">  <span class="string">&quot;169.254.0.0/16&quot;</span>,       <span class="comment">// 链路本地</span></span><br><span class="line">  <span class="string">&quot;100.64.0.0/10&quot;</span>,        <span class="comment">// 共享地址空间</span></span><br><span class="line">  <span class="string">&quot;fc00::/7&quot;</span>,             <span class="comment">// IPv6 唯一本地</span></span><br><span class="line">  <span class="string">&quot;fe80::/10&quot;</span>,            <span class="comment">// IPv6 链路本地</span></span><br><span class="line">  <span class="string">&quot;::1/128&quot;</span>,              <span class="comment">// IPv6 回环</span></span><br><span class="line">];</span><br></pre></td></tr></table></figure><p><strong>主机名黑名单</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> <span class="variable constant_">BLACKLIST_HOSTNAMES</span> = [</span><br><span class="line">  <span class="string">&quot;localhost&quot;</span>,</span><br><span class="line">  <span class="string">&quot;metadata.google.internal&quot;</span>,</span><br><span class="line">  <span class="string">&quot;169.254.169.254&quot;</span>,      <span class="comment">// AWS/Azure 元数据</span></span><br><span class="line">  <span class="string">&quot;.local&quot;</span>,</span><br><span class="line">  <span class="string">&quot;.internal&quot;</span>,</span><br><span class="line">  <span class="string">&quot;.localhost&quot;</span></span><br><span class="line">];</span><br></pre></td></tr></table></figure><p><strong>防护点</strong>：</p><ol><li>DNS 解析前检查主机名</li><li>DNS 解析后检查 IP</li><li>固定 IP 防止 DNS 重绑定</li><li>HTTP 请求前再次检查</li><li>响应大小限制</li></ol><h4 id="媒体转换与压缩"><a href="#媒体转换与压缩" class="headerlink" title="媒体转换与压缩"></a>媒体转换与压缩</h4><p><strong>图像处理管道</strong>：</p><pre class="mermaid">graph LR    Input[原始图像] --> EXIF[EXIF 方向归一化]    EXIF --> Format{格式?}        Format -->|HEIC| Convert[转换为 JPEG]    Format -->|其他| Resize[尺寸调整]        Convert --> Resize        Resize --> Compress[压缩]        Compress --> Check{大小检查}    Check -->|超限| Optimize[网格搜索优化]    Check -->|合格| Output[输出]        Optimize --> Reduce[降低尺寸/质量]    Reduce --> Check        style EXIF fill:#4ecdc4    style Compress fill:#ffeaa7    style Optimize fill:#ff6b6b</pre><p><strong>压缩策略</strong>：</p><table><thead><tr><th>格式</th><th>质量范围</th><th>最大尺寸</th><th>优化策略</th></tr></thead><tbody><tr><td>JPEG</td><td>70-90</td><td>2048px</td><td>质量降级</td></tr><tr><td>PNG</td><td>压缩级别 6-9</td><td>2048px</td><td>网格搜索</td></tr><tr><td>WebP</td><td>70-90</td><td>2048px</td><td>质量降级</td></tr></tbody></table><p><strong>PNG 网格搜索优化</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 尺寸候选: 2048, 1600, 1200, 1000, 800</span></span><br><span class="line"><span class="comment">// 压缩级别: 6, 7, 8, 9</span></span><br><span class="line"><span class="comment">// 目标: 找到第一个满足大小限制的组合</span></span><br><span class="line"><span class="keyword">for</span> (<span class="keyword">const</span> maxDim <span class="keyword">of</span> [<span class="number">2048</span>, <span class="number">1600</span>, <span class="number">1200</span>, <span class="number">1000</span>, <span class="number">800</span>]) &#123;</span><br><span class="line">  <span class="keyword">for</span> (<span class="keyword">const</span> compressionLevel <span class="keyword">of</span> [<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>]) &#123;</span><br><span class="line">    <span class="keyword">const</span> result = <span class="keyword">await</span> <span class="title function_">resizeToPng</span>(&#123; maxDim, compressionLevel &#125;);</span><br><span class="line">    <span class="keyword">if</span> (result.<span class="property">size</span> &lt;= maxBytes) <span class="keyword">return</span> result;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><strong>PDF 处理策略</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 1. 文本优先</span></span><br><span class="line"><span class="keyword">const</span> textContent = <span class="keyword">await</span> <span class="title function_">extractPdfText</span>(buffer);</span><br><span class="line"><span class="keyword">if</span> (textContent.<span class="property">length</span> &gt;= <span class="variable constant_">MIN_TEXT_LENGTH</span>) &#123;</span><br><span class="line">  <span class="keyword">return</span> &#123; <span class="attr">text</span>: textContent &#125;;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 2. 图像回退</span></span><br><span class="line"><span class="keyword">const</span> images = <span class="keyword">await</span> <span class="title function_">renderPdfPages</span>(buffer, &#123;</span><br><span class="line">  <span class="attr">maxPages</span>: <span class="number">4</span>,</span><br><span class="line">  <span class="attr">maxPixels</span>: <span class="number">4_000_000</span>,</span><br><span class="line">  <span class="attr">scale</span>: <span class="title function_">calculateScale</span>(pdfWidth, pdfHeight, maxPixels),</span><br><span class="line">&#125;);</span><br><span class="line"><span class="keyword">return</span> &#123; images &#125;;</span><br></pre></td></tr></table></figure><h4 id="缓存策略"><a href="#缓存策略" class="headerlink" title="缓存策略"></a>缓存策略</h4><p><strong>三级缓存架构</strong>：</p><pre class="mermaid">graph TB    Request[媒体请求] --> L1[L1: 内存缓存]        L1 --> Hit1{命中?}    Hit1 -->|是| Return1[返回 Buffer]    Hit1 -->|否| L2[L2: 磁盘缓存]        L2 --> Hit2{命中?}    Hit2 -->|是| Return2[返回文件路径]    Hit2 -->|否| L3[L3: 临时文件]        L3 --> Download[下载媒体]    Download --> Store[存储到临时文件]    Store --> Cleanup[注册清理]    Cleanup --> Return3[返回文件路径]        Return1 --> Use[使用]    Return2 --> Use    Return3 --> Use        Use --> Done{处理完成?}    Done -->|是| Delete[删除临时文件]        style L1 fill:#1dd1a1    style L2 fill:#feca57    style L3 fill:#ff6b6b</pre><p><strong>MediaAttachmentCache 结构</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">type</span> <span class="title class_">AttachmentCacheEntry</span> = &#123;</span><br><span class="line">  <span class="attr">buffer</span>?: <span class="title class_">Buffer</span>;          <span class="comment">// 内存 Buffer</span></span><br><span class="line">  <span class="attr">resolvedPath</span>?: <span class="built_in">string</span>;    <span class="comment">// 已解析的本地路径</span></span><br><span class="line">  <span class="attr">tempPath</span>?: <span class="built_in">string</span>;        <span class="comment">// 临时下载路径</span></span><br><span class="line">  <span class="attr">statSize</span>?: <span class="built_in">number</span>;        <span class="comment">// 文件大小</span></span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> cache = <span class="keyword">new</span> <span class="title class_">Map</span>&lt;<span class="built_in">number</span>, <span class="title class_">AttachmentCacheEntry</span>&gt;();</span><br></pre></td></tr></table></figure><p><strong>媒体服务器缓存</strong>：</p><ul><li>存储目录：<code>~/.openclaw/media/</code></li><li>TTL：默认 2 分钟</li><li>单次使用：响应后延迟 50ms 删除</li><li>大小限制：5MB</li><li>自动清理：定期清理过期文件</li></ul><p><strong>清理策略</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 1. 响应后清理</span></span><br><span class="line"><span class="built_in">setTimeout</span>(<span class="function">() =&gt;</span> fs.<span class="title function_">unlink</span>(mediaPath), <span class="number">50</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 2. 定期清理</span></span><br><span class="line"><span class="built_in">setInterval</span>(<span class="function">() =&gt;</span> <span class="title function_">cleanOldMedia</span>(), <span class="variable constant_">CLEANUP_INTERVAL</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 3. 进程退出清理</span></span><br><span class="line">process.<span class="title function_">on</span>(<span class="string">&quot;exit&quot;</span>, <span class="function">() =&gt;</span> <span class="title function_">cleanup</span>());</span><br></pre></td></tr></table></figure><hr><h3 id="路由与控制层"><a href="#路由与控制层" class="headerlink" title="路由与控制层"></a>路由与控制层</h3><h4 id="路由决策树"><a href="#路由决策树" class="headerlink" title="路由决策树"></a>路由决策树</h4><pre class="mermaid">graph TB    Message[消息到达] --> Parse[解析上下文]        Parse --> Filter[过滤 Bindings]    Filter --> Match1{Peer 匹配?}        Match1 -->|是| Route1[路由到 Peer Agent]    Match1 -->|否| Match2{Parent Peer 匹配?}        Match2 -->|是| Route2[路由到 Parent Agent]    Match2 -->|否| Match3{Guild 匹配?}        Match3 -->|是| Route3[路由到 Guild Agent]    Match3 -->|否| Match4{Team 匹配?}        Match4 -->|是| Route4[路由到 Team Agent]    Match4 -->|否| Match5{Account 匹配?}        Match5 -->|是| Route5[路由到 Account Agent]    Match5 -->|否| Match6{Channel 匹配?}        Match6 -->|是| Route6[路由到 Channel Agent]    Match6 -->|否| Default[路由到默认 Agent]        Route1 --> Init[初始化会话]    Route2 --> Init    Route3 --> Init    Route4 --> Init    Route5 --> Init    Route6 --> Init    Default --> Init        style Match1 fill:#ff6b6b    style Match2 fill:#feca57    style Match3 fill:#48dbfb    style Match4 fill:#a29bfe    style Match5 fill:#4ecdc4    style Match6 fill:#96ceb4    style Default fill:#dfe6e9</pre><p><strong>路由优先级表</strong>：</p><table><thead><tr><th>优先级</th><th>匹配类型</th><th>匹配字段</th><th>使用场景</th><th>示例</th></tr></thead><tbody><tr><td>1</td><td>Peer</td><td><code>match.peer</code></td><td>特定对话绑定</td><td><code>&#123; kind: &quot;dm&quot;, id: &quot;123&quot; &#125;</code></td></tr><tr><td>2</td><td>Parent Peer</td><td><code>match.peer</code> (parent)</td><td>Thread 继承</td><td>回复线程消息</td></tr><tr><td>3</td><td>Guild</td><td><code>match.guildId</code></td><td>Discord 服务器</td><td><code>guild-abc123</code></td></tr><tr><td>4</td><td>Team</td><td><code>match.teamId</code></td><td>MS Teams</td><td><code>team-xyz789</code></td></tr><tr><td>5</td><td>Account</td><td><code>match.accountId</code> (非 <code>*</code>)</td><td>账户级别</td><td><code>default</code></td></tr><tr><td>6</td><td>Channel</td><td><code>match.accountId</code> &#x3D; <code>*</code></td><td>通道级别</td><td>所有 Telegram 账户</td></tr><tr><td>7</td><td>Default</td><td>无匹配</td><td>默认 Agent</td><td><code>main</code></td></tr></tbody></table><h4 id="消息去重机制"><a href="#消息去重机制" class="headerlink" title="消息去重机制"></a>消息去重机制</h4><p><strong>去重键格式</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> dedupeKey = </span><br><span class="line">  <span class="string">`<span class="subst">$&#123;provider&#125;</span>|<span class="subst">$&#123;accountId&#125;</span>|<span class="subst">$&#123;sessionKey&#125;</span>|<span class="subst">$&#123;peerId&#125;</span>|<span class="subst">$&#123;threadId&#125;</span>|<span class="subst">$&#123;messageId&#125;</span>`</span>;</span><br></pre></td></tr></table></figure><p><strong>去重缓存配置</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  <span class="attr">ttl</span>: <span class="number">20</span> * <span class="number">60</span> * <span class="number">1000</span>,      <span class="comment">// 20 分钟</span></span><br><span class="line">  <span class="attr">maxEntries</span>: <span class="number">5000</span>,          <span class="comment">// 最大 5000 条</span></span><br><span class="line">  <span class="attr">cleanupInterval</span>: <span class="number">60000</span>     <span class="comment">// 1 分钟清理一次</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><strong>去重检查时机</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 在 dispatchReplyFromConfig 入口</span></span><br><span class="line"><span class="keyword">if</span> (<span class="title function_">shouldSkipDuplicateInbound</span>(ctx)) &#123;</span><br><span class="line">  <span class="title function_">recordProcessed</span>(<span class="string">&quot;skipped&quot;</span>, &#123; <span class="attr">reason</span>: <span class="string">&quot;duplicate&quot;</span> &#125;);</span><br><span class="line">  <span class="keyword">return</span>; <span class="comment">// 跳过处理</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h4 id="会话隔离策略"><a href="#会话隔离策略" class="headerlink" title="会话隔离策略"></a>会话隔离策略</h4><p><strong>隔离级别对比</strong>：</p><table><thead><tr><th>隔离级别</th><th>Session Key 格式</th><th>DM 隔离</th><th>群组隔离</th><th>跨渠道</th></tr></thead><tbody><tr><td><code>main</code></td><td><code>agent:&#123;id&#125;:main</code></td><td>所有共享</td><td>按群组</td><td>是</td></tr><tr><td><code>per-peer</code></td><td><code>agent:&#123;id&#125;:dm:&#123;peerId&#125;</code></td><td>按发送者</td><td>按群组</td><td>否</td></tr><tr><td><code>per-channel-peer</code></td><td><code>agent:&#123;id&#125;:&#123;ch&#125;:dm:&#123;peerId&#125;</code></td><td>按渠道+发送者</td><td>按渠道+群组</td><td>否</td></tr><tr><td><code>per-account-channel-peer</code></td><td><code>agent:&#123;id&#125;:&#123;ch&#125;:&#123;acc&#125;:dm:&#123;peerId&#125;</code></td><td>按账户+渠道+发送者</td><td>按账户+渠道+群组</td><td>否</td></tr></tbody></table><p><strong>身份链接</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  <span class="attr">session</span>: &#123;</span><br><span class="line">    <span class="attr">identityLinks</span>: &#123;</span><br><span class="line">      <span class="attr">canonical</span>: [</span><br><span class="line">        <span class="string">&quot;telegram:123456&quot;</span>,</span><br><span class="line">        <span class="string">&quot;discord:user#1234&quot;</span>,</span><br><span class="line">        <span class="string">&quot;slack:U123ABC&quot;</span></span><br><span class="line">      ]</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>当消息来自链接的身份时，会路由到同一个会话。</p><h4 id="回复分发流程"><a href="#回复分发流程" class="headerlink" title="回复分发流程"></a>回复分发流程</h4><pre class="mermaid">sequenceDiagram    participant Agent as Agent Runner    participant Dispatcher as ReplyDispatcher    participant Router as ReplyRouter    participant Channel as Channel Plugin    participant User as 用户        Agent->>Dispatcher: onToolResult (工具结果)    Dispatcher->>Dispatcher: 串行化 (sendChain)    Dispatcher->>Router: 检查路由        alt 跨渠道路由        Router->>Channel: routeReply (原始渠道)    else 当前渠道        Router->>Channel: dispatcher.send    end        Channel->>User: 发送工具结果        Agent->>Dispatcher: onBlockReply (块回复)    Dispatcher->>Dispatcher: 应用人工延迟    Dispatcher->>Router: 检查路由    Router->>Channel: 发送块回复    Channel->>User: 发送块回复        Agent->>Dispatcher: onBlockReply (最终回复)    Dispatcher->>Router: 检查路由        alt TTS 启用        Router->>Router: maybeApplyTtsToPayload    end        Router->>Channel: 发送最终回复    Channel->>User: 发送最终回复        Dispatcher->>Dispatcher: waitForIdle (等待分发完成)</pre><p><strong>ReplyDispatcher 特性</strong>：</p><ul><li><strong>串行化分发</strong>：<code>sendChain</code> Promise 链确保顺序</li><li><strong>人工延迟</strong>：block 回复之间插入延迟（模拟打字）</li><li><strong>响应前缀</strong>：<code>responsePrefix</code> 模板化前缀</li><li><strong>心跳条带</strong>：<code>onHeartbeatStrip</code> 处理长时间等待</li></ul><p><strong>跨渠道路由条件</strong>：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">const</span> shouldRouteToOriginating =</span><br><span class="line">  <span class="title function_">isRoutableChannel</span>(originatingChannel) &amp;&amp;</span><br><span class="line">  originatingTo &amp;&amp;</span><br><span class="line">  originatingChannel !== currentSurface;</span><br></pre></td></tr></table></figure><p>当用户在 Telegram 发起对话，但当前回复渠道是 Slack 时，会路由回 Telegram。</p><hr><h2 id="设计亮点与技术特色"><a href="#设计亮点与技术特色" class="headerlink" title="设计亮点与技术特色"></a>设计亮点与技术特色</h2><h3 id="架构设计亮点"><a href="#架构设计亮点" class="headerlink" title="架构设计亮点"></a>架构设计亮点</h3><h4 id="分层解耦架构"><a href="#分层解耦架构" class="headerlink" title="分层解耦架构"></a>分层解耦架构</h4><ul><li><strong>清晰的职责边界</strong>：Gateway、Channel、Agent、Media 各司其职</li><li><strong>依赖注入模式</strong>：通过 <code>CliDeps</code> 和 <code>OutboundSendDeps</code> 实现模块解耦</li><li><strong>适配器模式</strong>：<code>ChannelPlugin</code> 适配器统一不同渠道的接口</li><li><strong>工厂模式</strong>：<code>createDefaultDeps</code> 和 <code>createOutboundSendDeps</code> 管理依赖创建</li></ul><h4 id="插件化扩展能力"><a href="#插件化扩展能力" class="headerlink" title="插件化扩展能力"></a>插件化扩展能力</h4><ul><li><strong>渠道插件</strong>：<code>extensions/</code> 目录支持动态加载新渠道</li><li><strong>工具插件</strong>：Agent 工具系统支持插件工具</li><li><strong>Gateway 插件</strong>：Gateway 方法可通过插件扩展</li><li><strong>模型插件</strong>：模型注册表支持自定义模型</li></ul><h4 id="容错与高可用"><a href="#容错与高可用" class="headerlink" title="容错与高可用"></a>容错与高可用</h4><ul><li><strong>三级回退机制</strong>：Thinking Level → Auth Profile → Model</li><li><strong>错误分类</strong>：精确识别错误类型并采取相应策略</li><li><strong>配置热重载</strong>：部分配置变更无需重启</li><li><strong>健康检查</strong>：Gateway 健康端点、Channel 状态探测</li></ul><h4 id="安全防护体系"><a href="#安全防护体系" class="headerlink" title="安全防护体系"></a>安全防护体系</h4><ul><li><strong>多层 SSRF 防护</strong>：DNS 固定 + 私有 IP 检测 + 主机名黑名单</li><li><strong>权限控制三层机制</strong>：Allowlist → Command-Gating → Mention-Gating</li><li><strong>会话隔离</strong>：支持多级隔离策略</li><li><strong>路径遍历防护</strong>：<code>openFileWithinRoot</code> 和 ID 格式验证</li></ul><h4 id="性能优化"><a href="#性能优化" class="headerlink" title="性能优化"></a>性能优化</h4><ul><li><strong>并发控制</strong>：媒体处理并发限制</li><li><strong>流式处理</strong>：大文件流式读取、Agent 流式回复</li><li><strong>三级缓存</strong>：内存 + 磁盘 + 临时文件</li><li><strong>智能压缩</strong>：PNG 网格搜索优化</li></ul><h3 id="技术创新点"><a href="#技术创新点" class="headerlink" title="技术创新点"></a>技术创新点</h3><h4 id="消息流转编排"><a href="#消息流转编排" class="headerlink" title="消息流转编排"></a>消息流转编排</h4><ul><li><strong>统一归一化</strong>：不同渠道消息统一为标准格式</li><li><strong>智能路由</strong>：7 级优先级路由决策</li><li><strong>去重机制</strong>：基于组合键的 TTL 缓存去重</li><li><strong>跨渠道路由</strong>：支持消息在不同渠道间路由</li></ul><h4 id="Agent-执行引擎"><a href="#Agent-执行引擎" class="headerlink" title="Agent 执行引擎"></a>Agent 执行引擎</h4><ul><li><strong>Pi Core 深度集成</strong>：无缝集成 Pi Agent Core</li><li><strong>事件驱动架构</strong>：基于事件订阅的流式处理</li><li><strong>Block Reply 系统</strong>：支持中间回复和最终回复</li><li><strong>消息去重</strong>：避免 messaging tool 重复发送</li></ul><h4 id="媒体理解管道"><a href="#媒体理解管道" class="headerlink" title="媒体理解管道"></a>媒体理解管道</h4><ul><li><strong>多模态统一抽象</strong>：图像&#x2F;音频&#x2F;视频&#x2F;PDF 统一处理</li><li><strong>提供商适配</strong>：支持多种 Vision&#x2F;Audio API</li><li><strong>智能压缩</strong>：自动优化媒体大小</li><li><strong>SSRF 防护</strong>：多层次安全防护</li></ul><h4 id="工具系统设计"><a href="#工具系统设计" class="headerlink" title="工具系统设计"></a>工具系统设计</h4><ul><li><strong>工具策略分级</strong>：全局 → Provider → Agent → Group → Subagent</li><li><strong>工具组抽象</strong>：<code>group:fs</code>、<code>group:runtime</code> 等组概念</li><li><strong>插件工具</strong>：支持外部插件提供工具</li><li><strong>Canvas 集成</strong>：实时渲染和 A2UI 支持</li></ul><h3 id="可扩展性"><a href="#可扩展性" class="headerlink" title="可扩展性"></a>可扩展性</h3><h4 id="新增渠道"><a href="#新增渠道" class="headerlink" title="新增渠道"></a>新增渠道</h4><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 1. 创建插件目录</span></span><br><span class="line">extensions/<span class="keyword">new</span>-channel/</span><br><span class="line">  ├── openclaw.<span class="property">plugin</span>.<span class="property">json</span></span><br><span class="line">  ├── index.<span class="property">ts</span></span><br><span class="line">  └── src/</span><br><span class="line">      ├── channel.<span class="property">ts</span></span><br><span class="line">      └── runtime.<span class="property">ts</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 2. 实现 ChannelPlugin 接口</span></span><br><span class="line"><span class="keyword">export</span> <span class="keyword">const</span> <span class="attr">newChannelPlugin</span>: <span class="title class_">ChannelPlugin</span> = &#123;</span><br><span class="line">  <span class="attr">id</span>: <span class="string">&quot;new-channel&quot;</span>,</span><br><span class="line">  <span class="attr">capabilities</span>: &#123; <span class="attr">chatTypes</span>: [<span class="string">&quot;dm&quot;</span>, <span class="string">&quot;group&quot;</span>] &#125;,</span><br><span class="line">  <span class="attr">config</span>: &#123; <span class="comment">/* 配置适配器 */</span> &#125;,</span><br><span class="line">  <span class="attr">outbound</span>: &#123; <span class="comment">/* 出站适配器 */</span> &#125;,</span><br><span class="line">  <span class="comment">// ... 其他适配器</span></span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 3. 自动发现和注册</span></span><br><span class="line"><span class="comment">// 无需修改核心代码</span></span><br></pre></td></tr></table></figure><h4 id="新增工具"><a href="#新增工具" class="headerlink" title="新增工具"></a>新增工具</h4><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 在插件中定义工具</span></span><br><span class="line"><span class="keyword">export</span> <span class="keyword">function</span> <span class="title function_">createMyTool</span>(<span class="params"></span>): <span class="title class_">AnyAgentTool</span> &#123;</span><br><span class="line">  <span class="keyword">return</span> &#123;</span><br><span class="line">    <span class="attr">name</span>: <span class="string">&quot;my_tool&quot;</span>,</span><br><span class="line">    <span class="attr">description</span>: <span class="string">&quot;My custom tool&quot;</span>,</span><br><span class="line">    <span class="attr">parameters</span>: <span class="title class_">MyToolSchema</span>,</span><br><span class="line">    <span class="attr">execute</span>: <span class="title function_">async</span> (toolCallId, params) =&gt; &#123;</span><br><span class="line">      <span class="comment">// 工具实现</span></span><br><span class="line">      <span class="keyword">return</span> <span class="title function_">jsonResult</span>(&#123; <span class="attr">status</span>: <span class="string">&quot;ok&quot;</span> &#125;);</span><br><span class="line">    &#125;,</span><br><span class="line">  &#125;;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 工具会自动被 resolvePluginTools 发现</span></span><br></pre></td></tr></table></figure><h4 id="新增媒体提供商"><a href="#新增媒体提供商" class="headerlink" title="新增媒体提供商"></a>新增媒体提供商</h4><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 在 src/media-understanding/providers/ 添加</span></span><br><span class="line"><span class="keyword">export</span> <span class="keyword">const</span> <span class="attr">myProvider</span>: <span class="title class_">MediaUnderstandingProvider</span> = &#123;</span><br><span class="line">  <span class="attr">id</span>: <span class="string">&quot;my-provider&quot;</span>,</span><br><span class="line">  <span class="attr">capabilities</span>: [<span class="string">&quot;image&quot;</span>, <span class="string">&quot;audio&quot;</span>],</span><br><span class="line">  <span class="attr">describeImage</span>: <span class="title function_">async</span> (req) =&gt; &#123;</span><br><span class="line">    <span class="comment">// 实现图像描述</span></span><br><span class="line">  &#125;,</span><br><span class="line">  <span class="attr">transcribeAudio</span>: <span class="title function_">async</span> (req) =&gt; &#123;</span><br><span class="line">    <span class="comment">// 实现音频转录</span></span><br><span class="line">  &#125;,</span><br><span class="line">&#125;;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 在 buildMediaUnderstandingRegistry 中注册</span></span><br></pre></td></tr></table></figure><h3 id="可测试性"><a href="#可测试性" class="headerlink" title="可测试性"></a>可测试性</h3><h4 id="依赖注入测试"><a href="#依赖注入测试" class="headerlink" title="依赖注入测试"></a>依赖注入测试</h4><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 轻松替换依赖</span></span><br><span class="line"><span class="keyword">const</span> makeDeps = (<span class="attr">overrides</span>: <span class="title class_">Partial</span>&lt;<span class="title class_">CliDeps</span>&gt; = &#123;&#125;): <span class="function"><span class="params">CliDeps</span> =&gt;</span> (&#123;</span><br><span class="line">  <span class="attr">sendMessageWhatsApp</span>: vi.<span class="title function_">fn</span>(),</span><br><span class="line">  <span class="attr">sendMessageTelegram</span>: vi.<span class="title function_">fn</span>(),</span><br><span class="line">  ...overrides,</span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line"><span class="keyword">const</span> deps = <span class="title function_">makeDeps</span>(&#123;</span><br><span class="line">  <span class="attr">sendMessageWhatsApp</span>: vi.<span class="title function_">fn</span>().<span class="title function_">mockResolvedValue</span>(&#123; <span class="attr">success</span>: <span class="literal">true</span> &#125;),</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h4 id="Mock-替换"><a href="#Mock-替换" class="headerlink" title="Mock 替换"></a>Mock 替换</h4><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 在测试中 Mock 整个模块</span></span><br><span class="line">vi.<span class="title function_">mock</span>(<span class="string">&quot;../cli/deps.js&quot;</span>, <span class="title function_">async</span> () =&gt; &#123;</span><br><span class="line">  <span class="keyword">const</span> actual = <span class="keyword">await</span> vi.<span class="title function_">importActual</span>(<span class="string">&quot;../cli/deps.js&quot;</span>);</span><br><span class="line">  <span class="keyword">return</span> &#123;</span><br><span class="line">    ...actual,</span><br><span class="line">    <span class="attr">createDefaultDeps</span>: <span class="function">() =&gt;</span> mockDeps,</span><br><span class="line">  &#125;;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><h4 id="单元测试覆盖"><a href="#单元测试覆盖" class="headerlink" title="单元测试覆盖"></a>单元测试覆盖</h4><ul><li>Gateway：请求路由、会话管理、权限检查</li><li>Channel：消息归一化、权限控制、路由决策</li><li>Agent：模型回退、工具执行、流式处理</li><li>Media：SSRF 防护、压缩优化、提供商适配</li></ul><h3 id="运维友好"><a href="#运维友好" class="headerlink" title="运维友好"></a>运维友好</h3><h4 id="系统服务集成-1"><a href="#系统服务集成-1" class="headerlink" title="系统服务集成"></a>系统服务集成</h4><ul><li><strong>macOS launchd</strong>：自动启动、日志管理</li><li><strong>Linux systemd</strong>：用户服务、自动重启</li><li><strong>Docker 支持</strong>：容器化部署</li></ul><h4 id="可观测性"><a href="#可观测性" class="headerlink" title="可观测性"></a>可观测性</h4><ul><li><strong>健康检查</strong>：Gateway <code>/health</code> 端点</li><li><strong>状态探测</strong>：Channel <code>status --probe</code></li><li><strong>日志系统</strong>：统一日志格式、macOS 统一日志集成</li><li><strong>事件广播</strong>：Gateway 事件实时推送</li></ul><h4 id="配置管理"><a href="#配置管理" class="headerlink" title="配置管理"></a>配置管理</h4><ul><li><strong>热重载</strong>：部分配置无需重启</li><li><strong>配置迁移</strong>：自动迁移旧版本配置</li><li><strong>配置验证</strong>：加载时验证配置正确性</li><li><strong>环境变量</strong>：支持环境变量覆盖</li></ul><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><h3 id="核心优势"><a href="#核心优势" class="headerlink" title="核心优势"></a>核心优势</h3><ol><li><strong>架构清晰</strong>：分层设计，职责明确，易于理解和维护</li><li><strong>高度解耦</strong>：依赖注入和适配器模式实现模块解耦</li><li><strong>强扩展性</strong>：插件化架构，支持渠道&#x2F;工具&#x2F;模型扩展</li><li><strong>容错健壮</strong>：多级回退机制，确保系统稳定运行</li><li><strong>安全可靠</strong>：多层安全防护，权限控制完善</li><li><strong>性能优化</strong>：并发控制、流式处理、多级缓存</li><li><strong>可测试性</strong>：依赖注入支持，单元测试覆盖完善</li></ol><h3 id="技术栈特点"><a href="#技术栈特点" class="headerlink" title="技术栈特点"></a>技术栈特点</h3><ul><li><strong>语言</strong>：TypeScript (ESM)，类型安全</li><li><strong>运行时</strong>：Node 22+，Bun 支持</li><li><strong>AI 集成</strong>：Pi Agent Core，多模型支持</li><li><strong>消息渠道</strong>：10+ 种渠道，插件化扩展</li><li><strong>媒体处理</strong>：多模态统一处理，多提供商适配</li><li><strong>系统集成</strong>：launchd、systemd、Docker</li></ul><h3 id="适用场景"><a href="#适用场景" class="headerlink" title="适用场景"></a>适用场景</h3><ul><li><strong>AI 助手平台</strong>：多渠道统一接入的 AI 助手</li><li><strong>自动化工具</strong>：支持复杂工作流的自动化</li><li><strong>多模态应用</strong>：需要处理图像&#x2F;音频&#x2F;视频的应用</li><li><strong>企业集成</strong>：需要集成多种通讯工具的企业应用</li></ul><p>OpenClaw 的架构设计展现了现代 AI 应用的最佳实践，通过清晰的分层、强大的扩展能力和完善的安全机制，构建了一个健壮、灵活、易于维护的 AI 工具链平台。</p><hr><h2 id="附录"><a href="#附录" class="headerlink" title="附录"></a>附录</h2><h3 id="关键文件索引"><a href="#关键文件索引" class="headerlink" title="关键文件索引"></a>关键文件索引</h3><h4 id="Gateway-网关系统-1"><a href="#Gateway-网关系统-1" class="headerlink" title="Gateway 网关系统"></a>Gateway 网关系统</h4><ul><li><code>src/gateway/server.impl.ts</code> - Gateway 主实现</li><li><code>src/gateway/server-methods.ts</code> - 请求路由与授权</li><li><code>src/gateway/server-ws-runtime.ts</code> - WebSocket 运行时</li><li><code>src/gateway/session-utils.ts</code> - 会话管理工具</li></ul><h4 id="Channel-渠道抽象层-1"><a href="#Channel-渠道抽象层-1" class="headerlink" title="Channel 渠道抽象层"></a>Channel 渠道抽象层</h4><ul><li><code>src/channels/plugins/types.plugin.ts</code> - ChannelPlugin 接口定义</li><li><code>src/channels/plugins/catalog.ts</code> - 插件发现与加载</li><li><code>src/channels/allowlist-match.ts</code> - Allowlist 匹配逻辑</li><li><code>src/channels/command-gating.ts</code> - Command-Gating 实现</li><li><code>src/channels/mention-gating.ts</code> - Mention-Gating 实现</li></ul><h4 id="Agent-代理引擎-1"><a href="#Agent-代理引擎-1" class="headerlink" title="Agent 代理引擎"></a>Agent 代理引擎</h4><ul><li><code>src/agents/pi-embedded-runner/run.ts</code> - Agent Runner 主入口</li><li><code>src/agents/pi-embedded-runner/model.ts</code> - 模型解析</li><li><code>src/agents/failover-error.ts</code> - 容错错误分类</li><li><code>src/agents/model-fallback.ts</code> - 模型回退机制</li><li><code>src/agents/pi-tools.ts</code> - 工具创建</li><li><code>src/agents/tools/canvas-tool.ts</code> - Canvas 工具</li></ul><h4 id="Media-媒体理解管道-1"><a href="#Media-媒体理解管道-1" class="headerlink" title="Media 媒体理解管道"></a>Media 媒体理解管道</h4><ul><li><code>src/media-understanding/apply.ts</code> - 媒体理解入口</li><li><code>src/media-understanding/providers/index.ts</code> - 提供商注册表</li><li><code>src/infra/net/ssrf.ts</code> - SSRF 防护</li><li><code>src/media/image-ops.ts</code> - 图像处理</li><li><code>src/media/fetch.ts</code> - 媒体获取</li></ul><h4 id="路由与控制层-1"><a href="#路由与控制层-1" class="headerlink" title="路由与控制层"></a>路由与控制层</h4><ul><li><code>src/routing/resolve-route.ts</code> - 路由决策</li><li><code>src/auto-reply/reply/session.ts</code> - 会话初始化</li><li><code>src/auto-reply/reply/dispatch-from-config.ts</code> - 回复分发</li><li><code>src/auto-reply/reply/reply-dispatcher.ts</code> - ReplyDispatcher</li><li><code>src/auto-reply/reply/inbound-dedupe.ts</code> - 消息去重</li></ul><h4 id="依赖注入"><a href="#依赖注入" class="headerlink" title="依赖注入"></a>依赖注入</h4><ul><li><code>src/cli/deps.ts</code> - CliDeps 定义</li><li><code>src/cli/outbound-send-deps.ts</code> - 依赖转换</li><li><code>src/infra/outbound/deliver.ts</code> - OutboundSendDeps</li></ul><h3 id="参考链接"><a href="#参考链接" class="headerlink" title="参考链接"></a>参考链接</h3><ul><li>官方文档：<a href="https://docs.openclaw.ai/">https://docs.openclaw.ai</a></li><li>GitHub 仓库：<a href="https://github.com/openclaw/openclaw">https://github.com/openclaw/openclaw</a></li><li>Pi Agent Core：<a href="https://github.com/badlogic/pi-mono">https://github.com/badlogic/pi-mono</a></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;本报告以系统架构师的视角，深入分析 OpenClaw 的技术架构设计&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;整体架构设计&quot;&gt;&lt;a href=&quot;#整体架构设计&quot; class=&quot;headerlink&quot; title=&quot;整体架构设计&quot;&gt;&lt;/a</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>AI 代码生成工具效能度量指南</title>
    <link href="https://www.silenceboy.com/2026/01/28/AI-%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90%E5%B7%A5%E5%85%B7%E6%95%88%E8%83%BD%E5%BA%A6%E9%87%8F%E6%8C%87%E5%8D%97/"/>
    <id>https://www.silenceboy.com/2026/01/28/AI-%E4%BB%A3%E7%A0%81%E7%94%9F%E6%88%90%E5%B7%A5%E5%85%B7%E6%95%88%E8%83%BD%E5%BA%A6%E9%87%8F%E6%8C%87%E5%8D%97/</id>
    <published>2026-01-28T08:33:47.000Z</published>
    <updated>2026-01-28T08:45:36.816Z</updated>
    
    <content type="html"><![CDATA[<p>本指南专注于<strong>AI代码生成工具</strong>（如 Cursor、GitHub Copilot、通义灵码等商业IDE辅助工具）的效能度量。必须跳出”代码行数”的陷阱，建立一个覆盖 <strong>采用（Adoption）、效能（Productivity）、质量（Quality）、体验（Experience）与成本（Cost）</strong> 的立体评估模型。</p><h2 id="核心度量维度体系"><a href="#核心度量维度体系" class="headerlink" title="核心度量维度体系"></a>核心度量维度体系</h2><p>我们将度量指标分为五个层级，分别服务于不同的管理视角：</p><h3 id="采用与活跃度-Adoption-Engagement-——-解决”有没有在用”"><a href="#采用与活跃度-Adoption-Engagement-——-解决”有没有在用”" class="headerlink" title="采用与活跃度 (Adoption & Engagement) —— 解决”有没有在用”"></a>采用与活跃度 (Adoption &amp; Engagement) —— <em>解决”有没有在用”</em></h3><table><thead><tr><th align="left">指标名称</th><th align="left">定义/计算公式</th><th align="left">行业基准/说明</th></tr></thead><tbody><tr><td align="left"><strong>工具渗透率</strong><br>(Penetration Rate)</td><td align="left"><code>授权并激活工具人数 / 团队总人数</code></td><td align="left">衡量推广广度。目标：&gt;80%</td></tr><tr><td align="left"><strong>深度活跃度</strong><br>(Deep Usage)</td><td align="left"><code>日均调用AI次数 &gt; N次 的用户占比</code></td><td align="left">仅看DAU不够，需关注高频用户（Power Users）比例。重点关注周活跃留存。建议：N=20次/天</td></tr><tr><td align="left"><strong>功能热度分布</strong><br>(Feature Heatmap)</td><td align="left">代码补全 vs Chat问答 vs 块生成 vs 代码解释的调用比率</td><td align="left">分析开发者最依赖哪个功能。通常”补全”频次最高(60-70%)，”Chat”解决复杂问题价值最大(20-30%)</td></tr><tr><td align="left"><strong>跨编程语言使用率</strong><br>(Language Coverage)</td><td align="left">各编程语言使用AI的频率分布</td><td align="left">识别AI在哪些语言表现更好。通常：Python/JS/TS 采纳率最高，C++/Rust 相对较低</td></tr><tr><td align="left"><strong>激活速度</strong><br>(Time to First Value)</td><td align="left">从安装到首次接受AI建议的平均时长</td><td align="left">衡量上手门槛。目标：&lt;30分钟</td></tr></tbody></table><h3 id="生产力与效能-Productivity-Flow-——-解决”是不是快了”"><a href="#生产力与效能-Productivity-Flow-——-解决”是不是快了”" class="headerlink" title="生产力与效能 (Productivity & Flow) —— 解决”是不是快了”"></a>生产力与效能 (Productivity &amp; Flow) —— <em>解决”是不是快了”</em></h3><table><thead><tr><th align="left">指标名称</th><th align="left">定义/计算公式</th><th align="left">行业基准/说明</th></tr></thead><tbody><tr><td align="left"><strong>代码采纳率</strong><br>(Acceptance Rate)</td><td align="left"><code>(Tab键采纳次数 + Chat应用次数) / AI推荐总次数</code></td><td align="left"><strong>核心指标</strong>。<br>• Copilot基准：20%-35% 为正常，&lt;15% 说明推荐质量差或干扰大。<br>• 需区分”单行补全”（20-30%）与”块生成”（10-20%）</td></tr><tr><td align="left"><strong>AI代码贡献占比</strong><br>(AI Contribution Ratio)</td><td align="left"><code>最终入库的AI生成代码行数 / 新增代码总行数</code></td><td align="left">直接反映AI的生产力贡献。<br>⚠️ <strong>注意</strong>：需结合Git提交数据，剔除生成后立即被删除的代码。行业均值：15-30%</td></tr><tr><td align="left"><strong>编码速度提升</strong><br>(Coding Velocity)</td><td align="left">对比使用AI前后的代码提交频率/单位时间代码产出</td><td align="left">GitHub研究：平均提升55%编码速度。建议按语言、任务类型分层统计</td></tr><tr><td align="left"><strong>响应时延</strong><br>(Latency)</td><td align="left">AI建议从触发到展示的平均耗时</td><td align="left">直接影响体验。目标：P50&lt;300ms，P95&lt;800ms。超过1秒会严重影响心流</td></tr><tr><td align="left"><strong>首Token时间</strong><br>(Time to First Token)</td><td align="left">Chat模式下，从发送请求到首个字符返回的时间</td><td align="left">衡量对话流畅度。目标：P95&lt;500ms</td></tr><tr><td align="left"><strong>完整性生成效率</strong><br>(Generation Completeness)</td><td align="left"><code>完整函数/类一次生成成功率</code></td><td align="left">衡量块生成能力。目标：&gt;70%无需重新生成</td></tr><tr><td align="left"><strong>任务完成时间缩减</strong><br>(Task Time Reduction)</td><td align="left">特定任务（如CRUD、单元测试）使用AI前后的耗时对比</td><td align="left">建立任务基准库，定期AB测试。典型场景：单元测试生成节省60-80%时间</td></tr><tr><td align="left"><strong>Context切换减少</strong><br>(Context Switch Reduction)</td><td align="left">使用AI后查阅文档/搜索引擎的频率下降比例</td><td align="left">反映AI知识库价值。目标：减少40%+ 外部查询</td></tr></tbody></table><h3 id="质量与可靠性-Quality-Accuracy-——-解决”是不是好了”"><a href="#质量与可靠性-Quality-Accuracy-——-解决”是不是好了”" class="headerlink" title="质量与可靠性 (Quality & Accuracy) —— 解决”是不是好了”"></a>质量与可靠性 (Quality &amp; Accuracy) —— <em>解决”是不是好了”</em></h3><table><thead><tr><th align="left">指标名称</th><th align="left">定义/计算公式</th><th align="left">行业基准/说明</th></tr></thead><tbody><tr><td align="left"><strong>AI代码留存率</strong><br>(Code Retention)</td><td align="left"><code>T+14天后仍保留的AI代码行数 / AI生成时的总行数</code></td><td align="left">比”采纳率”更真实。如果代码被采纳但很快被重写，说明AI生成的是”低质量代码”。目标：&gt;85%</td></tr><tr><td align="left"><strong>代码缺陷密度</strong><br>(Defect Density)</td><td align="left"><code>AI生成代码关联的Bug数 / AI生成代码千行数</code></td><td align="left">对比人工代码的Bug率。Merico研究：AI代码可能在安全性和边缘情况处理上较弱。需长期跟踪</td></tr><tr><td align="left"><strong>安全漏洞检测率</strong><br>(Security Vulnerability Rate)</td><td align="left"><code>AI生成代码中检测出的安全漏洞数 / AI生成代码总量</code></td><td align="left">结合SAST工具(如SonarQube)分析。重点关注：SQL注入、XSS、硬编码密钥</td></tr><tr><td align="left"><strong>代码重复率</strong><br>(Code Duplication)</td><td align="left"><code>AI生成代码的重复块占比</code></td><td align="left">过高说明AI在”复制粘贴”。需与代码库平均水平对比</td></tr><tr><td align="left"><strong>测试覆盖率影响</strong><br>(Test Coverage Impact)</td><td align="left">使用AI生成测试代码后，代码覆盖率的变化</td><td align="left">AI生成测试用例的价值度量。目标：覆盖率提升10-20%</td></tr><tr><td align="left"><strong>Lint合规率</strong><br>(Linting Pass Rate)</td><td align="left"><code>AI生成代码首次通过静态检查的比率</code></td><td align="left">衡量代码规范性。目标：&gt;90% 首次通过</td></tr><tr><td align="left"><strong>API使用正确性</strong><br>(API Accuracy)</td><td align="left"><code>AI建议的API调用无需修改的比率</code></td><td align="left">尤其针对第三方库/框架。反映训练数据时效性</td></tr><tr><td align="left"><strong>逻辑复杂度</strong><br>(Cyclomatic Complexity)</td><td align="left">AI生成代码的平均圈复杂度 vs 人工代码</td><td align="left">评估可维护性。AI生成的代码不应更复杂</td></tr></tbody></table><h3 id="开发者体验-Developer-Experience-——-解决”爽不爽”"><a href="#开发者体验-Developer-Experience-——-解决”爽不爽”" class="headerlink" title="开发者体验 (Developer Experience) —— 解决”爽不爽”"></a>开发者体验 (Developer Experience) —— <em>解决”爽不爽”</em></h3><table><thead><tr><th align="left">指标名称</th><th align="left">定义/计算公式</th><th align="left">行业基准/说明</th></tr></thead><tbody><tr><td align="left"><strong>感知效能提升</strong><br>(Perceived Velocity)</td><td align="left">问卷调研：”AI帮你节省了多少时间？”</td><td align="left">主观数据往往比客观数据更能预测工具的长期留存。目标：&gt;70%用户感知显著提升</td></tr><tr><td align="left"><strong>心流干扰度</strong><br>(Flow Disruption)</td><td align="left"><code>主动关闭/拒绝推荐的次数 / 总弹窗次数</code></td><td align="left">衡量AI是否”太烦人”。干扰度&gt;50%会导致开发者禁用插件</td></tr><tr><td align="left"><strong>NPS（净推荐值）</strong><br>(Net Promoter Score)</td><td align="left">标准NPS问卷：0-10分，是否愿意推荐给同事</td><td align="left">目标：NPS&gt;40为优秀</td></tr><tr><td align="left"><strong>功能满意度</strong><br>(Feature Satisfaction)</td><td align="left">针对不同功能（补全/Chat/重构）的满意度分项打分</td><td align="left">识别改进优先级</td></tr><tr><td align="left"><strong>学习曲线</strong><br>(Learning Curve)</td><td align="left">新用户从安装到达到平均采纳率的时间</td><td align="left">衡量易用性。目标：&lt;3天</td></tr><tr><td align="left"><strong>错误容忍度</strong><br>(Error Tolerance)</td><td align="left">用户遇到N次错误建议后，仍继续使用的比例</td><td align="left">衡量产品粘性。健康阈值：3次内错误不影响继续使用</td></tr></tbody></table><h3 id="成本效益分析-Cost-ROI-——-解决”值不值”"><a href="#成本效益分析-Cost-ROI-——-解决”值不值”" class="headerlink" title="成本效益分析 (Cost & ROI) —— 解决”值不值”"></a>成本效益分析 (Cost &amp; ROI) —— <em>解决”值不值”</em></h3><table><thead><tr><th align="left">指标名称</th><th align="left">定义/计算公式</th><th align="left">行业基准/说明</th></tr></thead><tbody><tr><td align="left"><strong>单位代码成本</strong><br>(Cost per Line)</td><td align="left"><code>API订阅总成本 / AI生成并入库的代码行数</code></td><td align="left">计算AI生成每行代码的真实成本</td></tr><tr><td align="left"><strong>ROI（投资回报率）</strong><br>(Return on Investment)</td><td align="left"><code>(节省的人力成本 - 工具订阅成本) / 工具订阅成本</code></td><td align="left">关键业务指标。需结合人效、交付速度综合评估</td></tr><tr><td align="left"><strong>Token使用效率</strong><br>(Token Efficiency)</td><td align="left"><code>采纳代码的Token消耗 / 总Token消耗</code></td><td align="left">优化Prompt策略，减少无效Token浪费</td></tr><tr><td align="left"><strong>人效提升</strong><br>(Productivity Gain)</td><td align="left">使用AI后，人均产出代码量/功能点的增长比例</td><td align="left">行业均值：15-35%人效提升</td></tr><tr><td align="left"><strong>招聘成本节约</strong><br>(Hiring Cost Reduction)</td><td align="left">因效率提升而减少的招聘需求对应的成本节约</td><td align="left">间接价值度量</td></tr></tbody></table><h2 id="场景化深度度量方法"><a href="#场景化深度度量方法" class="headerlink" title="场景化深度度量方法"></a>场景化深度度量方法</h2><p>针对AI代码生成工具的不同使用模式，采用差异化度量策略。</p><h3 id="场景-A：行内代码补全-Inline-Completion-Ghost-Text"><a href="#场景-A：行内代码补全-Inline-Completion-Ghost-Text" class="headerlink" title="场景 A：行内代码补全 (Inline Completion / Ghost Text)"></a>场景 A：行内代码补全 (Inline Completion / Ghost Text)</h3><p><strong>重点：微观交互数据的精确采集</strong></p><ol><li><p><strong>代码采纳率 (Acceptance Rate) 进阶版</strong></p><ul><li><strong>区分模式</strong>：<ul><li><strong>单行补全</strong>：通常为变量名、函数调用补全</li><li><strong>多行补全</strong>：跨行的代码块建议</li></ul></li><li><strong>公式优化</strong>：<br><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.172ex;" xmlns="http://www.w3.org/2000/svg" width="74.516ex" height="5.475ex" role="img" focusable="false" viewBox="0 -1460 32936 2420"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="45" d="M128 619Q121 626 117 628T101 631T58 634H25V680H597V676Q599 670 611 560T625 444V440H585V444Q584 447 582 465Q578 500 570 526T553 571T528 601T498 619T457 629T411 633T353 634Q266 634 251 633T233 622Q233 622 233 621Q232 619 232 497V376H286Q359 378 377 385Q413 401 416 469Q416 471 416 473V493H456V213H416V233Q415 268 408 288T383 317T349 328T297 330Q290 330 286 330H232V196V114Q232 57 237 52Q243 47 289 47H340H391Q428 47 452 50T505 62T552 92T584 146Q594 172 599 200T607 247T612 270V273H652V270Q651 267 632 137T610 3V0H25V46H58Q100 47 109 49T128 61V619Z"></path><path data-c="66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z" transform="translate(681,0)"></path><path data-c="66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z" transform="translate(987,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1293,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(1737,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(2181,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(2570,0)"></path><path data-c="76" d="M338 431Q344 429 422 429Q479 429 503 431H508V385H497Q439 381 423 345Q421 341 356 172T288 -2Q283 -11 263 -11Q244 -11 239 -2Q99 359 98 364Q93 378 82 381T43 385H19V431H25L33 430Q41 430 53 430T79 430T104 429T122 428Q217 428 232 431H240V385H226Q187 384 184 370Q184 366 235 234L286 102L377 341V349Q377 363 367 372T349 383T335 385H331V431H338Z" transform="translate(2848,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(3376,0)"></path><path data-c="20" d="" transform="translate(3820,0)"></path><path data-c="41" d="M255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447Z" transform="translate(4070,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(4820,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(5264,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(5708,0)"></path><path data-c="70" d="M36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218Z" transform="translate(6152,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(6708,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(7097,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(7597,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(8153,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(8597,0)"></path><path data-c="20" d="" transform="translate(9041,0)"></path><path data-c="52" d="M130 622Q123 629 119 631T103 634T60 637H27V683H202H236H300Q376 683 417 677T500 648Q595 600 609 517Q610 512 610 501Q610 468 594 439T556 392T511 361T472 343L456 338Q459 335 467 332Q497 316 516 298T545 254T559 211T568 155T578 94Q588 46 602 31T640 16H645Q660 16 674 32T692 87Q692 98 696 101T712 105T728 103T732 90Q732 59 716 27T672 -16Q656 -22 630 -22Q481 -16 458 90Q456 101 456 163T449 246Q430 304 373 320L363 322L297 323H231V192L232 61Q238 51 249 49T301 46H334V0H323Q302 3 181 3Q59 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM491 499V509Q491 527 490 539T481 570T462 601T424 623T362 636Q360 636 340 636T304 637H283Q238 637 234 628Q231 624 231 492V360H289Q390 360 434 378T489 456Q491 467 491 499Z" transform="translate(9291,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(10027,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(10527,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(10916,0)"></path></g><g data-mml-node="mo" transform="translate(11637.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mfrac" transform="translate(12693.6,0)"><g data-mml-node="mtext" transform="translate(1417,710)"><path data-c="41" d="M255 0Q240 3 140 3Q48 3 39 0H32V46H47Q119 49 139 88Q140 91 192 245T295 553T348 708Q351 716 366 716H376Q396 715 400 709Q402 707 508 390L617 67Q624 54 636 51T687 46H717V0H708Q699 3 581 3Q458 3 437 0H427V46H440Q510 46 510 64Q510 66 486 138L462 209H229L209 150Q189 91 189 85Q189 72 209 59T259 46H264V0H255ZM447 255L345 557L244 256Q244 255 345 255H447Z"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(750,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(1194,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1638,0)"></path><path data-c="70" d="M36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218Z" transform="translate(2082,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(2638,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(3027,0)"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(3471,0)"></path><path data-c="20" d="" transform="translate(4027,0)"></path><path data-c="53" d="M55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507Z" transform="translate(4277,0)"></path><path data-c="75" d="M383 58Q327 -10 256 -10H249Q124 -10 105 89Q104 96 103 226Q102 335 102 348T96 369Q86 385 36 385H25V408Q25 431 27 431L38 432Q48 433 67 434T105 436Q122 437 142 438T172 441T184 442H187V261Q188 77 190 64Q193 49 204 40Q224 26 264 26Q290 26 311 35T343 58T363 90T375 120T379 144Q379 145 379 161T380 201T380 248V315Q380 361 370 372T320 385H302V431Q304 431 378 436T457 442H464V264Q464 84 465 81Q468 61 479 55T524 46H542V0Q540 0 467 -5T390 -11H383V58Z" transform="translate(4833,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(5389,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(5889,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(6389,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(6833,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(7227,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(7616,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(7894,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(8394,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(8950,0)"></path><path data-c="20" d="" transform="translate(9344,0)"></path><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z" transform="translate(9594,0)"></path><path data-c="3E" d="M84 520Q84 528 88 533T96 539L99 540Q106 540 253 471T544 334L687 265Q694 260 694 250T687 235Q685 233 395 96L107 -40H101Q83 -38 83 -20Q83 -19 83 -17Q82 -10 98 -1Q117 9 248 71Q326 108 378 132L626 250L378 368Q90 504 86 509Q84 513 84 520Z" transform="translate(9983,0)"></path><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z" transform="translate(10761,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(11261,0)"></path><path data-c="20" d="" transform="translate(11761,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(12011,0)"></path><path data-c="68" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 124T102 167T103 217T103 272T103 329Q103 366 103 407T103 482T102 542T102 586T102 603Q99 622 88 628T43 637H25V660Q25 683 27 683L37 684Q47 685 66 686T103 688Q120 689 140 690T170 693T181 694H184V367Q244 442 328 442Q451 442 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(12455,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(13011,0)"></path><path data-c="72" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36Z" transform="translate(13511,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(13903,0)"></path><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z" transform="translate(14297,0)"></path></g><g data-mml-node="mtext" transform="translate(220,-710)"><path data-c="53" d="M55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507Z"></path><path data-c="68" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 124T102 167T103 217T103 272T103 329Q103 366 103 407T103 482T102 542T102 586T102 603Q99 622 88 628T43 637H25V660Q25 683 27 683L37 684Q47 685 66 686T103 688Q120 689 140 690T170 693T181 694H184V367Q244 442 328 442Q451 442 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(556,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(1112,0)"></path><path data-c="77" d="M90 368Q84 378 76 380T40 385H18V431H24L43 430Q62 430 84 429T116 428Q206 428 221 431H229V385H215Q177 383 177 368Q177 367 221 239L265 113L339 328L333 345Q323 374 316 379Q308 384 278 385H258V431H264Q270 428 348 428Q439 428 454 431H461V385H452Q404 385 404 369Q404 366 418 324T449 234T481 143L496 100L537 219Q579 341 579 347Q579 363 564 373T530 385H522V431H529Q541 428 624 428Q692 428 698 431H703V385H697Q696 385 691 385T682 384Q635 377 619 334L559 161Q546 124 528 71Q508 12 503 1T487 -11H479Q460 -11 456 -4Q455 -3 407 133L361 267Q359 263 266 -4Q261 -11 243 -11H238Q225 -11 220 -3L90 368Z" transform="translate(1612,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(2334,0)"></path><path data-c="20" d="" transform="translate(2890,0)"></path><path data-c="53" d="M55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507Z" transform="translate(3140,0)"></path><path data-c="75" d="M383 58Q327 -10 256 -10H249Q124 -10 105 89Q104 96 103 226Q102 335 102 348T96 369Q86 385 36 385H25V408Q25 431 27 431L38 432Q48 433 67 434T105 436Q122 437 142 438T172 441T184 442H187V261Q188 77 190 64Q193 49 204 40Q224 26 264 26Q290 26 311 35T343 58T363 90T375 120T379 144Q379 145 379 161T380 201T380 248V315Q380 361 370 372T320 385H302V431Q304 431 378 436T457 442H464V264Q464 84 465 81Q468 61 479 55T524 46H542V0Q540 0 467 -5T390 -11H383V58Z" transform="translate(3696,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(4252,0)"></path><path data-c="67" d="M329 409Q373 453 429 453Q459 453 472 434T485 396Q485 382 476 371T449 360Q416 360 412 390Q410 404 415 411Q415 412 416 414V415Q388 412 363 393Q355 388 355 386Q355 385 359 381T368 369T379 351T388 325T392 292Q392 230 343 187T222 143Q172 143 123 171Q112 153 112 133Q112 98 138 81Q147 75 155 75T227 73Q311 72 335 67Q396 58 431 26Q470 -13 470 -72Q470 -139 392 -175Q332 -206 250 -206Q167 -206 107 -175Q29 -140 29 -75Q29 -39 50 -15T92 18L103 24Q67 55 67 108Q67 155 96 193Q52 237 52 292Q52 355 102 398T223 442Q274 442 318 416L329 409ZM299 343Q294 371 273 387T221 404Q192 404 171 388T145 343Q142 326 142 292Q142 248 149 227T179 192Q196 182 222 182Q244 182 260 189T283 207T294 227T299 242Q302 258 302 292T299 343ZM403 -75Q403 -50 389 -34T348 -11T299 -2T245 0H218Q151 0 138 -6Q118 -15 107 -34T95 -74Q95 -84 101 -97T122 -127T170 -155T250 -167Q319 -167 361 -139T403 -75Z" transform="translate(4752,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(5252,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(5696,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(6090,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(6479,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(6757,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(7257,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(7813,0)"></path><path data-c="20" d="" transform="translate(8207,0)"></path><path data-c="28" d="M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z" transform="translate(8457,0)"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(8846,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(9402,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(9680,0)"></path><path data-c="70" d="M36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218Z" transform="translate(10074,0)"></path><path data-c="6C" d="M42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42Z" transform="translate(10630,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(10908,0)"></path><path data-c="79" d="M69 -66Q91 -66 104 -80T118 -116Q118 -134 109 -145T91 -160Q84 -163 97 -166Q104 -168 111 -168Q131 -168 148 -159T175 -138T197 -106T213 -75T225 -43L242 0L170 183Q150 233 125 297Q101 358 96 368T80 381Q79 382 78 382Q66 385 34 385H19V431H26L46 430Q65 430 88 429T122 428Q129 428 142 428T171 429T200 430T224 430L233 431H241V385H232Q183 385 185 366L286 112Q286 113 332 227L376 341V350Q376 365 366 373T348 383T334 385H331V431H337H344Q351 431 361 431T382 430T405 429T422 429Q477 429 503 431H508V385H497Q441 380 422 345Q420 343 378 235T289 9T227 -131Q180 -204 113 -204Q69 -204 44 -177T19 -116Q19 -89 35 -78T69 -66Z" transform="translate(11408,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(11936,0)"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(12380,0)"></path><path data-c="20" d="" transform="translate(12936,0)"></path><path data-c="3E" d="M84 520Q84 528 88 533T96 539L99 540Q106 540 253 471T544 334L687 265Q694 260 694 250T687 235Q685 233 395 96L107 -40H101Q83 -38 83 -20Q83 -19 83 -17Q82 -10 98 -1Q117 9 248 71Q326 108 378 132L626 250L378 368Q90 504 86 509Q84 513 84 520Z" transform="translate(13186,0)"></path><path data-c="38" d="M70 417T70 494T124 618T248 666Q319 666 374 624T429 515Q429 485 418 459T392 417T361 389T335 371T324 363L338 354Q352 344 366 334T382 323Q457 264 457 174Q457 95 399 37T249 -22Q159 -22 101 29T43 155Q43 263 172 335L154 348Q133 361 127 368Q70 417 70 494ZM286 386L292 390Q298 394 301 396T311 403T323 413T334 425T345 438T355 454T364 471T369 491T371 513Q371 556 342 586T275 624Q268 625 242 625Q201 625 165 599T128 534Q128 511 141 492T167 463T217 431Q224 426 228 424L286 386ZM250 21Q308 21 350 55T392 137Q392 154 387 169T375 194T353 216T330 234T301 253T274 270Q260 279 244 289T218 306L210 311Q204 311 181 294T133 239T107 157Q107 98 150 60T250 21Z" transform="translate(13964,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(14464,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(14964,0)"></path><path data-c="6D" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q351 442 364 440T387 434T406 426T421 417T432 406T441 395T448 384T452 374T455 366L457 361L460 365Q463 369 466 373T475 384T488 397T503 410T523 422T546 432T572 439T603 442Q729 442 740 329Q741 322 741 190V104Q741 66 743 59T754 49Q775 46 803 46H819V0H811L788 1Q764 2 737 2T699 3Q596 3 587 0H579V46H595Q656 46 656 62Q657 64 657 200Q656 335 655 343Q649 371 635 385T611 402T585 404Q540 404 506 370Q479 343 472 315T464 232V168V108Q464 78 465 68T468 55T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(15464,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(16297,0)"></path><path data-c="29" d="M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z" transform="translate(16691,0)"></path></g><rect width="17280" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(30435.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mn" transform="translate(31436,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(500,0)"></path><path data-c="30" d="M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z" transform="translate(1000,0)"></path></g></g></g></svg></mjx-container></li><li><em>说明</em>：过滤掉展示时间极短（误触）或字符极少（无意义）的建议。</li></ul></li><li><p><strong>上下文理解准确度 (Context Accuracy)</strong></p><ul><li><strong>逻辑</strong>：分析AI建议是否符合当前文件的代码风格、命名规范、业务逻辑</li><li><strong>人工抽样评估</strong>：每周随机抽取100个建议，人工评分（1-5分）</li><li><strong>目标</strong>：平均分&gt;4.0</li></ul></li><li><p><strong>补全完整度 (Completion Sufficiency)</strong></p><ul><li><strong>公式</strong>：<br><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -2.059ex;" xmlns="http://www.w3.org/2000/svg" width="44.049ex" height="5.285ex" role="img" focusable="false" viewBox="0 -1426 19469.6 2336"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="53" d="M55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507Z"></path><path data-c="75" d="M383 58Q327 -10 256 -10H249Q124 -10 105 89Q104 96 103 226Q102 335 102 348T96 369Q86 385 36 385H25V408Q25 431 27 431L38 432Q48 433 67 434T105 436Q122 437 142 438T172 441T184 442H187V261Q188 77 190 64Q193 49 204 40Q224 26 264 26Q290 26 311 35T343 58T363 90T375 120T379 144Q379 145 379 161T380 201T380 248V315Q380 361 370 372T320 385H302V431Q304 431 378 436T457 442H464V264Q464 84 465 81Q468 61 479 55T524 46H542V0Q540 0 467 -5T390 -11H383V58Z" transform="translate(556,0)"></path><path data-c="66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z" transform="translate(1112,0)"></path><path data-c="66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z" transform="translate(1418,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(1724,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(2002,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(2446,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(2724,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(3168,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(3724,0)"></path><path data-c="79" d="M69 -66Q91 -66 104 -80T118 -116Q118 -134 109 -145T91 -160Q84 -163 97 -166Q104 -168 111 -168Q131 -168 148 -159T175 -138T197 -106T213 -75T225 -43L242 0L170 183Q150 233 125 297Q101 358 96 368T80 381Q79 382 78 382Q66 385 34 385H19V431H26L46 430Q65 430 88 429T122 428Q129 428 142 428T171 429T200 430T224 430L233 431H241V385H232Q183 385 185 366L286 112Q286 113 332 227L376 341V350Q376 365 366 373T348 383T334 385H331V431H337H344Q351 431 361 431T382 430T405 429T422 429Q477 429 503 431H508V385H497Q441 380 422 345Q420 343 378 235T289 9T227 -131Q180 -204 113 -204Q69 -204 44 -177T19 -116Q19 -89 35 -78T69 -66Z" transform="translate(4168,0)"></path></g><g data-mml-node="mo" transform="translate(4973.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mfrac" transform="translate(6029.6,0)"><g data-mml-node="mtext" transform="translate(220,676)"><text data-variant="normal" transform="scale(1,-1)" font-size="884px" font-family="serif">无</text><text data-variant="normal" transform="translate(1000,0) scale(1,-1)" font-size="884px" font-family="serif">需</text><text data-variant="normal" transform="translate(2000,0) scale(1,-1)" font-size="884px" font-family="serif">修</text><text data-variant="normal" transform="translate(3000,0) scale(1,-1)" font-size="884px" font-family="serif">改</text><text data-variant="normal" transform="translate(4000,0) scale(1,-1)" font-size="884px" font-family="serif">直</text><text data-variant="normal" transform="translate(5000,0) scale(1,-1)" font-size="884px" font-family="serif">接</text><text data-variant="normal" transform="translate(6000,0) scale(1,-1)" font-size="884px" font-family="serif">使</text><text data-variant="normal" transform="translate(7000,0) scale(1,-1)" font-size="884px" font-family="serif">用</text><text data-variant="normal" transform="translate(8000,0) scale(1,-1)" font-size="884px" font-family="serif">的</text><text data-variant="normal" transform="translate(9000,0) scale(1,-1)" font-size="884px" font-family="serif">采</text><text data-variant="normal" transform="translate(10000,0) scale(1,-1)" font-size="884px" font-family="serif">纳</text><text data-variant="normal" transform="translate(11000,0) scale(1,-1)" font-size="884px" font-family="serif">次</text><text data-variant="normal" transform="translate(12000,0) scale(1,-1)" font-size="884px" font-family="serif">数</text></g><g data-mml-node="mtext" transform="translate(4220,-710)"><text data-variant="normal" transform="scale(1,-1)" font-size="884px" font-family="serif">总</text><text data-variant="normal" transform="translate(1000,0) scale(1,-1)" font-size="884px" font-family="serif">采</text><text data-variant="normal" transform="translate(2000,0) scale(1,-1)" font-size="884px" font-family="serif">纳</text><text data-variant="normal" transform="translate(3000,0) scale(1,-1)" font-size="884px" font-family="serif">次</text><text data-variant="normal" transform="translate(4000,0) scale(1,-1)" font-size="884px" font-family="serif">数</text></g><rect width="13200" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container></li><li><em>解读</em>：&gt;80%为优秀，表明AI建议即用即得</li></ul></li></ol><h3 id="场景-B：对话式代码生成-Chat-Inline-Chat"><a href="#场景-B：对话式代码生成-Chat-Inline-Chat" class="headerlink" title="场景 B：对话式代码生成 (Chat / Inline Chat)"></a>场景 B：对话式代码生成 (Chat / Inline Chat)</h3><p><strong>重点：对话质量与生成准确性</strong></p><ol><li><p><strong>首次正确率 (First-time-right Rate)</strong></p><ul><li><strong>定义</strong>：无需重新生成或修改Prompt，首次生成即满足需求的比率</li><li><strong>目标</strong>：&gt;60%</li></ul></li><li><p><strong>Prompt迭代次数 (Prompt Iterations)</strong></p><ul><li><strong>公式</strong>：<code>平均单个任务的Prompt重试次数</code></li><li><em>解读</em>：&lt;2次为优秀，&gt;4次说明AI理解能力不足</li></ul></li><li><p><strong>代码解释准确性 (Explanation Accuracy)</strong></p><ul><li><strong>场景</strong>：用户选中代码请求解释</li><li><strong>人工评估</strong>：准确性、完整性、可理解性三个维度</li></ul></li><li><p><strong>多轮对话连贯性 (Context Retention)</strong></p><ul><li><strong>测试方法</strong>：在对话中引用前几轮内容，验证AI是否记住</li><li><strong>目标</strong>：5轮内上下文保持准确</li></ul></li></ol><h3 id="场景-C：代码重构与优化-Refactoring"><a href="#场景-C：代码重构与优化-Refactoring" class="headerlink" title="场景 C：代码重构与优化 (Refactoring)"></a>场景 C：代码重构与优化 (Refactoring)</h3><p><strong>重点：改进质量与安全性</strong></p><ol><li><p><strong>重构有效性 (Refactoring Effectiveness)</strong></p><ul><li><strong>度量维度</strong>：<ul><li>代码复杂度下降比例</li><li>性能提升（如执行耗时减少）</li><li>可读性改善（Lint评分提升）</li></ul></li></ul></li><li><p><strong>向后兼容性 (Backward Compatibility)</strong></p><ul><li><strong>测试</strong>：重构后原有测试用例通过率</li><li><strong>目标</strong>：100% 测试通过（无破坏性变更）</li></ul></li></ol><h3 id="场景-D：单元测试生成-Test-Generation"><a href="#场景-D：单元测试生成-Test-Generation" class="headerlink" title="场景 D：单元测试生成 (Test Generation)"></a>场景 D：单元测试生成 (Test Generation)</h3><p><strong>重点：测试覆盖与质量</strong></p><ol><li><p><strong>测试覆盖率提升 (Coverage Improvement)</strong></p><ul><li><strong>公式</strong>：<code>使用AI后覆盖率 - 使用AI前覆盖率</code></li><li><strong>目标</strong>：单次生成提升15%+ 覆盖率</li></ul></li><li><p><strong>测试有效性 (Test Validity)</strong></p><ul><li><strong>指标</strong>：<ul><li>生成的测试能否真正发现Bug</li><li>测试断言的准确性</li><li>边界条件覆盖情况</li></ul></li><li><strong>评估方法</strong>：引入已知Bug，验证AI生成的测试能否检出</li></ul></li><li><p><strong>测试可维护性 (Test Maintainability)</strong></p><ul><li><strong>标准</strong>：测试代码是否遵循Given-When-Then模式、命名是否清晰</li></ul></li></ol><h2 id="数据采集架构实施方案"><a href="#数据采集架构实施方案" class="headerlink" title="数据采集架构实施方案"></a>数据采集架构实施方案</h2><p>要实现上述度量，建议搭建”端+云”结合的数据链路：</p><h3 id="端侧数据采集-Client-IDE-Plugin-Telemetry"><a href="#端侧数据采集-Client-IDE-Plugin-Telemetry" class="headerlink" title="端侧数据采集 (Client - IDE Plugin Telemetry)"></a>端侧数据采集 (Client - IDE Plugin Telemetry)</h3><p><strong>实施方案</strong>：</p><ul><li><strong>IDE Extension Hook</strong>：如果使用 VSCode，可开发轻量级 Extension 或利用企业版 Telemetry API</li><li><strong>关键事件监听</strong>：<ul><li><code>onInlineCompletionShown</code>: 记录推荐弹出时刻及 Metadata（语言、上下文长度、触发方式）</li><li><code>onInlineCompletionAccepted</code>: 记录用户接受动作（Tab / Click Apply）</li><li><code>onInlineCompletionRejected</code>: 记录拒绝方式（手动删除 / ESC / 继续输入覆盖）</li><li><code>textDocument/didChange</code>: 记录代码实际变更量</li><li><code>chatRequest/response</code>: 记录Chat对话内容、Token消耗、响应时延</li></ul></li><li><strong>隐私合规</strong>：<ul><li>仅采集元数据，不上传完整代码内容</li><li>敏感信息脱敏（如密钥、内部域名）</li><li>符合GDPR/隐私保护法规</li></ul></li></ul><p><strong>反作弊机制</strong>：</p><ul><li>在 Metadata 中记录 <code>session_id</code>、<code>user_id</code>、<code>trigger_type</code></li><li>检测异常高频调用（防止脚本刷数据）</li><li>过滤机器人行为（如固定时间间隔的重复操作）</li></ul><h3 id="平台侧数据处理-Gateway-Analytics-Pipeline"><a href="#平台侧数据处理-Gateway-Analytics-Pipeline" class="headerlink" title="平台侧数据处理 (Gateway & Analytics Pipeline)"></a>平台侧数据处理 (Gateway &amp; Analytics Pipeline)</h3><p><strong>架构组件</strong>：</p><ul><li><p><strong>LLM 网关（API Gateway）</strong>：</p><ul><li>拦截所有 AI 请求，记录 Prompt Token 和 Completion Token</li><li>计算实时成本（基于Token单价）</li><li>按团队/用户分组统计配额使用情况</li></ul></li><li><p><strong>Git 数据分析（Git Analysis）</strong>：</p><ul><li>在 CI/CD 流水线中集成分析脚本</li><li>解析 Commit Message 中的 AI 标识（如 <code>Co-authored-by: GitHub Copilot</code>）</li><li>利用 <code>git blame</code> 追踪 AI 代码的留存情况</li><li>分析 Code Churn（代码流失率）与 Bug 关联</li></ul></li><li><p><strong>质量门禁集成（Quality Gate）</strong>：</p><ul><li>接入 SonarQube、ESLint 等工具</li><li>对比 AI 代码与人工代码的质量分数</li><li>自动标记高风险AI生成代码（如安全漏洞）</li></ul></li></ul><h3 id="效能驾驶舱-Analytics-Dashboard"><a href="#效能驾驶舱-Analytics-Dashboard" class="headerlink" title="效能驾驶舱 (Analytics Dashboard)"></a>效能驾驶舱 (Analytics Dashboard)</h3><p><strong>数据源整合</strong>：</p><ul><li>IDE 埋点数据（JSON格式，实时上报）</li><li>Git 仓库数据（定时同步，增量分析）</li><li>CI/CD 流水线数据（构建时间、测试通过率）</li><li>项目管理数据（Jira/Task完成速度）</li></ul><p><strong>展示层设计</strong>：</p><ul><li><p><strong>CTO / 管理层视图</strong>：</p><ul><li>ROI仪表盘：节省成本 vs 订阅成本</li><li>DORA 指标趋势：部署频率、变更前置时间、MTTR</li><li>团队效能对比：不同团队的AI采用情况</li></ul></li><li><p><strong>Team Leader 视图</strong>：</p><ul><li>团队渗透率与活跃度</li><li>代码采纳率与留存率趋势</li><li>AI 生成代码的 Review 耗时变化</li><li>功能热度分布（补全 vs Chat）</li></ul></li><li><p><strong>开发者个人视图</strong>：</p><ul><li>个人AI使用统计（类似GitHub Contribution Graph）</li><li>效能提升报告（节省时间估算）</li><li>技能成长建议（AI擅长的领域 vs 短板）</li></ul></li></ul><p><strong>推荐技术栈</strong>：</p><ul><li>数据存储：ClickHouse（高性能时序分析）/ PostgreSQL</li><li>可视化：Grafana / Metabase / 自研Dashboard</li><li>流处理：Kafka + Flink（实时数据处理）</li></ul><h2 id="避坑指南与最佳实践"><a href="#避坑指南与最佳实践" class="headerlink" title="避坑指南与最佳实践"></a>避坑指南与最佳实践</h2><p>在行业实践案例中，以下是常见的度量误区与应对策略：</p><h3 id="❌-错误做法-1：仅考核”生成代码行数”"><a href="#❌-错误做法-1：仅考核”生成代码行数”" class="headerlink" title="❌ 错误做法 1：仅考核”生成代码行数”"></a>❌ 错误做法 1：仅考核”生成代码行数”</h3><p><strong>后果</strong>：</p><ul><li>开发者会利用 AI 生成大量冗余注释、样板代码刷绩效</li><li>导致代码库膨胀（Code Bloat），增加技术债务</li><li>代码质量下降，可维护性变差</li></ul><p><strong>正确做法</strong>：</p><ul><li>必须结合”代码留存率”（14天后仍保留的比例）</li><li>引入”代码复杂度”指标（圈复杂度、重复率）</li><li>按<strong>有效功能点交付量</strong>考核，而非代码行数</li></ul><h3 id="❌-错误做法-2：忽略”思考时间”的价值"><a href="#❌-错误做法-2：忽略”思考时间”的价值" class="headerlink" title="❌ 错误做法 2：忽略”思考时间”的价值"></a>❌ 错误做法 2：忽略”思考时间”的价值</h3><p><strong>现象</strong>：</p><ul><li>AI 使得编码变快了，但开发者花更多时间在：<ul><li>设计 Prompt</li><li>Review AI 的代码</li><li>修复 AI 引入的Bug</li></ul></li></ul><p><strong>正确做法</strong>：</p><ul><li>使用”任务总交付周期”（End-to-End）作为最终裁判</li><li>不仅看”编码阶段耗时”，还要看”测试、Review、部署”全流程</li><li>关注”Context切换”减少情况（减少查文档、搜索的次数）</li></ul><h3 id="❌-错误做法-3：盲目追求高采纳率"><a href="#❌-错误做法-3：盲目追求高采纳率" class="headerlink" title="❌ 错误做法 3：盲目追求高采纳率"></a>❌ 错误做法 3：盲目追求高采纳率</h3><p><strong>现象</strong>：</p><ul><li>采纳率 80% 并不一定是好事</li><li>可能意味着AI只在生成简单、重复的代码（价值低）</li><li>开发者为了”完成KPI”，接受所有建议（包括错误的）</li></ul><p><strong>正确做法</strong>：</p><ul><li>分析采纳代码的 <strong>AST（抽象语法树）结构</strong></li><li>高价值采纳应包含：逻辑控制流、算法实现、复杂业务逻辑</li><li>低价值采纳：简单变量定义、import语句、注释</li><li>建立<strong>采纳价值分</strong>：复杂代码采纳权重更高</li></ul><h3 id="❌-错误做法-4：只看短期数据，不看长期留存"><a href="#❌-错误做法-4：只看短期数据，不看长期留存" class="headerlink" title="❌ 错误做法 4：只看短期数据，不看长期留存"></a>❌ 错误做法 4：只看短期数据，不看长期留存</h3><p><strong>现象</strong>：</p><ul><li>初期新鲜感导致高使用率</li><li>3个月后使用率断崖下跌（工具被遗忘或主动禁用）</li></ul><p><strong>正确做法</strong>：</p><ul><li>建立<strong>Cohort分析</strong>：按安装时间分组，追踪留存曲线</li><li>识别流失原因：性能问题？质量问题？体验问题？</li><li>设定健康阈值：6个月留存率&gt;70%</li></ul><h3 id="❌-错误做法-5：数据采集侵犯隐私"><a href="#❌-错误做法-5：数据采集侵犯隐私" class="headerlink" title="❌ 错误做法 5：数据采集侵犯隐私"></a>❌ 错误做法 5：数据采集侵犯隐私</h3><p><strong>风险</strong>：</p><ul><li>上传完整代码到云端，泄露商业机密</li><li>记录开发者个人信息，违反隐私法规</li></ul><p><strong>正确做法</strong>：</p><ul><li><strong>最小化原则</strong>：只采集必要的元数据（事件类型、时间戳、语言）</li><li><strong>本地化处理</strong>：敏感数据在客户端脱敏后再上报</li><li><strong>透明化</strong>：告知开发者采集了哪些数据，提供退出选项</li><li><strong>合规审查</strong>：符合GDPR、CCPA等隐私保护法规</li></ul><h3 id="✅-最佳实践-1：建立对照组实验"><a href="#✅-最佳实践-1：建立对照组实验" class="headerlink" title="✅ 最佳实践 1：建立对照组实验"></a>✅ 最佳实践 1：建立对照组实验</h3><p><strong>方法</strong>：</p><ul><li>A/B测试：部分团队使用AI，部分团队不使用</li><li>对比两组的交付速度、代码质量、Bug率</li><li>消除”幸存者偏差”（只有高意愿的人用AI）</li></ul><h3 id="✅-最佳实践-2：分层度量"><a href="#✅-最佳实践-2：分层度量" class="headerlink" title="✅ 最佳实践 2：分层度量"></a>✅ 最佳实践 2：分层度量</h3><p><strong>策略</strong>：</p><ul><li>按<strong>编程语言</strong>分层：Python vs Java vs Go</li><li>按<strong>任务类型</strong>分层：新功能开发 vs Bug修复 vs 重构</li><li>按<strong>开发者经验</strong>分层：Junior vs Senior vs Architect</li><li>识别AI在哪些场景价值最大，针对性优化</li></ul><h3 id="✅-最佳实践-3：建立反馈闭环"><a href="#✅-最佳实践-3：建立反馈闭环" class="headerlink" title="✅ 最佳实践 3：建立反馈闭环"></a>✅ 最佳实践 3：建立反馈闭环</h3><p><strong>机制</strong>：</p><ul><li>在IDE中提供”点赞/点踩”按钮（对AI建议快速反馈）</li><li>定期问卷调研（每季度NPS调研）</li><li>开发者访谈（深度了解痛点）</li><li>将反馈数据用于模型微调和产品优化</li></ul><h3 id="✅-最佳实践-4：设定合理的北极星指标"><a href="#✅-最佳实践-4：设定合理的北极星指标" class="headerlink" title="✅ 最佳实践 4：设定合理的北极星指标"></a>✅ 最佳实践 4：设定合理的北极星指标</h3><p><strong>推荐北极星指标</strong>：</p><ul><li><strong>核心目标</strong>：开发者效能提升（综合指标）</li><li><strong>公式</strong>：<br><mjx-container class="MathJax" jax="SVG" display="true"><svg style="vertical-align: -0.489ex;" xmlns="http://www.w3.org/2000/svg" width="76.714ex" height="2.084ex" role="img" focusable="false" viewBox="0 -705 33907.8 921"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mtext"><path data-c="44" d="M130 622Q123 629 119 631T103 634T60 637H27V683H228Q399 682 419 682T461 676Q504 667 546 641T626 573T685 470T708 336Q708 210 634 116T442 3Q429 1 228 0H27V46H60Q102 47 111 49T130 61V622ZM593 338Q593 439 571 501T493 602Q439 637 355 637H322H294Q238 637 234 628Q231 624 231 344Q231 62 232 59Q233 49 248 48T339 46H350Q456 46 515 95Q561 133 577 191T593 338Z"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(764,0)"></path><path data-c="76" d="M338 431Q344 429 422 429Q479 429 503 431H508V385H497Q439 381 423 345Q421 341 356 172T288 -2Q283 -11 263 -11Q244 -11 239 -2Q99 359 98 364Q93 378 82 381T43 385H19V431H25L33 430Q41 430 53 430T79 430T104 429T122 428Q217 428 232 431H240V385H226Q187 384 184 370Q184 366 235 234L286 102L377 341V349Q377 363 367 372T349 383T335 385H331V431H338Z" transform="translate(1208,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(1736,0)"></path><path data-c="6C" d="M42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42Z" transform="translate(2180,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(2458,0)"></path><path data-c="70" d="M36 -148H50Q89 -148 97 -134V-126Q97 -119 97 -107T97 -77T98 -38T98 6T98 55T98 106Q98 140 98 177T98 243T98 296T97 335T97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 61 434T98 436Q115 437 135 438T165 441T176 442H179V416L180 390L188 397Q247 441 326 441Q407 441 464 377T522 216Q522 115 457 52T310 -11Q242 -11 190 33L182 40V-45V-101Q182 -128 184 -134T195 -145Q216 -148 244 -148H260V-194H252L228 -193Q205 -192 178 -192T140 -191Q37 -191 28 -194H20V-148H36ZM424 218Q424 292 390 347T305 402Q234 402 182 337V98Q222 26 294 26Q345 26 384 80T424 218Z" transform="translate(2958,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(3514,0)"></path><path data-c="72" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36Z" transform="translate(3958,0)"></path><path data-c="20" d="" transform="translate(4350,0)"></path><path data-c="50" d="M130 622Q123 629 119 631T103 634T60 637H27V683H214Q237 683 276 683T331 684Q419 684 471 671T567 616Q624 563 624 489Q624 421 573 372T451 307Q429 302 328 301H234V181Q234 62 237 58Q245 47 304 46H337V0H326Q305 3 182 3Q47 3 38 0H27V46H60Q102 47 111 49T130 61V622ZM507 488Q507 514 506 528T500 564T483 597T450 620T397 635Q385 637 307 637H286Q237 637 234 628Q231 624 231 483V342H302H339Q390 342 423 349T481 382Q507 411 507 488Z" transform="translate(4600,0)"></path><path data-c="72" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36Z" transform="translate(5281,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(5673,0)"></path><path data-c="64" d="M376 495Q376 511 376 535T377 568Q377 613 367 624T316 637H298V660Q298 683 300 683L310 684Q320 685 339 686T376 688Q393 689 413 690T443 693T454 694H457V390Q457 84 458 81Q461 61 472 55T517 46H535V0Q533 0 459 -5T380 -11H373V44L365 37Q307 -11 235 -11Q158 -11 96 50T34 215Q34 315 97 378T244 442Q319 442 376 393V495ZM373 342Q328 405 260 405Q211 405 173 369Q146 341 139 305T131 211Q131 155 138 120T173 59Q203 26 251 26Q322 26 373 103V342Z" transform="translate(6173,0)"></path><path data-c="75" d="M383 58Q327 -10 256 -10H249Q124 -10 105 89Q104 96 103 226Q102 335 102 348T96 369Q86 385 36 385H25V408Q25 431 27 431L38 432Q48 433 67 434T105 436Q122 437 142 438T172 441T184 442H187V261Q188 77 190 64Q193 49 204 40Q224 26 264 26Q290 26 311 35T343 58T363 90T375 120T379 144Q379 145 379 161T380 201T380 248V315Q380 361 370 372T320 385H302V431Q304 431 378 436T457 442H464V264Q464 84 465 81Q468 61 479 55T524 46H542V0Q540 0 467 -5T390 -11H383V58Z" transform="translate(6729,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(7285,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(7729,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(8118,0)"></path><path data-c="76" d="M338 431Q344 429 422 429Q479 429 503 431H508V385H497Q439 381 423 345Q421 341 356 172T288 -2Q283 -11 263 -11Q244 -11 239 -2Q99 359 98 364Q93 378 82 381T43 385H19V431H25L33 430Q41 430 53 430T79 430T104 429T122 428Q217 428 232 431H240V385H226Q187 384 184 370Q184 366 235 234L286 102L377 341V349Q377 363 367 372T349 383T335 385H331V431H338Z" transform="translate(8396,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(8924,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(9202,0)"></path><path data-c="79" d="M69 -66Q91 -66 104 -80T118 -116Q118 -134 109 -145T91 -160Q84 -163 97 -166Q104 -168 111 -168Q131 -168 148 -159T175 -138T197 -106T213 -75T225 -43L242 0L170 183Q150 233 125 297Q101 358 96 368T80 381Q79 382 78 382Q66 385 34 385H19V431H26L46 430Q65 430 88 429T122 428Q129 428 142 428T171 429T200 430T224 430L233 431H241V385H232Q183 385 185 366L286 112Q286 113 332 227L376 341V350Q376 365 366 373T348 383T334 385H331V431H337H344Q351 431 361 431T382 430T405 429T422 429Q477 429 503 431H508V385H497Q441 380 422 345Q420 343 378 235T289 9T227 -131Q180 -204 113 -204Q69 -204 44 -177T19 -116Q19 -89 35 -78T69 -66Z" transform="translate(9591,0)"></path><path data-c="20" d="" transform="translate(10119,0)"></path><path data-c="53" d="M55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507Z" transform="translate(10369,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(10925,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(11369,0)"></path><path data-c="72" d="M36 46H50Q89 46 97 60V68Q97 77 97 91T98 122T98 161T98 203Q98 234 98 269T98 328L97 351Q94 370 83 376T38 385H20V408Q20 431 22 431L32 432Q42 433 60 434T96 436Q112 437 131 438T160 441T171 442H174V373Q213 441 271 441H277Q322 441 343 419T364 373Q364 352 351 337T313 322Q288 322 276 338T263 372Q263 381 265 388T270 400T273 405Q271 407 250 401Q234 393 226 386Q179 341 179 207V154Q179 141 179 127T179 101T180 81T180 66V61Q181 59 183 57T188 54T193 51T200 49T207 48T216 47T225 47T235 46T245 46H276V0H267Q249 3 140 3Q37 3 28 0H20V46H36Z" transform="translate(11869,0)"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(12261,0)"></path></g><g data-mml-node="mo" transform="translate(12982.8,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mi" transform="translate(14038.6,0)"><path data-c="1D6FC" d="M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z"></path></g><g data-mml-node="mo" transform="translate(14900.8,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mtext" transform="translate(15901,0)"><path data-c="56" d="M114 620Q113 621 110 624T107 627T103 630T98 632T91 634T80 635T67 636T48 637H19V683H28Q46 680 152 680Q273 680 294 683H305V637H284Q223 634 223 620Q223 618 313 372T404 126L490 358Q575 588 575 597Q575 616 554 626T508 637H503V683H512Q527 680 627 680Q718 680 724 683H730V637H723Q648 637 627 596Q627 595 515 291T401 -14Q396 -22 382 -22H374H367Q353 -22 348 -14Q346 -12 231 303Q114 617 114 620Z"></path><path data-c="65" d="M28 218Q28 273 48 318T98 391T163 433T229 448Q282 448 320 430T378 380T406 316T415 245Q415 238 408 231H126V216Q126 68 226 36Q246 30 270 30Q312 30 342 62Q359 79 369 104L379 128Q382 131 395 131H398Q415 131 415 121Q415 117 412 108Q393 53 349 21T250 -11Q155 -11 92 58T28 218ZM333 275Q322 403 238 411H236Q228 411 220 410T195 402T166 381T143 340T127 274V267H333V275Z" transform="translate(750,0)"></path><path data-c="6C" d="M42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42Z" transform="translate(1194,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(1472,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(1972,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(2416,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(2694,0)"></path><path data-c="79" d="M69 -66Q91 -66 104 -80T118 -116Q118 -134 109 -145T91 -160Q84 -163 97 -166Q104 -168 111 -168Q131 -168 148 -159T175 -138T197 -106T213 -75T225 -43L242 0L170 183Q150 233 125 297Q101 358 96 368T80 381Q79 382 78 382Q66 385 34 385H19V431H26L46 430Q65 430 88 429T122 428Q129 428 142 428T171 429T200 430T224 430L233 431H241V385H232Q183 385 185 366L286 112Q286 113 332 227L376 341V350Q376 365 366 373T348 383T334 385H331V431H337H344Q351 431 361 431T382 430T405 429T422 429Q477 429 503 431H508V385H497Q441 380 422 345Q420 343 378 235T289 9T227 -131Q180 -204 113 -204Q69 -204 44 -177T19 -116Q19 -89 35 -78T69 -66Z" transform="translate(3083,0)"></path></g><g data-mml-node="mo" transform="translate(19734.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(20734.4,0)"><path data-c="1D6FD" d="M29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431Z"></path></g><g data-mml-node="mo" transform="translate(21522.7,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mtext" transform="translate(22522.9,0)"><path data-c="51" d="M56 341Q56 499 157 602T388 705Q521 705 621 601T722 341Q722 275 703 218T660 127T603 63T555 25T525 9Q524 8 524 8H523Q524 5 526 -1T537 -21T555 -47T581 -67T615 -76Q653 -76 678 -56T706 -3Q707 10 716 10Q721 10 728 5L727 -13Q727 -88 697 -140T606 -193Q563 -193 538 -166T498 -83Q483 -23 483 -8L471 -11Q459 -14 435 -18T388 -22Q254 -22 155 81T56 341ZM607 339Q607 429 586 496T531 598T461 649T390 665T318 649T248 598T192 496T170 339Q170 143 277 57Q301 39 305 39L304 42Q304 44 304 46Q301 53 301 68Q301 101 325 128T391 155Q454 155 495 70L501 58Q549 91 578 164Q607 234 607 339ZM385 18Q404 18 425 23T459 33T472 40Q471 47 468 57T449 88T412 115Q398 117 386 117Q367 117 353 102T338 67Q338 48 351 33T385 18Z"></path><path data-c="75" d="M383 58Q327 -10 256 -10H249Q124 -10 105 89Q104 96 103 226Q102 335 102 348T96 369Q86 385 36 385H25V408Q25 431 27 431L38 432Q48 433 67 434T105 436Q122 437 142 438T172 441T184 442H187V261Q188 77 190 64Q193 49 204 40Q224 26 264 26Q290 26 311 35T343 58T363 90T375 120T379 144Q379 145 379 161T380 201T380 248V315Q380 361 370 372T320 385H302V431Q304 431 378 436T457 442H464V264Q464 84 465 81Q468 61 479 55T524 46H542V0Q540 0 467 -5T390 -11H383V58Z" transform="translate(778,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(1334,0)"></path><path data-c="6C" d="M42 46H56Q95 46 103 60V68Q103 77 103 91T103 124T104 167T104 217T104 272T104 329Q104 366 104 407T104 482T104 542T103 586T103 603Q100 622 89 628T44 637H26V660Q26 683 28 683L38 684Q48 685 67 686T104 688Q121 689 141 690T171 693T182 694H185V379Q185 62 186 60Q190 52 198 49Q219 46 247 46H263V0H255L232 1Q209 2 183 2T145 3T107 3T57 1L34 0H26V46H42Z" transform="translate(1834,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(2112,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(2390,0)"></path><path data-c="79" d="M69 -66Q91 -66 104 -80T118 -116Q118 -134 109 -145T91 -160Q84 -163 97 -166Q104 -168 111 -168Q131 -168 148 -159T175 -138T197 -106T213 -75T225 -43L242 0L170 183Q150 233 125 297Q101 358 96 368T80 381Q79 382 78 382Q66 385 34 385H19V431H26L46 430Q65 430 88 429T122 428Q129 428 142 428T171 429T200 430T224 430L233 431H241V385H232Q183 385 185 366L286 112Q286 113 332 227L376 341V350Q376 365 366 373T348 383T334 385H331V431H337H344Q351 431 361 431T382 430T405 429T422 429Q477 429 503 431H508V385H497Q441 380 422 345Q420 343 378 235T289 9T227 -131Q180 -204 113 -204Q69 -204 44 -177T19 -116Q19 -89 35 -78T69 -66Z" transform="translate(2779,0)"></path></g><g data-mml-node="mo" transform="translate(26052.1,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(27052.3,0)"><path data-c="1D6FE" d="M31 249Q11 249 11 258Q11 275 26 304T66 365T129 418T206 441Q233 441 239 440Q287 429 318 386T371 255Q385 195 385 170Q385 166 386 166L398 193Q418 244 443 300T486 391T508 430Q510 431 524 431H537Q543 425 543 422Q543 418 522 378T463 251T391 71Q385 55 378 6T357 -100Q341 -165 330 -190T303 -216Q286 -216 286 -188Q286 -138 340 32L346 51L347 69Q348 79 348 100Q348 257 291 317Q251 355 196 355Q148 355 108 329T51 260Q49 251 47 251Q45 249 31 249Z"></path></g><g data-mml-node="mo" transform="translate(27817.6,0)"><path data-c="D7" d="M630 29Q630 9 609 9Q604 9 587 25T493 118L389 222L284 117Q178 13 175 11Q171 9 168 9Q160 9 154 15T147 29Q147 36 161 51T255 146L359 250L255 354Q174 435 161 449T147 471Q147 480 153 485T168 490Q173 490 175 489Q178 487 284 383L389 278L493 382Q570 459 587 475T609 491Q630 491 630 471Q630 464 620 453T522 355L418 250L522 145Q606 61 618 48T630 29Z"></path></g><g data-mml-node="mtext" transform="translate(28817.8,0)"><path data-c="53" d="M55 507Q55 590 112 647T243 704H257Q342 704 405 641L426 672Q431 679 436 687T446 700L449 704Q450 704 453 704T459 705H463Q466 705 472 699V462L466 456H448Q437 456 435 459T430 479Q413 605 329 646Q292 662 254 662Q201 662 168 626T135 542Q135 508 152 480T200 435Q210 431 286 412T370 389Q427 367 463 314T500 191Q500 110 448 45T301 -21Q245 -21 201 -4T140 27L122 41Q118 36 107 21T87 -7T78 -21Q76 -22 68 -22H64Q61 -22 55 -16V101Q55 220 56 222Q58 227 76 227H89Q95 221 95 214Q95 182 105 151T139 90T205 42T305 24Q352 24 386 62T420 155Q420 198 398 233T340 281Q284 295 266 300Q261 301 239 306T206 314T174 325T141 343T112 367T85 402Q55 451 55 507Z"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(556,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(1056,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(1445,0)"></path><path data-c="73" d="M295 316Q295 356 268 385T190 414Q154 414 128 401Q98 382 98 349Q97 344 98 336T114 312T157 287Q175 282 201 278T245 269T277 256Q294 248 310 236T342 195T359 133Q359 71 321 31T198 -10H190Q138 -10 94 26L86 19L77 10Q71 4 65 -1L54 -11H46H42Q39 -11 33 -5V74V132Q33 153 35 157T45 162H54Q66 162 70 158T75 146T82 119T101 77Q136 26 198 26Q295 26 295 104Q295 133 277 151Q257 175 194 187T111 210Q75 227 54 256T33 318Q33 357 50 384T93 424T143 442T187 447H198Q238 447 268 432L283 424L292 431Q302 440 314 448H322H326Q329 448 335 442V310L329 304H301Q295 310 295 316Z" transform="translate(1723,0)"></path><path data-c="66" d="M273 0Q255 3 146 3Q43 3 34 0H26V46H42Q70 46 91 49Q99 52 103 60Q104 62 104 224V385H33V431H104V497L105 564L107 574Q126 639 171 668T266 704Q267 704 275 704T289 705Q330 702 351 679T372 627Q372 604 358 590T321 576T284 590T270 627Q270 647 288 667H284Q280 668 273 668Q245 668 223 647T189 592Q183 572 182 497V431H293V385H185V225Q185 63 186 61T189 57T194 54T199 51T206 49T213 48T222 47T231 47T241 46T251 46H282V0H273Z" transform="translate(2117,0)"></path><path data-c="61" d="M137 305T115 305T78 320T63 359Q63 394 97 421T218 448Q291 448 336 416T396 340Q401 326 401 309T402 194V124Q402 76 407 58T428 40Q443 40 448 56T453 109V145H493V106Q492 66 490 59Q481 29 455 12T400 -6T353 12T329 54V58L327 55Q325 52 322 49T314 40T302 29T287 17T269 6T247 -2T221 -8T190 -11Q130 -11 82 20T34 107Q34 128 41 147T68 188T116 225T194 253T304 268H318V290Q318 324 312 340Q290 411 215 411Q197 411 181 410T156 406T148 403Q170 388 170 359Q170 334 154 320ZM126 106Q126 75 150 51T209 26Q247 26 276 49T315 109Q317 116 318 175Q318 233 317 233Q309 233 296 232T251 223T193 203T147 166T126 106Z" transform="translate(2423,0)"></path><path data-c="63" d="M370 305T349 305T313 320T297 358Q297 381 312 396Q317 401 317 402T307 404Q281 408 258 408Q209 408 178 376Q131 329 131 219Q131 137 162 90Q203 29 272 29Q313 29 338 55T374 117Q376 125 379 127T395 129H409Q415 123 415 120Q415 116 411 104T395 71T366 33T318 2T249 -11Q163 -11 99 53T34 214Q34 318 99 383T250 448T370 421T404 357Q404 334 387 320Z" transform="translate(2923,0)"></path><path data-c="74" d="M27 422Q80 426 109 478T141 600V615H181V431H316V385H181V241Q182 116 182 100T189 68Q203 29 238 29Q282 29 292 100Q293 108 293 146V181H333V146V134Q333 57 291 17Q264 -10 221 -10Q187 -10 162 2T124 33T105 68T98 100Q97 107 97 248V385H18V422H27Z" transform="translate(3367,0)"></path><path data-c="69" d="M69 609Q69 637 87 653T131 669Q154 667 171 652T188 609Q188 579 171 564T129 549Q104 549 87 564T69 609ZM247 0Q232 3 143 3Q132 3 106 3T56 1L34 0H26V46H42Q70 46 91 49Q100 53 102 60T104 102V205V293Q104 345 102 359T88 378Q74 385 41 385H30V408Q30 431 32 431L42 432Q52 433 70 434T106 436Q123 437 142 438T171 441T182 442H185V62Q190 52 197 50T232 46H255V0H247Z" transform="translate(3756,0)"></path><path data-c="6F" d="M28 214Q28 309 93 378T250 448Q340 448 405 380T471 215Q471 120 407 55T250 -10Q153 -10 91 57T28 214ZM250 30Q372 30 372 193V225V250Q372 272 371 288T364 326T348 362T317 390T268 410Q263 411 252 411Q222 411 195 399Q152 377 139 338T126 246V226Q126 130 145 91Q177 30 250 30Z" transform="translate(4034,0)"></path><path data-c="6E" d="M41 46H55Q94 46 102 60V68Q102 77 102 91T102 122T103 161T103 203Q103 234 103 269T102 328V351Q99 370 88 376T43 385H25V408Q25 431 27 431L37 432Q47 433 65 434T102 436Q119 437 138 438T167 441T178 442H181V402Q181 364 182 364T187 369T199 384T218 402T247 421T285 437Q305 442 336 442Q450 438 463 329Q464 322 464 190V104Q464 66 466 59T477 49Q498 46 526 46H542V0H534L510 1Q487 2 460 2T422 3Q319 3 310 0H302V46H318Q379 46 379 62Q380 64 380 200Q379 335 378 343Q372 371 358 385T334 402T308 404Q263 404 229 370Q202 343 195 315T187 232V168V108Q187 78 188 68T191 55T200 49Q221 46 249 46H265V0H257L234 1Q210 2 183 2T145 3Q42 3 33 0H25V46H41Z" transform="translate(4534,0)"></path></g></g></g></svg></mjx-container><br>其中 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.489ex;" xmlns="http://www.w3.org/2000/svg" width="13.637ex" height="2.084ex" role="img" focusable="false" viewBox="0 -705 6027.4 921"><g stroke="currentColor" fill="currentColor" stroke-width="0" transform="scale(1,-1)"><g data-mml-node="math"><g data-mml-node="mi"><path data-c="1D6FC" d="M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z"></path></g><g data-mml-node="mo" transform="translate(862.2,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(1862.4,0)"><path data-c="1D6FD" d="M29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431Z"></path></g><g data-mml-node="mo" transform="translate(2650.7,0)"><path data-c="2B" d="M56 237T56 250T70 270H369V420L370 570Q380 583 389 583Q402 583 409 568V270H707Q722 262 722 250T707 230H409V-68Q401 -82 391 -82H389H387Q375 -82 369 -68V230H70Q56 237 56 250Z"></path></g><g data-mml-node="mi" transform="translate(3650.9,0)"><path data-c="1D6FE" d="M31 249Q11 249 11 258Q11 275 26 304T66 365T129 418T206 441Q233 441 239 440Q287 429 318 386T371 255Q385 195 385 170Q385 166 386 166L398 193Q418 244 443 300T486 391T508 430Q510 431 524 431H537Q543 425 543 422Q543 418 522 378T463 251T391 71Q385 55 378 6T357 -100Q341 -165 330 -190T303 -216Q286 -216 286 -188Q286 -138 340 32L346 51L347 69Q348 79 348 100Q348 257 291 317Q251 355 196 355Q148 355 108 329T51 260Q49 251 47 251Q45 249 31 249Z"></path></g><g data-mml-node="mo" transform="translate(4471.7,0)"><path data-c="3D" d="M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z"></path></g><g data-mml-node="mn" transform="translate(5527.4,0)"><path data-c="31" d="M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z"></path></g></g></g></svg></mjx-container>，权重根据组织目标调整</li><li><strong>避免单一指标陷阱</strong>：不能只看速度或只看质量</li></ul><h2 id="度量报告模板"><a href="#度量报告模板" class="headerlink" title="度量报告模板"></a>度量报告模板</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># AI代码生成工具效能月报 - YYYY年MM月</span></span><br><span class="line"></span><br><span class="line"><span class="section">## 一、核心数据概览</span></span><br><span class="line"><span class="bullet">-</span> 工具渗透率：XX%（环比±X%）</span><br><span class="line"><span class="bullet">-</span> 活跃用户数：XXX人（DAU/MAU）</span><br><span class="line"><span class="bullet">-</span> 代码采纳率：XX%（目标：&gt;25%）</span><br><span class="line"><span class="bullet">-</span> AI代码贡献：占新增代码XX%</span><br><span class="line"></span><br><span class="line"><span class="section">## 二、生产力提升</span></span><br><span class="line"><span class="bullet">-</span> 编码速度提升：XX%</span><br><span class="line"><span class="bullet">-</span> 任务完成时间缩减：平均节省XX分钟/任务</span><br><span class="line"><span class="bullet">-</span> Context切换减少：XX%</span><br><span class="line"></span><br><span class="line"><span class="section">## 三、质量表现</span></span><br><span class="line"><span class="bullet">-</span> 代码留存率：XX%（14天）</span><br><span class="line"><span class="bullet">-</span> Bug密度：AI代码 X.X bugs/KLOC vs 人工代码 X.X bugs/KLOC</span><br><span class="line"><span class="bullet">-</span> 安全漏洞：发现X个，已修复X个</span><br><span class="line"><span class="bullet">-</span> 测试覆盖率：提升XX%</span><br><span class="line"></span><br><span class="line"><span class="section">## 四、开发者体验</span></span><br><span class="line"><span class="bullet">-</span> NPS评分：XX（目标：&gt;40）</span><br><span class="line"><span class="bullet">-</span> 满意度：XX%开发者认为显著提升效率</span><br><span class="line"><span class="bullet">-</span> 主要反馈：</span><br><span class="line"><span class="bullet">  -</span> 优点：...</span><br><span class="line"><span class="bullet">  -</span> 痛点：...</span><br><span class="line"></span><br><span class="line"><span class="section">## 五、成本与ROI</span></span><br><span class="line"><span class="bullet">-</span> 工具订阅成本：¥XXX</span><br><span class="line"><span class="bullet">-</span> 估算节省人力成本：¥XXX</span><br><span class="line"><span class="bullet">-</span> ROI：XX%</span><br><span class="line"><span class="bullet">-</span> Token消耗：XXX万（环比±X%）</span><br><span class="line"></span><br><span class="line"><span class="section">## 六、下月优化计划</span></span><br><span class="line"><span class="bullet">1.</span> ...</span><br><span class="line"><span class="bullet">2.</span> ...</span><br><span class="line"><span class="bullet">3.</span> ...</span><br></pre></td></tr></table></figure><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>通过这套AI代码生成工具度量体系，您可以：</p><ol><li><strong>证明价值</strong>：从”AI写了多少代码”进化到”AI为业务交付带来了多大加速与质量提升”</li><li><strong>识别问题</strong>：发现AI在哪些场景表现不佳，针对性优化</li><li><strong>优化投入</strong>：计算ROI，决策是否扩大部署或调整策略</li><li><strong>提升体验</strong>：基于开发者反馈，持续改进产品体验</li></ol><p><strong>核心原则</strong>：</p><ul><li>不追求单一指标极致，而是<strong>多维度平衡</strong></li><li>不只看短期数据，更看<strong>长期价值与留存</strong></li><li>不只看工具本身，更看<strong>对研发全流程的影响</strong></li><li>不只看数字，更听<strong>开发者真实声音</strong></li></ul><p><strong>记住</strong>：度量的目的不是为了考核，而是为了<strong>持续改进</strong>。让AI真正成为开发者的得力助手，而非负担。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;本指南专注于&lt;strong&gt;AI代码生成工具&lt;/strong&gt;（如 Cursor、GitHub Copilot、通义灵码等商业IDE辅助工具）的效能度量。必须跳出”代码行数”的陷阱，建立一个覆盖 &lt;strong&gt;采用（Adoption）、效能（Productivity）、质</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>Base、Chat与Reasoning模型全解析</title>
    <link href="https://www.silenceboy.com/2026/01/22/Base%E3%80%81Chat%E4%B8%8EReasoning%E6%A8%A1%E5%9E%8B%E5%85%A8%E8%A7%A3%E6%9E%90/"/>
    <id>https://www.silenceboy.com/2026/01/22/Base%E3%80%81Chat%E4%B8%8EReasoning%E6%A8%A1%E5%9E%8B%E5%85%A8%E8%A7%A3%E6%9E%90/</id>
    <published>2026-01-22T06:58:30.000Z</published>
    <updated>2026-01-22T07:27:12.011Z</updated>
    
    <content type="html"><![CDATA[<p>目前模型主要分为三类：<code>Base</code> 版和 <code>Instruct/Chat</code> 版和 <code>Reasoning Models（推理模型）</code>。</p><p>这三个版本究竟代表了什么？它们是如何训练出来的？在实际应用中又该如何选择？本文将基于大模型技术演进的事实逻辑，带你彻底看懂这三者的进化之路。</p><hr><h2 id="Base模型：博学的“续写者”"><a href="#Base模型：博学的“续写者”" class="headerlink" title="Base模型：博学的“续写者”"></a>Base模型：博学的“续写者”</h2><p><strong>Base模型（基座模型）</strong> 是所有大模型的起点，也是“地基”。</p><h3 id="核心定义：概率预测机"><a href="#核心定义：概率预测机" class="headerlink" title="核心定义：概率预测机"></a>核心定义：概率预测机</h3><p>Base 模型在海量（万亿级 token）的互联网文本数据上进行<strong>预训练（Pre-training）</strong>。它的核心训练目标只有一个：<strong>Next Token Prediction（预测下一个词）</strong>。</p><h3 id="行为特征"><a href="#行为特征" class="headerlink" title="行为特征"></a>行为特征</h3><p>它是极致的“文字接龙”高手。</p><ul><li><strong>输入</strong>：“牛顿发现了…”</li><li><strong>Base输出</strong>：“…万有引力定律。他在1687年发表的论文中…”</li><li><strong>输入</strong>：“中国的首都是哪里？”</li><li><strong>Base输出</strong>：“美国的首都是哪里？法国的首都是哪里？”（因为它认为你在列清单，而不是提问）</li></ul><h3 id="典型代表"><a href="#典型代表" class="headerlink" title="典型代表"></a>典型代表</h3><ul><li>Llama-3 Base</li><li>Qwen-2.5 Base</li><li>GPT-3 (原始 Davinci)</li></ul><h3 id="关键点"><a href="#关键点" class="headerlink" title="关键点"></a>关键点</h3><p>Base 模型拥有极其丰富的知识，但它不懂人类的交互指令，它只负责把文本顺畅地写下去。</p><hr><h2 id="Chat模型：懂礼貌的“助手”"><a href="#Chat模型：懂礼貌的“助手”" class="headerlink" title="Chat模型：懂礼貌的“助手”"></a>Chat模型：懂礼貌的“助手”</h2><p>为了让 Base 模型变得好用，研究人员引入了<strong>指令微调（Instruction Tuning）<strong>和</strong>人类对齐（Alignment）</strong>，诞生了 <strong>Chat模型（或 Instruct 模型）</strong>。这是目前市面上最常见的模型形态。</p><h3 id="核心定义：指令遵循者"><a href="#核心定义：指令遵循者" class="headerlink" title="核心定义：指令遵循者"></a>核心定义：指令遵循者</h3><p>Chat 模型在 Base 模型的基础上，经历了两个关键阶段：</p><ul><li><strong>SFT（监督微调）</strong>：学习“提问-回答”的格式。</li><li><strong>RLHF&#x2F;DPO（人类偏好对齐）</strong>：学习什么样的回答是安全的、有帮助的、语气恰当的。</li></ul><p>它不仅学会了知识，更学会了 <strong>“此时此刻，我是一个助手，我要回答用户的问题，而不是续写它。”</strong></p><h3 id="行为特征-1"><a href="#行为特征-1" class="headerlink" title="行为特征"></a>行为特征</h3><p>它是高情商的客服。</p><ul><li><strong>输入</strong>：“中国的首都是哪里？”</li><li><strong>Chat输出</strong>：“中国的首都是北京。”</li><li><strong>输入</strong>：“如何制造毒药？”</li><li><strong>Chat输出</strong>：“对不起，我不能提供相关帮助，因为这违反了安全准则…”</li></ul><h3 id="典型代表-1"><a href="#典型代表-1" class="headerlink" title="典型代表"></a>典型代表</h3><ul><li>ChatGPT (GPT-4o)</li><li>Claude 3.5 Sonnet</li><li>Llama-3-Instruct</li></ul><h3 id="局限性"><a href="#局限性" class="headerlink" title="局限性"></a>局限性</h3><p>Chat 模型本质上是在<strong>模仿</strong>人类的回答模式。遇到复杂的逻辑问题（如高难度奥数题），它往往凭直觉（系统1思维）快速作答，因此容易出现“幻觉”或一本正经地胡说八道。</p><hr><h2 id="Reasoning模型：沉默的“思考者”"><a href="#Reasoning模型：沉默的“思考者”" class="headerlink" title="Reasoning模型：沉默的“思考者”"></a>Reasoning模型：沉默的“思考者”</h2><p><strong>Reasoning模型（推理模型）</strong> 是大模型领域的最新范式转移，代表了从“快思考”向“慢思考”的进化。</p><h3 id="核心定义：思维链（CoT）内化"><a href="#核心定义：思维链（CoT）内化" class="headerlink" title="核心定义：思维链（CoT）内化"></a>核心定义：思维链（CoT）内化</h3><p>Reasoning 模型引入了 <strong>强化学习（RL）</strong> 的大规模应用，专门奖励模型在输出最终答案前进行 <strong>思维链（Chain of Thought）</strong> 推导。</p><p>与 Chat 模型不同，Reasoning 模型在回答问题之前，会先在内部进行长时间的“思考”：把复杂问题拆解、验证每一步逻辑、如果发现错误会自我纠正，最后才输出结果。业界称之为<strong>Test-time Compute（测试时计算&#x2F;推理侧计算）</strong>，即用更多的时间换取更高的智能。</p><h3 id="行为特征-2"><a href="#行为特征-2" class="headerlink" title="行为特征"></a>行为特征</h3><p>它是严谨的数学家或逻辑学家。</p><ul><li><strong>输入</strong>：“9.11 和 9.8 哪个大？”</li><li><strong>Chat模型可能秒回</strong>：“9.11 大。”（因为它像看版本号一样看数字，且追求快）</li><li><strong>Reasoning模型反应</strong>：<ul><li><em>(内部思考过程)</em>：用户问的是数字大小比较。首先看整数部分，都是9。再看小数部分，0.11 和 0.8。0.8 等于 0.80。0.80 明显大于 0.11。</li><li><strong>最终输出</strong>：“9.8 比 9.11 大。”</li></ul></li></ul><h3 id="典型代表-2"><a href="#典型代表-2" class="headerlink" title="典型代表"></a>典型代表</h3><ul><li><strong>OpenAI o1 (o1-preview, o1-mini)</strong></li><li><strong>DeepSeek-R1</strong></li></ul><h3 id="关键差异"><a href="#关键差异" class="headerlink" title="关键差异"></a>关键差异</h3><p>Reasoning 模型最显著的特征是<strong>慢</strong>。它不是卡顿，而是在思考。对于简单的”你好”类问候，它的效率不如 Chat 模型；但在数学、编程、逻辑谜题上，它的准确率呈指数级上升。</p><h3 id="推理成本警示：看不见的”思考税”"><a href="#推理成本警示：看不见的”思考税”" class="headerlink" title="推理成本警示：看不见的”思考税”"></a>推理成本警示：看不见的”思考税”</h3><p>Reasoning 模型的强大能力背后，是高昂的计算成本：</p><ul><li><strong>Token消耗陷阱</strong>：一个复杂的数学题，Chat 模型可能消耗 200 tokens，而 Reasoning 模型可能消耗 5000+ tokens（内部思考 3000+ + 最终输出 2000）。<strong>成本差异可达 25 倍</strong>。</li><li><strong>可控性差异</strong>：模型自主决定思考时间（最长可达 1 分钟）</li></ul><hr><h2 id="三者横向对比表"><a href="#三者横向对比表" class="headerlink" title="三者横向对比表"></a>三者横向对比表</h2><table><thead><tr><th align="left">维度</th><th align="left">Base模型 (基座)</th><th align="left">Chat模型 (对话&#x2F;指令)</th><th align="left">Reasoning模型 (推理)</th></tr></thead><tbody><tr><td align="left"><strong>思维模式</strong></td><td align="left"><strong>直觉补全</strong> (Autocomplete)</td><td align="left"><strong>交互响应</strong> (Response)</td><td align="left"><strong>深度思考</strong> (Deliberate Thinking)</td></tr><tr><td align="left"><strong>核心训练</strong></td><td align="left">预训练 (Pre-training)</td><td align="left">SFT + RLHF (对齐)</td><td align="left">大规模强化学习 (RL on CoT)</td></tr><tr><td align="left"><strong>响应速度</strong></td><td align="left">极快</td><td align="left">快</td><td align="left">较慢 (首字延迟高)</td></tr><tr><td align="left"><strong>擅长领域</strong></td><td align="left">下游微调、文本续写</td><td align="left">文案写作、摘要、对话、翻译</td><td align="left">数学、复杂代码、科研推理</td></tr><tr><td align="left"><strong>计算消耗</strong></td><td align="left">训练时大，推理时小</td><td align="left">训练时中，推理时小</td><td align="left">训练时大，<strong>推理时也大</strong></td></tr><tr><td align="left"><strong>人类形象类比</strong></td><td align="left">读过万卷书但呆板的书呆子</td><td align="left">训练有素、反应快的金牌客服</td><td align="left">严谨、深思熟虑的老教授</td></tr></tbody></table><hr><h2 id="开发者与用户该如何选择？"><a href="#开发者与用户该如何选择？" class="headerlink" title="开发者与用户该如何选择？"></a>开发者与用户该如何选择？</h2><p>在当前的技术环境下，选择模型不再是一刀切，而是根据场景决定：</p><ol><li><p><strong>场景 A：你需要构建一个垂直行业的知识库助手（RAG）</strong></p><ul><li><strong>首选：Chat 模型</strong>（如 GPT-4o, Llama-3-Instruct）。</li><li>理由：你需要模型听得懂指令，且不仅是逻辑推理，更多是语言理解和归纳。Reasoning 模型在这里可能“杀鸡用牛刀”，且延迟过高影响体验。</li></ul></li><li><p><strong>场景 B：你需要解决高难度的算法竞赛题、分析复杂的法律逻辑或进行科学研究</strong></p><ul><li><strong>首选：Reasoning 模型</strong>（如 o1, DeepSeek-R1）。</li><li>理由：Chat 模型容易产生幻觉，而 Reasoning 模型通过内部的自我博弈和纠错，能大幅提高准确率。</li></ul></li><li><p><strong>场景 C：你是一个大模型研究员，想要训练自己的模型</strong></p><ul><li><strong>首选：Base 模型</strong>。</li><li>理由：你需要一张白纸。Chat 模型已经被”洗脑”成了对话模式，很难再调整去执行非对话类的特殊任务（如纯粹的文本补全或特定格式生成）。</li></ul></li><li><p><strong>场景 D：你在构建企业级 AI 应用，需要兼顾成本与性能</strong></p><ul><li><strong>推荐：路由器 + 多模型混合架构</strong>。</li><li>架构设计：<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">用户请求 → 意图分类器(轻量Chat模型)</span><br><span class="line">           ├─ 简单问答/闲聊 → Chat模型(快速响应)</span><br><span class="line">           ├─ 复杂计算/推理 → Reasoning模型(高精度)</span><br><span class="line">           └─ 领域特定任务 → 微调的Base模型</span><br></pre></td></tr></table></figure></li><li><strong>实际收益</strong>：<ul><li>成本降低 60%（大部分请求用便宜的 Chat 模型）</li><li>用户体验提升（简单问题不卡顿）</li><li>准确率提升（关键问题用 Reasoning 模型兜底）</li></ul></li></ul></li></ol><hr><h2 id="结语：我们正站在-AI-能力跃迁的节点"><a href="#结语：我们正站在-AI-能力跃迁的节点" class="headerlink" title="结语：我们正站在 AI 能力跃迁的节点"></a>结语：我们正站在 AI 能力跃迁的节点</h2><p>大模型的进化史，就是一部从”模仿人类说话”到”模仿人类思考”的历史。</p><ul><li><strong>Base 模型</strong>让我们见证了知识的压缩——万卷书装进千亿参数。</li><li><strong>Chat 模型</strong>让我们实现了人机的流畅交互——AI 第一次真正”听懂”人话。</li><li><strong>Reasoning 模型</strong>则开启了 AI 像<a href="https://cloud.tencent.com/developer/article/2370268">System 2</a>那样进行深思熟虑的新时代——从”快思考”到”慢思考”。</li></ul><h3 id="未来展望"><a href="#未来展望" class="headerlink" title="未来展望"></a>未来展望</h3><p>2026 年，我们正站在一个关键节点：</p><ul><li><strong>小模型的崛起</strong>：7B 参数的模型（如 Qwen2.5-7B-Instruct）性能已逼近早期 70B 模型，边缘设备推理成为可能。</li><li><strong>Reasoning 能力的平民化</strong>：DeepSeek-R1 的开源，让每个开发者都能训练自己的推理模型。</li><li><strong>混合架构成为主流</strong>：未来的 AI 应用将不再依赖单一模型，而是像人脑一样，根据任务类型动态调用不同的”思维模式”。</li></ul><p><strong>记住</strong>：没有”最好”的模型，只有”最合适”的选择。理解三类模型的本质差异，是用好 AI 的第一步。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;目前模型主要分为三类：&lt;code&gt;Base&lt;/code&gt; 版和 &lt;code&gt;Instruct/Chat&lt;/code&gt; 版和 &lt;code&gt;Reasoning Models（推理模型）&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这三个版本究竟代表了什么？它们是如何训练出来的？在实际应用中又</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>Tokenizer 和 Embedding 的区别</title>
    <link href="https://www.silenceboy.com/2026/01/21/Tokenizer-%E5%92%8C-Embedding-%E7%9A%84%E5%8C%BA%E5%88%AB/"/>
    <id>https://www.silenceboy.com/2026/01/21/Tokenizer-%E5%92%8C-Embedding-%E7%9A%84%E5%8C%BA%E5%88%AB/</id>
    <published>2026-01-21T09:29:34.000Z</published>
    <updated>2026-01-21T10:04:00.680Z</updated>
    
    <content type="html"><![CDATA[<p>在接触大语言模型（LLM）或自然语言处理（NLP）时，<strong>Tokenizer（分词器）</strong> 和 <strong>Embedding（嵌入）</strong> 是两个出现频率极高，却常被初学者混淆的概念。它们似乎都在做“把文字变成数字”的工作，但它们在模型中的角色、原理和目的却截然不同。</p><p>简单来说：<strong>Tokenizer 负责“认字”（将文本切分为离散的符号），而 Embedding 负责“理解”（将符号转化为包含语义的数学向量）。</strong></p><hr><h2 id="Tokenizer（分词器）：LLM-的“字典”"><a href="#Tokenizer（分词器）：LLM-的“字典”" class="headerlink" title="Tokenizer（分词器）：LLM 的“字典”"></a>Tokenizer（分词器）：LLM 的“字典”</h2><p>大模型无法直接阅读我们看到的文字（如中文汉字或英文字母），它只能处理数字。Tokenizer 的工作就是充当<strong>翻译前的“查字典”步骤</strong>。</p><h3 id="核心任务"><a href="#核心任务" class="headerlink" title="核心任务"></a>核心任务</h3><p>Tokenizer 的作用是将非结构化的 <strong>原始文本（Raw Text）</strong> 切分成模型能处理的最小单位——<strong>Token</strong>，并将这些 Token 映射为唯一的整数索引（Input IDs）。</p><h3 id="工作流程"><a href="#工作流程" class="headerlink" title="工作流程"></a>工作流程</h3><ol><li><strong>切分（Splitting）：</strong> 依据特定的规则（如空格、标点、或更高级的算法如 BPE、WordPiece），将句子切开。</li><li><strong>映射（Mapping）：</strong> 在一个预先构建好的词表（Vocabulary）中查找每个片段对应的编号。</li></ol><h3 id="举个例子"><a href="#举个例子" class="headerlink" title="举个例子"></a>举个例子</h3><p>假设我们的输入是：“<strong>我爱AI</strong>”</p><ul><li><strong>Tokenizer 切分：</strong> <code>[&quot;我&quot;, &quot;爱&quot;, &quot;AI&quot;]</code></li><li><strong>查表映射：</strong> 假设在词表中，“我”是 5，“爱”是 20，“AI”是 101。</li><li><strong>Tokenizer 输出：</strong> <code>[5, 20, 101]</code></li></ul><h3 id="关键特征"><a href="#关键特征" class="headerlink" title="关键特征"></a>关键特征</h3><ul><li><strong>输出是离散的整数：</strong> 比如 <code>101</code> 代表 “AI”，<code>102</code> 可能就代表完全不相关的 “香蕉”。在 Tokenizer 的阶段，数字之间没有数学上的关联（101 和 102 仅仅是索引的先后，没有语义上的远近）。</li><li><strong>它不包含语义：</strong> Tokenizer 不知道”我”和”你”是相似的代词，它只知道它们在词表中位于不同的位置。</li></ul><h3 id="工作流程可视化"><a href="#工作流程可视化" class="headerlink" title="工作流程可视化"></a>工作流程可视化</h3><pre class="mermaid">graph LR    A[原始文本<br/>'我爱AI'] --> B[预处理<br/>Normalization]    B --> C[切分算法<br/>BPE/WordPiece]    C --> D["Token序列<br/>['我','爱','AI']"]    D --> E[词表查找<br/>Vocabulary Lookup]    E --> F["Token IDs<br/>[5, 20, 101]"]        style A fill:#e1f5ff    style F fill:#fff4e1</pre><h3 id="常见的Tokenizer算法"><a href="#常见的Tokenizer算法" class="headerlink" title="常见的Tokenizer算法"></a>常见的Tokenizer算法</h3><p>现代大语言模型主要使用以下几种分词算法：</p><table><thead><tr><th align="left">算法</th><th align="left">代表模型</th><th align="left">特点</th><th align="left">优势</th></tr></thead><tbody><tr><td align="left"><strong>BPE (Byte Pair Encoding)</strong></td><td align="left">GPT系列</td><td align="left">基于字节对频率合并</td><td align="left">能有效处理未登录词，压缩率高</td></tr><tr><td align="left"><strong>WordPiece</strong></td><td align="left">BERT</td><td align="left">基于似然最大化</td><td align="left">平衡了词汇量和表达能力</td></tr><tr><td align="left"><strong>SentencePiece</strong></td><td align="left">Llama、T5</td><td align="left">直接处理原始文本</td><td align="left">语言无关，支持多语言</td></tr><tr><td align="left"><strong>Unigram</strong></td><td align="left">mBART</td><td align="left">基于概率模型</td><td align="left">可以生成多种分词方案</td></tr></tbody></table><h3 id="特殊Token说明"><a href="#特殊Token说明" class="headerlink" title="特殊Token说明"></a>特殊Token说明</h3><p>在词表中，除了普通词汇，还有一些特殊的Token用于控制模型行为：</p><ul><li><strong><code>[PAD]</code></strong>：填充符，用于对齐不同长度的序列</li><li><strong><code>[UNK]</code></strong>：未知词，处理词表外的词汇</li><li><strong><code>[CLS]</code></strong>：句子开始符（BERT）</li><li><strong><code>[SEP]</code></strong>：句子分隔符</li><li><strong><code>[MASK]</code></strong>：掩码符（用于MLM任务）</li><li><strong><code>&lt;|endoftext|&gt;</code></strong>：文本结束符（GPT）</li></ul><hr><h2 id="Embedding（嵌入层）：LLM-的“大脑连接”"><a href="#Embedding（嵌入层）：LLM-的“大脑连接”" class="headerlink" title="Embedding（嵌入层）：LLM 的“大脑连接”"></a>Embedding（嵌入层）：LLM 的“大脑连接”</h2><p>如果说 Tokenizer 只是把文字变成了身份证号，那么 Embedding 就是把这些身份证号变成了<strong>包含丰富特征的个人档案</strong>。</p><h3 id="核心任务-1"><a href="#核心任务-1" class="headerlink" title="核心任务"></a>核心任务</h3><p>Embedding 是一个查找表（Lookup Table）或神经网络层，它将 Tokenizer 输出的<strong>整数 ID</strong> 转换为一个<strong>高维稠密向量（Dense Vector）</strong>。这个向量是一串浮点数，代表了该词在语义空间中的位置。</p><h3 id="工作流程-1"><a href="#工作流程-1" class="headerlink" title="工作流程"></a>工作流程</h3><ol><li><strong>接收输入：</strong> 拿到 Tokenizer 传来的 ID（例如 <code>101</code>）。</li><li><strong>向量化：</strong> 在高维空间中找到 <code>101</code> 对应的向量表示。</li></ol><h3 id="举个例子-1"><a href="#举个例子-1" class="headerlink" title="举个例子"></a>举个例子</h3><p>继续上面的“<strong>我爱AI</strong>”，输入 ID 为 <code>[5, 20, 101]</code>。</p><ul><li><strong>Embedding 转化：</strong><ul><li><code>5</code> (“我”) → <code>[0.12, -0.58, 0.99, ...]</code></li><li><code>20</code> (“爱”) → <code>[0.77, 0.23, -0.11, ...]</code></li><li><code>101</code> (“AI”) → <code>[-0.45, 0.88, 0.02, ...]</code></li></ul></li></ul><h3 id="关键特征-1"><a href="#关键特征-1" class="headerlink" title="关键特征"></a>关键特征</h3><ul><li><strong>输出是连续的浮点数向量：</strong> 比如 768 维或 4096 维的数组。</li><li><strong>它包含语义（Semantic Meaning）：</strong> 这是 Embedding 最神奇的地方。在训练过程中，模型学会了将含义相近的词放在向量空间中靠近的位置。<ul><li>例如：在向量空间中，”猫”和”狗”的距离会非常近，而”猫”和”冰箱”的距离会很远。</li><li>经典的例子：<strong>King（国王） - Man（男人） + Woman（女人） ≈ Queen（女王）</strong>。这种数学运算只有在 Embedding 层之后才能实现，在 Tokenizer 阶段的整数 ID 上是做不到的。</li></ul></li></ul><h3 id="语义空间可视化"><a href="#语义空间可视化" class="headerlink" title="语义空间可视化"></a>语义空间可视化</h3><pre class="mermaid">graph TB    subgraph 动物语义空间        A1[猫<br/>Cat]        A2[狗<br/>Dog]        A3[老虎<br/>Tiger]    end        subgraph AI技术语义空间        B1[机器学习<br/>ML]        B2[深度学习<br/>DL]        B3[神经网络<br/>NN]    end        subgraph 日常用品语义空间        C1[冰箱<br/>Fridge]        C2[桌子<br/>Table]        C3[椅子<br/>Chair]    end        A1 -.语义相近.-> A2    A2 -.语义相近.-> A3    B1 -.语义相近.-> B2    B2 -.语义相近.-> B3    C2 -.语义相近.-> C3        A1 ~~~|语义距离远| C1        style A1 fill:#ffd6d6    style A2 fill:#ffd6d6    style A3 fill:#ffd6d6    style B1 fill:#d6e5ff    style B2 fill:#d6e5ff    style B3 fill:#d6e5ff    style C1 fill:#e1ffe1    style C2 fill:#e1ffe1    style C3 fill:#e1ffe1</pre><h3 id="Embedding-维度的选择"><a href="#Embedding-维度的选择" class="headerlink" title="Embedding 维度的选择"></a>Embedding 维度的选择</h3><p>不同模型使用不同的向量维度，这是性能与效率的权衡：</p><table><thead><tr><th align="left">模型</th><th align="left">Embedding维度</th><th align="left">参数量影响</th></tr></thead><tbody><tr><td align="left">BERT-base</td><td align="left">768</td><td align="left">较小，训练快</td></tr><tr><td align="left">BERT-large</td><td align="left">1024</td><td align="left">中等</td></tr><tr><td align="left">GPT-3</td><td align="left">12288</td><td align="left">极大，表达能力强</td></tr><tr><td align="left">Llama-2-7B</td><td align="left">4096</td><td align="left">平衡性能与效率</td></tr></tbody></table><p><strong>维度越大</strong>：</p><ul><li>✅ 表达能力越强，能捕捉更细微的语义差异</li><li>✅ 模型容量更大，理解能力更强</li><li>❌ 计算成本更高，内存占用更大</li><li>❌ 更容易过拟合（在小数据集上）</li></ul><h3 id="Position-Embedding"><a href="#Position-Embedding" class="headerlink" title="Position Embedding"></a>Position Embedding</h3><p>值得注意的是，除了词嵌入（Token Embedding），模型还会加入 <strong>位置嵌入（Position Embedding）</strong> 来告诉模型词的先后顺序：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">最终输入 = Token Embedding + Position Embedding</span><br></pre></td></tr></table></figure><p>这是因为 Transformer 架构本身不具备序列顺序的概念，需要通过位置编码来补充位置信息。</p><hr><h2 id="核心区别对比表"><a href="#核心区别对比表" class="headerlink" title="核心区别对比表"></a>核心区别对比表</h2><p>为了更直观地理解，我们可以从以下几个维度对比：</p><table><thead><tr><th align="left">维度</th><th align="left">Tokenizer (分词器)</th><th align="left">Embedding (嵌入层)</th></tr></thead><tbody><tr><td align="left"><strong>输入</strong></td><td align="left">原始文本字符串 (Text)</td><td align="left">整数索引 (Token IDs)</td></tr><tr><td align="left"><strong>输出</strong></td><td align="left">整数索引列表 (如 <code>[101, 205]</code>)</td><td align="left">高维浮点数向量 (如 <code>[0.1, -0.9...]</code>)</td></tr><tr><td align="left"><strong>数据性质</strong></td><td align="left"><strong>离散的 (Discrete)</strong>：数字仅代表位置</td><td align="left"><strong>连续的 (Continuous)</strong>：数字代表特征</td></tr><tr><td align="left"><strong>是否包含语义</strong></td><td align="left"><strong>不包含</strong>：只做硬性映射</td><td align="left"><strong>包含</strong>：捕捉词义、词性、关联</td></tr><tr><td align="left"><strong>可训练性</strong></td><td align="left">通常在预训练前固定 (如 BPE 算法统计得出)</td><td align="left">是模型参数的一部分，随模型训练不断优化</td></tr><tr><td align="left"><strong>类比</strong></td><td align="left"><strong>字典索引</strong>：查到“苹果”在第 10 页</td><td align="left"><strong>对苹果的理解</strong>：圆的、红的、水果、甜的</td></tr></tbody></table><hr><h2 id="它们是如何协作的？（Pipeline）"><a href="#它们是如何协作的？（Pipeline）" class="headerlink" title="它们是如何协作的？（Pipeline）"></a>它们是如何协作的？（Pipeline）</h2><p>在任何一个现代大语言模型（如 GPT-4, Llama 3, BERT）中，数据流向都是固定的串行关系：</p><ol><li><strong>用户输入：</strong> <code>What is tokenizer?</code></li><li><strong>Tokenizer 层：</strong> 切分并映射为 ID → <code>[2054, 2003, 19204, 1029]</code></li><li><strong>Embedding 层：</strong> 将 ID 转化为向量 → <code>[[0.1, ...], [0.5, ...], ...]</code></li><li><strong>Transformer 层（Attention）：</strong> 模型在向量基础上进行复杂的数学运算（注意力机制等），理解上下文。</li></ol><h3 id="完整数据流转过程"><a href="#完整数据流转过程" class="headerlink" title="完整数据流转过程"></a>完整数据流转过程</h3><pre class="mermaid">graph TD    A[用户输入文本<br/>'What is tokenizer?'] --> B[Tokenizer 预处理]    B --> C[Token切分<br/>What/is/token/izer/?]    C --> D["ID映射<br/>[2054, 2003, 19204, 1029]"]        D --> E[Embedding层<br/>查找表Lookup]    E --> F["Token向量矩阵<br/>Shape: [4, 768]"]        F --> G[+ Position Embedding]    G --> H[最终输入向量]        H --> I[Transformer层<br/>Self-Attention]    I --> J[前馈神经网络<br/>FFN]    J --> K[Layer Normalization]    K --> L[...重复N层]        L --> M[输出层<br/>Language Model Head]    M --> N[预测结果]        style A fill:#e1f5ff    style D fill:#fff4e1    style F fill:#ffe1f5    style H fill:#e1ffe1    style N fill:#ffe1e1        classDef tokenizer fill:#fff4e1,stroke:#ffa500    classDef embedding fill:#ffe1f5,stroke:#ff1493    classDef model fill:#e1ffe1,stroke:#00ff00        class B,C,D tokenizer    class E,F,G,H embedding    class I,J,K,L,M model</pre><h3 id="数据形状变化"><a href="#数据形状变化" class="headerlink" title="数据形状变化"></a>数据形状变化</h3><p>让我们追踪一个具体的例子，看数据是如何逐步变化的：</p><table><thead><tr><th align="left">阶段</th><th align="left">数据内容</th><th align="left">数据类型</th><th align="left">数据形状</th></tr></thead><tbody><tr><td align="left"><strong>原始输入</strong></td><td align="left"><code>&quot;What is tokenizer?&quot;</code></td><td align="left">String（字符串）</td><td align="left">-</td></tr><tr><td align="left"><strong>Tokenizer输出</strong></td><td align="left"><code>[2054, 2003, 19204, 1029]</code></td><td align="left">List[int]（整数列表）</td><td align="left"><code>[4]</code></td></tr><tr><td align="left"><strong>Embedding输出</strong></td><td align="left"><code>[[0.12, -0.58, ...], [...], ...]</code></td><td align="left">Tensor（浮点张量）</td><td align="left"><code>[4, 768]</code></td></tr><tr><td align="left"><strong>+Position Embedding</strong></td><td align="left"><code>[[0.15, -0.50, ...], [...], ...]</code></td><td align="left">Tensor（浮点张量）</td><td align="left"><code>[4, 768]</code></td></tr><tr><td align="left"><strong>经过Transformer</strong></td><td align="left"><code>[[0.88, 0.23, ...], [...], ...]</code></td><td align="left">Tensor（浮点张量）</td><td align="left"><code>[4, 768]</code></td></tr><tr><td align="left"><strong>输出层</strong></td><td align="left"><code>[[0.01, 0.85, 0.03, ...]]</code></td><td align="left">Tensor（概率分布）</td><td align="left"><code>[4, 50257]</code></td></tr></tbody></table><p><strong>关键观察：</strong></p><ul><li><strong>Tokenizer → Embedding</strong>：从<strong>离散</strong>变为<strong>连续</strong></li><li><strong>Embedding → Transformer</strong>：维度保持不变，但语义理解加深</li><li><strong>最后输出</strong>：从隐藏表示转换为词表概率分布（用于预测下一个词）</li></ul><hr><h2 id="常见误区与易混淆点"><a href="#常见误区与易混淆点" class="headerlink" title="常见误区与易混淆点"></a>常见误区与易混淆点</h2><p>在学习过程中，很多初学者会产生以下误解：</p><h3 id="❌-误区1：认为-Tokenizer-的输出已经包含语义"><a href="#❌-误区1：认为-Tokenizer-的输出已经包含语义" class="headerlink" title="❌ 误区1：认为 Tokenizer 的输出已经包含语义"></a>❌ 误区1：认为 Tokenizer 的输出已经包含语义</h3><p><strong>错误理解：</strong> “既然 Token ID <code>101</code> 代表 ‘AI’，那它不就已经有意义了吗？”</p><p><strong>正确理解：</strong> Token ID 只是<strong>索引编号</strong>，就像身份证号一样。身份证号 <code>330106</code> 和 <code>330107</code> 相邻，但这不代表这两个人有任何关系。只有经过 Embedding 层，模型才能理解词与词之间的语义关联。</p><h3 id="❌-误区2：混淆-Token-ID-和-Embedding-向量"><a href="#❌-误区2：混淆-Token-ID-和-Embedding-向量" class="headerlink" title="❌ 误区2：混淆 Token ID 和 Embedding 向量"></a>❌ 误区2：混淆 Token ID 和 Embedding 向量</h3><p><strong>错误理解：</strong> “Token ID <code>[101, 102]</code> 不就是二维向量吗？”</p><p><strong>正确理解：</strong> </p><ul><li>Token ID <code>[101, 102]</code> 是<strong>两个整数</strong>，不是向量</li><li>Embedding 后是 <strong>两个高维向量</strong>，如 <code>[[0.1, 0.2, ..., 0.9], [0.5, 0.3, ..., 0.1]]</code>，每个向量有 768 或更多维度</li></ul><h3 id="❌-误区3：认为-Embedding-是固定不变的"><a href="#❌-误区3：认为-Embedding-是固定不变的" class="headerlink" title="❌ 误区3：认为 Embedding 是固定不变的"></a>❌ 误区3：认为 Embedding 是固定不变的</h3><p><strong>错误理解：</strong> “Embedding 就是个查找表，训练前就确定好了。”</p><p><strong>正确理解：</strong> Embedding 层的<strong>权重矩阵是可训练的</strong>。在模型训练过程中，它会不断调整，使得语义相近的词在向量空间中越来越接近。这是模型”学习”语义的核心机制。</p><h3 id="❌-误区4：认为-Tokenizer-和-Embedding-可以互换"><a href="#❌-误区4：认为-Tokenizer-和-Embedding-可以互换" class="headerlink" title="❌ 误区4：认为 Tokenizer 和 Embedding 可以互换"></a>❌ 误区4：认为 Tokenizer 和 Embedding 可以互换</h3><p><strong>错误理解：</strong> “我可以用不同的 Tokenizer 配同一个模型吗？”</p><p><strong>正确理解：</strong> <strong>不可以！</strong> Tokenizer 的词表和 Embedding 层的权重矩阵必须严格对应：</p><ul><li>词表中第 101 个位置是 “AI”</li><li>Embedding 矩阵的第 101 行存储的就是 “AI” 的向量表示</li><li>如果 Tokenizer 改变，Embedding 矩阵也必须重新训练</li></ul><h3 id="✅-正确的理解框架"><a href="#✅-正确的理解框架" class="headerlink" title="✅ 正确的理解框架"></a>✅ 正确的理解框架</h3><pre class="mermaid">graph LR    A[Tokenizer<br/>文字→数字索引] --> B[Embedding<br/>索引→语义向量]    B --> C[模型计算<br/>向量→理解]        A -.不可分离.-> B        style A fill:#fff4e1    style B fill:#ffe1f5    style C fill:#e1ffe1</pre><ul><li>Tokenizer 和模型的 Embedding 层是<strong>绑定的</strong>，不能分离</li><li>Tokenizer 处理的是<strong>符号映射</strong>（Symbol Mapping）</li><li>Embedding 处理的是<strong>语义表示</strong>（Semantic Representation）</li><li>两者配合完成从”文字”到”机器可理解的数学对象”的转换</li></ul><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p><strong>Tokenizer 和 Embedding 缺一不可，但分工明确：</strong></p><ul><li><strong>Tokenizer</strong> 解决了 <strong>“如何把无限的自然语言文本映射到有限的数字集合”</strong> 的问题。它是数据进入模型的入口。</li><li><strong>Embedding</strong> 解决了 <strong>“如何让计算机理解这些数字背后的含义和关系”</strong> 的问题。它是模型进行思考的基础。</li></ul><hr><h2 id="实践：用代码看清两者"><a href="#实践：用代码看清两者" class="headerlink" title="实践：用代码看清两者"></a>实践：用代码看清两者</h2><p>理论理解后，让我们用实际代码演示整个过程：</p><h3 id="使用-Transformers-库演示："><a href="#使用-Transformers-库演示：" class="headerlink" title="使用 Transformers 库演示："></a>使用 Transformers 库演示：</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> transformers <span class="keyword">import</span> AutoTokenizer, AutoModel</span><br><span class="line"><span class="keyword">import</span> torch</span><br><span class="line"></span><br><span class="line"><span class="comment"># 1. 加载预训练的Tokenizer和模型（以BERT为例）</span></span><br><span class="line">model_name = <span class="string">&quot;bert-base-uncased&quot;</span></span><br><span class="line">tokenizer = AutoTokenizer.from_pretrained(model_name)</span><br><span class="line">model = AutoModel.from_pretrained(model_name)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 原始文本</span></span><br><span class="line">text = <span class="string">&quot;What is tokenizer?&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. Tokenizer阶段：文本 → Token IDs</span></span><br><span class="line">tokens = tokenizer.tokenize(text)  <span class="comment"># 切分</span></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;切分后的Tokens: <span class="subst">&#123;tokens&#125;</span>&quot;</span>)</span><br><span class="line"><span class="comment"># 输出: [&#x27;what&#x27;, &#x27;is&#x27;, &#x27;token&#x27;, &#x27;##izer&#x27;, &#x27;?&#x27;]</span></span><br><span class="line"></span><br><span class="line">token_ids = tokenizer.encode(text, add_special_tokens=<span class="literal">False</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Token IDs: <span class="subst">&#123;token_ids&#125;</span>&quot;</span>)</span><br><span class="line"><span class="comment"># 输出: [2054, 2003, 19204, 17629, 1029]</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;数据类型: <span class="subst">&#123;<span class="built_in">type</span>(token_ids)&#125;</span>, 数据形状: <span class="subst">&#123;<span class="built_in">len</span>(token_ids)&#125;</span>&quot;</span>)</span><br><span class="line"><span class="comment"># 输出: 数据类型: &lt;class &#x27;list&#x27;&gt;, 数据形状: 5</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 4. Embedding阶段：Token IDs → 向量</span></span><br><span class="line">input_ids = torch.tensor([token_ids])  <span class="comment"># 转为Tensor</span></span><br><span class="line"><span class="keyword">with</span> torch.no_grad():</span><br><span class="line">    <span class="comment"># 模型内部会自动调用Embedding层</span></span><br><span class="line">    outputs = model(input_ids)</span><br><span class="line">    embeddings = outputs.last_hidden_state  <span class="comment"># 获取Embedding输出</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;\nEmbedding向量形状: <span class="subst">&#123;embeddings.shape&#125;</span>&quot;</span>)</span><br><span class="line"><span class="comment"># 输出: Embedding向量形状: torch.Size([1, 5, 768])</span></span><br><span class="line"><span class="comment"># 解释: [batch_size=1, sequence_length=5, hidden_dim=768]</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;第一个词&#x27;what&#x27;的向量前10维: <span class="subst">&#123;embeddings[<span class="number">0</span>][<span class="number">0</span>][:<span class="number">10</span>]&#125;</span>&quot;</span>)</span><br><span class="line"><span class="comment"># 输出: tensor([ 0.1234, -0.5678, 0.9012, ...])</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 5. 验证语义相似性</span></span><br><span class="line">text1 = <span class="string">&quot;cat&quot;</span></span><br><span class="line">text2 = <span class="string">&quot;dog&quot;</span></span><br><span class="line">text3 = <span class="string">&quot;car&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_embedding</span>(<span class="params">text</span>):</span><br><span class="line">    ids = tokenizer.encode(text, add_special_tokens=<span class="literal">False</span>)</span><br><span class="line">    <span class="keyword">with</span> torch.no_grad():</span><br><span class="line">        output = model(torch.tensor([ids]))</span><br><span class="line">    <span class="keyword">return</span> output.last_hidden_state[<span class="number">0</span>][<span class="number">0</span>]  <span class="comment"># 获取第一个token的向量</span></span><br><span class="line"></span><br><span class="line">vec_cat = get_embedding(text1)</span><br><span class="line">vec_dog = get_embedding(text2)</span><br><span class="line">vec_car = get_embedding(text3)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 计算余弦相似度</span></span><br><span class="line"><span class="keyword">from</span> torch.nn.functional <span class="keyword">import</span> cosine_similarity</span><br><span class="line"></span><br><span class="line">sim_cat_dog = cosine_similarity(vec_cat.unsqueeze(<span class="number">0</span>), vec_dog.unsqueeze(<span class="number">0</span>))</span><br><span class="line">sim_cat_car = cosine_similarity(vec_cat.unsqueeze(<span class="number">0</span>), vec_car.unsqueeze(<span class="number">0</span>))</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;\n&#x27;cat&#x27; 和 &#x27;dog&#x27; 的相似度: <span class="subst">&#123;sim_cat_dog.item():<span class="number">.4</span>f&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;&#x27;cat&#x27; 和 &#x27;car&#x27; 的相似度: <span class="subst">&#123;sim_cat_car.item():<span class="number">.4</span>f&#125;</span>&quot;</span>)</span><br><span class="line"><span class="comment"># 输出示例:</span></span><br><span class="line"><span class="comment"># &#x27;cat&#x27; 和 &#x27;dog&#x27; 的相似度: 0.8234</span></span><br><span class="line"><span class="comment"># &#x27;cat&#x27; 和 &#x27;car&#x27; 的相似度: 0.3521</span></span><br></pre></td></tr></table></figure><h3 id="关键观察"><a href="#关键观察" class="headerlink" title="关键观察"></a>关键观察</h3><ol><li><strong>Tokenizer 输出是列表</strong>：<code>[2054, 2003, ...]</code> - 简单的整数</li><li><strong>Embedding 输出是张量</strong>：<code>torch.Size([1, 5, 768])</code> - 高维浮点向量</li><li><strong>语义相似性只在Embedding之后才有意义</strong>：cat和dog的向量相似度明显高于cat和car</li></ol><h3 id="直接访问Embedding层："><a href="#直接访问Embedding层：" class="headerlink" title="直接访问Embedding层："></a>直接访问Embedding层：</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 直接获取模型的Embedding矩阵</span></span><br><span class="line">embedding_matrix = model.embeddings.word_embeddings.weight</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Embedding矩阵形状: <span class="subst">&#123;embedding_matrix.shape&#125;</span>&quot;</span>)</span><br><span class="line"><span class="comment"># 输出: Embedding矩阵形状: torch.Size([30522, 768])</span></span><br><span class="line"><span class="comment"># 解释: [词表大小=30522, 向量维度=768]</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 查看特定Token的Embedding</span></span><br><span class="line">token_id = <span class="number">2054</span>  <span class="comment"># &#x27;what&#x27;</span></span><br><span class="line">embedding_vector = embedding_matrix[token_id]</span><br><span class="line"><span class="built_in">print</span>(<span class="string">f&quot;Token ID <span class="subst">&#123;token_id&#125;</span> 的Embedding向量: <span class="subst">&#123;embedding_vector[:<span class="number">10</span>]&#125;</span>&quot;</span>)</span><br></pre></td></tr></table></figure><p>这个矩阵就是<strong>Embedding层的本质</strong>：一个 <code>[词表大小 × 向量维度]</code> 的查找表，每一行对应词表中一个词的向量表示。</p><hr><h2 id="延伸阅读与资源"><a href="#延伸阅读与资源" class="headerlink" title="延伸阅读与资源"></a>延伸阅读与资源</h2><ul><li><p><strong>经典论文：</strong></p><ul><li><a href="https://arxiv.org/abs/1301.3781">Word2Vec: Efficient Estimation of Word Representations</a></li><li><a href="https://arxiv.org/abs/1810.04805">BERT: Pre-training of Deep Bidirectional Transformers</a></li><li><a href="https://arxiv.org/abs/1706.03762">Attention Is All You Need (Transformer)</a></li></ul></li><li><p><strong>推荐工具：</strong></p><ul><li><a href="https://huggingface.co/docs/transformers/">Hugging Face Transformers</a> - 最流行的预训练模型库</li><li><a href="https://github.com/google/sentencepiece">SentencePiece</a> - Google的语言无关Tokenizer</li><li><a href="https://github.com/openai/tiktoken">tiktoken</a> - OpenAI的高效Tokenizer</li></ul></li><li><p><strong>可视化工具：</strong></p><ul><li><a href="https://projector.tensorflow.org/">Embedding Projector</a> - 可视化词向量空间</li><li><a href="https://github.com/jessevig/bertviz">BertViz</a> - 可视化注意力机制</li></ul></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在接触大语言模型（LLM）或自然语言处理（NLP）时，&lt;strong&gt;Tokenizer（分词器）&lt;/strong&gt; 和 &lt;strong&gt;Embedding（嵌入）&lt;/strong&gt; 是两个出现频率极高，却常被初学者混淆的概念。它们似乎都在做“把文字变成数字”的工作，但它们</summary>
      
    
    
    
    <category term="AI" scheme="https://www.silenceboy.com/categories/AI/"/>
    
    
    <category term="AI" scheme="https://www.silenceboy.com/tags/AI/"/>
    
  </entry>
  
</feed>
