<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>holmofy</title>
  <icon>https://www.gravatar.com/avatar/438ae659a0ab370dfc751948582a82dc</icon>
  
  <link href="https://blog.hufeifei.cn/atom.xml" rel="self"/>
  
  <link href="https://blog.hufeifei.cn/"/>
  <updated>2026-05-07T06:18:37.408Z</updated>
  <id>https://blog.hufeifei.cn/</id>
  
  <author>
    <name>胡飞飞</name>
    <email>1938304905@qq.com</email>
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>聊聊短期记忆与长期记忆</title>
    <link href="https://blog.hufeifei.cn/2026/03/ai/human-vs-ai-memory/"/>
    <id>https://blog.hufeifei.cn/2026/03/ai/human-vs-ai-memory/</id>
    <published>2026-03-30T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>从记不住手机号，到看懂AI的“脑子”：聊聊短期记忆与长期记忆的奥秘</p><p>你有没有过这样的经历：刚查到一个验证码，转头输入时就忘了前几位；但自己的手机号、身份证号，却能脱口而出。这背后，其实藏着大脑一套精妙的“记忆分工”机制。今天，我们就从这些日常小事出发，聊聊短期记忆、长期记忆，以及它们和AI大模型的“上下文”之间，那些有趣的关联。</p><h2>大脑的“记忆团队”：谁管临时存储，谁管永久归档？</h2><p>我们的大脑，从来不是靠一个“记忆抽屉”来存东西的，而是由多个脑区组成的“协作团队”，各司其职又相互配合。</p><p>首先是负责“临时记事”的工作记忆，也就是我们常说的短期记忆。它的“总指挥”是前额叶皮层，就像大脑的“智能工作台”——你思考问题、做决策时，暂时存放的信息都在这儿。比如记一串陌生手机号，前额叶皮层会协调“语音环路”让你在心里默念，还会调动“视空模板”帮你想象数字的形状。最近的研究还发现，屏状核会像“信息整合中心”一样，帮前额叶皮层高效整合不同感官的信息，而海马体也会参与进来，帮短期信息和长期记忆搭上线。</p><p><img src="https://p9.itc.cn/images01/20230609/39d263935f7b4dad98266c5b04e62edd.jpeg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="大脑结构"></p><p>而长期记忆的“管理员”，则是海马体。它不直接存记忆，而是像图书馆的图书管理员：把新的、重要的信息编码整理后，“归档”到大脑皮层的不同区域永久储存。比如事实知识、个人经历，主要由海马体和大脑皮层负责；而骑自行车、弹钢琴这类技能记忆，则更多依赖小脑和基底神经节。</p><p><img src="https://mms2.baidu.com/it/u=1597404848,1643672371&fm=253" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="大脑皮层各区域"></p><p>至于我们常说的“学习总结”，更是全脑协同的结果：前额叶皮层负责逻辑分析、归纳推理，海马体负责把新知识和已有知识网络连接起来，最终把零散信息变成能长期使用的“干货”。</p><h2>记手机号：一场大脑的“信息接力赛”</h2><p>当你尝试记住一串陌生手机号时，大脑正在上演一场高效的“接力赛”：</p><p>第一步，信息先闯进“感觉记忆”——就像一道闪光，只保留不到一秒；第二步，如果你集中注意力，数字就会进入“工作记忆”，前额叶皮层开始指挥，你可能会在心里默念，也可能在脑子里“写”下数字；第三步，如果你反复复述，海马体就会介入，判断这串信息是否重要。如果重要，就帮它从“临时工作台”转移到大脑皮层，变成长期记忆。</p><p>那为什么陌生手机号很难一次性念出来，自己的却能脱口而出？答案很简单：陌生号码只在工作记忆里“暂住”，而工作记忆容量有限（通常是7±2个组块）、保持时间短（几秒到几十秒），一分心就没了；而自己的手机号，经过成千上万次重复，早被海马体“归档”到长期记忆里，就像读熟的书，能随时毫不费力地提取出来，这叫“自动化提取”。</p><p>所以，记不住陌生号码不是大脑“不好用”，而是它在高效执行“信息筛选”的职责——把认知资源留给更重要的事。</p><h2>验证码为什么是6位数？藏着“7±2法则”的智慧</h2><p>你有没有想过，验证码为什么大多是6位数？这其实和人类工作记忆的容量限制直接相关。</p><p>早在1956年，心理学家乔治·米勒就提出“7±2法则”：普通人的短时记忆容量，大约是7个信息单位，范围在5到9之间。6位数正好落在这个“舒适区”内，既没超出大多数人的记忆负荷，又足够复杂。</p><p>更妙的是，6位数还能被轻松“组块化”——分成3-3（如123-456）或2-2-2（如12-34-56）的模式，特别符合大脑的记忆习惯。要是换成5位数，很难平均分割，反而容易记错；要是换成8位、10位，就超出了工作记忆容量，得反复查看才能记全，体验会很差。</p><p>而且，6位数的组合有100万种，比4位数的1万种安全得多，结合验证码的短时效性，既能防破解，又不牺牲用户体验——这简直是“安全性”和“便利性”的完美平衡。</p><h2>转头就忘？是大脑在帮你“减负”</h2><p>短暂记住手机号后很快遗忘，其实是大脑的“自动清理”机制在起作用。</p><p>一方面，工作记忆本身就有“容量+时间”的双重限制：信息只能停留15到30秒，不复述就会消失。另一方面，“事件边界”会加速遗忘——当你记住号码后转身、开门，大脑会把这当成“新事件的开始”，自动清理上一个事件的临时信息，为新的任务腾出空间。</p><p>更重要的是，这种“转头就忘”是大脑高效的“认知策略”：我们每天接收海量信息，如果所有临时信息都保留下来，大脑很快会被“垃圾信息”塞满。快速遗忘能帮我们过滤掉没长期价值的内容，把注意力、记忆力这些宝贵资源，集中用在更重要的事上。</p><p>所以，忘记刚看的手机号，恰恰说明你的大脑在高效工作，帮你保持思维清晰。</p><h2>AI的“上下文”，就是它的“短期记忆”</h2><p>聊完人类记忆，我们再来看看AI——其实AI大模型的“上下文”，就和人类的短期记忆一模一样。</p><p>这个“短期记忆”有个物理上限，叫“上下文窗口”，可以把它想象成一个固定大小的“记事本”：里面装着当前对话历史、你的提问、系统预设指令；容量有限，以“Token”为单位衡量；而且是临时的，对话结束或内容超出容量，最早的信息就会被“挤出”并永久遗忘。</p><p>理解这一点，就能看懂AI的局限性：比如对话太长，它会“失忆”，忘了最开始聊的内容；默认情况下，它没有真正的“长期记忆”，每次新聊天都是“全新开始”；还会“迷失在中间”，更容易记住上下文开头和结尾的内容，忽略中间信息。</p><p>这和人类的工作记忆太像了：容量有限、内容临时、不重复就遗忘。</p><h2>AI智能体的关键：从“长期记忆”提取信息到“上下文”</h2><p>那AI怎么像人类一样，把“长期记忆”里的信息提取到“短期记忆”里？这正是构建AI智能体的关键，核心技术叫“检索增强生成”。</p><p>比如你问AI：“我们上周讨论的那个项目预算是多少？”它会先把问题“向量化”，用语义搜索在长期记忆库（通常是向量数据库）里，找和问题最相关的信息片段；然后把检索到的预算相关内容，作为新上下文“塞进”短期记忆；最后结合问题和历史记忆，生成精准回答。</p><p>更前沿的智能体设计，还会让模型“自主管理记忆”：把检索、添加、总结、遗忘当成工具，让AI自己判断什么时候该找历史记忆、什么时候该压缩对话腾空间、什么时候该存重要信息。这就像给AI装上了“主动思考”的能力，是通往更智能AI的关键一步。</p><p>refs:</p><ul><li>神奇数字7±2: <a href="https://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://en.wikipedia.org/wiki/The_Magical_Number_Seven,_Plus_or_Minus_Two</a></li><li>工作记忆模型: <a href="https://en.wikipedia.org/wiki/Baddeley%27s_model_of_working_memory" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://en.wikipedia.org/wiki/Baddeley%27s_model_of_working_memory</a></li><li>Lost in the Middle: 语言模型如何用长上下文: <a href="https://zhuanlan.zhihu.com/p/645690934" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://zhuanlan.zhihu.com/p/645690934</a></li></ul>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;从记不住手机号，到看懂AI的“脑子”：聊聊短期记忆与长期记忆的奥秘&lt;/p&gt;
&lt;p&gt;你有没有过这样的经历：刚查到一个验证码，转头输入时就忘了前几位；但自己的手机号、身份证号，却能脱口而出。这背后，其实藏着大脑一套精妙的“记忆分工”机制。今天，我们就从这些日常小事出发，聊聊短期记忆、长期记忆，以及它们和AI大模型的“上下文”之间，那些有趣的关联。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/categories/AI/"/>
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/tags/AI/"/>
    
    <category term="RAG" scheme="https://blog.hufeifei.cn/tags/RAG/"/>
    
  </entry>
  
  <entry>
    <title>AI记忆系统设计</title>
    <link href="https://blog.hufeifei.cn/2026/03/ai/ai-memory/"/>
    <id>https://blog.hufeifei.cn/2026/03/ai/ai-memory/</id>
    <published>2026-03-29T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p><strong>如何把长期记忆（Long-term Memory）里的东西，精准、少量、不污染地提取到上下文（短期记忆）中？</strong></p><p>这件事是 <strong>整个 AI 系统是否可靠的决定性因素</strong>。</p><p>换句话说：</p><p><strong>Agent能不能聪明，除了取决于模型参数，更取决于“有没有把对的东西放进上下文”。</strong></p></blockquote><h1>1. 上下文 = 工作记忆（短期）</h1><ul><li>容量有限</li><li>容易被噪音干扰</li><li>内容过多会导致幻觉</li><li>每轮对话都会刷新或丢失</li></ul><p>就像人类的“意识层”。</p><h1>2. 长期记忆 = 外部知识库（Long-term Memory）</h1><p>可能包含：</p><ul><li>文档</li><li>代码</li><li>embeddings</li><li>Skills（能力型记忆）</li><li>用户偏好</li><li>历史任务</li><li>系统状态</li><li>动态数据库数据</li></ul><p>容量巨大，可无限扩展，就像人的“潜意识 + 已学习的知识与经验”。</p><h1>3. 真正的难点：</h1><p><strong>如何从无限大的长期记忆中，取出最 relevant 的小片段加载到有限上下文中？</strong></p><p>这是整个 AI 体系最关键的问题，因为：</p><ul><li>太少 → 信息不足，模型做不出好判断</li><li>太多 → 上下文爆掉，出现幻觉</li><li>提取错了 → 直接跑偏</li><li>噪音太多 → 严重干扰 reasoning</li></ul><p><strong>“提取什么”比“模型怎么推理”更重要。</strong></p><h1>AI记忆系统的设计是一个重大课题</h1><p>研究界和工业界对这个问题有几个不同方向的研究，你可以看到它们非常核心：</p><h2><strong>① Retrieval（检索）</strong></h2><p>也就是传统的 RAG。</p><p>问题在于：</p><ul><li>文档颗粒度怎么切？</li><li>如何避免召回噪音？</li><li>多轮任务上下文如何保持一致性？</li><li>如何做 hierarchical retrieval？</li></ul><p>这已经是一个大课题。</p><h2><strong>② Routing（路由）</strong></h2><p>即：</p><blockquote><p>给定长期记忆，我们应该让哪个 Agent 或 Skill 上场？</p></blockquote><p>这是 Multi-Agent System 的另一个根本难题。</p><p>Routing 不好 → Agent 用不对的信息、做不对的事。</p><h2><strong>③ Memory Ranking（记忆排序）</strong></h2><p>系统要决定：</p><ul><li>哪些信息最重要？</li><li>哪些信息应该遗忘？</li><li>哪些技能应该更优先？</li><li>哪些历史内容应该合并成总结？</li></ul><p>这其实是“AI 大脑的注意力系统”。</p><h2><strong>④ Context Compression（上下文压缩）</strong></h2><p>包括：</p><ul><li>压缩句子</li><li>压缩任务状态</li><li>压缩之前 agent 的决策链</li></ul><p>比如：</p><ul><li>ReAct traces</li><li>思维链（CoT）</li><li>Agent state</li></ul><p>这些不能无限增长，需要压缩，不然会爆。</p><h2><strong>⑤ Memory Rewriting（记忆重写）</strong></h2><p>类似人类会“总结成脑内模型”：</p><ul><li>动态总结</li><li>抽象</li><li>合并</li><li>提炼为新技能（Skill）</li></ul><p>这其实是 AI 的“学习过程”。</p><p>未来最强的 AI 可能是：</p><blockquote><p><strong>通过 Memory Rewriting 持续把经验写成 Skills 的系统</strong></p></blockquote><h2><strong>⑥ Grounding（事实校验）</strong></h2><p>避免幻觉最关键的一步：</p><ul><li>提取到上下文的内容是否真实？</li><li>是否对应正确来源？</li><li>是否经过验证？</li></ul><p>美国大厂内部都在研究“Retrieval → Grounding → Reasoning”三段式 pipeline。</p><h2>总结</h2><p>未来所有强 AI 系统的核心都不是模型本身，而是：</p><p><strong>如何管理记忆 → 如何提取记忆 → 如何在短期记忆中构建思考链条。</strong></p><p>这就是 AI 的“前额叶皮层 + 海马体”类比。</p><p><img src="https://miro.medium.com/v2/resize%3Afit%3A1400/1%2AW55mlf_j7MqqLwhkREqbjg.jpeg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="Image"></p><p><img src="https://miro.medium.com/1%2AOyHxTQJzuOWswO0fUOmi9A.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="Image"></p><p><img src="https://miro.medium.com/v2/resize%3Afit%3A1182/1%2Auo9FjXVDywwqlIzXdR1kGA.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="Image"></p><ul><li><strong>工作记忆（上下文）= 前额叶皮层 = 推理区</strong></li><li><strong>长期记忆（RAG/Skills/知识库）= 海马体 + 大脑皮层</strong></li><li><strong>检索模块 = 注意力系统</strong></li><li><strong>压缩与抽象模块 = 人类的梦境与学习过程</strong></li></ul><blockquote><p><strong>AI 的智能 = 模型能力 × 上下文质量 × 记忆检索质量</strong></p></blockquote>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;如何把长期记忆（Long-term Memory）里的东西，精准、少量、不污染地提取到上下文（短期记忆）中？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这件事是 &lt;strong&gt;整个 AI 系统是否可靠的决定性因素&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;换句话说：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent能不能聪明，除了取决于模型参数，更取决于“有没有把对的东西放进上下文”。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;1. 上下文 = 工作记忆（短期）&lt;/h1&gt;</summary>
    
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/categories/AI/"/>
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/tags/AI/"/>
    
    <category term="Skills" scheme="https://blog.hufeifei.cn/tags/Skills/"/>
    
    <category term="RAG" scheme="https://blog.hufeifei.cn/tags/RAG/"/>
    
  </entry>
  
  <entry>
    <title>幻觉与上下文工程</title>
    <link href="https://blog.hufeifei.cn/2026/03/ai/hallucination-context-engineering/"/>
    <id>https://blog.hufeifei.cn/2026/03/ai/hallucination-context-engineering/</id>
    <published>2026-03-02T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>你有没有这样的体验：问 ChatGPT 一个问题，它回答得头头是道、引经据典，你差点就信了——直到你发现它引用的那篇论文根本不存在。</p><p>这就是所谓的”幻觉”（Hallucination）。</p><p>围绕幻觉，业界有各种各样的解释：训练数据有噪音、模型参数不够大、RLHF 没对齐好……这些说法都对，但都没有触及最本质的那一层。</p><p>今天我想聊聊，大模型幻觉到底是怎么回事，以及一个正在被越来越多人重视的解决思路——上下文工程（Context Engineering）。</p><h2>先搞清楚一件事：大模型在干什么</h2><p>要理解幻觉，得先理解大模型的工作原理。</p><p>大模型本质上是一个<strong>条件概率机器</strong>。给定前文，它预测下一个 token 出现的概率分布，然后从中采样。整个生成过程，就是一连串的”下一个词最可能是什么”的概率接龙。</p><p>注意，是<strong>最可能</strong>，不是<strong>最正确</strong>。</p><p>这两者的区别，恰恰就是幻觉的根源。</p><h2>林黛玉倒拔垂杨柳</h2><p>我们来做一个思想实验。</p><p>假如你问模型：”请描述林黛玉倒拔垂杨柳的情节。”</p><p>这句话里有两个强信号：<strong>林黛玉</strong>和<strong>倒拔垂杨柳</strong>。前者指向《红楼梦》里那个弱柳扶风、多愁善感的少女，后者指向《水浒传》里鲁智深酒后逞威的经典桥段。这两个信号指向截然不同的语义空间，把它们拼在一起，就构成了一个<strong>信息熵极高</strong>的上下文。</p><p>什么是信息熵高？简单说就是”不确定性大”。模型拿到这个 prompt 后，陷入了纠结：到底该往《红楼梦》的方向生成，还是往《水浒传》的方向生成？两边的概率势均力敌，上下文没有提供足够的约束来把不确定性降下来。</p><p>但模型不能不回答，它必须输出点什么——因为自回归语言模型的本质就是”给定前文，生成续文”，它没有”我不知道”这个内建选项。</p><p>于是它开始做最擅长的事情：<strong>统计补全</strong>。</p><p>它会综合两边的语义，编出一段看上去合理但事实上荒谬的文字。比如它可能写出：”林黛玉走到大观园的垂杨柳前，气运丹田，双手抱住树干，一声娇叱之下连根拔起……”——语言通顺，文笔甚至还不错，但内容纯属一本正经地胡说八道。</p><p><strong>这就是幻觉的本质：在信息熵高或信噪比低的上下文中，模型为了完成概率语言建模而进行的统计补全。</strong></p><p>它不是”故意骗你”，也不是”太笨了不知道”。它只是一台概率机器，在信号不明确的时候，依然忠实地执行自己的使命——生成统计上最合理的下文。</p><h2>再看几个日常例子</h2><p>理解了这个本质，你会发现生活中大量的幻觉案例都可以用这个框架解释。</p><p><strong>例一：捏造论文引用</strong></p><p>你让模型”列出近五年关于xxx的重要论文”。模型的训练数据里确实见过大量论文标题、作者名和期刊名，但这些信息是<strong>碎片化</strong>的——它知道”Attention Is All You Need”是 Vaswani 等人写的，也知道 Nature 和 Science 发过很多文章，但它并没有一个结构化的论文数据库。当你要求它生成一个它不确定的引用时，它会把”看起来像论文标题的词组”+”看起来像作者名的人名”+”看起来像期刊名的名词”拼在一起。每一个局部都符合统计规律，但组合起来就是一篇不存在的论文。</p><p>这就是典型的<strong>信噪比低</strong>的场景：模型脑子里有大量关于论文的”噪声”，但缺少指向具体某篇论文的”信号”。</p><p><strong>例二：信誓旦旦地算错数</strong></p><p>问模型”17 × 24 等于多少”，它可能回答 able 408（正确答案），也可能回答 388 或者 418。因为乘法运算在语言模型的概率空间里本身就是一个高熵事件——从纯语言统计的角度看，”17 × 24 = 408”和”17 × 24 = 418”在 token 概率上并没有天壤之别。模型从来就不是在”算”，它是在”猜一个看起来像答案的数字”。只是“17 × 24 = 408”在他看到过的文本里出现的概率最高。如果有数据投毒，训练时喂给他大量的“17 × 24 = 418”，那它大概率输出418这个错误答案。</p><p><strong>例三：编造 API 参数</strong></p><p>你让模型写一段调用某个冷门 SDK 的代码。主流的 SDK 它见过足够多的示例，能写对；但遇到冷门的，训练数据里可能只出现过寥寥几次，信号极弱。于是它根据”类似 SDK 通常长这样”的统计规律，编造出一组似是而非的 API 签名。函数名像那么回事，参数顺序看着合理，但跑起来就是报错。</p><h2>一个统一的解释框架</h2><p>把上面的例子汇总，我们可以得到一个简洁的框架：</p><blockquote><p><strong>幻觉 = f(上下文的信息熵, 上下文的信噪比)</strong></p></blockquote><p>信息熵越高（不确定性越大），幻觉概率越高。信噪比越低（有效信息越少、干扰信息越多），幻觉概率越高。</p><p>反过来说，<strong>如果你能把上下文的信息熵降下来、把信噪比提上去，幻觉就会大幅减少</strong>。</p><p>这就引出了我们今天的主角：上下文工程。</p><h2>什么是上下文工程</h2><p>Prompt Engineering（提示词工程）你一定听过。上下文工程可以理解为它的进化版本——不只是关心怎么写 prompt，而是关心<strong>模型在生成时，整个上下文窗口里都装了什么</strong>。</p><p>一个大模型在推理时，它看到的全部信息就是上下文窗口里的内容。这包括：</p><ul><li>系统提示词（System Prompt）</li><li>用户输入（User Message）</li><li>检索增强的文档（RAG 结果）</li><li>工具调用的返回值</li><li>历史对话记录</li><li>中间推理步骤</li></ul><p>上下文工程的核心命题就是：<strong>如何精心组织这些信息，让模型在生成每一个 token 时，都处于一个低信息熵、高信噪比的上下文环境中。</strong></p><p>说白了，就是帮模型”开卷考试”，而且是把正确答案翻到对应页码、用荧光笔划好重点地那种开卷。</p><h2>上下文工程怎么治幻觉</h2><h3>1. RAG：把”闭卷”变成”开卷”</h3><p>最直接的一招。模型不知道某个事实？没关系，帮它查好资料、塞进上下文。</p><p>比如前面”捏造论文”的例子。如果你先通过学术搜索引擎检索出真实的论文列表，把标题、作者、摘要、发表年份等结构化信息放进上下文，模型就不再需要”猜”了——它只需要把这些已有的事实用通顺的语言组织起来。信噪比直接拉满。</p><p>但 RAG 不是万能药。塞太多不相关的文档进去，反而会降低信噪比，引入新的混乱。所以 RAG 的关键不在于”检索”，而在于<strong>精准检索</strong>和<strong>结果筛选</strong>。</p><h3>2. 结构化 Prompt：给不确定性上约束</h3><p>信息熵高的本质是”模型不知道该往哪个方向生成”。那我们就用 prompt 把方向限死。</p><p>回到林黛玉的例子。如果 prompt 改成：”以下是一道测试题，请判断’林黛玉倒拔垂杨柳’这个说法是否正确，并说明理由。”——这就给模型施加了一个强约束：输出空间从”写一段情节描写”缩小到了”判断正误”。模型很容易就能给出正确答案，因为判断真假比无中生有容易得多——信息熵一下子就降下来了。</p><p>再比如，要求模型以 JSON 格式输出、给定输出字段的枚举值、限定回答长度、要求分步骤推理——这些都是在用结构化约束来降低输出空间的不确定性。</p><h3>3. 工具调用：让模型调用外部能力而非硬猜</h3><p>算数会出错？让模型调计算器。不知道今天星期几？让模型调日期 API。不确定某个函数的签名？让模型查文档。</p><p>工具调用的本质是：<strong>把模型不擅长的高熵任务，外包给确定性的外部系统</strong>，然后把确定性的结果注入回上下文。模型拿到精确结果后，只需要做它最擅长的事——用自然语言把结果讲清楚。整个过程中，模型始终处于低熵、高信噪比的舒适区。</p><h3>4. 上下文精简：少即是多</h3><p>很多人以为上下文越长越好，128K 的窗口恨不得填满。其实正好相反。</p><p>上下文窗口就像模型的”工作记忆”。你往里面塞了一大堆跟当前问题无关的对话历史、冗余的系统提示、检索出来但不相关的文档片段，模型就像一个在嘈杂菜市场里试图听清你说话的人——它能听到的有效信息被噪声淹没了。</p><p>好的上下文工程会做”减法”：对历史对话做摘要压缩，对检索结果做相关性过滤，对系统提示做精简聚焦。<strong>让每一个 token 都是有效信号</strong>。</p><h3>5. 思维链与多步推理：化整为零</h3><p>一道复杂的推理题，如果让模型一步给出答案，信息熵很高——因为可能的答案空间巨大。但如果引导模型分步骤思考，每一步的输出空间都很小、确定性都很高，最终组合起来就能得到正确答案。</p><p>这就像你问一个人”从北京到纽约的最优路线是什么”，如果要求他一口气答出来，很容易出错。但如果拆成”先选交通方式→再选出发机场→再选航线→再选中转站”，每一步的决策都简单明确得多。</p><p>思维链的本质，就是<strong>用中间步骤不断往上下文注入确定性，把一个大的高熵问题分解成一连串小的低熵问题</strong>。</p><h2>小结</h2><p>让我们回到最初的那个判断：</p><blockquote><p><strong>幻觉不是 bug，而是概率语言模型在信息不充分时的必然行为。</strong></p></blockquote><p>既然根源在于上下文的信息质量，那解药自然也在上下文里。上下文工程做的事情，说到底就一句话：</p><p><strong>在模型生成每一个 token 的那个瞬间，确保它眼前摆着的是低熵、高信噪比、指向明确的上下文。</strong></p><p>Prompt Engineering 教你”怎么问问题”，上下文工程教你”怎么准备考场”。</p><p>一个准备充分的考场里，学生很难答错题——哪怕这个学生只是一台概率机器。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;你有没有这样的体验：问 ChatGPT 一个问题，它回答得头头是道、引经据典，你差点就信了——直到你发现它引用的那篇论文根本不存在。&lt;/p&gt;
&lt;p&gt;这就是所谓的”幻觉”（Hallucination）。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/categories/AI/"/>
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/tags/AI/"/>
    
    <category term="上下文工程" scheme="https://blog.hufeifei.cn/tags/%E4%B8%8A%E4%B8%8B%E6%96%87%E5%B7%A5%E7%A8%8B/"/>
    
  </entry>
  
  <entry>
    <title>深度学习进化之旅</title>
    <link href="https://blog.hufeifei.cn/2026/02/ai/deeplearning-history/"/>
    <id>https://blog.hufeifei.cn/2026/02/ai/deeplearning-history/</id>
    <published>2026-02-19T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>这篇文章我想整理一下深度神经网络的进化之旅。从CNN到Transformer，再到GPT，这些模型架构设计过程中是怎么进化的，每个模型解决了什么问题。</p><p>深度学习的发展并非一蹴而就，而是在不断解决实际问题的过程中逐步演进的。每一次架构创新，都是针对前一代模型的局限性提出的解决方案。这个过程就像计算机产业的发展一样，遵循着”问题-突破-新问题-新突破”的螺旋上升规律。</p><h2>卷积神经网络(CNN)：视觉的突破</h2><p>1998年，Yann LeCun（杨立昆）在贝尔实验室提出了LeNet-5，这是第一个真正意义上的卷积神经网络。它被用于手写数字识别，准确率达到了惊人的99%以上。LeCun的工作奠定了CNN的基础架构，但在当时并未引起广泛关注——计算能力不足，数据集太小，传统机器学习方法在小规模问题上表现也不错。</p><p>但CNN真正引起轰动是在2012年。多伦多大学的Geoffrey Hinton（杰弗里·辛顿）教授带领学生Alex Krizhevsky和Ilya Sutskever，用AlexNet在ImageNet图像识别竞赛中以压倒性优势夺冠，错误率比第二名低了10个百分点。这个突破不是偶然的：Hinton在1980年代就开始研究神经网络，提出了反向传播算法的改进版本，几十年如一日地坚持这个方向。AlexNet的成功证明了深度学习的潜力，也标志着AI的”寒冬”彻底结束。</p><p>2024年，Hinton因为在人工神经网络领域的开创性工作获得了诺贝尔物理学奖。这个看似跨界的奖项其实有其深刻逻辑：神经网络的训练过程本质上是一个能量优化问题，与统计物理学中的玻尔兹曼机、自旋玻璃等概念密切相关。Hinton早期的工作就是从物理学的角度理解神经网络，他提出的玻尔兹曼机就借鉴了统计力学的思想。诺贝尔委员会认为，神经网络不仅是计算机科学的突破，更是用物理学原理解决复杂系统问题的典范。</p><img width="715" height="416" alt="image" src="https://github.com/user-attachments/assets/b048ec72-51ca-4a1c-9dbd-0f1a7bd5ef5f" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>2018年，Hinton、LeCun和另一位深度学习先驱Yoshua Bengio（约书亚·本吉奥）共同获得了图灵奖，被称为”深度学习三巨头”。LeCun因为发明了卷积神经网络和推动其在工业界的应用而获奖，Bengio则因为在循环神经网络和注意力机制方面的贡献而获奖。这三位科学家在AI的”寒冬”期坚持研究神经网络，最终迎来了深度学习的春天。</p><img width="1004" height="1058" alt="image" src="https://github.com/user-attachments/assets/1ab2788e-13ba-467b-a3b5-044d6c0af8bb" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>CNN解决的核心问题是：如何让神经网络理解图像？</p><p>传统的全连接神经网络处理图像时，会把每个像素当作独立的输入。一张224×224的彩色图片就有150,528个输入参数，这导致参数量爆炸，训练困难，而且完全忽略了图像的空间结构。</p><p>CNN的核心思想是通过层层降维，从高维的像素数据中提取出低维的语义特征。一张224×224的彩色图片（ImageNet的标准输入尺寸）就有15万个像素点，而现实中的高清照片动辄几百万像素。但最终我们只需要判断”这是不是一只猫”这样一个简单的结论。CNN就是在做这个从高维到低维、从具体到抽象的转换。</p><p>三个关键设计巧妙地实现了这个过程：</p><p><strong>局部连接</strong>：神经元只关注图像的一小块区域，就像人眼的感受野一样。这大幅减少了参数量，也符合图像的局部相关性特征——理解一个物体不需要同时看整张图片，先识别局部特征就够了。</p><p><strong>权值共享</strong>：同一个卷积核在整张图片上滑动，用相同的参数提取不同位置的特征。这意味着无论猫出现在图片的左上角还是右下角，都能被同一个”猫特征检测器”识别出来。这种特性叫做平移不变性。但要注意，CNN对旋转、缩放等变换并不天然具备不变性——一只倒立的猫可能就识别不出来了。</p><blockquote><p>有趣的是，这和人类视觉系统很相似。你试着把书倒过来读，会发现识别文字变得困难，需要在脑海中”旋转”回来。人眼也不是对所有变换都天然不变的，而是通过大量的视觉经验学会了处理各种变换。CNN也是如此，训练时需要做数据增强，通过旋转、翻转、缩放等操作让模型见过各种变换后的图片，就像人类从小到大积累视觉经验一样。</p></blockquote><p><strong>池化层</strong>：通过下采样直接降低特征图的分辨率。比如2×2的最大池化会把4个像素压缩成1个，数据量减少75%。这不仅减少了计算量，还让模型对位置变化更加鲁棒——猫的耳朵偏移几个像素，不影响我们认出它是猫。</p><img width="1080" height="483" alt="image" src="https://github.com/user-attachments/assets/ae3a6a3e-b633-427f-b663-509c8c0c8e43" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>整个CNN就像一个漏斗：输入是高维的像素矩阵，经过多层卷积和池化，特征图的空间尺寸不断缩小，但通道数（特征的种类）不断增加。最底层提取边缘、纹理等低级特征，中间层组合成形状、部件等中级特征，顶层形成物体、场景等高级语义。最终，几万维的像素被压缩成几百维的特征向量，再通过全连接层输出分类结果。</p><img width="1080" height="1081" alt="image" src="https://github.com/user-attachments/assets/80461ecb-33eb-4141-b729-10ef871ecc96" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>从LeNet到AlexNet，再到VGG、GoogLeNet、ResNet，CNN的演进主要围绕着”如何加深网络”展开。理论上，网络越深，能学习的特征就越抽象，性能应该越好。但实践中却遇到了两个棘手的问题：梯度消失和梯度爆炸。</p><p>神经网络的训练依赖反向传播算法，就像接力赛一样，误差信号从输出层一层层往回传。每经过一层，误差都要乘以该层的权重。如果权重普遍小于1，连续相乘几十次后，误差信号会变得极其微小，就像声音在传播中不断衰减，传到前面几层时已经听不见了。这就是梯度消失，导致前面的层几乎学不到东西。</p><p>反过来，如果权重普遍大于1，连续相乘后误差会指数级增长，就像雪崩一样越滚越大。这就是梯度爆炸，会让训练过程变得极不稳定，参数更新幅度过大，模型无法收敛。</p><img width="711" height="184" alt="image" src="https://github.com/user-attachments/assets/209f0067-def0-4b47-a239-0a2913a65f6d" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>ResNet在2015年提出的残差连接巧妙地解决了这个问题。它在网络中增加了”跳跃连接”，让信息可以直接跨越若干层传递，就像在接力赛中增加了直通车道。即使某些层的梯度消失了，误差信号也能通过这些捷径传回去。这个简单而优雅的设计让网络深度从十几层跃升到上百层甚至上千层，性能也随之大幅提升。</p><p>CNN在计算机视觉领域取得了巨大成功，但它的设计天然适配的是图像这种具有空间局部性的数据。当面对序列数据，比如文本、语音时，CNN就显得力不从心了。</p><h2>循环神经网络(RNN)：记忆的引入</h2><p>序列数据的特点是前后有依赖关系。”我吃苹果”和”苹果吃我”，虽然用了相同的三个词，但意思完全相反。要理解这句话，必须记住词的顺序和上下文关系。这种时序依赖性是CNN无法处理的。</p><img width="1080" height="765" alt="image" src="https://github.com/user-attachments/assets/0f4003de-6162-4310-9ac9-87a9f1776987" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>在RNN出现之前，自然语言处理主要依赖词袋模型(Bag of Words)。这种方法把句子看作一个装满词的袋子，只统计每个词出现的次数，完全忽略词的顺序。就像把”我吃苹果”和”苹果吃我”都变成{我:1, 吃:1, 苹果:1}，两句话在模型眼中完全一样。</p><p>为了提升效果，研究者们在词袋模型基础上做了各种改进。TF-IDF通过降低常见词(如”的””是”)的权重，突出关键词的重要性。BM25进一步考虑了文档长度和词频饱和效应，成为搜索引擎的标配算法。这些方法在信息检索领域非常成功，Google早期的搜索引擎就大量使用了这类技术。</p><p>但词袋模型的本质缺陷无法克服：它丢失了词序信息。在一些简单任务上还能凑合，比如垃圾邮件分类——只要看到”中奖””转账”这些关键词，不管顺序如何，大概率是垃圾邮件。但面对需要理解语义的任务，比如机器翻译、问答系统，词袋模型就彻底失效了。</p><p>RNN在1986年就被提出，但直到2010年代才真正流行起来。它的核心思想是引入”记忆”：神经网络在处理当前输入时，会参考之前的隐藏状态。这就像人阅读文章时，会记住前面读过的内容来理解当前的句子。</p><p>RNN的结构看起来很简单：在每个时间步，网络接收当前输入和上一时刻的隐藏状态，输出当前的结果和新的隐藏状态。这个隐藏状态就是网络的”记忆”，它会随着序列的推进不断更新。</p><p>但标准RNN有个致命缺陷：长期依赖问题。当序列很长时，早期的信息在反向传播过程中会因为梯度消失而丢失。就像传话游戏，传的人越多，信息失真越严重。</p><p>1997年，Sepp Hochreiter和Jürgen Schmidhuber提出了LSTM(长短期记忆网络)，通过引入门控机制解决了这个问题。LSTM有三个门：遗忘门决定丢弃哪些旧信息，输入门决定接收哪些新信息，输出门决定输出什么。这种设计让网络能够选择性地记住重要信息，忘记无关信息。</p><p>2014年，Kyunghyun Cho提出了GRU(门控循环单元)，它简化了LSTM的结构，只用两个门就实现了类似的效果，训练速度更快。</p><img width="1080" height="325" alt="image" src="https://github.com/user-attachments/assets/ec91a8c6-b525-4cf5-969d-69750128d51b" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>RNN及其变体在机器翻译、语音识别、文本生成等任务上取得了显著成果。2016年，Google推出的神经机器翻译系统就是基于LSTM的，翻译质量相比之前的统计方法提升了60%。</p><p>但RNN也有无法克服的局限：它的序列化处理方式导致无法并行计算，训练速度慢；即使有LSTM的改进，处理超长序列时仍然会丢失信息；更重要的是，RNN的”记忆”是隐式的，我们无法直观地看到模型在关注序列的哪些部分。</p><h2>Transformer与注意力机制：并行化的革命</h2><p>2017年，Google的研究团队发表了论文《Attention is All You Need》，提出了Transformer架构。这篇论文的标题本身就是一种宣言：我们不需要RNN，不需要CNN，只需要注意力机制。</p><img width="1030" height="590" alt="image" src="https://github.com/user-attachments/assets/fc0dec6c-9a54-42dc-9fb3-8fa2680ccf98" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>注意力机制的思想其实很直观。当你阅读”小明把书放在桌子上，然后他就去睡觉了”这句话时，你会自动知道”他”指的是”小明”而不是”桌子”。这种能力就是注意力——在理解当前词时，动态地关注句子中的相关部分。</p><p>Transformer的核心是自注意力(Self-Attention)机制。对于序列中的每个位置，模型会计算它与所有其他位置的相关性，然后根据这些相关性加权聚合信息。这个过程可以用三个矩阵来描述：</p><ul><li>**Query(查询)**：当前位置想要什么信息</li><li>**Key(键)**：每个位置能提供什么信息  </li><li>**Value(值)**：每个位置的实际内容</li></ul><p>通过计算Query和Key的相似度，模型决定应该关注哪些位置，然后加权求和对应的Value。这个过程完全可以并行化，因为每个位置的计算是独立的。</p><p>Transformer还引入了多头注意力(Multi-Head Attention)，让模型能够同时关注不同类型的信息。就像人在理解句子时，会同时考虑语法结构、语义关系、上下文等多个维度。</p><img width="1080" height="575" alt="image" src="https://github.com/user-attachments/assets/c33d1868-b9dc-4ef3-95c2-4a9e32354296" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>相比RNN，Transformer有三个显著优势：</p><p><strong>并行化</strong>：所有位置可以同时计算，训练速度提升了数十倍。在GPU集群上，这种并行性的优势更加明显。</p><p><strong>长距离依赖</strong>：任意两个位置之间的路径长度都是1，信息可以直接传递，不会像RNN那样经过多次传递而衰减。</p><p><strong>可解释性</strong>：注意力权重是显式的，我们可以可视化模型在关注什么，这对理解和调试模型非常有帮助。</p><p>原始的Transformer采用了Encoder-Decoder架构，专为机器翻译设计。Encoder负责理解源语言（比如英语），Decoder负责生成目标语言（比如德语）。两者之间通过交叉注意力机制连接，让Decoder在生成每个词时都能关注到源语言的相关部分。这个设计在WMT 2014英德翻译任务上刷新了记录。</p><p>但Transformer的影响远不止于机器翻译。研究者很快发现，Encoder和Decoder可以单独使用，分别适合不同的任务。Encoder擅长理解和表示，Decoder擅长生成和预测。这为后来BERT和GPT的分野埋下了伏笔。</p><p>更令人惊讶的是，Transformer的通用性超出了所有人的预期。2020年，Google提出的Vision Transformer（ViT）把图片切成小块，当作序列来处理，在图像分类任务上超越了CNN。这打破了”CNN是视觉任务专用架构”的认知。随后，Transformer被应用到语音识别、视频理解、蛋白质结构预测、强化学习等各个领域，几乎无往不利。</p><img width="850" height="362" alt="image" src="https://github.com/user-attachments/assets/4d76ade6-f024-4cc2-9e18-e6988acd9098" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>原本为不同任务设计的专用架构——CNN处理图像、RNN处理序列、GNN处理图结构——正在被Transformer这个统一架构逐步替代。这种”大一统”的趋势背后，是一个深刻的洞察：无论是文本、图像还是语音，本质上都是数据序列，都可以用注意力机制来建模关系。</p><img width="640" height="400" alt="image" src="https://github.com/user-attachments/assets/5a41941a-c444-4a03-ad43-20403c2e57cd" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>更重要的是，Transformer的可扩展性极强。通过增加层数、增大隐藏维度、使用更多数据，模型性能可以持续提升。这种”scaling law”（规模定律）为后来的大语言模型奠定了基础。OpenAI的研究表明，只要有足够的计算资源和数据，Transformer的性能可以预测性地提升，不会遇到明显的瓶颈。这让”暴力美学”成为可能——用更大的模型、更多的数据，就能获得更强的能力。</p><h2>BERT(理解)与GPT(生成)：预训练的分野</h2><p>有了Transformer这个强大的架构，下一个问题是：如何训练它？</p><p>传统的监督学习需要大量标注数据。在计算机视觉领域，ImageNet这个包含1400万张标注图片的数据集推动了CNN的突破。但在自然语言处理领域，情况完全不同。文本的标注比图像更复杂，成本也更高昂——给图片打标签只需要说”这是一只猫”，但标注文本的语义、情感、实体关系需要专业知识。更重要的是，语言任务千差万别，为每个任务都标注大量数据不现实。</p><p>能否让模型先在海量无标注文本上学习语言的通用知识，然后再针对具体任务微调？这就是预训练的思想。</p><p>2018年，两个里程碑式的模型几乎同时出现：Google的BERT和OpenAI的GPT。它们都基于Transformer，都采用预训练+微调的范式，但训练目标截然不同。</p><img width="1080" height="608" alt="image" src="https://github.com/user-attachments/assets/0affeffb-485a-4e34-aed7-066a16a9b895" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p><strong>BERT：双向的理解者</strong></p><p>BERT的全称是Bidirectional Encoder Representations from Transformers，核心是”双向”。它使用Transformer的编码器部分，通过掩码语言模型(Masked Language Model)进行预训练：随机遮住句子中15%的词，让模型根据上下文预测被遮住的词。</p><p>这种训练方式让BERT能够同时利用左右两侧的上下文，形成深层的双向表示。就像完形填空，你需要理解整个句子才能填对空。</p><p>BERT在11个NLP任务上刷新了记录，包括问答、文本分类、命名实体识别等。它特别擅长需要深度理解的任务，比如判断两个句子是否语义相似，或者从文章中找出问题的答案。</p><p><strong>GPT：单向的生成者</strong></p><p>GPT(Generative Pre-trained Transformer)采用了完全不同的路线。它使用Transformer的解码器部分，通过自回归语言模型进行预训练：根据前面的词预测下一个词。</p><p>这种训练方式是单向的，模型只能看到左侧的上下文。但这恰恰符合文本生成的场景——你在写作时，只能根据已经写下的内容来决定下一个词。</p><p>GPT-1在2018年6月发布时并没有引起太大关注，因为它在很多任务上不如BERT。但OpenAI坚持了这个方向，并在2019年发布了GPT-2，参数量从1.17亿增加到15亿。</p><p>GPT-2展现出了惊人的生成能力，给定一个开头，它能续写出连贯、有逻辑的长文本。更令人惊讶的是，它在零样本(zero-shot)设置下就能完成很多任务，不需要针对性的微调。</p><p><strong>两条路线的本质差异</strong></p><p>BERT和GPT代表了两种不同的AI哲学：</p><p>BERT是”理解型”模型，它通过双向上下文建立深层语义表示，擅长判断、分类、匹配等需要理解的任务。但它不是为生成设计的，生成文本时需要额外的解码策略。</p><p>GPT是”生成型”模型，它通过预测下一个词学习语言的概率分布，天然适合文本生成。虽然是单向的,但通过足够大的规模和数据，它也能展现出强大的理解能力。</p><p>2020年，GPT-3的发布彻底改变了游戏规则。1750亿参数的规模让它展现出了”涌现能力”——仅通过少量示例(few-shot)甚至零样本就能完成各种任务，不需要微调。这证明了生成式预训练的路线具有更好的可扩展性。</p><p>从此，大语言模型的主流范式转向了GPT的自回归生成路线。BERT仍然在特定的理解任务上有价值，但在通用人工智能的道路上，GPT代表的生成式模型走得更远。</p><p>这个分野不仅是技术路线的选择，更反映了对智能本质的不同理解：智能是理解世界，还是生成世界？或许两者本就是一体两面，而生成能力恰恰是更高层次的理解。</p><h2>MoE专家模型：稀疏激活的智慧</h2><p>当GPT-3用1750亿参数震惊世界时，人们开始思考一个问题：模型是不是越大越好?如果是，那么训练和推理的成本会不会成为瓶颈?</p><p>2021年，Google发布了Switch Transformer，参数量达到1.6万亿，是GPT-3的9倍多。但令人惊讶的是，它的训练成本反而更低，推理速度也更快。秘密就在于MoE(Mixture of Experts，混合专家模型)架构。</p><p><strong>专家分工的哲学</strong></p><p>MoE的核心思想来自一个朴素的观察：人类社会的高效运作依赖于专业分工。你不需要每个人都懂所有知识，而是让不同的专家处理不同的问题。医生看病，律师打官司，工程师写代码，各司其职。</p><p>传统的密集模型就像一个”全能选手”，每次推理都要激活所有参数。而MoE模型则像一个”专家团队”，包含多个子网络(专家)，每次只激活其中的一部分。一个门控网络(Gating Network)负责决定对于当前输入应该咨询哪些专家。</p><p>具体来说，MoE层会替换Transformer中的前馈网络(FFN)。对于每个token，门控网络计算一个概率分布，选择Top-K个专家来处理，然后将这些专家的输出加权求和。其他专家则完全不参与计算，参数保持”休眠”状态。</p><img width="1080" height="641" alt="image" src="https://github.com/user-attachments/assets/c5c311c7-db4f-4c6c-b67a-60ecfa617610" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>这个过程对用户是完全透明的。你无法直接指定”用数学专家来回答这个问题”——即使在提示词中写”你是一个数学专家”，这也只是在引导模型的输出风格，而不是在激活某个特定的MoE专家。MoE的专家是模型内部的神经网络模块，它们的激活是由门控网络根据每个token的特征自动决定的。</p><p>但提示词的内容确实会间接影响专家的选择。当你输入”计算这个积分”时，后续生成的token（数学符号、公式）会让门控网络倾向于激活在数学数据上训练较多的专家；当你输入”写一段Python代码”时，生成的代码token会激活擅长编程的专家。这种专业化是在训练过程中自动涌现的——不同的专家在不同类型的数据上获得了更低的损失，门控网络学会了根据token特征来路由到合适的专家。</p><p>有趣的是，研究者通过分析发现，专家的分工并不总是按照人类理解的”领域”来划分。有的专家可能专注于处理长句子，有的专注于处理罕见词汇，有的专注于某种语法结构。这种分工是数据驱动的，而非人为设计的。你在提示词中指定的”角色”，只是在语义层面引导模型，而MoE专家的激活发生在更底层的token处理层面。</p><p><strong>稀疏激活的优势</strong></p><p>这种设计带来了三个关键优势：</p><p><strong>参数效率</strong>：虽然总参数量巨大，但每次推理只使用一小部分。Switch Transformer有1.6万亿参数，但每个token只激活其中的0.1%，实际计算量相当于一个10亿参数的密集模型。</p><p><strong>训练加速</strong>：由于每次只更新部分参数，训练时的计算量和通信开销都大幅降低。Switch Transformer在相同的计算预算下，训练速度比T5快了7倍。</p><p><strong>专业化能力</strong>：不同的专家会自动学习处理不同类型的输入。有的专家擅长处理数学问题，有的擅长处理代码，有的擅长处理对话。这种专业化分工让模型在各个领域都能有更好的表现。</p><p><strong>从理论到实践</strong></p><p>MoE的思想其实在1991年就被提出了，但直到深度学习时代才真正发挥作用。早期的尝试面临两个主要挑战：</p><p><strong>负载均衡</strong>：如果所有输入都倾向于选择同一个专家，那么专家分工就失效了。为了解决这个问题，研究者引入了辅助损失函数，鼓励门控网络均匀地使用各个专家。</p><p><strong>训练稳定性</strong>：稀疏激活导致梯度更新不均匀，容易出现训练不稳定。Switch Transformer通过降低专家容量、使用更小的初始化等技巧解决了这个问题。</p><p>2022年，Google的GLaM模型(1.2万亿参数)在少样本学习任务上超越了GPT-3，但训练成本只有GPT-3的三分之一。同年，OpenAI也在GPT-4中采用了MoE架构(虽然官方没有公开确认，但多方证据表明如此)。</p><p>2024年，Mistral AI发布的Mixtral 8x7B成为开源社区的明星。它有8个专家，每次激活2个，总参数量47B，但激活参数只有13B。在多个基准测试中，它的表现接近甚至超越了GPT-3.5，但推理成本要低得多。</p><p>2024年底，中国的DeepSeek团队将MoE技术推向了新的高度。DeepSeek-V3采用了创新的多token预测和细粒度专家分割技术，用不到600万美元的训练成本就达到了GPT-4级别的性能。更令人震惊的是，2025年初发布的DeepSeek-R1通过强化学习进一步提升了推理能力，在数学和编程等任务上超越了OpenAI的o1模型。DeepSeek证明了，通过精心设计的MoE架构和训练策略，可以用极低的成本训练出世界级的大模型，这彻底改变了人们对AI训练成本的认知。</p><p><strong>专家模型的挑战</strong></p><p>尽管MoE展现出巨大潜力，但它也带来了新的挑战：</p><p><strong>内存占用</strong>：虽然计算量减少了，但所有专家的参数都需要加载到内存中。这对硬件提出了更高要求，也限制了模型的部署场景。</p><p><strong>通信开销</strong>：在分布式训练中，不同的专家可能分布在不同的设备上，门控决策需要跨设备通信，这会成为新的瓶颈。</p><p><strong>专家坍塌</strong>：如果训练不当，可能出现只有少数专家被频繁使用，其他专家退化的情况。这需要精心设计的训练策略来避免。</p><p><strong>推理优化</strong>：如何在保持稀疏性的同时优化推理速度，如何在边缘设备上部署MoE模型，这些都是工程上的难题。</p><p><strong>从密集到稀疏的范式转变</strong></p><p>MoE代表了深度学习的一个重要趋势：从密集计算走向稀疏计算。这不仅是工程优化，更是对智能本质的新理解。</p><p>人脑有860亿个神经元，但在处理特定任务时，只有一小部分神经元被激活。这种稀疏激活机制让大脑能够在有限的能量预算下实现强大的智能。MoE模型正是在模仿这种机制。</p><p>更深层次地看，MoE体现了”规模”与”效率”的平衡。过去十年，深度学习的进步主要靠暴力堆砌参数和数据。但这条路不可能无限走下去，能源、成本、环境的约束都在逼近。MoE提供了一条新路：通过更聪明的架构设计，用更少的计算实现更强的能力。</p><p>这种思路在计算机产业史上并不陌生。从单核到多核，从CPU到GPU，从集中式到分布式，每一次架构创新都是在追求更高的性价比。MoE或许只是开始，未来还会有更多稀疏化、模块化的架构出现。</p><p>毕竟，智能的本质不是”知道所有事情”，而是”知道在什么时候调用什么知识”。这正是专家模型想要实现的。</p><h2>进化的逻辑</h2><p>回顾深度学习的进化之路，我们可以看到清晰的演进逻辑：</p><p>CNN解决了空间局部性问题，让神经网络能够理解图像的层次化特征。它的成功证明了深度学习的潜力，但也暴露了对特定数据结构的依赖。</p><p>RNN引入了记忆机制，让神经网络能够处理序列数据。但序列化的计算方式限制了它的规模化能力，长期依赖问题也始终没有完美解决。</p><p>Transformer通过注意力机制实现了并行化，打破了序列处理的瓶颈。它的通用性和可扩展性使其成为深度学习的新基础架构。</p><p>BERT和GPT则探索了两条不同的预训练路线，最终GPT的生成式范式因为更好的可扩展性和涌现能力而成为主流。</p><p>每一次架构创新，都不是凭空产生的，而是针对前一代模型的局限性提出的解决方案。这个过程遵循着”问题驱动”的规律：当一个架构在某些任务上遇到瓶颈时，新的架构就会应运而生。</p><p>更重要的是，这些架构的演进体现了深度学习从”特定任务”走向”通用智能”的趋势。CNN是为图像设计的，RNN是为序列设计的，而Transformer是通用的。GPT-3的出现更是证明了，通过足够大的规模和数据，单一的生成式模型可以处理几乎所有的语言任务。</p><p>这种从专用到通用的演进，与计算机产业的发展何其相似。从专用计算机到通用计算机，从单一功能的软件到操作系统，从垂直应用到平台生态，技术的进化总是朝着更通用、更可扩展的方向前进。</p><p>而现在，大语言模型正在成为新的”操作系统”，为各种AI应用提供基础能力。这或许就是深度学习进化的下一站。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;这篇文章我想整理一下深度神经网络的进化之旅。从CNN到Transformer，再到GPT，这些模型架构设计过程中是怎么进化的，每个模型解决了什么问题。&lt;/p&gt;
&lt;p&gt;深度学习的发展并非一蹴而就，而是在不断解决实际问题的过程中逐步演进的。每一次架构创新，都是针对前一代模型的局限性提出的解决方案。这个过程就像计算机产业的发展一样，遵循着”问题-突破-新问题-新突破”的螺旋上升规律。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/categories/AI/"/>
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/tags/AI/"/>
    
    <category term="BERT" scheme="https://blog.hufeifei.cn/tags/BERT/"/>
    
    <category term="GPT" scheme="https://blog.hufeifei.cn/tags/GPT/"/>
    
  </entry>
  
  <entry>
    <title>AI大事件</title>
    <link href="https://blog.hufeifei.cn/2026/01/ai/ai-events/"/>
    <id>https://blog.hufeifei.cn/2026/01/ai/ai-events/</id>
    <published>2026-01-14T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2>2012 - 2015 年：深度学习大爆炸</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2012.09</td><td>CNN 崛起 (AlexNet)</td><td>深度卷积神经网络首次在 ImageNet 夺冠，准确率远超传统算法</td><td>AlexNet 开启深度学习革命</td><td><a href="https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">AlexNet Paper (NIPS 2012)</a></td></tr><tr><td>2014.06</td><td>GANs (生成对抗网络)</td><td>通过“生成器”与“判别器”博弈，开创生成式 AI 先河</td><td>Ian Goodfellow 提出 GANs 概念</td><td><a href="https://arxiv.org/abs/1406.2661" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">GANs Paper (2014)</a></td></tr><tr><td>2015.06</td><td>YOLO 诞生 (v1)</td><td>提出“You Only Look Once”，将检测视为回归问题，实现实时目标检测</td><td>Joseph Redmon 发布 YOLO，改变了视觉检测效率</td><td><a href="https://arxiv.org/abs/1506.02640" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">YOLO v1 Paper</a></td></tr><tr><td>2015.12</td><td>ResNet (残差网络)</td><td>解决深层网络退化问题，使训练百层甚至千层网络成为可能</td><td>微软发布 ResNet，斩获 ILSVRC 五项第一</td><td><a href="https://arxiv.org/abs/1512.03385" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">ResNet Paper (2015)</a></td></tr></tbody></table><h2>2016 - 2018 年：感知到理解的飞跃</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2016.03</td><td>强化学习突破</td><td>深度学习与强化学习结合，处理极端复杂的博弈空间</td><td>AlphaGo 以 4:1 击败人类顶尖棋手李世石</td><td><a href="https://www.google.com/deepmind/blog/alphago-the-first-computer-program-to-ever-beat-a-professional-player-at-the-game-of-go/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">DeepMind: AlphaGo</a></td></tr><tr><td>2017.06</td><td><strong>Transformer 诞生</strong></td><td>抛弃 RNN，采用“注意力机制”并行处理数据，LLM 的核心架构</td><td>Google 发布《Attention Is All You Need》</td><td><a href="https://arxiv.org/abs/1706.03762" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Transformer Paper (2017)</a></td></tr><tr><td>2018.10</td><td>BERT (预训练双向编码)</td><td>引入“遮罩语言模型”，极大提升 NLP 任务的理解能力</td><td>Google 发布 BERT，刷新 11 项 NLP 纪录</td><td><a href="https://arxiv.org/abs/1810.04805" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">BERT Paper (2018)</a></td></tr></tbody></table><h2>2019 - 2021 年：参数爆炸与生成预热</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2020.05</td><td><strong>GPT-3 (千亿级参数)</strong></td><td>1750 亿参数，首次展现“上下文学习（In-context Learning）”能力</td><td>OpenAI 发布 GPT-3，AI 开始展现惊人的创作潜力</td><td><a href="https://arxiv.org/abs/2005.14165" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI: GPT-3 Paper. Language Models are Few-Shot Learners</a></td></tr><tr><td>2020.05</td><td>DETR</td><td>抛弃 NMS、锚框等手工设计，首次将 Transformer 引入物体检测</td><td>Facebook (Meta) 发布 Transformer架构的DETR挑战CNN架构的YOLO，开启视觉检测新范式</td><td><a href="https://arxiv.org/abs/2005.12872" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">DETR Paper (ECCV 2020)</a></td></tr><tr><td>2020.10</td><td>ViT (Vision Transformer)</td><td>抛弃卷积网络(CNN)，将图像切块后像文本一样处理</td><td>Google 发布《An Image is Worth 16x16 Words》，视觉架构转向 Transformer，挑战 CNN 霸主地位</td><td><a href="https://arxiv.org/abs/2010.11929" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">ViT Paper</a></td></tr><tr><td>2021.01</td><td>CLIP &amp; DALL-E</td><td>借助 ViT 架构将图文关联，实现多模态理解与生成</td><td>OpenAI 发布 DALL-E，开启多模态生成元年</td><td><a href="https://openai.com/blog/dall-e/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI Blog: DALL-E</a></td></tr><tr><td>2021.01**</td><td><strong>MoE &amp; Switch Transformer</strong></td><td>仅激活模型的一部分参数进行计算，实现“稀疏性”，让模型规模突破万亿</td><td>Google 发布 Switch Transformer，参数量达 1.6 万亿</td><td><a href="https://arxiv.org/abs/2101.03961" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Switch Transformer Paper</a></td></tr><tr><td>2021.06</td><td>GitHub Copilot</td><td>基于 OpenAI Codex 的代码补全，AI 辅助编程商业化</td><td>GitHub 推出 Copilot 预览版</td><td><a href="https://github.blog/2021-06-29-introducing-github-copilot-ai-pair-programmer/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">GitHub Blog: Introducing Copilot</a></td></tr></tbody></table><h2>2022 年：大模型觉醒之年</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2022.01</td><td>CoT (思维链)</td><td>通过 “Let’s think step by step” 诱导模型输出中间推理步骤</td><td>Google 发布思维链研究，大幅提升模型逻辑推理能力</td><td><a href="https://arxiv.org/abs/2201.11903" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">CoT Paper (Google Brain)</a></td></tr><tr><td>2022.03</td><td>Chinchilla Scaling Laws</td><td>提出参数量与数据量的最佳平衡比例（约 1:20）</td><td>DeepMind 发布 Chinchilla，70B 模型击败了 175B 的 GPT-3</td><td><a href="https://arxiv.org/abs/2203.15556" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Chinchilla Paper</a></td></tr><tr><td>2022.10</td><td>ReAct 框架</td><td>将“推理(Reason)”与“行动(Act)”结合，允许模型在思考过程中调用搜索等外部工具</td><td>Google &amp; Princeton 发布 ReAct，奠定了 LLM Agent 的底层逻辑</td><td><a href="https://arxiv.org/abs/2210.03629" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">ReAct Paper</a></td></tr><tr><td>2022.11</td><td>ChatGPT 爆发</td><td>基于 GPT-3.5 的对话 AI，首次让公众体验“类人对话”</td><td>OpenAI 发布 ChatGPT，5 天破百万用户</td><td><a href="https://openai.com/blog/chatgpt" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI Blog: Introducing ChatGPT</a></td></tr><tr><td>2022.Q4</td><td>Prompt Engineering（提示工程）</td><td>通过精心设计输入指令引导 LLM 输出</td><td>成为早期 AI 使用者的核心技能</td><td><a href="https://cloud.google.com/discover/what-is-prompt-engineering" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Google Developers: Prompt Design Guide</a></td></tr></tbody></table><h2>2023 年：多模态 + 开源崛起</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2023.03</td><td>GPT-4 发布</td><td>多模态（图像+文本）、更强推理、上下文达 32K</td><td>OpenAI 宣称“AGI 重要一步”</td><td><a href="https://cdn.openai.com/papers/gpt-4.pdf" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI GPT-4 Technical Report</a></td></tr><tr><td>2023.04</td><td>LLM Agent 初现</td><td>LLM 能调用工具、规划任务、自我反思</td><td>AutoGPT、BabyAGI 开源引爆 GitHub</td><td><a href="https://github.com/Significant-Gravitas/AutoGPT" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">AutoGPT GitHub</a><br><a href="https://github.com/yoheinakajima/babyagi" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">BabyAGI GitHub</a></td></tr><tr><td>2023.07</td><td>开源大模型浪潮</td><td>Meta 开源 Llama，打破闭源垄断</td><td>Llama、Falcon、Mistral 推动本地部署</td><td><a href="https://ai.meta.com/llama/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Meta Llama 2 Announcement</a><br><a href="https://falconllm.tii.ae/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Falcon LM (TII)</a><br><a href="https://mistral.ai/news/announcing-mistral-7b/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Mistral AI Launch</a></td></tr><tr><td>2023.09</td><td>RAG（检索增强生成）</td><td>让 LLM 结合私有知识库回答问题</td><td>成为企业落地 LLM 的首选架构</td><td><a href="https://arxiv.org/abs/2005.11401" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Lewis et al., “Retrieval-Augmented Generation”, 2020 (奠基)</a><br><a href="https://python.langchain.com/docs/use_cases/question_answering/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">LangChain RAG Docs</a></td></tr><tr><td>2023.12</td><td>AI Coding 工具普及</td><td>Copilot 全面商用，代码生成进入日常开发</td><td>GitHub Copilot 覆盖超 3 万企业</td><td><a href="https://github.blog/changelog/2023-06-29-copilot-june-2023-update/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">GitHub Copilot Enterprise Launch</a></td></tr></tbody></table><h2>2024 年：Agentic 智能体元年</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2024.02</td><td>Multimodal Agents</td><td>能看图、听音、操作 GUI 的智能体</td><td>Google 推出 Astra，OpenAI 展示 GPT-4V 操控手机</td><td><a href="https://deepmind.google/models/project-astra/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Google Astra Demo (I/O 2024)</a><br><a href="https://openai.com/index/hello-gpt-4o/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI GPT-4o Vision Demo</a></td></tr><tr><td>2024.05</td><td>Memory &amp; Reflection</td><td>Agent 具备长期记忆与事后复盘能力</td><td>Stanford 发布 “Reflexion” 框架</td><td><a href="https://arxiv.org/abs/2303.11366" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Shinn &amp; Cassano et al., “Reflexion: Language Agents with Verbal Reinforcement Learning”, NeurIPS 2023</a></td></tr><tr><td>2024.08</td><td>Function Calling 2.0</td><td>更可靠的工具调用协议（如 MCP 前身）</td><td>Anthropic、OpenAI 升级 Tool Use API</td><td><a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Anthropic Tools Documentation</a><br><a href="https://platform.openai.com/docs/guides/function-calling" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI Function Calling Guide</a></td></tr><tr><td>2024.10</td><td>AI OS / AI Native App</td><td>应用围绕 AI 重构，而非“加个聊天框”</td><td>Notion AI、Cursor、Windsurf 等新锐产品崛起</td><td><a href="https://www.notion.so/product/ai" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Notion AI</a><br><a href="https://cursor.com/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Cursor.sh</a><br><a href="https://windsurf.ai/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Windsurf.ai</a></td></tr></tbody></table><h2>2025 年：规范驱动 + 技术融合爆发年</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2025.01</td><td>DeepSeek</td><td>中国开源模型进入全球第一梯队</td><td>DeepSeek App和DeepSeek-R1开源模型发布</td><td><a href="https://api-docs.deepseek.com/zh-cn/news/news250120" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">DeepSeek-R1 发布，性能对标 OpenAI o1 正式版</a></td></tr><tr><td>2025.01</td><td>Spec-Driven Development (SDD)</td><td>先写规范（Spec），AI 自动生成并维护代码</td><td>AWS 推出 Kiro，GitHub 推出 Spec-kit</td><td><a href="https://aws.amazon.com/cn/blogs/china/use-kiro-specification-driven-development-to-accelerate-data-quality-construction/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">AWS Kiro Announcement (re:Invent 2024)</a><br><a href="https://github.com/github/spec-kit" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">GitHub Spec-kit Docs</a></td></tr><tr><td>2025.05</td><td>MCP (Model Communication Protocol)</td><td>统一 LLM 与外部工具通信的标准协议</td><td>类似“AI 的 USB-C”，被 Cursor、Continue、Claude 采纳</td><td><a href="https://github.com/modelcontextprotocol/modelcontextprotocol" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">MCP Specification (GitHub)</a></td></tr><tr><td>2025.07</td><td>Agentic IDE</td><td>IDE 内置自主编程智能体（非仅补全）</td><td>Cursor Pro、Trae、Qoder 支持“自然语言建项目”</td><td><a href="https://cursor.com/cn/docs/agent/modes#agent" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Cursor Agentic Mode</a><br><a href="https://trae.ai/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Trae.ai</a><br><a href="https://qoder.com/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Alibaba Qoder</a></td></tr><tr><td>2025.09</td><td>AI Factories / AI DevOps</td><td>用 AI 自动构建、测试、部署其他 AI 应用</td><td>Microsoft 提出“AI 生产 AI”范式</td><td><a href="https://news.microsoft.com/build-2025/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Microsoft Build 2025 Keynote</a></td></tr><tr><td>2025.10</td><td>Skills (技能)</td><td>模块化、可共享的 Agent 能力包</td><td>Anthropic 在 Claude Code 中正式支持 Skills</td><td><a href="https://claude.com/blog/skills" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Introducing Agent Skills</a></td></tr></tbody></table><blockquote><ul><li><a href="https://cursor.com/cn/changelog" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Cursor Changelog</a></li><li><a href="https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Claude Code Changelog</a></li><li><a href="https://opencode.ai/changelog" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenCode Changelog</a></li><li><a href="https://kiro.dev/changelog/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Kiro Changelog</a></li><li><a href="https://qoder.com/changelog" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Qoder Changelog</a></li><li><a href="https://manus.im/zh-cn/updates" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Manus更新日志</a></li><li><a href="https://github.blog/changelog/label/copilot/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Copilot Changelog</a></li><li><a href="https://platform.openai.com/docs/changelog" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI Changelog</a></li><li><a href="https://platform.claude.com/docs/en/release-notes/overview" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Anthropic Changelog</a></li><li><a href="https://huggingface.co/papers/trending" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Huggingface 论文排行榜</a></li></ul></blockquote><h2>视觉检测演进专项</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2013.11</td><td><strong>R-CNN (二阶段检测)</strong></td><td>开启深度学习检测时代。采用“先选框再分类”的 <strong>CNN</strong> 两阶段法，精度高但计算量巨大（非实时）</td><td>Ross Girshick 发布 R-CNN，奠定物体检测基础架构</td><td><a href="https://arxiv.org/abs/1311.2524" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">R-CNN Paper</a></td></tr><tr><td>2015.06</td><td><strong>YOLO v1 (一阶段检测)</strong></td><td><strong>对比 R-CNN：</strong> 同样基于 <strong>CNN</strong>，但将检测简化为单一回归问题。牺牲微小精度换取极致速度，实现实时检测</td><td>Joseph Redmon 发布 YOLO，改变了工业界视觉落地进程</td><td><a href="https://arxiv.org/abs/1506.02640" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">YOLO v1 Paper</a></td></tr><tr><td>2015.12</td><td>ResNet (残差网络)</td><td>引入残差连接，解决了深度 <strong>CNN</strong> 训练中的梯度消失问题，成为后来所有 YOLO 版本的强力后盾</td><td>微软发布 ResNet，斩获 ILSVRC 五项第一</td><td><a href="https://arxiv.org/abs/1512.03385" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">ResNet Paper</a></td></tr><tr><td>2020.04</td><td>YOLOv4 / v5</td><td>引入 CSPNet 等优化，将 <strong>CNN</strong> 架构的检测性能榨干到极致</td><td>AlexeyAB 与 Ultralytics 发布，成为全球部署最广的检测工具</td><td><a href="https://github.com/ultralytics/yolov5" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">YOLOv5 GitHub</a></td></tr><tr><td>2020.05</td><td><strong>DETR (视觉 Transformer)</strong></td><td><strong>架构革命：</strong> 彻底抛弃 CNN 时代的锚框和 NMS 后处理，首次将 Transformer 引入检测任务</td><td>Facebook 发布 DETR，开启视觉检测“去卷积”进程</td><td><a href="https://arxiv.org/abs/2005.12872" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">DETR Paper</a></td></tr><tr><td>2022.03</td><td>ViT-Adapter</td><td>将 Transformer 的全局建模能力引入检测主干网络，在大尺寸图像检测上超越传统 <strong>CNN</strong></td><td>视觉架构正式开始从卷积向注意力机制大迁移</td><td><a href="https://arxiv.org/abs/2205.08534" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">ViT-Adapter Paper</a></td></tr><tr><td>2024.03</td><td><strong>RT-DETR (实时 Transformer)</strong></td><td><strong>地位更替：</strong> 解决了 Transformer 速度慢的顽疾。在相同延迟下精度全面超越 YOLOv8</td><td>百度发布 RT-DETR，标志着 Transformer 在实时赛道击败 <strong>CNN</strong></td><td><a href="https://arxiv.org/abs/2304.08069" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">RT-DETR Paper</a></td></tr><tr><td>2024.Q2</td><td>Grounding DINO</td><td>结合大语言模型，通过文字指令实现“零样本”物体检测</td><td>物体检测从单一视觉识别进化为多模态语义理解</td><td><a href="https://github.com/IDEA-Research/GroundingDINO" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Grounding DINO</a></td></tr></tbody></table><h2>NLP (自然语言处理) 专项</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2013.01</td><td>Word2Vec (词向量)</td><td>将单词转化为稠密向量，通过数学距离表示语义相似度</td><td>Google 发布 Word2Vec，开启 NLP “词表征”时代</td><td><a href="https://arxiv.org/abs/1301.3781" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Word2Vec Paper</a></td></tr><tr><td>2014.09</td><td>Seq2Seq + Attention</td><td>引入编码器-解码器架构与注意力机制，解决变长序列处理难题</td><td>Bahdanau 等提出 Attention，奠定翻译任务基础</td><td><a href="https://arxiv.org/abs/1409.0473" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Attention Paper (2014)</a></td></tr><tr><td>2017.06</td><td><strong>Transformer 架构</strong></td><td><strong>架构分水岭：</strong> 彻底抛弃 RNN/CNN，利用自注意力机制实现大规模并行训练</td><td>Google 发布《Attention Is All You Need》</td><td><a href="https://arxiv.org/abs/1706.03762" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Transformer Paper</a></td></tr><tr><td>2018.10</td><td>BERT (双向预训练)</td><td>通过遮罩语言模型（MLM）获取上下文语义，统治理解类任务</td><td>Google 发布 BERT，刷新 11 项 NLP 纪录</td><td><a href="https://arxiv.org/abs/1810.04805" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">BERT Paper (2018)</a></td></tr><tr><td>2020.05</td><td>GPT-3 (千亿级参数)</td><td>首次展现“上下文学习”能力，证明了 Scaling Law 的巨大潜力</td><td>OpenAI 发布 GPT-3，开启大模型（LLM）狂潮</td><td><a href="https://arxiv.org/abs/2005.14165" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">GPT-3 Paper</a></td></tr><tr><td>2022.01</td><td>CoT (思维链)</td><td>通过中间推理步骤引导模型，AI 从“预测概率”转向“逻辑模拟”</td><td>Google Brain 发布思维链研究，攻克复杂数学题</td><td><a href="https://arxiv.org/abs/2201.11903" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">CoT Paper</a></td></tr><tr><td>2022.11</td><td>ChatGPT (RLHF)</td><td>引入人类反馈强化学习，让模型生成内容符合人类偏好与安全规范</td><td>OpenAI 发布 ChatGPT，解决“对齐”问题</td><td><a href="https://openai.com/blog/chatgpt" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI Blog: ChatGPT</a></td></tr><tr><td>2024.09</td><td><strong>OpenAI o1 (推理模型)</strong></td><td><strong>范式演进：</strong> 通过强化学习诱导模型在输出前进行长时间的自我推理</td><td>OpenAI 发布 o1 预览版，显著提升理科逻辑能力</td><td><a href="https://openai.com/index/introducing-openai-o1-preview/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI o1 Announcement</a></td></tr><tr><td>2025.01</td><td><strong>DeepSeek-R1 (推理开源)</strong></td><td>纯强化学习训练的开源推理模型，低成本复现 o1 级别性能</td><td>DeepSeek 发布 R1 系列，打破推理大模型闭源垄断</td><td><a href="https://api-docs.deepseek.com/zh-cn/news/news250120" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">DeepSeek-R1 News</a></td></tr><tr><td>2025.Q4</td><td>Logic-Native LLMs</td><td>逻辑推理层与语言表述层彻底分离，解决大模型幻觉问题</td><td>工业界普及“逻辑内核”架构，模型回答准确率趋近 100%</td><td><a href="#">LLM Logic Research</a></td></tr></tbody></table><h2>语音处理 (Speech) 专项</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2012.11</td><td>DNN-HMM (深度神经网络)</td><td>DNN 取代传统的混合高斯模型（GMM），识别率实现质的飞跃</td><td>微软与 Google 联合宣布深度学习在语音识别的突破</td><td><a href="https://ieeexplore.ieee.org/document/6296526" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">DNN-HMM Research</a></td></tr><tr><td>2016.09</td><td><strong>WaveNet (神经生成)</strong></td><td>摒弃拼接合成，基于神经网络逐个采样点生成原始音频波形</td><td>DeepMind 发布 WaveNet，让机器合成音接近人声</td><td><a href="https://arxiv.org/abs/1609.03499" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">WaveNet Paper</a></td></tr><tr><td>2017.12</td><td>Tacotron 2</td><td>简化 TTS 流程，实现从字符到梅尔频谱的端到端合成</td><td>Google 发布 Tacotron 2，确立了现代 TTS 的基本范式</td><td><a href="https://arxiv.org/abs/1712.05884" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Tacotron 2 Paper</a></td></tr><tr><td>2022.09</td><td><strong>Whisper (通用识别)</strong></td><td>基于 Transformer 的大规模弱监督预训练，解决杂音与多语言难题</td><td>OpenAI 开源 Whisper 语音识别系列模型</td><td><a href="https://arxiv.org/abs/2212.04356" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Whisper Paper</a></td></tr><tr><td>2023.01</td><td>VALL-E (神经编解码)</td><td>基于离散代码的神经编解码语言模型，实现“3秒克隆”声音</td><td>微软发布 VALL-E，开启了个性化语音生成元年</td><td><a href="https://arxiv.org/abs/2301.02111" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">VALL-E Paper</a></td></tr><tr><td>2024.05</td><td><strong>GPT-4o (原生语音交互)</strong></td><td><strong>范式演进：</strong> 彻底抛弃 ASR+TTS 链路，实现音频输入输出的端到端训练</td><td>OpenAI 发布 GPT-4o，延迟低至 320ms，具备情感表达</td><td><a href="https://openai.com/index/hello-gpt-4o/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenAI Blog: GPT-4o</a></td></tr><tr><td>2025.01</td><td>Audio-Reasoning (语音推理)</td><td>语音模型具备“思考”能力，能通过音调、语气推断用户真实意图</td><td>OpenAI 升级 Advanced Voice Mode 推理能力</td><td><a href="#">OpenAI Voice Updates</a></td></tr><tr><td>2025.10</td><td>Skill-Based Voice Agents</td><td>将语音交互与 Agent 技能包结合，AI 可通过语音操控外部应用</td><td>Anthropic 在 Claude Code 语音版中支持 Skills 调用</td><td><a href="https://claude.com/blog/skills" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Introducing Voice Skills</a></td></tr></tbody></table><h3>多模态生成 (AIGC) 专项：从像素重组到物理模拟</h3><p>该领域完成了从“乱涂乱画”到“理解物理世界规律”的跨越。</p><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2014.06</td><td>GANs (对抗网络)</td><td>生成器与判别器博弈，开启了深度学习生成图像的先河</td><td>Ian Goodfellow 提出 GANs 架构</td><td><a href="https://arxiv.org/abs/1406.2661" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">GANs Paper</a></td></tr><tr><td>2021.12</td><td><strong>Diffusion (扩散模型)</strong></td><td>通过“去噪”过程生成图像，稳定性与多样性全面超越 GANs</td><td>OpenAI 发布 GLIDE，Stable Diffusion 随后爆发</td><td><a href="https://arxiv.org/abs/2112.10741" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Diffusion Paper</a></td></tr><tr><td>2022.08</td><td>Stable Diffusion</td><td>开源图像生成模型，支持通过 Prompt 精确控图</td><td>Stability AI 发布 SD v1.4，引爆 AI 绘画狂潮</td><td><a href="https://stability.ai/blog/stable-diffusion-public-release" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">SD Launch</a></td></tr><tr><td>2024.02</td><td><strong>Sora (视频生成)</strong></td><td>基于 Transformer 处理时空切块，生成长达 1 分钟的一致性视频</td><td>OpenAI 发布 Sora，展现了“模拟物理世界”的潜力</td><td><a href="https://openai.com/sora" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Sora Blog</a></td></tr><tr><td>2025.12</td><td><strong>World Models (世界模型)</strong></td><td>AI 不仅生成画面，还能预测物体碰撞、重力等物理反馈</td><td>视觉生成模型与物理引擎彻底融合，用于机器人预训练</td><td><a href="https://worldmodelresearch.com/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">World Models Research</a></td></tr></tbody></table><h3>具身智能 (Embodied AI) 专项：AI 走进现实世界</h3><p>这是 AI 的“终极战场”，让算法拥有实体，在物理空间执行任务。</p><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2022.08</td><td>PaLM-SayCan</td><td>将大语言模型作为机器人的“大脑”，规划复杂指令</td><td>Google 展示机器人根据指令拿取零食</td><td><a href="https://arxiv.org/abs/2204.01691" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">SayCan Paper</a></td></tr><tr><td>2023.07</td><td>RT-2 (视觉-语言-动作)</td><td>提出 VLA 模型，将视觉识别与机器人动作控制统一训练</td><td>Google 发布首个视觉-语言-动作大模型</td><td><a href="https://deepmind.google/blog/rt-2-new-model-translates-vision-and-language-into-action/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">RT-2 Blog</a></td></tr><tr><td>2024.03</td><td><strong>Figure 01 + OpenAI</strong></td><td>机器人接入大模型，实现边说话边根据视觉反馈整理餐具</td><td>Figure 发布接入 OpenAI 的机器人演示视频</td><td><a href="https://www.figure.ai/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Figure AI News</a></td></tr><tr><td>2025.02</td><td><strong>End-to-End Robotics</strong></td><td>抛弃手工写代码控制关节，实现“视觉输入-动作输出”的全端到端训练</td><td>特斯拉 Optimus 实现高度类人的灵巧手操作</td><td><a href="https://www.tesla.com/AI" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Tesla AI Day 2025</a></td></tr><tr><td>2026.01</td><td>Robot-Brain 标准化</td><td>类似电脑系统的统一机器人底层系统出现，实现技能跨硬件迁移</td><td>宇树、Figure 等厂商达成机器人通用指令集共识</td><td><a href="#">Unified Robot OS</a></td></tr></tbody></table><h3>AI for Science 专项：AI 改变科研范式</h3><p>AI 开始解决人类几十年无法攻克的科学难题（生物、材料、气象）。</p><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2020.11</td><td><strong>AlphaFold 2</strong></td><td>破解困扰生物学 50 年的“蛋白质折叠”难题</td><td>DeepMind 预测了几乎所有人类已知蛋白质结构</td><td><a href="https://www.nature.com/articles/s41586-021-03819-2" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">AlphaFold 2 Nature</a></td></tr><tr><td>2023.03</td><td>GraphCast</td><td>基于图神经网络的气象预测，精度与速度远超传统数值模拟</td><td>Google 发布全球最准的中期天气预报模型</td><td><a href="https://arxiv.org/abs/2212.12794" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">GraphCast Paper</a></td></tr><tr><td>2023.11</td><td>GNoME (新材料预测)</td><td>AI 预测了 220 万种新晶体结构，相当于人类 800 年的知识积累</td><td>DeepMind 发布新材料预测成果</td><td><a href="https://deepmind.google/blog/millions-of-new-materials-discovered-with-deep-learning/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">GNoME Blog</a></td></tr><tr><td>2025.05</td><td><strong>Drug-Discovery LLM</strong></td><td>专用大模型实现从靶点发现到药物分子设计的自动化</td><td>首款由 AI 全流程设计的抗癌药物进入三期临床</td><td><a href="https://arxiv.org/html/2409.04481v1" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">AI Medicine Review</a></td></tr></tbody></table><h2>音乐生成 (Music AI) 专项演进史</h2><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2016.09</td><td>Sony Flow Machines</td><td>AI 辅助创作。通过算法学习曲风，辅助人类写出旋律</td><td>索尼发布全球首支 AI 创作流行曲《Daddy’s Car》</td><td><a href="https://www.sonycsl.co.jp/tokyo/2911/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Sony AI Music</a></td></tr><tr><td>2019.04</td><td>MuseNet (OpenAI)</td><td>深度学习作曲。能模拟 10 种乐器，结合从古典到流行的曲风</td><td>OpenAI 发布 MuseNet，展示跨流派编排能力</td><td><a href="https://openai.com/blog/musenet/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">MuseNet Blog</a></td></tr><tr><td>2023.01</td><td><strong>MusicLM (Google)</strong></td><td><strong>语义里程碑：</strong> 首次实现根据复杂文本描述（如“带有热带风情的爵士乐”）生成高保真音频</td><td>Google 发布 MusicLM，将音乐生成引入大模型时代</td><td><a href="https://arxiv.org/abs/2301.11325" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">MusicLM Paper</a></td></tr><tr><td>2023.06</td><td>AudioCraft / MusicGen</td><td>Meta 开源的音乐生成模型，支持通过旋律和文字共同控制</td><td>Meta 开源 AudioCraft，推动了社区二次开发热潮</td><td><a href="https://github.com/facebookresearch/audiocraft" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">AudioCraft GitHub</a></td></tr><tr><td>2023.12</td><td><strong>Suno v2</strong></td><td><strong>全流程集成：</strong> 首次在网页端实现“歌词+旋律+人声”一键生成，降低了创作门槛</td><td>Suno 接入 Copilot 插件，开启 AI 音乐平民化元年</td><td><a href="https://suno.com/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Suno v2 Launch</a></td></tr><tr><td><strong>2024.03</strong></td><td><strong>Suno v3 / Udio</strong></td><td><strong>工业革命：</strong> 生成质量达到“广播级”，具备复杂的转调、和声及情感表达</td><td>Suno v3 发布；随后 Udio 带着更高的音频保真度横空出世</td><td><a href="https://suno.com/blog/v3" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Suno v3 News</a></td></tr><tr><td>2025.01</td><td><strong>Mureka / Suno v5</strong></td><td><strong>本地化与推理：</strong> 深度理解特定语言（如中文）的曲风韵律，支持更长的生成时长（8分钟+）</td><td>昆仑万维发布 Mureka；Suno 更新至 v5，音质实现无损化</td><td><a href="https://www.mureka.ai/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Mureka AI</a></td></tr><tr><td>2026.01</td><td><strong>Interactive DAW Agent</strong></td><td>AI 进驻数字音频工作站（DAW），支持对生成的音轨进行分层精修</td><td>AI 音乐生成从“一键开盲盒”进化为“可交互生产力”</td><td><a href="#">AI DAW News</a></td></tr></tbody></table><h3>智能体 (Agentic Workflow) 专项：从工具到员工</h3><p>不仅是对话，而是 AI 能够自主规划、使用工具、完成闭环任务。</p><table><thead><tr><th>时间</th><th>概念</th><th>核心内容</th><th>代表事件</th><th>链接</th></tr></thead><tbody><tr><td>2023.04</td><td>AutoGPT / BabyAGI</td><td>首次展示 AI 能够自我拆解任务并循环执行</td><td>开源社区掀起“自主智能体”热潮</td><td><a href="https://github.com/Significant-Gravitas/AutoGPT" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">AutoGPT GitHub</a></td></tr><tr><td>2024.08</td><td><strong>MCP (模型通信协议)</strong></td><td>统一 AI 模型与外部数据库、工具、App 之间的通信标准</td><td>Anthropic 发布 MCP，打破智能体连接壁垒</td><td><a href="https://github.com/modelcontextprotocol/modelcontextprotocol" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">MCP GitHub</a></td></tr><tr><td>2025.01</td><td><strong>Agentic IDE</strong></td><td>AI 不仅写代码，还能自主运行测试、修复 Bug、部署服务</td><td>Cursor、Windsurf 成为开发者标配</td><td><a href="https://cursor.com/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Cursor.com</a></td></tr><tr><td>2025.07</td><td><strong>Computer Use</strong></td><td>AI 具备操控操作系统（点击鼠标、输入文字）的视觉导航能力</td><td>Anthropic 与 Apple 合作推出系统级控制 Agent</td><td><a href="https://www.anthropic.com/news/3-5-models-and-computer-use" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Claude Blog</a></td></tr><tr><td>2025.10</td><td>Claude Code / Skills</td><td>智能体具备了模块化的“技能包”，能自主完成复杂的软件工程链路</td><td>Anthropic 发布终端原生 AI 工程师</td><td><a href="https://claude.com/blog/skills" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Claude Code Release</a></td></tr><tr><td>2025.12</td><td>OpenClaw (🦞)</td><td>里程碑：跨OS、跨平台的开源 AI 助手，实现“Any OS, Any Platform”的全局操控</td><td><strong>OpenClaw</strong> 开源，标志着“个人 AI 雇员”时代的平民化</td><td><a href="https://openclaw.ai/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenClaw Website</a></td></tr><tr><td>2026.01</td><td><strong>Agentic OS</strong></td><td>操作系统围绕 Agent 重新设计，App 演变为 Agent 可调用的组件</td><td></td><td>Future of OS</td></tr></tbody></table>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;h2&gt;2012 - 2015 年：深度学习大爆炸&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;时间&lt;/th&gt;
&lt;th&gt;概念&lt;/th&gt;
&lt;th&gt;核心内容&lt;/th&gt;
&lt;th&gt;代表事件&lt;/th&gt;
&lt;th&gt;链接&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;2012.09&lt;/td&gt;
&lt;td&gt;CNN 崛起 (AlexNet)&lt;/td&gt;
&lt;td&gt;深度卷积神经网络首次在 ImageNet 夺冠，准确率远超传统算法&lt;/td&gt;
&lt;td&gt;AlexNet 开启深度学习革命&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;AlexNet Paper (NIPS 2012)&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2014.06&lt;/td&gt;
&lt;td&gt;GANs (生成对抗网络)&lt;/td&gt;
&lt;td&gt;通过“生成器”与“判别器”博弈，开创生成式 AI 先河&lt;/td&gt;
&lt;td&gt;Ian Goodfellow 提出 GANs 概念&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://arxiv.org/abs/1406.2661&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;GANs Paper (2014)&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2015.06&lt;/td&gt;
&lt;td&gt;YOLO 诞生 (v1)&lt;/td&gt;
&lt;td&gt;提出“You Only Look Once”，将检测视为回归问题，实现实时目标检测&lt;/td&gt;
&lt;td&gt;Joseph Redmon 发布 YOLO，改变了视觉检测效率&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://arxiv.org/abs/1506.02640&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;YOLO v1 Paper&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2015.12&lt;/td&gt;
&lt;td&gt;ResNet (残差网络)&lt;/td&gt;
&lt;td&gt;解决深层网络退化问题，使训练百层甚至千层网络成为可能&lt;/td&gt;
&lt;td&gt;微软发布 ResNet，斩获 ILSVRC 五项第一&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://arxiv.org/abs/1512.03385&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;ResNet Paper (2015)&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</summary>
    
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/categories/AI/"/>
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>ReAct Agent架构设计模式</title>
    <link href="https://blog.hufeifei.cn/2026/01/ai/ReAct-Agent/"/>
    <id>https://blog.hufeifei.cn/2026/01/ai/ReAct-Agent/</id>
    <published>2026-01-02T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>2025年结束，过去一年里，AI火爆的一批。从开年梁文峰深度求索的DeepSeek爆火，再到Cursor / Claude Code这种AI编码工具出现，真的颠覆了程序员的三观。AI终于从只会聊天的机器人，变成了能真正赋能工作的生产力工具。而这都归功于AI Agent，所以2025年也被称为AI Agent元年。</p><p>年底的时候<a href="https://ysymyth.github.io/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">姚顺雨</a>入职腾讯的事儿爆火了，回国前他写了篇《<a href="https://ysymyth.github.io/The-Second-Half/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">The Second Half</a>》(中文版：<a href="https://zhuanlan.zhihu.com/p/1896310535865233616" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">AI进入下半场</a>)。</p><img width="1536" height="1024" alt="姚顺雨论文集" src="https://github.com/user-attachments/assets/3a09d8f6-6710-4fb9-bd13-c52053565be5" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>看了一下他的几篇论文，<a href="https://arxiv.org/abs/2305.10601" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">ToT思维树: 利用大型语言模型进行有意识的问题解决</a>和<a href="https://arxiv.org/abs/2210.03629" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">ReAct Agent架构</a>（中文版：<a href="https://zhuanlan.zhihu.com/p/1986190160241644560" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">LLM Agent 的开山之作</a>）最具影响力。其中ReAct是Prompt工程时代的“分水岭论文”，也是Agent时代的“理论起点”。</p><p>这篇文章我记录一下我对AI Agent的一些思考和代码实践。</p><blockquote><p><strong>AI Agent = LLM 作为决策器（Planner） + 工具执行循环（Act Loop）</strong></p></blockquote><h2>AI本质是基于统计的经验主义的概率模型</h2><h3>1. 数据的“炼金术”：词嵌入 (Word Embeddings)</h3><p>AI 并不认识“苹果”或“开心”这些词。在它的世界里，一切都是数字。</p><ul><li><strong>向量空间：</strong> AI 会把每一个词转化成一串长长的数字坐标（向量）。</li><li><strong>语义相近：</strong> 在这个高维空间里，“猫”和“狗”的坐标离得很近，而“猫”和“手机”就离得很远。</li><li><strong>逻辑运算：</strong> 著名的例子是：$国王 - 男人 + 女人 = 女王$。AI 通过这种数学关系来理解人类世界的逻辑。</li></ul><p><img src="https://cosminsanda.com/assets/images/pgvector-seaorm/embedded-intuition.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="词向量"></p><p>只不过这个向量是在高维空间中表示，比如常见的预训练模型：</p><ul><li>BERT-base: 768 维</li><li>BERT-large: 1024 维</li><li>BGE-small (v1.5): 384 维</li><li>BGE-base (v1.5): 768 维</li><li>BGE-large (v1.5/M3): 1024 维</li><li>GPT的text-embedding-ada-002: 1536 维</li><li>GPT的text-embedding-3-large: 3072 维</li></ul><p>既然是“炼金术”，训练模型的数据质量也决定了模型的智能程度，也就是计算机领域常说的“Garbage in, Garbage out”。DeepSeek训练成本低的原因出了极其省钱的架构 (MLA/MoE)和极致的硬件压榨，还有关键的一点是高质量数据。这就像从小看名著长大的小孩和从小看言情小说爽文长大的小孩，自然思考能力差距很大。你用知乎或者维基百科等语料数据训练出来的模型输出的都是结构化表达、知识科普、多角度分析，你用微博、抖音等语料数据训练出来的模型输出的都是情绪偏见、互联网流行梗。。。</p><h3>2. 核心引擎：Transformer 架构与注意力机制</h3><p>2017 年 Google 提出的Transformer是现在所有大模型的基石。</p><ul><li><strong>注意力机制 (Attention)：</strong> 当 AI 读到“他把苹果给了小明，因为它熟透了”时，它能精准地通过“注意力”判断出“它”指代的是“苹果”而不是“小明”。</li><li><strong>并行处理：</strong> 以前的 AI 是一字一句读，现在的 AI 是把整篇文章“瞬间”吞下，同时分析所有词与词之间的联系。</li></ul><p><img src="https://api.ibos.cn/v4/weapparticle/accesswximg?aid=84785&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL3N6X21tYml6X3BuZy83VFdSaGg0eGlja21NajNBdElJOUVVWk00dHdkMzcyaWFaRXF4b2FCNk5lQWd2R1VBMGpTN1FxdGxvUDVESjlLWndiUGVVWERoOHJiRVJYZ2xxVjViYkxnLzY0MD93eF9mbXQ9b3RoZXImYW1w;from=appmsg&wxfrom=5&wx_lazy=1&wx_co=1&tp=webp" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="Transformer"></p><h3>3. 本质：超级“接龙”游戏</h3><p>不管外表看起来多么像人类，AI 的底层逻辑始终是<strong>预测概率</strong>。</p><ul><li><strong>概率预测：</strong> 当你问“今天天气”，AI 并不是在“思考”，而是在计算：在“今天天气”后面，出现“不错”的概率是 80%，出现“火星”的概率是 0.001%。</li><li><strong>涌现能力：</strong> 当模型规模大到一定程度（比如几千亿个参数）时，这种简单的“接龙”突然表现出了推理、编程、甚至幽默感。科学家管这叫“涌现”（Emergence）。用通俗的话说就是“读书百遍，其义自见”</li></ul><p><img src="https://image.woshipm.com/2024/05/28/36df96da-1cac-11ef-b503-00163e142b65.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="大模型文本预测"></p><p><strong>AI 工作流程 = 将文字变数字 → 在高维空间找关系 → 计算下一个字出现的最高概率。</strong></p><h2>ReAct</h2><p>现在的大模型更像是一个知识渊博的学者，他读了全世界文档、书籍、论文，但是大模型的知识只停留在训练完成前采集的数据，没有新的数据喂给他。</p><p>所以在此之前大模型的方向是通过RAG去检索外部的文档数据，这在<a href="https://blog.hufeifei.cn/2025/07/DataStructure/information-retrieval/">之前的一篇文章</a>中有过记录。RAG就是在模型生成答案前，先从外部系统检索相关知识，再把这些知识作为上下文交给模型生成回答返回给用户。</p><p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b4ee6fd-fcc2-4e02-9f6c-472615c77730_800x830.gif" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="RAG与GraphRAG"></p><p>但是RAG仍然只是停留在信息的检索，没有对外部世界产生影响。即使是<a href="https://github.com/microsoft/graphrag" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">GraphRAG</a> 本质上仍然是在解决“回答得更准”的问题，而不是“把事情做完”。</p><p>当问题只需要一个确定答案时，检索足够；但一旦任务需要决策、执行和反馈，仅仅把外部信息塞进上下文提示词就显得力不从心。模型无法根据中间结果调整行为，也无法主动调用外部能力去改变系统状态。</p><p>从工程角度看，RAG 的能力边界非常清晰：它只能“读”，不能“写”。</p><p>检索系统负责把外部世界的状态投射进模型的上下文，但模型本身并不具备改变这些状态的能力。无论是调用接口、修改配置、触发任务，还是根据中间结果重新规划流程，RAG 都无法完成闭环。</p><p>一旦目标从“生成答案”升级为“完成任务”，大模型就必须具备行动能力，而这正是 Agent 架构出现的直接原因。RAG可以作为Agent的信息来源，辅助大模型决策。</p><p><img src="https://i-blog.csdnimg.cn/direct/013fb3febf17434ba0e7222b2e5fe59b.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="ReAct架构图"></p><p>ReAct结合Reasoning和Action，将推理的内容转化成可实践的任务，再根据任务执行后环境反馈的错误再进行反思，如此循环最终达到目标。</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">生成提示词 → 调用 AI → 解析响应 → 执行工具 → 重复直到完成</span><br></pre></td></tr></table></figure><p>稍微工程化成这样：</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></pre></td><td class="code"><pre><span class="line">1. 构造上下文 / 提示词（Prompt + State）</span><br><span class="line">2. 调用 LLM（决策 / 生成下一步行动）</span><br><span class="line">3. 解析 LLM 输出（结构化 Action / Tool Call）</span><br><span class="line">4. 执行工具（代码 / API / 系统操作）</span><br><span class="line">5. 更新状态（Memory / Observation）</span><br><span class="line">6. 判断是否完成，否则回到 1</span><br></pre></td></tr></table></figure><p>这就是 <strong>Agent Loop（ReAct / Tool-Use Loop）</strong>。</p><blockquote><p><a href="https://arxiv.org/abs/2309.07864" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">The Rise and Potential of Large Language Model Based Agents: A Survey</a><br><a href="https://zhuanlan.zhihu.com/p/1947265763078562006" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">中文版：大型语言模型智能体的兴起与潜力的调查</a></p></blockquote><p>真实 Agent 一定比这几步复杂，这只是 <strong>“能跑起来的最小 Agent”</strong>，工业级通常会加这些层：</p><h3>1. 状态（State / Memory）</h3><ul><li>short-term memory（当前任务上下文）</li><li>long-term memory（历史、向量库）</li><li>working memory（中间结果）</li></ul><p>否则 Agent 会“失忆”。</p><h3>2. 约束与控制（Guardrail）</h3><ul><li>最大循环次数（防止死循环）</li><li>工具白名单</li><li>输出 Schema 校验</li><li>成本 / token 限制 （<strong>上下文工程</strong>）</li></ul><h3>3. 失败处理（Recovery）</h3><ul><li>Tool 执行失败 → 反馈给 LLM</li><li>解析失败 → 让 LLM 重试 / 修正格式</li><li>结果不满足目标 → 自我反思（self-critique）</li></ul><h3>4. 终止条件（Done / Stop）</h3><p>终止不只是：</p><ul><li>“LLM 说完成了”</li></ul><p>而是：</p><ul><li>达成目标条件</li><li>没有可执行 Action</li><li>达到最大迭代</li><li>置信度 / 评分达标</li></ul><blockquote><p>这也是为什么目前最成功的Agent是Cursor、Claude Code这类编程工具，因为编程这类工作可以通过判断代码编译是否成功，测试用例能不能过(Spec Driven Development)，来判断任务是否达成目标。程序的结果机器是可以验证的。还有一个关键的因素是，代码因为有git做版本控制，即使模型出现幻觉，也可以回滚。所以Coding Agent是目前落地最成功的Agent场景。</p><p>像Manus这样的想做成通用的Agent受限于模型自身能力，目前实际体验效果并没有编程领域Agent带来的震撼性强。</p><table><thead><tr><th>维度</th><th>Coding</th><th>GUI</th></tr></thead><tbody><tr><td>状态可观测</td><td>高</td><td>低</td></tr><tr><td>行为可回滚</td><td>是（git）</td><td>否</td></tr><tr><td>结果可验证</td><td>是（test）</td><td>难</td></tr><tr><td>噪音</td><td>低</td><td>极高</td></tr><tr><td>权限风险</td><td>可控</td><td>极高</td></tr></tbody></table><p>Agent 可行性 ≈ 状态可观测 × 行为可回滚 × 结果可验证 ÷ 风险</p><p><strong>计算机可验证（machine-verifiable）是 Agent 是否可行的核心分水岭</strong>。Agent 能不能落地，和模型强不强关系反而没那么大。</p><p><strong>没有可验证性的 Agent，只能当“助手”，不可能当“执行者”。</strong></p><p>原因很简单，Agent 必须能判断：我做对了吗？要不要 retry？要不要升级策略？如果失败/成功不可判定，就不可能形成闭环。这相当于ReAct-Loop的临界条件，什么时候才能停止这个循环很关键。</p><p>Agent 的未来是「Verification-Driven」而不是「Model-Driven」。现在行业最大误区是：模型越强 → Agent 越可用，但真实情况是：可验证性越强 → Agent 越可靠。Spec-Driven Development 为计算机（而不是人）编写的“可验证契约”。</p><p>模型的各项指标都已经超过人类了，为什么还是没有牛逼的AI应用？问题不在执行者这个执行者的能力，而在任务定义方式。可验证性，就像给博士下达一个可量化的任务。不能量化的主观任务，就算博士也无法判断自己是否完成。</p></blockquote><h2>这个抽象，本质就是一个「状态机」</h2><p>从工程角度看，<strong>Agent = 一个可控的状态机</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><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">┌────────┐</span><br><span class="line">│ Prompt │</span><br><span class="line">└───┬────┘</span><br><span class="line">    ↓</span><br><span class="line">┌────────┐</span><br><span class="line">│  LLM   │  ← 决策器</span><br><span class="line">└───┬────┘</span><br><span class="line">    ↓</span><br><span class="line">┌────────┐</span><br><span class="line">│ Parser │  ← 协议层</span><br><span class="line">└───┬────┘</span><br><span class="line">    ↓</span><br><span class="line">┌────────┐</span><br><span class="line">│ Tools  │  ← 世界接口</span><br><span class="line">└───┬────┘</span><br><span class="line">    ↓</span><br><span class="line">┌────────┐</span><br><span class="line">│ State  │  ← 记忆 / 上下文</span><br><span class="line">└────────┘</span><br><span class="line">    ↑</span><br><span class="line">    └──── loop</span><br></pre></td></tr></table></figure><p>LangGraph/AutoGen/CrewAI/Spring AI Agent等AI Agent框架<strong>本质都是在管这个循环</strong>。</p><h2>工程化落地：AI Agent框架</h2><blockquote><p><strong>ReAct 循环本身很简单，Agent框架不是为“能跑”而生的，而是为“能长期稳定地跑在真实世界”而生的。</strong></p></blockquote><p>最小 ReAct 循环真的很简单，最简版 ReAct，大概就这么点逻辑：</p><figure class="highlight text"><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">while not done:</span><br><span class="line">  prompt = build_prompt(state)</span><br><span class="line">  response = call_llm(prompt)</span><br><span class="line">  action = parse(response)</span><br><span class="line">  observation = run_tool(action)</span><br><span class="line">  state.update(observation)</span><br></pre></td></tr></table></figure><blockquote><p>我这里有rust版本实现的<a href="https://github.com/holmofy/ReAct-Loop" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">ReAct-Loop</a>可以运行起来看一看</p></blockquote><h3>模型输出不稳定（这是第一个地狱）</h3><p>你以为 LLM 会乖乖按照你系统提示词里要求的格式输出：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span> <span class="attr">&quot;tool&quot;</span><span class="punctuation">:</span> <span class="string">&quot;search&quot;</span><span class="punctuation">,</span> <span class="attr">&quot;args&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span> <span class="attr">&quot;q&quot;</span><span class="punctuation">:</span> <span class="string">&quot;xxx&quot;</span> <span class="punctuation">&#125;</span> <span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>现实可能是： JSON 少个括号、字段拼错、输出半截自然语言、tool name 拼错</p><p>大模型并不像传统应用程序一样是“严格执行指令的程序”，大模型的本质是基于概率的token权重模型：在给定上下文的情况下，预测下一个 token 的概率最大值，从而组合成最终的文本返回。即使是相同prompt，相同上下文，重复调用也不一定得到相同的返回，有篇文章专门介绍了《<a href="https://thinkingmachines.ai/blog/defeating-nondeterminism-in-llm-inference/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">在LLM推断中击败非确定性</a>》。你要求大模型严格按json格式输出，但模型会觉得加一句解释，或者返回markdown更友好，人类友好性 vs 机器友好性冲突时，模型常选前者。</p><h3>Tool的模式</h3><p>Agent开发的核心就是提供Tool供大模型决策调用。目前Agent的Tool有三个运行模式：Function Call、MCP、SubAgent。</p><p>1、 Function Call</p><p>我写的<a href="https://github.com/holmofy/ReAct-Loop" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">ReAct-Loop</a>这个例子就是Function Call，这是最简单的模式：就是Agent自身提供一个函数调用作为“Tool”丢给大模型。对于有参数的函数还要把参数和返回值的schema喂给大模型。</p><p>2、 MCP</p><p><a href="https://modelcontextprotocol.io/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">MCP</a>是‌<a href="https://www.anthropic.com/news/model-context-protocol" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Anthropic公司‌于‌2024年11月提出来的</a>。MCP相当于把Function Call做成了可被调用的JSON-RPC服务，这样的好处是Agent与Tool解耦。MCP-Server通过标准的协议定义并暴露自己提供的服务：</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><span class="line">10</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;name&quot;</span><span class="punctuation">:</span> <span class="string">&quot;create_order&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;description&quot;</span><span class="punctuation">:</span> <span class="string">&quot;Create an order&quot;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;inputSchema&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;object&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;properties&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;order_id&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span> <span class="attr">&quot;type&quot;</span><span class="punctuation">:</span> <span class="string">&quot;number&quot;</span> <span class="punctuation">&#125;</span></span><br><span class="line">    <span class="punctuation">&#125;</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><p>Agent注册MCP服务供大模型调用。</p><blockquote><p>MCP 本质上就是把「function call」标准化、外部化、服务化</p></blockquote><p>3、 SubAgent / MultiAgent</p><p>SubAgent ≈ 把一个 agent 封装成一个 tool，供主 agent 调用。这么做的目的是把复杂性问题拆分成子问题交给SubAgent，这主要是解决上下文复杂度，防止主问题prompt爆炸。</p><p><img src="https://cdn.sanity.io/images/2mc9cv2v/production/721e44474051c62156e15b5ffb1a249c996f0607-1404x1228.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="SubAgent"></p><blockquote><p>这里有篇文章专门讲了<a href="https://cognition.ai/blog/dont-build-multi-agents" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">多Agent架构</a> / <a href="https://www.blog.langchain.com/choosing-the-right-multi-agent-architecture/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">选择合适的多Agent架构</a></p></blockquote><p>4、 A2A：Agent间的远程编排协议</p><p>和MCP类似，Agent间为了解耦也搞了个JSON-RPC协议。<a href="https://a2a-protocol.org/latest/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">A2A协议</a>由<a href="https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Google于2025年4月提出的</a>，这和微服务很像：Agent-to-Agent (A2A) 协议支持在运行于不同服务器上的 Agent 之间进行对话转移，这些服务器可能位于不同的数据中心或由不同的组织管理。此能力支持分布式 Agent 架构和微服务部署。</p><p>你可能和我一样有个疑问：既然Agent可以作为Tool，那自然也可以通过MCP远程暴露给调用方，为什么还多此一举再搞个A2A协议？</p><blockquote><p>A2A官网有句话定位很准：</p><p>Build with <strong><a href="https://google.github.io/adk-docs/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"><img alt="ADK Logo" style="display:inline-block;height:19px" src="https://google.github.io/adk-docs/assets/agent-development-kit.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"> ADK</a></strong> <em>(or any framework)</em>, equip with <strong><a href="https://modelcontextprotocol.io" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"><img alt="MCP Logo" style="display:inline-block;height:19px" src="https://modelcontextprotocol.io/mcp.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"> MCP</a></strong> <em>(or any tool)</em>, and communicate with <strong><img style="display:inline-block;height:19px" src="https://a2a-protocol.org/latest/assets/a2a-logo-black.svg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"> A2A</strong>, to remote agents, local agents, and humans.</p></blockquote><table><thead><tr><th>概念</th><th>本质</th></tr></thead><tbody><tr><td>Function tool</td><td><strong>无推理的原子能力</strong></td></tr><tr><td>MCP tool</td><td><strong>远程、标准化的 function tool</strong></td></tr><tr><td>Sub-agent</td><td><strong>有推理能力的复合 tool</strong></td></tr><tr><td>A2A</td><td><strong>多个 Sub-agent 之间的组织与协作机制（复合 tool 的编排层）</strong></td></tr></tbody></table><h2>目前各大厂的Agent框架</h2><p>RAG相关开源项目：</p><ul><li><a href="https://github.com/microsoft/graphrag" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/microsoft/graphrag</a></li><li><a href="https://github.com/infiniflow/ragflow" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/infiniflow/ragflow</a></li><li><a href="https://github.com/HKUDS/LightRAG" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/HKUDS/LightRAG</a></li><li><a href="https://github.com/Tencent/WeKnora" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/Tencent/WeKnora</a></li></ul><p>Agent框架：</p><ul><li><a href="https://github.com/microsoft/autogen" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/microsoft/autogen</a></li><li><a href="https://github.com/google/adk-python" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/google/adk-python</a></li><li><a href="https://github.com/openai/openai-agents-python" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/openai/openai-agents-python</a></li><li><a href="https://github.com/anthropics/anthropic-sdk-python" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/anthropics/anthropic-sdk-python</a></li><li><a href="https://github.com/crewaiinc/crewai" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/crewaiinc/crewai</a></li><li><a href="https://github.com/pydantic/pydantic-ai" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/pydantic/pydantic-ai</a></li></ul><p>AI时代的UI：</p><ul><li><a href="https://github.com/google/A2UI" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/google/A2UI</a></li></ul><p>国内大厂的：</p><ul><li><a href="https://github.com/agentscope-ai/agentscope" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/agentscope-ai/agentscope</a></li><li><a href="https://github.com/TencentCloudADP/youtu-agent" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/TencentCloudADP/youtu-agent</a></li><li><a href="https://github.com/spring-ai-alibaba/DataAgent" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/spring-ai-alibaba/DataAgent</a></li><li><a href="https://github.com/alibaba/spring-ai-alibaba/tree/main/spring-ai-alibaba-agent-framework" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/alibaba/spring-ai-alibaba/tree/main/spring-ai-alibaba-agent-framework</a></li></ul><h2>Rust社区相关库</h2><ul><li><a href="https://github.com/zavora-ai/adk-rust" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/zavora-ai/adk-rust</a></li><li><a href="https://github.com/Abraxas-365/langchain-rust" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/Abraxas-365/langchain-rust</a></li><li><a href="https://github.com/sobelio/llm-chain" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/sobelio/llm-chain</a></li></ul><blockquote><p>推荐阅读：</p><ul><li><a href="https://www.blog.langchain.com/context-engineering-for-agents/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://www.blog.langchain.com/context-engineering-for-agents/</a></li><li><a href="https://cognition.ai/blog/dont-build-multi-agents" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://cognition.ai/blog/dont-build-multi-agents</a></li><li><a href="https://www.blog.langchain.com/choosing-the-right-multi-agent-architecture/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://www.blog.langchain.com/choosing-the-right-multi-agent-architecture/</a></li></ul></blockquote><h2>国内外大厂开源的GUI-Agent</h2><ul><li><a href="https://github.com/TencentQQGYLab/AppAgent" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/TencentQQGYLab/AppAgent</a></li><li><a href="https://github.com/X-PLUG/MobileAgent" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/X-PLUG/MobileAgent</a></li><li><a href="https://github.com/bytedance/UI-TARS-desktop" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/bytedance/UI-TARS-desktop</a></li><li><a href="https://deepwiki.com/microsoft/UFO" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://deepwiki.com/microsoft/UFO</a></li><li><a href="https://github.com/droidrun/droidrun" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/droidrun/droidrun</a></li><li><a href="https://github.com/web-infra-dev/midscene" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://github.com/web-infra-dev/midscene</a></li></ul>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;2025年结束，过去一年里，AI火爆的一批。从开年梁文峰深度求索的DeepSeek爆火，再到Cursor / Claude Code这种AI编码工具出现，真的颠覆了程序员的三观。AI终于从只会聊天的机器人，变成了能真正赋能工作的生产力工具。而这都归功于AI Agent，所以2025年也被称为AI Agent元年。&lt;/p&gt;
&lt;p&gt;年底的时候&lt;a href=&quot;https://ysymyth.github.io/&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;姚顺雨&lt;/a&gt;入职腾讯的事儿爆火了，回国前他写了篇《&lt;a href=&quot;https://ysymyth.github.io/The-Second-Half/&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;The Second Half&lt;/a&gt;》(中文版：&lt;a href=&quot;https://zhuanlan.zhihu.com/p/1896310535865233616&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;AI进入下半场&lt;/a&gt;)。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/categories/AI/"/>
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/tags/AI/"/>
    
    <category term="MCP" scheme="https://blog.hufeifei.cn/tags/MCP/"/>
    
  </entry>
  
  <entry>
    <title>FDAP新一代大数据系统的基石</title>
    <link href="https://blog.hufeifei.cn/2025/12/DB/FDAP/"/>
    <id>https://blog.hufeifei.cn/2025/12/DB/FDAP/</id>
    <published>2025-12-29T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.392Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>最近读了两篇文章，这两篇文章分别从宏观（<a href="https://www.influxdata.com/blog/flight-datafusion-arrow-parquet-fdap-architecture-influxdb/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">InfluxData官方博客</a>）和微观（<a href="https://juejin.cn/post/7423403181994622986" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">掘金社区技术解析</a>）的角度深入探讨了 FDAP 架构（Flight, DataFusion, Arrow, Parquet）及其在现代数据系统中的应用。</p><h2>FDAP：新一代数据系统的基石架构</h2><p>在当今数据爆炸的时代，传统的“大一统”数据平台已难以满足日益多样化和高性能的需求。针对特定场景（如时间序列、日志分析、金融交易等）构建的专用系统，往往能获得10到100倍的性能与成本优势。然而，从零开始构建一个高性能数据库或分析引擎，意味着要重复发明无数个复杂的轮子——内存布局、网络协议、查询优化器、存储格式……这不仅耗时耗力，而且极易出错。</p><p>正是在这样的背景下，FDAP 架构应运而生，并迅速成为构建下一代云原生、高性能数据系统的事实标准。FDAP 并非一个单一的产品，而是由四个强大的开源项目组成的协同技术栈：</p><ul><li>Flight: 高效的数据传输层</li><li>DataFusion: 灵活的查询执行引擎</li><li>Arrow: 统一的内存数据格式</li><li>Parquet: 开放的列式存储格式</li></ul><p>这套组合拳，让开发者能够将精力聚焦于业务逻辑本身，而非底层基础设施的重复建设。</p><h2>FDAP 的核心组件：各司其职，协同增效</h2><p><img src="https://images.ctfassets.net/o7xu9whrs0u9/6N990kUVgp7OYZ2XZ92MZa/9a3e8dd803ead8728e4b61e818867c1e/2_FDAP_Diagram_10.25.2023v1.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="FDAP架构"></p><ol><li>Apache Arrow：内存中的通用语言</li></ol><p>Arrow 定义了一套标准化的、面向列式的内存数据格式。它解决了不同系统间数据交换时昂贵的序列化/反序列化（SerDe）开销问题。想象一下，Python 的 Pandas、Java 的 Spark、C++ 的计算库，如果都使用 Arrow 作为内存表示，它们之间的数据传递就无需任何转换，如同在同一语言内部操作一样高效。</p><p>对于 InfluxDB 3.0 这样的系统而言，采用 Arrow 意味着：<br>省去了自研内存模型的复杂性：无需再纠结于如何表示空值、处理字节序、设计向量化计算等底层细节。<br>无缝集成生态：查询结果可以直接被 Pandas、Spark、DuckDB 等工具消费，极大地简化了数据分析工作流。</p><ol start="2"><li>Apache Parquet：经济高效的持久化存储</li></ol><p>Parquet 是一种开放的、列式存储文件格式，以其卓越的压缩比和高效的谓词下推（Predicate Pushdown）能力而闻名。令人惊讶的是，在 InfluxData 的实践中，通用的 Parquet 格式在综合考虑索引等结构后，其压缩效率甚至比许多专为时间序列设计的私有格式高出5倍。</p><p>选择 Parquet 为 InfluxDB 3.0 带来了巨大的互操作性红利：<br>即插即用：任何支持 Parquet 的系统（如 Snowflake、Presto、Databricks）都可以直接读取 InfluxDB 存储的数据，无需复杂的 ETL 管道。<br>未来可扩展：依托于庞大的 Parquet 生态，系统可以轻松接入未来的分析、BI 或机器学习工具。</p><ol start="3"><li>Apache Arrow Flight &amp; FlightSQL：超高速的数据高速公路</li></ol><p>Flight 是一个基于 gRPC 和 Arrow 构建的高性能 RPC 框架，专为在系统间高效传输 Arrow 数据而设计。在其之上，FlightSQL 定义了一套标准的 SQL 接口。</p><p>这对 InfluxDB 3.0 的意义是革命性的：<br>告别驱动地狱：传统数据库需要为每种语言（JDBC、ODBC、Python DB-API等）维护一套复杂的客户端驱动。而通过实现 FlightSQL，InfluxDB 3.0 自动获得了所有现有 FlightSQL 驱动的支持，省去了一个完整的驱动开发团队。<br>极致性能：Flight 避免了数据在网络传输过程中的编解码开销，使得大规模数据集的传输速度得到数量级的提升。正如 Dremio 的实践所证明，其性能相比传统 ODBC/JDBC 可提升20-50倍。</p><ol start="4"><li>Apache DataFusion：开箱即用的查询大脑</li></ol><p>DataFusion 是一个用 Rust 编写的现代化、可扩展的查询引擎，它天然使用 Arrow 作为内存模型。它内置了SQL解析、查询优化、向量化执行、并行处理等企业级OLAP引擎所需的核心功能。</p><p>对于 InfluxData 而言，这意味着：<br>站在巨人的肩膀上：无需投入数十人年的精力去从头构建一个查询引擎。他们只需在 DataFusion 的基础上，专注于实现时间序列特有的功能，如 InfluxQL 语言支持、数据去重、时间窗口填充等。<br>持续受益于社区：DataFusion 的每一次功能增强和性能优化，都会自动惠及 InfluxDB 3.0。</p><h2>FDAP 的威力：不止于 InfluxDB</h2><p>FDAP 架构的价值已被众多前沿项目所验证。除了作为其命名来源的 InfluxDB 3.0，我们还能看到：</p><ul><li><a href="https://docs.ceresdb.io/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">CeresDB</a>：分布式、云原生时间序列数据库。已捐献给<a href="https://github.com/apache/horaedb" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">apache/horaedb</a></li><li><a href="https://coralogix.com/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Coralogix</a>：全栈可观测平台</li><li><a href="https://www.greptime.com/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Greptime</a>：云原生时间序列数据库</li><li><a href="https://www.synnada.ai/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Synnada</a>：统一的流媒体和分析平台</li><li><a href="https://github.com/openobserve/openobserve" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenObserve</a>：专为日志、指标和追踪构建的可观测性平台</li><li>Dremio：数据即服务平台。这个分布式 SQL 查询引擎深度利用 Arrow 作为其内存核心，并贡献了 Gandiva（一个基于 LLVM 的高性能表达式编译器）来加速 Arrow 上的计算。</li><li><a href="https://spice.ai/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Spice.ai</a>：一个旨在简化 AI/ML 应用开发的运行时，它通过 Arrow 和 Flight 在数据源与 AI 引擎之间建立高效通道，将可处理的数据规模提升了10-100倍。</li></ul><h2>总结：拥抱开放标准，释放创新潜能</h2><p>FDAP 架构的成功，本质上是开放标准和模块化设计理念的胜利。它将构建一个现代数据系统所需的复杂技术分解为几个清晰、独立且高度优化的组件。开发者不再需要“重复造轮子”，而是可以像搭积木一样，组合这些世界级的开源组件，快速构建出高性能、高兼容性的专属解决方案。</p><p>正如 LAMP（Linux, Apache, MySQL, PHP/Python/Perl）堆栈曾赋能了第一代互联网应用的繁荣，我们有理由相信，FDAP 架构将成为驱动下一代数据密集型应用（尤其是云原生、AI/ML 和实时分析场景）创新的核心引擎。对于任何希望在数据领域有所建树的团队和个人来说，理解和掌握 FDAP，无疑是把握未来的关键一步。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;最近读了两篇文章，这两篇文章分别从宏观（&lt;a href=&quot;https://www.influxdata.com/blog/flight-datafusion-arrow-parquet-fdap-architecture-influxdb/&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;InfluxData官方博客&lt;/a&gt;）和微观（&lt;a href=&quot;https://juejin.cn/post/7423403181994622986&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;掘金社区技术解析&lt;/a&gt;）的角度深入探讨了 FDAP 架构（Flight, DataFusion, Arrow, Parquet）及其在现代数据系统中的应用。&lt;/p&gt;
&lt;h2&gt;FDAP：新一代数据系统的基石架构&lt;/h2&gt;</summary>
    
    
    
    <category term="数据库" scheme="https://blog.hufeifei.cn/categories/%E6%95%B0%E6%8D%AE%E5%BA%93/"/>
    
    
    <category term="Flight" scheme="https://blog.hufeifei.cn/tags/Flight/"/>
    
    <category term="DataFusion" scheme="https://blog.hufeifei.cn/tags/DataFusion/"/>
    
    <category term="Arrow" scheme="https://blog.hufeifei.cn/tags/Arrow/"/>
    
    <category term="Parquet" scheme="https://blog.hufeifei.cn/tags/Parquet/"/>
    
  </entry>
  
  <entry>
    <title>计算产业70年：从巨型机到大模型</title>
    <link href="https://blog.hufeifei.cn/2025/10/ai/computer-industry-on-technical/"/>
    <id>https://blog.hufeifei.cn/2025/10/ai/computer-industry-on-technical/</id>
    <published>2025-10-15T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>如果你想用一句话解释过去 70 年计算机产业的全部变化，那就是：</p><blockquote><p><strong>每一次时代变革，都是分层计算栈中某几层发生了质变，然后反过来重塑了整条技术链。</strong></p></blockquote><p>不论是巨型机、PC、互联网、移动互联网、云计算还是 AI，每一次浪潮的内部逻辑，都可以用一张“分层计算栈”概括。</p><p>计算机不是一个单一技术，而是一个<strong>自下而上层层堆叠的巨大系统</strong>。<br>一种经典划分方式是将产业分成<strong>七层技术栈</strong>：</p><ol><li><strong>硬件层（Hardware）</strong></li><li><strong>系统软件层（OS / Compiler / VM）</strong></li><li><strong>平台层（DB、Middleware、Cloud Runtime）</strong></li><li><strong>网络与连接层（Internet、协议、CDN）</strong></li><li><strong>数据层（Data、Search、Index、Analytics）</strong></li><li><strong>应用层（Application）</strong></li><li><strong>用户与社会层（User / Economy / Behavior）</strong></li></ol><p>只要某一层出现跨越式变化，整个产业就会迎来新一轮重构。<br>这就是 IT 行业始终“周而复始”的原因。</p><hr><h1><strong>零、军事需求的奠基：战争催生计算需求</strong></h1><p>现代计算机并不是从民用或学术需求中诞生的，而是直接起源于战争，尤其是二战时期的军事需求</p><p>军事活动出现了几个人力无法承受的计算问题：弹道计算、密码破译、雷达与防空、原子弹研发。这些问题的共同点是：计算量巨大、时间要求极高、人工或机械计算根本来不及。</p><p><img src="https://q0.itc.cn/q_70/images03/20240118/26c2994f871f456baa17c3ebaaac3d61.jpeg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="图灵的Bombe机"></p><p>二战中英国的艾伦·图灵设计了<a href="https://baike.baidu.com/item/Bombe/4708124" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Bombe</a>机通过“机器穷举”破解德军 Enigma 密码，并提出了<a href="https://baike.baidu.com/item/%E5%9B%BE%E7%81%B5%E6%9C%BA" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">图灵机</a>计算模型。计算机科学领域的诺贝尔奖——图灵奖，也为了纪念这位先驱而设立。</p><p>二战中参与美国<a href="https://baike.baidu.com/item/%E6%9B%BC%E5%93%88%E9%A1%BF%E8%AE%A1%E5%88%92/2141" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">曼哈顿计划</a>的冯·诺依曼因计算导弹弹道的需要，为适配不同的武器系统设计军事通用平台提出了冯·诺依曼计算架构，让“通用计算机”成为现实工程。</p><p>二战中美国的克劳德·香农为避免通信传输中的噪声干扰、信息截获等问题，设计了纠错和加密等系统，并提出了《信息论》为现代网络通信和密码学奠定了基础。</p><h1><strong>一、巨型机时代：硬件是王，软件只是附属品</strong></h1><blockquote><p><strong>1950s—1970s：硬件层第一次突破</strong></p></blockquote><p><img src="https://copyright.bdstatic.com/vcg/edit/fb8d46ccbf27cc0d88389f04b89908b4.jpg@h_1280" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><ul><li>电子管、晶体管的发明，使计算机从军事走向科研与国家机构。</li><li>操作系统还十分原始，编程依赖纸带、批处理。</li><li>应用层非常薄，只能运行企业记账、科学计算等简单任务。</li></ul><p><img src="https://images.tmtpost.com/uploads/images/2022/03/7c9f37e5dc96ba6745e1e12eb8a4d8d7_1647240782.png?imageMogr2/auto-orient/strip/interlace/1/quality/85/format/jpg/thumbnail/1400x869/gravity/center/crop/!1400x869&ext=.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>这是计算栈高度不平衡的时代：<br><strong>硬件占据主导地位，系统软件和应用极弱。</strong></p><hr><h1><strong>二、小型机与 UNIX：系统软件成为新中心</strong></h1><blockquote><p><strong>1970s—1980s：操作系统层第一次觉醒</strong></p></blockquote><p><img src="https://bkimg.cdn.bcebos.com/pic/622762d0f703918fa0ec8369db6b319759ee3d6d6e43" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="Unix历史"></p><p>IBM 推出大型机IBM System 360和370，DEC推出PDP系列小型机，AT&amp;T 推出 UNIX(C语言也因此诞生)。<br>第一次，计算机具备了现代意义上的操作系统：</p><ul><li>多任务调度</li><li>用户/权限模型</li><li>文件系统（“一切皆文件”的设计哲学）</li><li>程序接口（API -&gt; <a href="https://baike.baidu.com/item/%E5%8F%AF%E7%A7%BB%E6%A4%8D%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E6%8E%A5%E5%8F%A3/12718298" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">POSIX标准</a>）</li></ul><p>系统软件层变得强大之后，应用层得以爆发：</p><ul><li>终端机</li><li>企业 MIS 系统</li><li>商业数据库（Oracle）</li></ul><p>这是第一次产业重心从“硬件 → 软件”迁移。</p><hr><h1><strong>三、PC 时代：微处理器+桌面操作系统塑造了软件业</strong></h1><blockquote><p><strong>1980s—2000s：硬件和系统软件共同成熟</strong></p></blockquote><p><img src="https://xqimg.imedao.com/136770ea9d41b2c3fdeda37c.jpg!800.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="wintel联盟"></p><p>两项突破改变世界：</p><ol><li><strong>Intel x86 微处理器</strong></li><li><strong>Windows / macOS 图形化操作系统</strong></li></ol><p>PC 技术栈快速完整化：</p><ul><li>硬件：集成电路的发明使得 CPU 可以量产。CPU指令集标准化，x86成为 PC 时代的事实标准。</li><li>OS：图形界面变成主流，施乐公司发明的鼠标也有了用武之地。<blockquote><p>1983年Borland基于Pascal语言开发Turbo Pascal，1987年基于C语言开发了Turbo C成了IBM PC上首个C语言IDE，1990年Turbo C++取代了Turbo C，1995年Turbo Pascal被Delphi取代。<br>另一边微软在1983年也推出了Microsoft C由于不符合ANSI C标准只在微软内部使用，直到1985年才作为产品发布，1993年C++也被微软应用到自己的图形软件开发(VC++/MFC)。</p></blockquote></li><li>网络：TCP/IP 占据互联网基座</li><li>平台：关系数据库、Visual Studio</li><li>应用：Office、金山WPS、QQ、杀毒软件</li><li>用户：计算机进入千家万户</li></ul><p><img src="https://i0.hdslb.com/bfs/archive/14c094d92aabe3f9a5c4356a66a122fc335239f2.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="Win98图形界面"></p><p>这个时代最典型的结构就是：</p><blockquote><p><strong>OS＋应用捆绑的单机软件生态。</strong></p></blockquote><hr><h1><strong>四、互联网时代：网络层成为产业主导</strong></h1><blockquote><p><strong>1995—2008：网络层突破引发应用层爆炸</strong></p></blockquote><ul><li>1966 年：高锟提出可行理论 → 光纤通信概念诞生。</li><li>1970 年：康宁制造出世界上第一根实用低损耗光纤 → 光纤真正诞生。</li><li>1977 年：第一条商用光纤通信线路。</li><li>1980–1990年，欧美和日本开始用光纤铺设长距离主干网，中国赵梓森推动“八纵八横”国家光纤骨干网建设。</li><li>1994年5月21日，在钱天白教授和德国卡尔斯鲁厄大学的协助下，中国科学院计算机网络信息中心完成了中国国家顶级域名（CN）服务器的设置，改变了中国的CN顶级域名服务器一直放在国外的历史。</li><li>1995–2005：光纤全球爆发普及（互联网时代），1998年<a href="https://cmte.ieee.org/photonics-asia/2022/04/29/optical-communication-development-in-china-during-the-past-30-years" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">中国光纤覆盖绝大多数地级市</a>。</li></ul><p><img src="https://b0.bdstatic.com/ugc/iROU6O7kW4_TzACASTOK0A67e6bcc1788e1cbb7694499a55fb6235.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="1989~1990年伯纳斯·李发明万维网"></p><p>万维网（HTTP/HTML）、浏览器、搜索引擎三件事重新定义应用形态：</p><ul><li>应用不再是“装在你电脑上的东西”</li><li>而是 <strong>通过网络实时获取与渲染的超文本</strong></li></ul><p>应用从C/S架构向B/S架构演进。计算栈的力量第一次从设备迁移到了网络：</p><table><thead><tr><th>技术层</th><th>互联网时代标志</th></tr></thead><tbody><tr><td>硬件层</td><td>Intel x86芯片进军服务器市场</td></tr><tr><td>系统软件层</td><td>Linux乘着互联网东风流行</td></tr><tr><td>平台层</td><td>MySQL、Apache、PHP(LAMP开源套件)、Java、JavaScript</td></tr><tr><td>网络层</td><td>HTML / HTTP / 浏览器 / CDN</td></tr><tr><td>数据层</td><td>搜索索引、日志分析、大规模爬虫数据</td></tr><tr><td>应用层</td><td>搜索(Google、百度)、电商(Amazon、阿里)、门户、论坛</td></tr><tr><td>用户层</td><td>数十亿用户上线，数字社会萌芽</td></tr></tbody></table><p>应用层从“软件”变成了“服务”，C/S架构时期为专用程序定制协议催生了ftp、smtp、pop3等协议百花齐放，而B/S架构后浏览器的出现HTTP协议逐渐成为应用层协议的事实标准。B/S 倒逼着很多 C/S 应用也不得不 HTTP 化。</p><p><img src="https://teddysun.com/wp-content/uploads/2017/lamp.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="LAMP开源服务套件"></p><p>在系统软件层：Windows Server因为收费闭源，而且GUI占用大量硬件资源；UNIX系列商业收费的System V 和 学术系的 BSD碎片化严重；所以基于Minix开发的免费开源的Linux成了互联网时代的“隐形操作系统”，也是LAMP开源套件里的核心。用户不关心你的服务端程序师运行在GUI还是CLI的服务器，返回的HTML最终都会在浏览器端渲染，所以。Intel 也是乘着互联网的东风从桌面市场真正进入服务器领域，Intel第一款专为服务器市场设计的芯片是<a href="https://baike.baidu.com/item/Pentium%20Pro/8447660" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Pentium Pro‌</a>，它于1995年发布，标志着Intel在服务器工作站领域迈出关键一步；1998–2001年：Xeon + Linux，x86 正式成为主流服务器架构；2006年后：Intel 基本统治通用服务器 CPU 市场。</p><p>可以说<strong>互联网不仅重塑了应用形态，也彻底改变了服务器的形态</strong>。</p><p>在互联网之前，服务器的默认形态是：UNIX 操作系统、RISC 架构 CPU（SPARC、POWER、PA-RISC、Alpha）、昂贵的小型机 / 大型机、纵向扩展（Scale Up）。</p><p>而互联网带来的，是一类完全不同的计算需求：大量并发 Web 请求、单个请求计算量很小、容忍单机故障、依赖集群而非单机可靠性。</p><h1><strong>五、移动互联网：终端硬件 + 分发平台重写应用层</strong></h1><blockquote><p><strong>2008—2020：硬件层与用户层的同步胜利</strong></p></blockquote><p><img src="https://cdn.pingwest.com/wp-content/uploads/2017/01/apple-reinvents-the-phone-how-steve-jobs-launched-the-first-ever-iphone.jpg?x-oss-process=style/article-body" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="乔布斯发布iphone"></p><p>iPhone + App Store = 移动互联网最强方程式。</p><p><strong>硬件层改变了交互方式：</strong></p><ul><li>ARM 架构配合 SoC 高度集成，使单位能耗计算能力大幅提升，高通等芯片厂商在移动终端计算领域取代了以 x86 为核心的 Intel 体系，成为移动互联网时代的主导芯片。</li><li>多点触控改变用户输入方式，语音、摄像头等硬件被整合进终端。过去只能打电话发短信的手机变成更加“智能”的移动终端，重塑了应用层软件形态。</li></ul><p><img src="https://n.sinaimg.cn/sinakd20220325s/728/w1455h873/20220325/ccd5-817b5aa3bb0fb30bb419d746924c095c.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="高通芯片"></p><p><strong>系统层：开源与闭源之争</strong></p><p>另一边基于Linux内核开发的Android又因为开源免费，迅速风靡全球，与闭源的iPhone iOS分庭抗礼。Java因其庞大的生态被Android选为应用层开发语言，得以再次繁荣。</p><p><img src="https://q1.itc.cn/q_70/images03/20250422/138b713c2e384cb3a720dbe8d61ea834.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="Android与Linux"></p><blockquote><p>iOS 赢得了利润（Apple 拿走行业 80%+ 利润），Android 赢得了用户（覆盖全球 30 亿+ 智能手机用户）——这是两种不同的“胜利”。</p></blockquote><p><strong>分发层改变了应用生态：</strong></p><ul><li>App Store / 应用商店</li><li>隐私沙盒模型</li><li>严格权限系统</li></ul><p><strong>应用层进一步重构：</strong></p><ul><li>微信：超级应用</li><li>抖音：短视频新交互</li><li>移动电商：支付、位置、摄像头等能力整合</li></ul><p>这是第一次：<strong>用户层需求反过来驱动技术栈演进。</strong></p><hr><h1><strong>六、云计算时代：平台层成为核心竞争力</strong></h1><blockquote><p><strong>2010—2020：平台层统治企业计算</strong></p></blockquote><p><img src="https://q7.itc.cn/images01/20241208/0576c0b620d648cc9851c154282dfef7.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="阿里云"></p><p>云计算把基础设施彻底抽象化：</p><ul><li>IaaS(Infrastructure as a Service，基础设施即服务)：弹性算力取代IDC机房</li><li>PaaS(Platform as a Service，平台即服务)：数据库、消息队列、对象存储成为服务</li><li>Kubernetes：在抽象层面上承担了传统操作系统对计算资源的管理职责，因此常被称为“<strong>分布式云原生操作系统</strong>”。对底层管理分布式硬件资源：IaaS（VM、网络、磁盘）；对上层提供容器运行环境、调度、服务发现、扩缩容。</li></ul><p><img src="https://picx.zhimg.com/v2-4d1ec0720e585aa21c45a9f5d025669b_720w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="Docker与K8S"></p><p>这意味着：<strong>系统软件层的一部分与平台层融合成“云操作系统”。</strong></p><p>应用从单体 → 分布式 → 微服务，IT 架构全面升级。</p><blockquote><p>谷歌选择开发Golang并作为Kubernetes的实现语言，Golang得以在云原生时代成为基础设施级语言。</p></blockquote><hr><h1><strong>七、AI 时代：数据层与模型层成为新的操作系统</strong></h1><blockquote><p><strong>2022—？：AI 让技术栈再次重写</strong></p></blockquote><p><img src="https://pic.rmb.bdstatic.com/bjh/beautify/28b6c6eda6ee09587cc68b46a16bfc13.jpeg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="奥特曼发布GPT"></p><p>这一次变革极其特殊：不是硬件、不是网络，而是 <strong>数据与模型</strong> 反过来吞并系统软件。</p><p>AI 时代的计算栈正在重构：</p><h3><strong>1. 硬件层</strong></h3><p>NVIDIA GPU、AI 加速器成为计算核心。</p><p><img src="https://n.sinaimg.cn/sinakd20221117s/650/w1440h810/20221117/2874-4819cb08c31e2e089d277284579f2d4f.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="英伟达GPU"></p><h3><strong>2. 操作系统层（重新定义）</strong></h3><p>GPT / Qwen / DeepSeek 这样的模型 = 新一代“语义操作系统”。</p><p>它们具备传统 OS 不具备的能力：</p><ul><li>理解自然语言</li><li>执行跨应用任务</li><li>自动调用工具和 API</li><li>多 Agent 协作</li></ul><h3><strong>3. 平台层</strong></h3><ul><li>向量数据库</li><li>RAG</li><li>自动化工作流</li><li>AI 代理平台（MCP）</li></ul><h3><strong>4. 数据层</strong></h3><p>数据变成模型能力的源头（训练集 → 推理 → 反馈 → 自学习）。</p><h3><strong>5. 应用层</strong></h3><p>App 开始消失，被“AI 工作流”“AI 助手”取代。</p><h3><strong>6. 用户层</strong></h3><p>从“点击” → “对话” → “让 AI 自动完成任务”。</p><p>AI 时代的关键变化是：</p><blockquote><p><strong>应用从“人写的逻辑”变成“模型执行的意图”。</strong></p></blockquote><hr><h1><strong>八、未来十年：计算栈将出现三大重构趋势</strong></h1><h2><strong>趋势 1：AI OS 取代传统OS 交互</strong></h2><p>应用程序不再前台运行，而是由 AI agent调度：</p><ul><li>“帮我整理这批数据”</li><li>“把我网站的 SEO 提升”</li><li>“自动完成这个流程”</li></ul><p>手机、电脑界面会大幅简化。比如最近发布的AI眼镜</p><hr><h2><strong>趋势 2：网络从数据包通信转向语义通信</strong></h2><p>未来的协议不是 HTTP/JSON，而是：</p><ul><li>“我需要一个符合以下目标的任务”</li><li>“这是我当前的上下文”</li></ul><p>Agent 协议（如 MCP）将成为新基座。</p><hr><h2><strong>趋势 3：数据变成个人资产，模型在本地运行</strong></h2><p>端侧模型 + 私有数据 + 隐私计算<br>将让 AI 成为每个人的“第二大脑”。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;如果你想用一句话解释过去 70 年计算机产业的全部变化，那就是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;每一次时代变革，都是分层计算栈中某几层发生了质变，然后反过来重塑了整条技术链。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/categories/AI/"/>
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/tags/AI/"/>
    
    <category term="MCP" scheme="https://blog.hufeifei.cn/tags/MCP/"/>
    
  </entry>
  
  <entry>
    <title>Fess作为企业内网搜索引擎</title>
    <link href="https://blog.hufeifei.cn/2025/10/Net/fess/"/>
    <id>https://blog.hufeifei.cn/2025/10/Net/fess/</id>
    <published>2025-10-12T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.404Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>之前一直都是用<a href="https://github.com/HCLonely/hexo-theme-webstack/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">hexo-theme-webstack</a>做内网导航，这就像公司的门户网站一样，对内网所有的系统手动做索引。</p><img width="1899" height="987" alt="image" src="https://github.com/user-attachments/assets/46258a8e-15d4-47f3-8b9a-353e5c931e96" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>但是手动做索引太慢了，而且维护成本高，自然而然地就有了从门户升级到搜索引擎的需求。目前看到最流行的就是<a href="https://fess.codelibs.org/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Fess</a>这个企业级的搜索引擎。</p><p><a href="https://fess.codelibs.org/articles/1/document.html" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">官方文档1</a>中如何安装和配置搜索引擎爬虫的功能。</p><p><a href="https://fess.codelibs.org/articles/7/document.html" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">官方文档7</a>还提到了内网中需要带认证的系统如何爬取。</p><p><a href="https://fess.codelibs.org/articles.html#list-of-published-articles" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">具体可以看一下官方的教程</a>，在公司里部署一个这个搜索引擎，就可以对企业内部所有的文档做索引，方便员工进行信息检索。这就相当于公司内网的百度，可以指定爬取的网站必须是内网的域名或ip。</p><p>fess在<a href="https://github.com/codelibs/docker-fess" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">github</a>有提供docker方式的部署文件，底层的存储使用elasticsearch或者开源替代品opensearch。</p><img width="1912" height="954" alt="image" src="https://github.com/user-attachments/assets/dbd03890-a287-4e45-b217-3523a84792d5" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>部署完成后需要配置爬虫规则，目前系统支持web爬虫和文件爬虫等多种爬网方式。</p><img width="1912" height="954" alt="image" src="https://github.com/user-attachments/assets/3c84ffea-d1b8-4d3a-bfd2-aebbec0b1df6" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" />]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;之前一直都是用&lt;a href=&quot;https://github.com/HCLonely/hexo-theme-webstack/&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;hexo-theme-webstack&lt;/a&gt;做内网导航，这就像公司的门户网站一样，对内网所有的系统手动做索引。&lt;/p&gt;
&lt;img width=&quot;1899&quot; height=&quot;987&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/46258a8e-15d4-47f3-8b9a-353e5c931e96&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;</summary>
    
    
    
    <category term="网络" scheme="https://blog.hufeifei.cn/categories/%E7%BD%91%E7%BB%9C/"/>
    
    
  </entry>
  
  <entry>
    <title>在K8S中管理多个Canal集群</title>
    <link href="https://blog.hufeifei.cn/2025/10/DB/canal-in-k8s/"/>
    <id>https://blog.hufeifei.cn/2025/10/DB/canal-in-k8s/</id>
    <published>2025-10-09T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.392Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>公司涉及到业务团队与IM团队的数据同步，为了解耦避免修改我们这边的代码，同时为了性能考虑，打算用canal来处理。</p><p><img src="https://img-blog.csdnimg.cn/2542dfe00519416589877afcf42a89e7.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="canal-server部署架构图"></p><p>具体步骤都是参考了<a href="https://github.com/alibaba/canal/blob/master/charts/README.md" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">canal官方的文档</a></p><h2>1、安装canal-admin</h2><p>一个canal-admin是可以管理多个canal集群的。所以我把canal-admin安装在了<code>base</code>命名空间下。</p><p>配置好<a href="https://github.com/alibaba/canal/blob/master/admin/admin-web/src/main/resources/canal_manager.sql" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">canal-manager</a>数据库后，安装admin到base命名空间下。</p><figure class="highlight shell"><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="meta prompt_">#</span><span class="language-bash"><span class="comment"># 切换至base命名空间</span></span></span><br><span class="line">kubens recircle-industry-base-system</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"><span class="comment"># 安装admin</span></span></span><br><span class="line">helm install canal-admin -f ./admin-values.yaml ./canal-admin</span><br></pre></td></tr></table></figure><img width="1431" height="814" alt="image" src="https://github.com/user-attachments/assets/7f975a29-2b7c-4867-a202-9639eb93137d" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>我们现在是每个命名空间一个canal集群，dev、test、pre分别对应了三个环境。</p><h2>2、安装zookeeper集群</h2><figure class="highlight shell"><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="meta prompt_">#</span><span class="language-bash"><span class="comment"># 切换到preview命名空间</span></span></span><br><span class="line">kubens recircle-industry-platform-preview</span><br><span class="line"><span class="meta prompt_">#</span><span class="language-bash"><span class="comment"># 创建zk集群</span></span></span><br><span class="line">helm install canal-zookeeper oci://registry-1.docker.io/bitnamicharts/zookeeper</span><br></pre></td></tr></table></figure><img width="1432" height="774" alt="image" src="https://github.com/user-attachments/assets/6e1879ba-6570-4b27-826a-c7eab39b8774" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>安装完成后，把zookeeper的k8s service地址填到canal-admin中。</p><img width="1432" height="774" alt="image" src="https://github.com/user-attachments/assets/c7c08f5b-398a-4137-ab60-ae73a6200d97" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>然后可以针对这个集群添加主配置，这个配置就是集群下所有canal-server的instance默认的配置，在这里可以配置canal-admin地址、记录表结构发生变化的tsdb的地址、消息队列的地址：</p><figure class="highlight properties"><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><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#################################################</span></span><br><span class="line"><span class="comment">######### common argument#############</span></span><br><span class="line"><span class="comment">#################################################</span></span><br><span class="line"><span class="comment"># tcp bind ip</span></span><br><span class="line"><span class="attr">canal.ip</span> =<span class="string"></span></span><br><span class="line"><span class="comment"># register ip to zookeeper</span></span><br><span class="line"><span class="attr">canal.register.ip</span> =<span class="string"></span></span><br><span class="line"><span class="attr">canal.port</span> = <span class="string">11111</span></span><br><span class="line"><span class="attr">canal.metrics.pull.port</span> = <span class="string">11112</span></span><br><span class="line"><span class="comment"># canal instance user/passwd</span></span><br><span class="line"><span class="attr">canal.user</span> = <span class="string">admin</span></span><br><span class="line"><span class="attr">canal.passwd</span> = <span class="string">4ACFE3202A5FF5CF467898FC58AAB1D615029441</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># canal admin config</span></span><br><span class="line"><span class="attr">canal.admin.manager</span> = <span class="string">canal-admin.recircle-industry-base-system:8089</span></span><br><span class="line"><span class="attr">canal.admin.port</span> = <span class="string">11110</span></span><br><span class="line"><span class="attr">canal.admin.user</span> = <span class="string">admin</span></span><br><span class="line"><span class="attr">canal.admin.passwd</span> = <span class="string">4ACFE3202A5FF5CF467898FC58AAB1D615029441</span></span><br><span class="line"><span class="comment"># admin auto register</span></span><br><span class="line"><span class="comment">#canal.admin.register.auto = true</span></span><br><span class="line"><span class="comment">#canal.admin.register.cluster =</span></span><br><span class="line"><span class="comment">#canal.admin.register.name =</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="attr">canal.zkServers</span> = <span class="string">canal-zookeeper.recircle-industry-platform-preview:2181</span></span><br><span class="line"><span class="comment"># flush data to zk</span></span><br><span class="line"><span class="attr">canal.zookeeper.flush.period</span> = <span class="string">1000</span></span><br><span class="line"><span class="attr">canal.withoutNetty</span> = <span class="string">false</span></span><br><span class="line"><span class="comment"># tcp, kafka, rocketMQ, rabbitMQ, pulsarMQ</span></span><br><span class="line"><span class="attr">canal.serverMode</span> = <span class="string">rocketMQ</span></span><br><span class="line"><span class="comment"># flush meta cursor/parse position to file</span></span><br><span class="line"><span class="attr">canal.file.data.dir</span> = <span class="string">$&#123;canal.conf.dir&#125;</span></span><br><span class="line"><span class="attr">canal.file.flush.period</span> = <span class="string">1000</span></span><br><span class="line"><span class="comment">## memory store RingBuffer size, should be Math.pow(2,n)</span></span><br><span class="line"><span class="attr">canal.instance.memory.buffer.size</span> = <span class="string">16384</span></span><br><span class="line"><span class="comment">## memory store RingBuffer used memory unit size , default 1kb</span></span><br><span class="line"><span class="attr">canal.instance.memory.buffer.memunit</span> = <span class="string">1024 </span></span><br><span class="line"><span class="comment">## meory store gets mode used MEMSIZE or ITEMSIZE</span></span><br><span class="line"><span class="attr">canal.instance.memory.batch.mode</span> = <span class="string">MEMSIZE</span></span><br><span class="line"><span class="attr">canal.instance.memory.rawEntry</span> = <span class="string">true</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">## detecing config</span></span><br><span class="line"><span class="attr">canal.instance.detecting.enable</span> = <span class="string">false</span></span><br><span class="line"><span class="comment">#canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now()</span></span><br><span class="line"><span class="attr">canal.instance.detecting.sql</span> = <span class="string">select 1</span></span><br><span class="line"><span class="attr">canal.instance.detecting.interval.time</span> = <span class="string">3</span></span><br><span class="line"><span class="attr">canal.instance.detecting.retry.threshold</span> = <span class="string">3</span></span><br><span class="line"><span class="attr">canal.instance.detecting.heartbeatHaEnable</span> = <span class="string">false</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># support maximum transaction size, more than the size of the transaction will be cut into multiple transactions delivery</span></span><br><span class="line"><span class="attr">canal.instance.transaction.size</span> =  <span class="string">1024</span></span><br><span class="line"><span class="comment"># mysql fallback connected to new master should fallback times</span></span><br><span class="line"><span class="attr">canal.instance.fallbackIntervalInSeconds</span> = <span class="string">60</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># network config</span></span><br><span class="line"><span class="attr">canal.instance.network.receiveBufferSize</span> = <span class="string">16384</span></span><br><span class="line"><span class="attr">canal.instance.network.sendBufferSize</span> = <span class="string">16384</span></span><br><span class="line"><span class="attr">canal.instance.network.soTimeout</span> = <span class="string">30</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># binlog filter config</span></span><br><span class="line"><span class="attr">canal.instance.filter.druid.ddl</span> = <span class="string">true</span></span><br><span class="line"><span class="attr">canal.instance.filter.query.dcl</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">canal.instance.filter.query.dml</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">canal.instance.filter.query.ddl</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">canal.instance.filter.table.error</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">canal.instance.filter.rows</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">canal.instance.filter.transaction.entry</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">canal.instance.filter.dml.insert</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">canal.instance.filter.dml.update</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">canal.instance.filter.dml.delete</span> = <span class="string">false</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># binlog format/image check</span></span><br><span class="line"><span class="attr">canal.instance.binlog.format</span> = <span class="string">ROW,STATEMENT,MIXED </span></span><br><span class="line"><span class="attr">canal.instance.binlog.image</span> = <span class="string">FULL,MINIMAL,NOBLOB</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># binlog ddl isolation</span></span><br><span class="line"><span class="attr">canal.instance.get.ddl.isolation</span> = <span class="string">false</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># parallel parser config</span></span><br><span class="line"><span class="attr">canal.instance.parser.parallel</span> = <span class="string">true</span></span><br><span class="line"><span class="comment">## concurrent thread number, default 60% available processors, suggest not to exceed Runtime.getRuntime().availableProcessors()</span></span><br><span class="line"><span class="comment">#canal.instance.parser.parallelThreadSize = 16</span></span><br><span class="line"><span class="comment">## disruptor ringbuffer size, must be power of 2</span></span><br><span class="line"><span class="attr">canal.instance.parser.parallelBufferSize</span> = <span class="string">256</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># table meta tsdb info</span></span><br><span class="line"><span class="attr">canal.instance.tsdb.enable</span> = <span class="string">true</span></span><br><span class="line"><span class="comment">#canal.instance.tsdb.dir = $&#123;canal.file.data.dir:../conf&#125;/$&#123;canal.instance.destination:&#125;</span></span><br><span class="line"><span class="attr">canal.instance.tsdb.url</span> = <span class="string">jdbc:mysql://db.irecircle.com:3306/canal_tsdb?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false</span></span><br><span class="line"><span class="attr">canal.instance.tsdb.dbUsername</span> = <span class="string">root</span></span><br><span class="line"><span class="attr">canal.instance.tsdb.dbPassword</span> = <span class="string">123456</span></span><br><span class="line"><span class="comment"># dump snapshot interval, default 24 hour</span></span><br><span class="line"><span class="attr">canal.instance.tsdb.snapshot.interval</span> = <span class="string">24</span></span><br><span class="line"><span class="comment"># purge snapshot expire , default 360 hour(15 days)</span></span><br><span class="line"><span class="attr">canal.instance.tsdb.snapshot.expire</span> = <span class="string">360</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">#################################################</span></span><br><span class="line"><span class="comment">######### destinations#############</span></span><br><span class="line"><span class="comment">#################################################</span></span><br><span class="line"><span class="attr">canal.destinations</span> =<span class="string"></span></span><br><span class="line"><span class="comment"># conf root dir</span></span><br><span class="line"><span class="attr">canal.conf.dir</span> = <span class="string">../conf</span></span><br><span class="line"><span class="comment"># auto scan instance dir add/remove and start/stop instance</span></span><br><span class="line"><span class="attr">canal.auto.scan</span> = <span class="string">true</span></span><br><span class="line"><span class="attr">canal.auto.scan.interval</span> = <span class="string">5</span></span><br><span class="line"><span class="comment"># set this value to &#x27;true&#x27; means that when binlog pos not found, skip to latest.</span></span><br><span class="line"><span class="comment"># WARN: pls keep &#x27;false&#x27; in production env, or if you know what you want.</span></span><br><span class="line"><span class="attr">canal.auto.reset.latest.pos.mode</span> = <span class="string">false</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">#canal.instance.tsdb.spring.xml = classpath:spring/tsdb/h2-tsdb.xml</span></span><br><span class="line"><span class="attr">canal.instance.tsdb.spring.xml</span> = <span class="string">classpath:spring/tsdb/mysql-tsdb.xml</span></span><br><span class="line"></span><br><span class="line"><span class="attr">canal.instance.global.mode</span> = <span class="string">manager</span></span><br><span class="line"><span class="attr">canal.instance.global.lazy</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">canal.instance.global.manager.address</span> = <span class="string">$&#123;canal.admin.manager&#125;</span></span><br><span class="line"><span class="comment">#canal.instance.global.spring.xml = classpath:spring/memory-instance.xml</span></span><br><span class="line"><span class="comment">#canal.instance.global.spring.xml = classpath:spring/file-instance.xml</span></span><br><span class="line"><span class="attr">canal.instance.global.spring.xml</span> = <span class="string">classpath:spring/default-instance.xml</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="comment">#########       MQ Properties      #############</span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="comment"># aliyun ak/sk , support rds/mq</span></span><br><span class="line"><span class="attr">canal.aliyun.accessKey</span> =<span class="string"></span></span><br><span class="line"><span class="attr">canal.aliyun.secretKey</span> =<span class="string"></span></span><br><span class="line"><span class="attr">canal.aliyun.uid</span>=<span class="string"></span></span><br><span class="line"></span><br><span class="line"><span class="attr">canal.mq.flatMessage</span> = <span class="string">true</span></span><br><span class="line"><span class="attr">canal.mq.canalBatchSize</span> = <span class="string">50</span></span><br><span class="line"><span class="attr">canal.mq.canalGetTimeout</span> = <span class="string">100</span></span><br><span class="line"><span class="comment"># Set this value to &quot;cloud&quot;, if you want open message trace feature in aliyun.</span></span><br><span class="line"><span class="attr">canal.mq.accessChannel</span> = <span class="string">local</span></span><br><span class="line"></span><br><span class="line"><span class="attr">canal.mq.database.hash</span> = <span class="string">true</span></span><br><span class="line"><span class="attr">canal.mq.send.thread.size</span> = <span class="string">30</span></span><br><span class="line"><span class="attr">canal.mq.build.thread.size</span> = <span class="string">8</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="comment">#########      Kafka      #############</span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="attr">kafka.bootstrap.servers</span> = <span class="string">127.0.0.1:6667</span></span><br><span class="line"><span class="attr">kafka.acks</span> = <span class="string">all</span></span><br><span class="line"><span class="attr">kafka.compression.type</span> = <span class="string">none</span></span><br><span class="line"><span class="attr">kafka.batch.size</span> = <span class="string">16384</span></span><br><span class="line"><span class="attr">kafka.linger.ms</span> = <span class="string">1</span></span><br><span class="line"><span class="attr">kafka.max.request.size</span> = <span class="string">1048576</span></span><br><span class="line"><span class="attr">kafka.buffer.memory</span> = <span class="string">33554432</span></span><br><span class="line"><span class="attr">kafka.max.in.flight.requests.per.connection</span> = <span class="string">1</span></span><br><span class="line"><span class="attr">kafka.retries</span> = <span class="string">0</span></span><br><span class="line"></span><br><span class="line"><span class="attr">kafka.kerberos.enable</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">kafka.kerberos.krb5.file</span> = <span class="string">../conf/kerberos/krb5.conf</span></span><br><span class="line"><span class="attr">kafka.kerberos.jaas.file</span> = <span class="string">../conf/kerberos/jaas.conf</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># sasl demo</span></span><br><span class="line"><span class="comment"># kafka.sasl.jaas.config = org.apache.kafka.common.security.scram.ScramLoginModule required \\n username=\&quot;alice\&quot; \\npassword=&quot;alice-secret\&quot;;</span></span><br><span class="line"><span class="comment"># kafka.sasl.mechanism = SCRAM-SHA-512</span></span><br><span class="line"><span class="comment"># kafka.security.protocol = SASL_PLAINTEXT</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="comment">#########     RocketMQ     #############</span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="attr">rocketmq.producer.group</span> = <span class="string">preview-canal</span></span><br><span class="line"><span class="attr">rocketmq.enable.message.trace</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">rocketmq.customized.trace.topic</span> =<span class="string"></span></span><br><span class="line"><span class="attr">rocketmq.namespace</span> =<span class="string"></span></span><br><span class="line"><span class="attr">rocketmq.namesrv.addr</span> = <span class="string">192.168.110.46:9876</span></span><br><span class="line"><span class="attr">rocketmq.retry.times.when.send.failed</span> = <span class="string">0</span></span><br><span class="line"><span class="attr">rocketmq.vip.channel.enabled</span> = <span class="string">false</span></span><br><span class="line"><span class="attr">rocketmq.tag</span> =<span class="string"></span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="comment">#########     RabbitMQ     #############</span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="attr">rabbitmq.host</span> =<span class="string"></span></span><br><span class="line"><span class="attr">rabbitmq.virtual.host</span> =<span class="string"></span></span><br><span class="line"><span class="attr">rabbitmq.exchange</span> =<span class="string"></span></span><br><span class="line"><span class="attr">rabbitmq.username</span> =<span class="string"></span></span><br><span class="line"><span class="attr">rabbitmq.password</span> =<span class="string"></span></span><br><span class="line"><span class="attr">rabbitmq.deliveryMode</span> =<span class="string"></span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="comment">#########       Pulsar         #############</span></span><br><span class="line"><span class="comment">##################################################</span></span><br><span class="line"><span class="attr">pulsarmq.serverUrl</span> =<span class="string"></span></span><br><span class="line"><span class="attr">pulsarmq.roleToken</span> =<span class="string"></span></span><br><span class="line"><span class="attr">pulsarmq.topicTenantPrefix</span> =<span class="string"></span></span><br></pre></td></tr></table></figure><h2>3、部署canal-server</h2><figure class="highlight properties"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># 主要配置</span></span><br><span class="line"><span class="attr">server</span>:<span class="string"></span></span><br><span class="line">  <span class="attr">config</span>: <span class="string">|</span></span><br><span class="line">    <span class="attr">canal.port</span> = <span class="string">11111</span></span><br><span class="line">    <span class="attr">canal.metrics.pull.port</span> = <span class="string">11112</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">    # register ip</span></span><br><span class="line">    <span class="attr">canal.register.ip</span> =<span class="string"></span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">    # 配置canal-admin地址</span></span><br><span class="line">    <span class="attr">canal.admin.manager</span> = <span class="string">canal-admin.recircle-industry-base-system:8089</span></span><br><span class="line">    <span class="attr">canal.admin.port</span> = <span class="string">11110</span></span><br><span class="line">    <span class="attr">canal.admin.user</span> = <span class="string">admin</span></span><br><span class="line">    <span class="attr">canal.admin.passwd</span> = <span class="string">4ACFE3202A5FF5CF467898FC58AAB1D615029441</span></span><br><span class="line"><span class="comment">    # admin auto register</span></span><br><span class="line">    <span class="attr">canal.admin.register.auto</span> = <span class="string">true</span></span><br><span class="line">    <span class="attr">canal.admin.register.cluster</span> = <span class="string">pre # 配置集群</span></span><br></pre></td></tr></table></figure><p>部署<code>canal-server</code></p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">helm install canal-server -f ./server-values.yaml ./canal-server</span><br></pre></td></tr></table></figure><img width="1432" height="774" alt="image" src="https://github.com/user-attachments/assets/b957dc1a-b882-4cbf-8116-5ae2414415cf" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>这个canal-server是可以部署多个replica的</p><h2>instance 实例创建</h2><figure class="highlight properties"><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="attr">canal.instance.master.address</span>=<span class="string">127.0.0.1:3306</span></span><br><span class="line"><span class="attr">canal.instance.dbUsername</span>=<span class="string">****</span></span><br><span class="line"><span class="attr">canal.instance.dbPassword</span>=<span class="string">****</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># 过滤监听哪些表</span></span><br><span class="line"><span class="attr">canal.instance.filter.regex</span>=<span class="string">.*\\..*</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"># 如果是推送到rabbitmq，需要配置 Routing Key</span></span><br><span class="line"><span class="attr">canal.mq.topic</span>=<span class="string">你的Routing Key</span></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;公司涉及到业务团队与IM团队的数据同步，为了解耦避免修改我们这边的代码，同时为了性能考虑，打算用canal来处理。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://img-blog.csdnimg.cn/2542dfe00519416589877afcf42a89e7.png&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot; alt=&quot;canal-server部署架构图&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="数据库" scheme="https://blog.hufeifei.cn/categories/%E6%95%B0%E6%8D%AE%E5%BA%93/"/>
    
    
    <category term="DB" scheme="https://blog.hufeifei.cn/tags/DB/"/>
    
    <category term="Canal" scheme="https://blog.hufeifei.cn/tags/Canal/"/>
    
  </entry>
  
  <entry>
    <title>激励制度——如何赏罚分明</title>
    <link href="https://blog.hufeifei.cn/2025/10/business/clear-rewards-punishments/"/>
    <id>https://blog.hufeifei.cn/2025/10/business/clear-rewards-punishments/</id>
    <published>2025-10-03T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>之前在<a href="https://blog.hufeifei.cn/2025/05/business/scrum/">Scrum敏捷管理制度设计</a>一文中，针对公司存在的诸多问题，基于scrum设计了一套产研管理制度。并在最后给出了产研团队量化考核的指标。</p><p>但是这套制度如果没有实际落地的绩效激励制度，那就是空中楼阁。</p><p>马云曾说过：十个人的公司、一百人的公司、五百人的公司、一千人的公司和一万人的公司, 带队伍的方法是完全不一样的, 但管理的最低要求是一致的。这个最低要求就是十六个字：<strong>⽬标清晰，职责明确，赏罚分明，超越伯乐</strong>。</p><p>其中呢赏罚分明就需要考验公司激励制度如何设计。激励如果不能引起团队其他人的眼红，那这个激励是无效的；惩罚如果不痛不痒不能震慑团队中其他同类型的人，那这个惩罚也是无效的。</p><p>但是在赏罚分明的同时如何保证团队的凝聚力，这又是一个管理的重大大挑战。</p></blockquote><p><img src="https://thestarr.org/wp-content/uploads/scrum-principlestb.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="scrum的核心原则"></p><p>很多团队在推行 <strong>Scrum</strong> 时都会遇到类似挑战：</p><ul><li>Scrum 强调 <strong>自组织、团队协作与持续改进</strong>，但现实中又必须面对 <strong>绩效考核、奖惩与个人激励</strong> 的管理要求。</li><li>如何在不破坏 Scrum 精神的前提下，建立 <strong>赏罚分明</strong> 且 <strong>团队凝聚力强</strong> 的绩效制度，是一个非常考验管理设计的课题。</li></ul><h2>一、核心原则（必须遵守的三条底线）</h2><ol><li><p><strong>以团队为中心，兼顾个人贡献</strong><br>Scrum 的目标是交付价值、促进协作，不应把绩效考核变成“个人功劳榜”。<br>核心是：<strong>团队绩效优先，个人绩效只在团队绩效基础上分配</strong>。</p></li><li><p><strong>透明、公正、可度量</strong><br>所有指标应公开、客观，不靠主观印象，避免暗箱操作。</p></li><li><p><strong>鼓励正向激励，慎用惩罚</strong><br>Scrum 关注持续改进，惩罚只用于底线问题（如消极怠工），主流策略应是激励与辅导。</p></li></ol><h2>二、绩效考核体系设计（3+2 模型）</h2><blockquote><p>3+2 模型指的是：3 个团队维度 + 2 个个人维度</p></blockquote><h3>团队维度（占比 60%）</h3><table><thead><tr><th>指标</th><th>含义</th><th>数据来源</th><th>说明</th></tr></thead><tbody><tr><td><strong>交付达成率</strong></td><td>每个 Sprint 的承诺故事点完成率</td><td>Jira/禅道/Excel</td><td>衡量团队执行力</td></tr><tr><td><strong>Bug 密度 &amp; 缺陷修复率</strong></td><td>测试缺陷数 / 故事点</td><td>测试平台</td><td>衡量质量</td></tr><tr><td><strong>客户/产品满意度</strong></td><td>来自 PO 或 Stakeholder 反馈</td><td>定期调研</td><td>衡量价值交付</td></tr></tbody></table><p>这 3 项构成团队绩效，影响团队整体奖金/绩效系数。</p><h3>个人维度（占比 40%）</h3><table><thead><tr><th>指标</th><th>含义</th><th>来源</th><th>说明</th></tr></thead><tbody><tr><td><strong>个人贡献度</strong></td><td>对团队目标的贡献（如承担故事点、关键任务、跨界支持）</td><td>Scrum Master + 同行互评</td><td>体现主观努力</td></tr><tr><td><strong>Scrum精神表现</strong></td><td>包含沟通协作、主动改进、Review 参与度</td><td>每次回顾会议记录</td><td>鼓励文化一致性</td></tr></tbody></table><blockquote><p>注意：<strong>不建议用故事点直接衡量个人绩效</strong>，会导致“抢任务”、“不帮人”问题。<br>更好的做法是用“团队贡献”+“协作行为”综合打分。</p></blockquote><h2>三、绩效计算与奖惩设计</h2><h3>1. 绩效评分</h3><ul><li>团队绩效：权重 60%，每个团队平均绩效得分</li><li>个人绩效：权重 40%，基于个人贡献与Scrum行为</li><li>最终得分 = 0.6 × 团队得分 + 0.4 × 个人得分</li></ul><h3>2. 奖励机制</h3><ul><li><p><strong>团队奖励</strong>：团队绩效优秀，发放团队奖金 + 公开表彰 + 团建基金</p></li><li><p><strong>个人奖励</strong>：</p><ul><li>个人得分优秀的，额外奖励/晋升优先权</li><li>个人得分中等，但团队表现优异，也能共享团队成果</li><li>鼓励“跨界协作”和“帮助他人”的行为</li></ul></li></ul><h3>3. 惩罚机制（轻惩 + 辅导为主）</h3><ul><li><strong>低绩效</strong>连续2个周期 → 约谈辅导、设立改进目标</li><li><strong>态度消极/破坏团队协作</strong> → 书面警告</li><li><strong>严重失职</strong> → 绩效扣分或组织调整，罚款收录到团建基金</li></ul><h2>四、周期与反馈机制</h2><table><thead><tr><th>内容</th><th>周期</th><th>目的</th></tr></thead><tbody><tr><td>Sprint 回顾会议</td><td>每 2 周</td><td>团队自省，发现改进点</td></tr><tr><td>绩效评估会议</td><td>每 1 个季度</td><td>汇总指标，公平打分</td></tr><tr><td>一对一辅导</td><td>每 1 个季度</td><td>关注个人成长</td></tr><tr><td>年度评优</td><td>每年</td><td>激励与晋升挂钩</td></tr></tbody></table><blockquote><p>关键：绩效体系应“可调整”，根据团队成熟度、目标变化持续优化。</p></blockquote><h2>五、团队凝聚力保障机制</h2><p>为了防止绩效制度破坏团队氛围：</p><ol><li><p><strong>协作行为纳入考核</strong><br>鼓励“帮助他人”“知识共享”“技术分享”等正向行为。</p></li><li><p><strong>公开透明</strong><br>所有评估标准与结果均公开，避免“暗箱”与“政治斗争”。</p></li><li><p><strong>团队目标统一</strong><br>所有人都围绕共同目标，形成“我们一起赢”的氛围。</p></li><li><p><strong>奖励团队，不惩罚个体</strong>（除非极端）<br>强调团队共进退，问题先由团队自省，再个人改进。</p></li><li><p><strong>Scrum Master 的文化守护者角色</strong><br>Scrum Master要负责防止考核制度异化为“绩效内卷”。</p></li></ol><blockquote><p>refs:</p><ul><li>敏捷团队绩效考核: <a href="https://zhuanlan.zhihu.com/p/568575458" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://zhuanlan.zhihu.com/p/568575458</a></li><li>深入浅出了解 OKR（一）：揭开 OKR 的神秘面纱: <a href="https://zhuanlan.zhihu.com/p/130722558" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://zhuanlan.zhihu.com/p/130722558</a></li><li>OKR与Scrum: <a href="https://www.zhihu.com/column/OKRScrum" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://www.zhihu.com/column/OKRScrum</a></li></ul></blockquote>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;之前在&lt;a href=&quot;https://blog.hufeifei.cn/2025/05/business/scrum/&quot;&gt;Scrum敏捷管理制度设计&lt;/a&gt;一文中，针对公司存在的诸多问题，基于scrum设计了一套产研管理制度。并在最后给出了产研团队量化考核的指标。&lt;/p&gt;
&lt;p&gt;但是这套制度如果没有实际落地的绩效激励制度，那就是空中楼阁。&lt;/p&gt;
&lt;p&gt;马云曾说过：十个人的公司、一百人的公司、五百人的公司、一千人的公司和一万人的公司, 带队伍的方法是完全不一样的, 但管理的最低要求是一致的。这个最低要求就是十六个字：&lt;strong&gt;⽬标清晰，职责明确，赏罚分明，超越伯乐&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;其中呢赏罚分明就需要考验公司激励制度如何设计。激励如果不能引起团队其他人的眼红，那这个激励是无效的；惩罚如果不痛不痒不能震慑团队中其他同类型的人，那这个惩罚也是无效的。&lt;/p&gt;
&lt;p&gt;但是在赏罚分明的同时如何保证团队的凝聚力，这又是一个管理的重大大挑战。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://thestarr.org/wp-content/uploads/scrum-principlestb.png&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot; alt=&quot;scrum的核心原则&quot;&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="商业" scheme="https://blog.hufeifei.cn/categories/%E5%95%86%E4%B8%9A/"/>
    
    
    <category term="商业" scheme="https://blog.hufeifei.cn/tags/%E5%95%86%E4%B8%9A/"/>
    
    <category term="管理" scheme="https://blog.hufeifei.cn/tags/%E7%AE%A1%E7%90%86/"/>
    
    <category term="绩效" scheme="https://blog.hufeifei.cn/tags/%E7%BB%A9%E6%95%88/"/>
    
    <category term="Scrum" scheme="https://blog.hufeifei.cn/tags/Scrum/"/>
    
  </entry>
  
  <entry>
    <title>江西国有企业的分析</title>
    <link href="https://blog.hufeifei.cn/2025/09/economic/jiangxi-state-owned-enterprises/"/>
    <id>https://blog.hufeifei.cn/2025/09/economic/jiangxi-state-owned-enterprises/</id>
    <published>2025-09-05T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><img width="1163" height="354" alt="image" src="https://github.com/user-attachments/assets/3ab3b8bb-670e-47c6-a01b-919ee0c5ef47" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><h3>一、背景</h3><p>2003年<a href="https://baike.baidu.com/item/%E5%9B%BD%E5%8A%A1%E9%99%A2%E6%88%90%E7%AB%8B%E5%9B%BD%E6%9C%89%E8%B5%84%E4%BA%A7%E7%9B%91%E7%9D%A3%E7%AE%A1%E7%90%86%E5%A7%94%E5%91%98%E4%BC%9A%EF%BC%882003%E5%B9%B43%E6%9C%8824%E6%97%A5%EF%BC%89/56667777" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">国务院国资委成立</a>后，各省也陆续成立省级国资委，承担 <a href="https://www.gov.cn/zhengce/content/2005-08/12/content_8164.htm" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"><strong>出资人职责</strong></a>。原先“行业主管部门管企业”的格局逐步淡出，国资委统一负责监管。<br>在这个过程中，江西省也对原来的 <strong>省属企事业单位、专业公司、集团公司</strong> 进行了多轮整合。</p><h3>二、江西的主要省级国资平台</h3><p>上图提到的几家，功能定位不同：</p><ol><li><p><strong>江西省国兴资产管理有限公司</strong></p><ul><li>主要做“<strong>非主业、低效无效资产</strong>”处置和“历史遗留问题”化解。</li><li>有点类似“国有坏账资产处理平台”。</li><li>承接一些改革过程中剥离出来的资产、债务、办社会职能。<img width="1397" height="477" alt="image" src="https://github.com/user-attachments/assets/b2325d4d-0c34-4d69-943f-bc36bf728a76" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /></li></ul></li></ol><ol start="2"><li><p><strong>江西省国有资本运营控股集团有限公司（简称“省国控”）</strong></p><ul><li>定位为 <strong>国有资本投资、运营公司试点</strong>，承担资本运作、股权管理职能。</li><li>类似央企里的国新控股、北京的“<a href="https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E5%B8%82%E5%9B%BD%E6%9C%89%E8%B5%84%E4%BA%A7%E7%BB%8F%E8%90%A5%E6%9C%89%E9%99%90%E8%B4%A3%E4%BB%BB%E5%85%AC%E5%8F%B8/9548997" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">首都国资公司</a>”、广东的“<a href="https://baike.baidu.com/item/%E5%B9%BF%E4%B8%9C%E7%9C%81%E7%B2%A4%E7%A7%91%E9%87%91%E8%9E%8D%E9%9B%86%E5%9B%A2%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8/19976794" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">粤科金控</a>”。</li><li>偏向于“管资本”，比如金融股权、混改股权投资平台。</li><li>下属大部分是 大型、垄断性国企，比如能源、电信、金融、医药等。</li><li>这些企业 利润率高、现金流稳定，是江西的“利润奶牛”。</li><li>国控集团通过持股、资本运作来对这些企业进行“管资本”，而不是直接去管经营。</li><li>把强势行业的优质企业集中到国控下面，有两个目的：<ul><li>财政分红：省国控每年能给省财政贡献稳定收益。</li><li>资本运作：便于混改、上市、股权转让，增强国资的资本流动性。<img width="1398" height="604" alt="image" src="https://github.com/user-attachments/assets/bb2296d8-3706-4aeb-b08e-48e379b8a17c" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /></li></ul></li></ul></li><li><p><strong>江西省投资集团有限公司</strong></p><ul><li>原来是以“能源、交通、重大基建投资”为核心的综合投资集团。</li><li>早期承担很多省里的 <strong>重点工程投融资</strong> 任务。</li><li>下属企业通常与电力、交通、基建、金融投资相关的城投类公司（基建投融资平台）。</li><li>这些公司承担了很多地方政府基建融资职能，也就是典型的“城投债”主体。</li><li>省投在某种程度上成了 全省城投资源的二级整合平台，既帮助地方融资，又形成了一个债务池。</li><li>逻辑：城投公司本身盈利能力差，多靠财政兜底，放在“投资集团”下面，契合其“基建融资工具”的定位。<img width="1405" height="616" alt="image" src="https://github.com/user-attachments/assets/ac6906da-5b40-4b1d-ae84-f3fe01787663" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /></li></ul></li><li><p><strong>江西省农业发展集团有限公司</strong></p><ul><li>承接农业、粮食、林业、供销等原先分散的省属企事业单位。</li><li>定位是 <strong>服务“三农”、粮食安全、乡村振兴</strong>。</li><li>有一定的政策性功能，比如粮食储备、农资供应。<img width="1390" height="575" alt="image" src="https://github.com/user-attachments/assets/de70a6b0-b83c-4c82-95fb-10f2709298bb" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /></li></ul></li></ol><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"><strong>国有资本运营公司</strong></td><td align="left"><strong>“流动性管理”和“价值修复”</strong>。主要负责接收、处置和盘活其他国企剥离的非主业、不良资产，实现国有资产保值增值。</td><td align="left">子公司多为从其他集团划转来的非主业企业、需要重组整合的企业，通过资本运作手段处理资产。</td></tr><tr><td align="left"><strong>江西省国有资本运营控股集团有限公司（江西国控）</strong></td><td align="left"><strong>综合性国有资本投资运营平台</strong></td><td align="left"><strong>“资源配置”和“融资平台”</strong>。是江西省层级最高、实力最强的省级国有资本运营主体。负责国有资本的布局调整、股权投资和资本运作。</td><td align="left">子公司分为两类：一是重要的产业集团（如控股江铜集团、新钢集团等），二是金融与投资类公司（如江西国控基金、国际贸易公司），旨在通过控股核心产业来服务全省战略。</td></tr><tr><td align="left"><strong>江西省投资集团有限公司（江投集团）</strong></td><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"><strong>国有资本投资公司（以现代农业为主）</strong></td><td align="left"><strong>“乡村振兴”和“农业现代化”</strong>。专注于江西省农业领域的全产业链投资、开发和运营，保障粮食安全和农产品供给。</td><td align="left">子公司布局围绕 <strong>“种养加、产供销”</strong> 农业全产业链，如种植业、畜牧业、农产品加工、冷链物流、农机农服、农业投资等。</td></tr></tbody></table><p><strong>简单总结逻辑：</strong></p><ul><li>  <strong>国兴资产</strong>是“<strong>处理旧账</strong>”的，做资产的“清道夫”和“修理工”。</li><li>  <strong>江西国控</strong>是“<strong>总账房</strong>”和“<strong>操盘手</strong>”，管着最大的资本盘子，进行战略性投资。</li><li>  <strong>江投集团</strong>是“<strong>基础建设者</strong>”，负责能源、交通等“硬”基础设施。</li><li>  <strong>省农发集团</strong>是“<strong>现代农业领军者</strong>”，负责农业这个“软”的基础产业。</li></ul><blockquote><p>“高风险、低收益”的城投平台 → 丢给省投，作为投融资职能的一部分。省投更像一个 债务池 + 基建融资工具。基建融资平台，承接大量城投公司，风险偏高，功能性强。<br>“高收益、低风险”的垄断企业 → 放到省国控，作为财政收入和资本运作的抓手。省国控是 利润中心 + 股权运作平台。持股运营优质垄断企业，收益稳定，是财政的现金牛。</p></blockquote><h3>三、为什么要这么划分？</h3><p>逻辑上是为了适应 <strong>“管企业”向“管资本”转型</strong>，避免“大杂烩式国企”。主要出于三个考虑：</p><ol><li><p><strong>职能分化</strong></p><ul><li>国兴：历史遗留、剥离资产的“兜底公司”。</li><li>国控：管股权、资本运作。</li><li>投资集团：投重大基建。</li><li>农发集团：管农业涉农业务。</li></ul></li><li><p><strong>历史沿革</strong></p></li></ol><p>  1).  <strong>早期的“散、小、弱”阶段（2013年以前）</strong>：<br>      在过去，省属国企数量众多，业务重叠交叉，“大而不强”的问题突出。很多企业主业不清晰，什么赚钱就做什么，导致同质化竞争严重，资源配置效率低下。</p><p>  2).  <strong>新一轮国企改革启动（2013年至今）</strong>：<br>      国家层面启动了以“管资本”为主的新一轮国企改革。核心思想是：国资委从“管人、管事、管资产”转变为主要“管资本”，通过组建<strong>国有资本投资、运营公司</strong>（两类公司）作为中间层，来具体履行出资人职责，管理旗下的实体企业。</p><ul><li><strong>江西国控的升级（2020-2022年）</strong>：这是最关键的一步。江西省委省政府决定打造一个属于江西的“万亿级”国有资本运营平台。通过<strong>将江西铜业集团、新钢集团等多家大型工业企业的股权划转至江西国控</strong>，使其资产规模急剧膨胀，成为省属国企的“航母舰队”。其目的是<strong>增强省级国资的融资能力、资源配置能力和市场竞争力</strong>，更好地服务全省经济发展战略。  <img width="669" height="406" alt="image" src="https://github.com/user-attachments/assets/31f69520-d45f-4f74-a22b-c9fa86380aef" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /></li></ul><p>  3).  <strong>专业化整合浪潮</strong>：<br>      “让专业的公司做专业的事”成为共识。为了避免业务混杂，开始按照产业板块进行大刀阔斧的重组。</p><ul><li>  <strong>江投集团的重组</strong>：原本江投集团业务也较多，后来通过改革，将其非能源主业的业务（如房地产等）剥离，使其更加专注于能源和基础设施核心主业。</li><li>  <strong>省农发集团的新建（2022年）</strong>：这是最新的一次专业化整合。江西是农业大省，但缺乏一个大型农业领域的龙头企业。因此，<strong>省农发集团是“无中生有”、全新组建的</strong>。它整合了省内多个涉农企业和资源（例如从江投集团划转了江西省粮油集团有限公司，从其他单位整合了种业、农机等资源），旨在打造一个贯穿农业全产业链的综合性集团，引领江西农业现代化发展。</li></ul><p>  4).  <strong>处理历史遗留问题——国兴资产的使命</strong>：<br>      在各大集团聚焦主业的过程中，必然会剥离出大量的非主业资产和低效无效资产。谁来接手？这就是<strong>国兴资产管理公司</strong>成立的核心目的。它类似于一个“<strong>资产池</strong>”，承接这些资产后，通过专业化手段进行清理、整合、盘活或退出，为其他主业集团“减负”，从而优化全省国有资本的总体质量。</p><ul><li>江西曾有大量“条条块块”的行业公司（比如省电力、省粮食、省供销、省地矿）。</li><li>改制后不可能全并成一个大集团，就形成了几个“专业板块型”的集团。</li></ul><ol start="3"><li><p><strong>对标中央做法</strong></p><ul><li><p>中央有<a href="https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E5%9B%BD%E6%96%B0%E6%8E%A7%E8%82%A1%E6%9C%89%E9%99%90%E8%B4%A3%E4%BB%BB%E5%85%AC%E5%8F%B8/10276514" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">国新控股</a>（资产管理）、<a href="https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E8%AF%9A%E9%80%9A%E6%8E%A7%E8%82%A1%E9%9B%86%E5%9B%A2%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8/5526939" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">诚通控股</a>（资本运营）、<a href="https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E6%8A%95%E8%B5%84%E6%9C%89%E9%99%90%E8%B4%A3%E4%BB%BB%E5%85%AC%E5%8F%B8/7966238" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">中投</a>/<a href="https://baike.baidu.com/item/%E5%9B%BD%E5%AE%B6%E5%BC%80%E5%8F%91%E6%8A%95%E8%B5%84%E9%9B%86%E5%9B%A2%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8/22417501" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">国投</a>（重大投资）、<a href="https://baike.baidu.com/item/%E4%B8%AD%E7%B2%AE%E9%9B%86%E5%9B%A2%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8/9195362" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">中粮</a>/<a href="https://baike.baidu.com/item/%E4%B8%AD%E5%9B%BD%E5%82%A8%E5%A4%87%E7%B2%AE%E7%AE%A1%E7%90%86%E9%9B%86%E5%9B%A2%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8/22229125" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">中储粮</a>（农业粮食）。</p><img width="1387" height="611" alt="image" src="https://github.com/user-attachments/assets/fb00cc5c-f6ee-4b76-8542-b042de337f9a" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><img width="1402" height="616" alt="image" src="https://github.com/user-attachments/assets/63f134ec-2e94-49f5-8f92-00ea61bb2e2f" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><img width="1392" height="607" alt="image" src="https://github.com/user-attachments/assets/25d872d4-dfcf-4614-a8bb-80a08bdb5d31" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><img width="1378" height="603" alt="image" src="https://github.com/user-attachments/assets/7c5f7ad5-cc06-45da-84e0-da968c7de8b5" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><img width="1377" height="621" alt="image" src="https://github.com/user-attachments/assets/fd48c926-b327-428a-a7f1-17ecf03cf706" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><img width="1381" height="621" alt="image" src="https://github.com/user-attachments/assets/3dec4c1b-c6fc-4bb4-b2de-276e49ae948a" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /></li><li><p>江西这几个集团，基本上是地方版的对应关系。</p></li></ul><blockquote><p>但是“两桶油”、三大电信、电网、航运、军工等是由国务院国资委直接管理全国性的大型垄断性企业。<br>这些企业通常是 战略性行业、关系国计民生，而且规模极大，单个集团的总资产可能就超过一个省的全部省属国企，所以保持“国资委—央企集团”的直管模式。</p><img width="1401" height="615" alt="image" src="https://github.com/user-attachments/assets/d4df55c7-69af-4832-9a3b-1833852b8ba7" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /></blockquote></li></ol><h3>四、子公司众多的原因</h3><ul><li><strong>历史包袱</strong>：很多子公司是计划经济时代遗留的厂矿、科研所。</li><li><strong>投资扩张</strong>：集团化改革后，为了做产业链布局，设立了大量二级、三级子公司。</li><li><strong>政策任务</strong>：比如粮食储备公司、电力项目公司，往往“一项目一公司”。</li></ul><p>总而言之，这个划分格局：</p><ul><li>  <strong>是历史演进的结果</strong>：从过去的分散混乱，到今天的清晰分类。</li><li>  <strong>是顶层设计的产物</strong>：积极响应中央关于国企改革的号召，构建“国资委—国有资本投资/运营公司—实体企业”的三层监管架构。</li><li>  <strong>是江西发展的需要</strong>：通过打造江西国控这个超级平台来增强实力，通过组建省农发集团来抓住农业这个省之根本，通过专业化整合让江投等集团更高效，并通过国兴资产来处理改革中的历史包袱。</li></ul><p><strong>总结一句话</strong>：江西省国资委下属这些集团的划分逻辑，是在国企改革“管资本”大背景下，参照中央和其他省份模式，把原先分散在各厅局和行业公司的资产，分别整合到“资产处置平台、资本运营平台、投资平台、农业平台”四大块，以实现功能分工明确、提高国资监管效率。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;img width=&quot;1163&quot; height=&quot;354&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/3ab3b8bb-670e-47c6-a01b-919ee0c5ef47&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;

&lt;h3&gt;一、背景&lt;/h3&gt;</summary>
    
    
    
    <category term="经济与金融" scheme="https://blog.hufeifei.cn/categories/%E7%BB%8F%E6%B5%8E%E4%B8%8E%E9%87%91%E8%9E%8D/"/>
    
    
    <category term="经济" scheme="https://blog.hufeifei.cn/tags/%E7%BB%8F%E6%B5%8E/"/>
    
    <category term="国企" scheme="https://blog.hufeifei.cn/tags/%E5%9B%BD%E4%BC%81/"/>
    
  </entry>
  
  <entry>
    <title>AI到底是在抄答案还是推理？</title>
    <link href="https://blog.hufeifei.cn/2025/09/ai/how-ai-work2/"/>
    <id>https://blog.hufeifei.cn/2025/09/ai/how-ai-work2/</id>
    <published>2025-09-01T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>你有没有想过AI到底是怎样推理的？这篇文章将带领读者钻进AI的大脑，把它的思考过程一层一层的剥开，让你彻底的搞明白它的那些惊艳的答案到底是通过严密的推理一步一步推导出来的，还是像复读机一样从它以前背过的内容里抄过来的。</p><p>这篇文章的内容来自于谷歌DeepMind团队的首席科学家<a href="https://dennyzhou.github.io/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Denny Zhou</a>在斯坦福大学<a href="https://web.stanford.edu/class/cs25/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">CS25 《Transformers United V5》课程</a>中的讲座。相信通过这篇文章的讲解，你将对AI的理解和使用方式都会发生根本性的改变，你会彻底搞懂为什么AI会一本正经的胡说八道，你会发现其实AI根本没有你想象的那么聪明，但是也没有你想象的那么笨。</p><p>首先我们从AI的这个出厂设置说起。其实一个最基础的AI大模型，它的逻辑非常简单，它读过全球几乎所有的书和网站，当你问他的时候，他就会根据读过的资料来连续的预测下一个可能出现的字。就跟很多人说为什么AI不能一次性地把答案输出，非要一个字一个字地去吐，以前还有人跟我说，这是特效，其实不是的。</p><p>比如你说“天空是”，它就会从亿万份的资料里面去统计，发现“蓝”这个字跟在后面的概率最高，然后它就会输出“蓝”；接着AI又会把“天空是蓝”作为一个整体重复上面的预测过程，就会发现“色”这个字出现的概率最高，他就继续输出“色”，所以这就有了“天空是蓝色”。</p><p><img src="https://image.woshipm.com/2024/05/28/36df96da-1cac-11ef-b503-00163e142b65.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="大模型文本预测"></p><p>这个机制有个名字叫“<strong>贪婪解码</strong>”。为什么叫“贪婪”，因为它只顾眼前，这就是为什么早期的AI经常是一本正经的胡说八道。比如你问AI一个脑筋急转弯：汤姆的妈妈有三个儿子，老大叫大毛，老二叫二毛，那老三叫什么？它很可能就会回答你三毛。为什么呢？因为“大毛二毛三毛”在它读过的数据里出现的概率太高了，它就直接“贪”了这个最省事的回答，它不会考虑问题里的关键信息就是“汤姆的妈妈”。</p><p>那怎么解决这个“贪婪”的问题，那后来科学家就发现了一个点石成金的提示词咒语——“一步一步想”。这个提示词真的很神奇，为什么我们在技术上不做任何的优化和调整，就只是给AI加上这么一句话，AI的正确率就能大大提升。其实很简单，你加上这句话就相当于强行给他塞了一张草稿纸，并且改变了他要做的任务，那他的任务就不再是直接去预测“汤姆”这个最终的答案，而是变成先预测解题过程中的第一句话，然后在预测第二句话，最后再到解题的结果。虽然表面上还是在预测下一个字，但是实际上他是在预测解题的过程，所以他会从读过的大量的问题里找到相似的解题过程套用过来。比如说他会生成这样的草稿：问题是汤姆妈妈第三个儿子的名字，题目里已经明确提到了汤姆的妈妈，并且提到了两个儿子大毛和二毛，根据人类的语言习惯，汤姆就是他妈妈的儿子，所以第三个儿子就是汤姆。当他把这个完整的逻辑链条以文字的形式一步一步的生成出来之后，汤姆这个正确答案就形成了这个链条末端最高概率的那个词。</p><p>所以你看，所谓的AI推理本质上就是在生成最终的答案之前，先生成一串作为草稿的中间步骤，这个草稿打的越长越详细逻辑越严密，那么最终结果就越靠谱。我们并没有给AI装上一个新大脑，只是用一个聪明的指令，逼着他把恐怖的算力用在了打草稿这个正确的事情上面。这个“一步一步想”的提示词也被叫做<a href="https://cloud.google.com/discover/what-is-prompt-engineering#types-of-prompts" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">CoT（Chain of Thought 思维链）</a></p><p>那么下一个问题就来了，我们不能每次都在AI的屁股后面提醒他吧。那怎么把它从一个需要去监督的学生，训练成天生就懂推理的大师呢？这就引入了AI推理能力的进化三部曲。</p><p>其实这个三部曲很有意思，第一步就是“题海战术”，我们可以雇佣成千上万的人类专家，手写出无数道完美的解题草稿，然后再把这些标准答案一股脑地全部喂给AI，让他去死记硬背，他就像是一个刷题无数的学生，考卷里的所有题型，他都见过，那自然就能考出好成绩，但是如果稍微换一个问法，他马上就抓瞎了，因为他学到的是题，而不是方法，这个学名就叫做“<strong>监督微调</strong>”。</p><p>第二个阶段呢就是“<strong>自我博弈</strong>”。那档次就完全不一样了，我们不需要再喂给AI标准答案，而是让AI自己天马行空用各种你想的到想不到的方法去解题，就相当于是让他随便去试。然后这里边就生成了大量的无数的千奇百怪的草稿。然后我们再给他一个判断这个答案是正确还是错误的程序，如果你答对了，我就给这个学生AI的这个解题路径一个大大的奖励。如果你答错了，我就给它一个惩罚，它在经历了几亿万次的自我的试错和奖惩之后，这个学生AI他自己就悟了。他不再是模仿人类，而是真正从这个底层的规律上面就掌握了到底什么才是通往正确答案的最优雅最高效的推理路径。这就是常说的“<strong>强化学习</strong>”。</p><p>但是这还不够，一个大师也有偶尔失手的时候，所以第三个阶段叫做“<strong>集体智慧</strong>”，我们可以给AI 99个分身，让他的这个回答增加一点随机性，把同一个问题用不同的思路独立的去算100遍，然后我们把100个答案放在一起公开投票，哪一个答案出现的次数最多，那我们就采信哪一个。这就是用最朴素的统计学原理把这个偶然犯错的可能性降到了最低。这叫“<strong>自洽性投票</strong>”。</p><p>一个顶尖AI的思考能力，其实就是这么一步步进化过来的，从一个只会联想的超级输入法进化成一个被逼着打草稿的普通学生，然后再进化成一个自我博弈的学霸宗师，最终进化成由100个宗师分身组成的学术委员会。</p><p>所以回到这个最根本的问题。AI到底是在推理还是在背答案，Denny Zhou就说，我们不要拘泥于这个定义，AI就是在检索中推理，在推理中检索。明白了这一点，我们就可以让AI的效果超越90%的人，那么这里就教大家非常有用的三招。</p><p>比如你在解决一个几何题。如果你直接去问，AI有可能会答错，但是如果你在提示词里加上一句话：“回忆相关的问题”，然后再去解决这个问题，那模型他可能会去先回忆检索出来一个关于计算两点之间距离的公式，然后在利用这个知识成功解决当前的面积计算的问题。其实我们在解决复杂问题的时候，可以先去引导模型后退一步，先去思考解决这一类问题所需要的一般性的原则，或者抽象的概念，然后再把这些原则用在这个具体的问题里面。</p><p>第二招是“步骤分解法”，你要像一个项目经理一样，主动的把你的任务给拆解掉，你主动帮他搭好一个思考的架子，它就能够通过检索的这种方式在你的这个框架里面填出一个最完美的内容。比如你不要去说给我做一个云南的旅游攻略，而是要说我们来规划一个为期7天的云南家庭游。第一步请列出适合家庭游的三个核心城市及理由，第二步为我们规划每一天的详细行程，包括景点和交通，第三步估算一下人均的预算。这个方法其实特别适合于没有深度思考能力的模型。</p><p>第三招是“自我审查法”，我们没办法直接用AI的百人投票，但是我们可以让AI自己检查自己，你得到一个答案之后，你不要先着急采纳，你可以去追问AI说，你确定吗，你重新审视一下你的答案，找出其中可能存在的3个逻辑漏洞。这招相当于是让AI自己跟自己打架，他立刻就会启动更深度的思考，去检查和修正之前的一些答案，准确率会再上一个台阶。</p><p>所以看懂了这些你就会发现AI虽然不是一个有感情的人，但是他可以被精确的引导，被严格的塑造，它是一个究极的逻辑机器。所以未来真正能够拉开人与人差距的，不是你掌握了多少知识，而是你能不能设计出一个高明的问题，一个明妙的指令，去帮助这个地球上最强的外挂，帮你一步一步的想出颠覆整个牌桌的答案。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;你有没有想过AI到底是怎样推理的？这篇文章将带领读者钻进AI的大脑，把它的思考过程一层一层的剥开，让你彻底的搞明白它的那些惊艳的答案到底是通过严密的推理一步一步推导出来的，还是像复读机一样从它以前背过的内容里抄过来的。&lt;/p&gt;
&lt;p&gt;这篇文章的内容来自于谷歌DeepMind团队的首席科学家&lt;a href=&quot;https://dennyzhou.github.io/&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;Denny Zhou&lt;/a&gt;在斯坦福大学&lt;a href=&quot;https://web.stanford.edu/class/cs25/&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;CS25 《Transformers United V5》课程&lt;/a&gt;中的讲座。相信通过这篇文章的讲解，你将对AI的理解和使用方式都会发生根本性的改变，你会彻底搞懂为什么AI会一本正经的胡说八道，你会发现其实AI根本没有你想象的那么聪明，但是也没有你想象的那么笨。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/categories/AI/"/>
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>生产力的变革</title>
    <link href="https://blog.hufeifei.cn/2025/09/economic/revolution-in-productivity/"/>
    <id>https://blog.hufeifei.cn/2025/09/economic/revolution-in-productivity/</id>
    <published>2025-09-01T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.412Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><blockquote><p>按照马克思的理论，生产力的三要素：劳动者，劳动资料和劳动对象。劳动者从原始社会到现在都没有发生过根本性的改变，我们还是使用原始人的身躯。<br>那从劳动资料和劳动对象两个角度分析生产资料在历史上的变化。在数字化智能化的时代，如何获取生产资料。</p></blockquote><p>下面我将按照马克思主义政治经济学的理论，从劳动资料和劳动对象的演变进行分析，并最终探讨在数字化智能化时代如何获取生产资料。</p><h3>第一部分：从历史角度分析生产资料的变化</h3><p>从生物学角度看，劳动者的“身躯”并未发生根本性改变。人类生产力的巨大飞跃，主要驱动力量正是<strong>劳动资料</strong>（特别是生产工具）和<strong>劳动对象</strong>的深刻革命。</p><h4>1. 劳动资料的演变（人类如何改造自然）</h4><p>劳动资料是劳动者用来作用于劳动对象的物或物的综合体，其中<strong>生产工具</strong>是最具决定性的因素。它的演变历史就是人类生产力发展的刻度尺。</p><ul><li><p><strong>原始社会：</strong></p><ul><li>  <strong>劳动资料：</strong> 简陋的石器（石斧、石刀）、木棒、骨器等。这些是自然物的简单加工品，极大地依赖劳动者的自身体力。</li><li>  <strong>特点：</strong> 劳动资料是对自然物的直接利用，延伸了人的肢体，但能力和效率极其有限。</li></ul></li><li><p><strong>农业社会：</strong></p><ul><li>  <strong>劳动资料：</strong> 金属工具（铜器、铁器）的出现是革命性的。犁、锄头、镰刀、畜力（牛、马）的使用，以及水车、风车等简单机械。</li><li>  <strong>特点：</strong> 人类开始利用金属材料和驯化畜力，实现了从“采集”到“耕作”的革命，劳动资料成为了系统化开发土地资源的前提。</li></ul></li><li><p><strong>工业社会：</strong></p><ul><li>  <strong>劳动资料：</strong> <strong>蒸汽机</strong>的发明是里程碑。此后，机床、内燃机、电动机、自动化生产线等机械系统成为主导。劳动资料从<strong>代替人的体力</strong>（工具机）发展到<strong>代替人的能量</strong>（动力机）。</li><li>  <strong>特点：</strong> 劳动资料实现了机械化、自动化，构成了庞大的机器体系。劳动者从“使用工具”变为“服侍机器”，生产资料（机器）成为资本占有并支配劳动的关键。</li></ul></li><li><p><strong>信息社会/自动化社会：</strong></p><ul><li>  <strong>劳动资料：</strong> 计算机、工业机器人、数控机床、通信网络（互联网）。这些工具开始<strong>替代人的部分脑力劳动</strong>，如计算、控制、记忆等。</li><li>  <strong>特点：</strong> 劳动资料实现了信息化和初步智能化，生产效率和对全球资源的调配能力空前提高。</li></ul></li></ul><h4>2. 劳动对象的演变（人类改造什么）</h4><p>劳动对象是劳动加工所作用于其上的一切东西。它的扩展意味着人类对自然界和自身创造物的利用广度和深度的增加。</p><ul><li><p><strong>原始社会：</strong></p><ul><li><strong>劳动对象：</strong> 天然的自然资源，如野兽、野果、鱼类、现成的石块、树木等。</li><li><strong>特点：</strong> 完全是自然界直接提供的“现成物”。</li><li><strong>生产资料占有方式</strong>：共同占有。由于个人无法单独对抗自然，必须集体劳动。</li><li><strong>生产关系</strong>：原始公有制。人们共同生产，平均分配，没有剩余产品，因此没有阶级和剥削。</li></ul></li><li><p><strong>农业社会：</strong></p><ul><li>  <strong>劳动对象：</strong> 土地、驯化的动植物（农作物、家畜）、以及经过初级加工的材料（丝绸、毛皮、陶土、矿石）。</li><li>  <strong>特点：</strong> 劳动对象从“现成自然物”扩展到“人工培育的自然物”，开始了对自然界的深度干预和改造。</li><li> <strong>生产资料占有方式</strong>：私人占有。奴隶主占有土地和奴隶本身；封建主占有土地，农民（或农奴）依附于土地。</li><li><strong>生产关系</strong>：<ul><li> 奴隶制：奴隶主占有全部生产资料和奴隶劳动成果，奴隶自身也属于生产资料。</li><li> 封建制：地主占有土地，农民租种土地并向地主缴纳地租（劳役、实物或货币）。生产关系表现为人身依附关系。</li></ul></li></ul></li><li><p><strong>工业社会：</strong></p><ul><li>  <strong>劳动对象：</strong> 深度加工的原材料成为主体，如钢铁、水泥、石油、化工原料、橡胶等。此外，<strong>电能</strong>成为一种前所未有的、非实体的劳动对象（被转换、传输、利用）。</li><li>  <strong>特点：</strong> 劳动对象绝大部分不再是自然直接赐予的形态，而是人类工业活动的产物（“人造物”），人类进入了“加工材料的时代”。</li><li>  <strong>生产资料占有方式</strong>：高度集中的私人资本占有。资本家拥有工厂、机器、原料等一切生产资料。</li><li>  <strong>生产关系</strong>：雇佣关系。无产阶级（工人）被剥夺了生产资料，为了生存，只能向资本家出卖自己的劳动力。资本家支付工资，并占有工人创造的剩余价值。这种关系掩盖了剥削，形式上看似“自由”、“平等”。</li></ul></li><li><p><strong>信息社会/自动化社会：</strong></p><ul><li>  <strong>劳动对象：</strong> 出现了一种新的、非实体的劳动对象——<strong>信息（数据）</strong>。代码、程序、算法、知识产权等都成为被加工、处理和创造的核心对象。</li><li>  <strong>特点：</strong> 劳动对象实现了从<strong>实体化到虚拟化</strong>的重大飞跃。对数据的加工和处理，创造出巨大的价值。</li><li>  <strong>生产资料占有方式</strong>：依然由资本主导，但出现了新形态。平台公司（如Google, Facebook, 亚马逊）占有关键生产资料——数据、平台、算法和网络效应。</li><li>  <strong>生产关系</strong>：雇佣关系依然主体，但形式更加灵活和隐蔽（如零工经济、平台用工）。数据剥削成为新特征：用户无偿提供数据（劳动对象），平台通过算法（劳动资料）将其转化为有价值的产品并进行垄断。</li></ul></li></ul><h3>第二部分：数字化智能化时代如何获取生产资料</h3><p>数字化智能化时代是信息社会的深化和高级阶段，其核心特征是<strong>数据</strong>成为关键生产要素，<strong>人工智能</strong>成为核心生产工具。这使得生产资料的获取方式发生了颠覆性变化。</p><h4>1. 劳动资料的获取：从“拥有”到“接入”</h4><p>传统的工业时代，获取强大的劳动资料（如一条自动化生产线）意味着巨大的资本投入。而在数字化时代，获取最先进的劳动资料的方式变得前所未有的<strong>民主化和轻资产化</strong>。</p><ul><li>  <strong>云计算与算力（新型动力机）：</strong> 您不再需要购买和维护庞大的服务器集群。像AWS、Azure、阿里云这样的云服务商，让您可以通过网络<strong>按需租用</strong>世界顶级的计算能力（CPU、GPU、TPU）。获取生产资料（算力）的方式从“购买产权”变成了“购买服务”。</li><li><strong>软件与算法（新型工具机）：</strong> 许多核心的生产工具是软件。企业无需从零开发，可以通过：<ul><li>  <strong>开源社区（Open Source）：</strong> 免费获取和使用世界上最优秀的软件、框架和库（如Linux, Apache, TensorFlow, PyTorch）。这是<strong>集体智慧共创共享</strong>的模式。</li><li>  <strong>SaaS（软件即服务）：</strong> 订阅使用各类专业软件服务（如CRM、设计软件、管理工具），无需购买和安装。</li></ul></li><li>  <strong>平台与生态：</strong> 对于创业者和小微企业，可以直接接入大型平台（如微信、抖音、Shopify、Amazon AWS）提供的开发工具、流量和支付系统。这些平台本身就是一个庞大的、现成的“数字劳动资料综合体”。</li></ul><p><strong>结论：</strong> 在智能化时代，获取劳动资料的核心不再是资本规模的竞争，而是<strong>知识、创意和连接能力</strong>的竞争。你可以用很少的初始资本，通过接入云端、使用开源工具和平台服务，获得与大型企业相近的生产能力。</p><h4>2. 劳动对象的获取：数据成为“新石油”</h4><p>在智能化时代，最核心的劳动对象是<strong>数据</strong>。如何获取、清洗、标注和处理数据，成为了价值创造的关键。</p><ul><li><strong>数据的获取途径：</strong><ul><li>  <strong>用户产生：</strong> 通过提供免费的数字服务（搜索、社交、娱乐、工具）来获取用户的行为数据。这是互联网平台公司的核心模式。“如果你免费，那你就是商品”（你的数据是产品）。</li><li>  <strong>传感器采集（IoT物联网）：</strong> 通过部署物理世界的传感器，从工业设备、汽车、家电、城市基础设施中持续采集海量数据。</li><li>  <strong>公共数据：</strong> 政府和企业开放的各类公共数据集（开放数据运动）。</li><li>  <strong>合成数据：</strong> 利用AI技术自行生成和模拟数据，用于训练AI模型，尤其在真实数据稀缺或敏感的领域。</li><li>  <strong>数据购买与交换：</strong> 从数据市场或第三方数据经纪公司购买所需的数据。</li></ul></li></ul><p><strong>重要变化：</strong></p><ul><li>  <strong>非竞争性：</strong> 数据作为一种劳动对象，具有<strong>非竞争性</strong>。我使用一组数据训练AI，并不妨碍你同时使用同一组数据。这与传统的土地、石油等竞争性生产资料有本质区别。</li><li>  <strong>价值源于处理：</strong> 原始数据的价值有限，其巨大价值需要通过算法（劳动资料）进行加工、分析和建模后才能释放。数据与AI算法结合，才能成为真正的生产资料。</li></ul><h3>总结</h3><p>从马克思主义的视角看，数字化智能化时代的生产资料变革是历史性的：</p><ol><li> <strong>劳动资料</strong>的形态从庞大的实体机器变为<strong>无形的算法、软件和云端算力</strong>。其获取方式从依赖巨额资本的“所有权”模式，转向更灵活的“接入权”和“服务订阅”模式，极大地降低了创造活动的门槛。</li><li> <strong>劳动对象</strong>的范围从实体物质扩展到<strong>虚拟的数据</strong>。数据作为一种非竞争性的新资源，其获取依赖于提供数字服务、部署物联网和利用数据市场，其价值通过智能算法的“劳动”来实现。</li></ol><p>最终，这个时代的核心矛盾也在演变：<strong>生产资料（数据、算法、平台）的私人占有与社会化生产之间的矛盾</strong>以新的形式出现。谁掌握了核心数据和海量算力，谁就掌握了这个时代最关键的生产资料，从而在生产和分配中占据主导地位。如何让这些数字生产资料更好地服务于社会整体，而不是被少数巨头垄断，是当今时代面临的全新课题。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;按照马克思的理论，生产力的三要素：劳动者，劳动资料和劳动对象。劳动者从原始社会到现在都没有发生过根本性的改变，我们还是使用原始人的身躯。&lt;br&gt;那从劳动资料和劳动对象两个角度分析生产资料在历史上的变化。在数字化智能化的时代，如何获取生产资料。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下面我将按照马克思主义政治经济学的理论，从劳动资料和劳动对象的演变进行分析，并最终探讨在数字化智能化时代如何获取生产资料。&lt;/p&gt;</summary>
    
    
    
    <category term="经济与金融" scheme="https://blog.hufeifei.cn/categories/%E7%BB%8F%E6%B5%8E%E4%B8%8E%E9%87%91%E8%9E%8D/"/>
    
    
    <category term="经济" scheme="https://blog.hufeifei.cn/tags/%E7%BB%8F%E6%B5%8E/"/>
    
    <category term="马克思主义" scheme="https://blog.hufeifei.cn/tags/%E9%A9%AC%E5%85%8B%E6%80%9D%E4%B8%BB%E4%B9%89/"/>
    
  </entry>
  
  <entry>
    <title>大模型如何推理</title>
    <link href="https://blog.hufeifei.cn/2025/08/ai/how-ai-works/"/>
    <id>https://blog.hufeifei.cn/2025/08/ai/how-ai-works/</id>
    <published>2025-08-31T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>这可能是对于大语言模型（LLM）原理最清晰、易懂的解读。</p><p>前段时间，Google DeepMind 的首席科学家兼研究总监 <a href="https://dennyzhou.github.io/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Denny Zhou</a> 在斯坦福大学课程中，分享了大语言模型推理的深刻洞见。</p><p>作为人工智能领域的领军人物，<a href="https://dennyzhou.github.io/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">Denny Zhou</a> 通过这场讲座对 LLM 推理机制及其优化方法进行了系统阐述，揭示了大模型推理的核心原理和最新进展。</p><p>Denny Zhou 总结了<strong>四个关键点</strong>：</p><ul><li>  LLM 中的推理仅仅意味着在得出最终答案之前生成一系列中间 token，这是否与人类推理相似并不重要，关键在于，Transformer 模型通过生成许多中间 token，可以变得极其强大，而无需扩展模型的大小。</li><li>  预训练模型即使未经任何微调，也具备推理能力。挑战在于，基于推理的输出往往不会出现在输出分布的顶部，因此标准贪婪解码无法将它们呈现出来。*   提示技巧（例如思维链提示或「让我们一步一步思考」）和监督式微调曾是引发推理的常用方法，现在强化学习微调已成为最强大的方法，这一技巧被多个实验室独立发现。在谷歌，这要归功于团队成员 Jonathan Lai，基于理论，扩展强化学习应该专注于生成长响应，而不是其他目标。</li><li>  通过生成多个响应然后将它们聚合起来，而不是依赖于单个响应，可以极大地提高 LLM 推理能力。</li></ul><p>Denny Zhou 不仅是 Google DeepMind 的顶尖科学家，还曾在 Google Brain 创立并领导了推理团队（Reasoning Team），现在该团队是 DeepMind 的一部分，专注于开发具备推理能力的大语言模型，以推动人工智能通用智能的发展。</p><p><img src="https://pic4.zhimg.com/v2-c7d05e6c12cac8e9ad77cfbf5e3a9233_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>他的研究聚焦于链式思考提示（chain-of-thought prompting）、自一致性（self-consistency）和 LLM 优化等领域，在 Google Scholar 上累计获得超过 83,000 次引用，对机器学习和 AI 领域贡献显著。</p><p>此外，他还共同创办了语言建模大会（CoLM），并担任 2024 年大会的总主席，曾荣获 2022 年 Google Research Tech Impact Award 和 WSDM Test of Time Award，并在 KDD 2023 等活动中发表主题演讲。他常在斯坦福、哈佛等大学进行邀请讲座，分享关于 LLM 的观点。</p><p>他参与教学的 CS25 《Transformers United V5》课程，目前已是斯坦福大学最热门、最具研讨性的课程之一，汇聚了 Geoffrey Hinton、Ashish Vaswani 和 Andrej Karpathy 等我们耳熟能详的 AI 顶尖研究人员。该课程在斯坦福大学内外都广受欢迎，YouTube 上的观看次数更是高达数百万。每个星期，人们在课上都会深入探讨人工智能领域的最新突破，从 GPT 等大型语言模型到艺术、生物和机器人领域的应用。</p><p>课程页面：<a href="https://web.stanford.edu/class/cs25/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://web.stanford.edu/class/cs25/</a></p><p>接下来，让我们看看 AI 领域的顶级学者是如何解读大模型「推理」这一至关重要的能力的。</p><p><img src="https://pic1.zhimg.com/v2-a4b513701b96b87b5ac94e6097031b54_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>如今，很多人都已经相信大语言模型（LLM）是可以推理的了。实际上，我们还不知道这是否成立，这可能取决于对推理的定义。在这里，我们认为推理是输入问题 - 输出答案之间的中间步骤（生成的 token）。</p><p><img src="https://pic2.zhimg.com/v2-f6c09129ab700519db1fd15c7413ee4b_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>LLM 中的推理仅仅意味着在得出最终答案之前生成一系列中间 token，这是否类似于人类的推理并不重要，关键在于，Transformer 模型可以通过生成大量中间 token 而变得几乎任意强大，而无需扩展模型大小。</p><p><strong>为什么中间 token 在推理中至关重要？</strong></p><p>Denny 认为，在推理中 中间 token 的作用至关重要。他与斯坦福大学的 Tayma 教授及其学生合作，提出了一个理论：任何可以通过布尔电路解决的问题，都可以通过生成中间 token 来用恒定大小的 transformer 模型解决。</p><p>这个理论表明，逻辑电路的大小（即电路中逻辑门的数量）决定了解决问题的能力。比如，使用 GPU 集群时，逻辑门的数量可能达到数千万、数十亿甚至数万亿。如果直接生成最终答案，可能需要极深的模型结构，甚至无法解决问题。而通过生成中间 token，模型就能以恒定大小的 transformer 架构有效地解决问题。这种思路提供了一种从理论角度理解推理的方式。</p><p><img src="https://pica.zhimg.com/v2-3f5da1a091a74a14f952c0269028c212_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p><strong>推理过程的技术细节</strong></p><p>关于推理的一个常见看法是，语言模型不能推理，除非进行进一步的提示工程，比如安全提示或候选答案的微调，我同意这个观点。我们可以简单地认为，<strong>语言模型已经具备了推理能力，关键在于解码过程。</strong></p><p>举个例子。这道简单的数学问题：「我有 3 个苹果，我爸爸比我多 2 个苹果。我们一共有多少个苹果？」如果你使用任何预训练模型，比如 Llama、DeepSeek 或 Qwen，直接输入这个问题，模型可能会输出「5 个苹果」，这是错误的。</p><p><img src="https://pic2.zhimg.com/v2-88241a47736ac694970fc5e1e2aa97b3_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>这是因为使用了「贪婪解码」方法，模型直接输出最可能的答案。</p><blockquote><p>贪婪解码（Greedy Decoding）通常出现在机器翻译、文本生成（如GPT）、语音识别等序列生成任务中，是一种最简单的解码策略。</p><p>核心思想就是：<br>在生成序列的过程中，模型在每一步都会输出一个概率分布（softmax 后的 token 概率）。贪婪解码就是每一步都选择概率最大的那个 token，然后把它作为当前步的输出，并继续输入到下一步，直到遇到终止符（如 <code>&lt;eos&gt;</code>）或者达到最大长度。</p></blockquote><p>但是，如果我们多考虑一些候选答案，而不是只选择一个最可能的候选答案，模型就能产生一个更正确的答案，这就是「链式推理解码」的概念。</p><blockquote><p>链式推理 (Chain-of-Thought, CoT) 的核心思想是：<br>在生成答案时，让模型 显式地输出推理步骤，而不是直接给出最终结果。</p><p>而 链式推理解码 指的就是在推理型任务（比如数学题、逻辑题、多跳问答）中，通过 在解码时引导模型输出逐步推理链条，从而提升正确率。</p></blockquote><p><strong>它包含两个步骤：第一步，超越贪婪解码，检查更多的生成候选；第二步，选择那些最终答案置信度更高的候选。</strong></p><p><img src="https://pic1.zhimg.com/v2-28f74773fa1520e64d739771def54768_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>链式推理解码是一个非常简单的方法，但它需要一些程序设计工作。我们还可以尝试其他方法，如通过简单的自然语言提示，直接指导模型进行链式推理，这就是「链式思维提示」奏效的原因。通过这种方法，我们可以使推理过程自然地出现在输出空间中，而不需要复杂的计算步骤。</p><p>这些提示方法确实非常简单，而且效果也非常好，但我们也能看到一些问题，例如安全提示方法就需要任务特定的示例。而另一个方法叫做「逐步思考」，它是一个通用的方法。你不需要找到类似的示例，只需说「让我们一步步思考」，然后奇迹般的结果就会出现。不过，它的表现比少量示例的提示差得多。</p><p>虽然这两种方法看起来都不错，但「逐步思考」方法有些怪。如果我问某人一个问题，然后要求他们跟我一步步思考，否则他们就无法继续思考，这显然不符合我们的期望。</p><p><img src="https://pic4.zhimg.com/v2-fc64c6a629f6231dbee7e44f22fd2fff_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>现在有一种流行的方法：监督微调（SFT）。</p><p>实际上思路非常简单，我们可以从人工标注者那里收集一系列问题及其逐步解决的方案，然后我们最大化人类解决方案的可能性，标记一些实际上用于 LLM 训练的网络代码。在那之后，我们就可以在任何地方应用这个模型。Denny Zhou 等人在 2017 年的一系列研究中展示了这种能力，他们收集了大量文字问题及人工标注的解决方法。在 2021 年，这一方法被用来解决大规模问题，随后 OpenAI 扩展了这一方法。</p><p><img src="https://picx.zhimg.com/v2-0eb44f8d0aeb163018c763c8e2a45ee7_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>这是简单的工作原理示意：用一系列例子、问题和答案微调你的模型，然后就可以在新的问题上进行测试了。比如这里就是众多大模型难以回答的 strawberry 单词里有多少个 r 的问题。很多人一度认为这个问题是用于测试 AGI 是否出现的「重大问题」。</p><p><img src="https://pica.zhimg.com/v2-a88f13ebf6fa7fa0e6502e1aa9b57b68_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>SFT 实际上是一个通用的方法，如果这就能解决 AI 的推理问题，那事情就太简单了，然而它的泛化能力是有限的。DeepMind 在 2021 年夏天意识到了这个问题，怎么办？只有 Scaling,Scaling,Scaling，找到更多数据来进行训练，看看效果如何。</p><p>但这里有个教训，<strong>不要盲目扩展规模，方向错了就什么也得不到。</strong></p><p>如何解决 SFT 泛化失败的问题？有两个重要方面，首先是解决人类标注错误的问题。实际上谷歌一个发明 finetuning 研究的成员曾表示，他们发现机器生成的数据可能还要优于人类构建的数据。这是个有点反直觉的经验。</p><p><strong>让 AI 实现自我提升</strong></p><p>所以第一波尝试被称作自我提升，与其从人类那里生成、收集数据，我们可以直接让模型生成数据。所以收集问题的数据集，你的模型要逐步生成解决方案，然后再次最大化正确答案的可能性。</p><p>比如一个数学问题，你有问题和答案，让大模型生成解决问题的步骤，依据是否获得正确答案来选择正确的步骤。这就是 Reject Sampling，这里唯一的区别在于数据来自于你的模型，而非人类。</p><p>该研究的论文即《STaR: Bootstrapping Reasoning With Reasoning》，其本意是减少昂贵的人工标注成本。但从另一个角度来理解，<strong>一旦更好的模型生成了响应或训练数据，模型就可以自我改进。</strong></p><p><img src="https://pic2.zhimg.com/v2-bc2ac344e024cfaae5e7c121c01e3311_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>模型获得了改进之后，又该从哪里收集数据呢？我们可以重复这个过程。</p><p>我们注意到字节跳动研究人员在 2024 年 1 月发在 arXiv 上的《ReFT: Reasoning with Reinforced Fine-Tuning》，这可能是 RL finetuning 的最早的学术出版物。甚至论文标题都叫做《基于强化调优的推理》。随后，在 OpenAI 的 o1 公开之后，每个人都开始意识到要使用强化学习微调了。</p><p>可能有很多研究团队独立意识到了这个方向。</p><p>强化学习先驱 Rich Sutton 在《Verification, the key to AI》中曾提到，在 RL 微调中，可靠的验证器是最关键的，而非 RL 算法。</p><p>那么问题来了，除了效率问题以外，<strong>为什么机器生成的训练数据反而比人类的更好？</strong></p><p><img src="https://pica.zhimg.com/v2-ab1dc1bc350bd9a41c6319c87ca977ec_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>这与机器学习中的第一性原理相关，即直接优化我们想要的东西。如果我们想构建一个用于推理的模型，或者只是一般地用于生成有趣的内容，我们就需要优化衡量生成质量的指标。一旦你有了一个度量标准，我们所需要做的就是计算该度量标准的梯度并进行反向传播。</p><p>因此，假设模型是一个先验的模型，我们需要最大化该指标的期望值。那么该怎么做呢？我们需要进行采样来计算期望值，这就是你得到策略梯度的原因。</p><p>这里没有魔法（比如如何激励你的模型进行同步，激活多个位置），不需要那些词汇，这里只使用标准的机器学习术语，定义你的指标，计算梯度并进行反向传播。</p><p><img src="https://pic1.zhimg.com/v2-8a0900b04668905f4b1f378f6fcde25e_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>现在，这个方法运行良好，那么就该 Scaling 了。朝哪个方向扩展呢？粗略地考虑，似乎随着 COT 的增长，一个模型可以解决所有的问题，这都不需要模型尺寸的增长，只需要最小的固定大小的迁移模型，这样也没关系。</p><p>所以你如果查阅早期文献会发现，人们认为 RL finetuning 效果好于 SFT。</p><p><img src="https://pica.zhimg.com/v2-b5d04553fdf034d85447819dba568db8_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>这里不得不说到 LLM 推理的美妙之处了。<strong>这个类似于人类的推理过程源自逐个 token 的预测，而非像传统 AI 那样依赖搜索排序。</strong></p><p>举个例子，2024 年 12 月，谷歌发布了 Gemini 2.0 思考模式，这里尝试了一个训练集里没有的问题。使用 1 到 10 的数字来组成 2025，并且明智地使用每个数字以及加法和乘法这两种基本运算。</p><p>右边可以看到 Gemini 2.0 的思考过程，让我们看看模型是如何进行思考的。这不是通过搜索。你可以看到，在一开始，模型就表示这是一个相对较大的数字，这表明乘法运算将大量涉及。这就像人类思考一样。值得注意的是，2025 是 45 的平方，即 45 乘以 45。接着模型开始思考如何得到中间产物，使用乘法……</p><p>这就是模型训练如此强大的原因。</p><p><img src="https://picx.zhimg.com/v2-718a536d6ad11dcaf80bf6d2a5c47ec1_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>再次引用 Rich Sutton 在《苦涩的教训》中的话：Scaling 的发现只会让我们更难看清发现过程是如何完成的。</p><p><img src="https://pic2.zhimg.com/v2-614ebac0b2ac9ecfc5b74decfcb64849_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>看起来，Sutton 在看到 DeepMind 的 AlphaGo 和 AlphaZero 的成功之后，写出了《苦涩的教训》。真正可扩展的只有两个过程，一个是学习，另一个是搜索。在这里我只想强调一件事。<strong>学习是可扩展的</strong>，我们只需要学习。</p><p>RL finetuning 的优势在于它的泛化很好，但并不是所有任务都是可以由机器自己进行验证的，比如写作，甚至代码编程。</p><p>我们必须牢记，LLM 是进行预测的模型，他们不是人类。</p><p>从数学角度来看，这意味着什么？我们来思考一下 LLM 的解码过程。给定问题和生成器推理，然后输出最终答案，接着是通过网格解码关键找到的响应，那么关键点就是匹配概率。</p><p>对我们来说，需要选择概率最大的答案。所以它们没有对齐，我们只需要再进一步。如果我们生成推理过程，我们应该有一些整体推理过程来找出最终答案在机器学习方面的概率，这被称为边缘化。所有这些原因实际上本质上都只是潜在变量。如果我们刚开始接触机器学习，实际上就会知道这个和可以通过采样来计算。</p><p><img src="https://pic2.zhimg.com/v2-e90095b19aee264693512230a27e15f5_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>因此，通过随机抽样生成多个响应，然后选择出现频率最高的答案。我们不看推理通过率，它只选择最常见的答案，而不是最常见的任务通过率。这就是诀窍。这在实证中被称为边缘化。如果你采用这种方法，就会看到巨大的改进。</p><p><img src="https://pic1.zhimg.com/v2-6caeaabb468ea478c7cc3515f6982992_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>另一种方法是检索。我知道关于检索推理有很多辩论，很多人说语言模型可能只是做检索而不是推理，对我来说，<strong>实际上总是很难区分检索和推理</strong>。</p><p><img src="https://picx.zhimg.com/v2-55c18509ee315de960792be0a33b8517_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>我每年都会参加几乎每一场会议，每次我们都会讨论每篇论文的新颖性。其实，检索和推理的辩论就像是类似的争论。我看到过一个实验，尝试不同的模型并行运行，这样做可能会让结果更混乱。比如，使用 4 个不同的模型回答同一个问题，最后再对比答案，挑选出最一致的结果。</p><p>如果从不同模型中生成回答，这更像是一种「模型组合」（model assembly）方法，通过多个模型的输出进行对比，选择一个最佳答案，类似于随机选择。虽然数学原理不完全相同，但它们的实现方式是类似的。</p><p>关于检索和推理的争论，我个人并不太关注。我在工业界工作，更关注的是实际性能。对我来说，如果检索能够获得 A + 级的答案，那为什么还要争论是否属于推理呢？所以，2024 年我们发布了一篇关于类比推理的论文。我可以用一个小例子来展示检索在推理中的重要性。</p><p>考虑这样一个问题：一个正方形的四个顶点的坐标是…… 那么它的面积是多少？这个红色高亮部分是我添加的提示：「回忆一个相关的问题，然后解决这个问题。」</p><p><img src="https://pic2.zhimg.com/v2-f82082965ef84c9a31bdbd1e4c7356dd_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>当时，我尝试了 GPT 3.5 和我们自己的模型，但它们在没有提示的情况下无法解答这个问题。然而，添加了相关问题的提示后，模型就能解决这个问题了。</p><p>发生了什么呢？当我告诉模型回忆相关问题时，模型找到了一个相关但不同的问题。其实，这是一个与当前问题相关的问题，涉及计算坐标平面上两点之间的距离，并给出了公式。然后，模型说：「哦，我现在知道如何计算距离了，接着我就可以计算面积。」这个例子展示了检索在推理中的重要性。</p><p>另一个例子是「后退一步」的方法。在解决问题之前，我们给模型提供了一些简短的例子，让它理解如何抽象化思考。例如，在解决实际问题之前，我们可以让模型「后退一步」，思考更抽象的原则，然后再应用到实际问题中。这就是检索在推理中的作用。</p><p><img src="https://pic4.zhimg.com/v2-2a51b3c77a94dc6950cb1eee97aef181_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>我想现在大家都明白，深度学习研究（Deep Research）团队的理念也与此类似。我们有一个叫做「深度研究」的团队，其中一位负责人曾是我的实习生。后来，他加入了 OPI 并发明了「深度研究」方法。你们看到的区别就在于，他们通过检索相关问题或知识，帮助解决实际问题，基本思路其实非常简单。</p><p>最后，Denny Zhou 进行了总结：<strong>其实大家不必再纠结 AMS 是否能够推理，至少在语言模型中，推理总是比没有推理更好，Alpha 微调比 SFT（监督微调）更好，聚合多个答案比只选一个答案更好，当然，这会更昂贵。而检索和推理的结合比单纯的推理要好得多。</strong></p><p><img src="https://picx.zhimg.com/v2-e2ab66eb5e4f5e58e0b90eddfd82545d_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>对于未来的突破，Denny Zhou 表示，他非常期待看到如何解决那些超出唯一、可验证答案的任务。他认为<strong>，基准测试很快会趋于饱和</strong>，更多的研究应该集中在构建真正的应用程序上，而不仅仅是解决学术性基准测试问题。</p><p><img src="https://pic2.zhimg.com/v2-7784225a1eeffbefb995db02fb8c928f_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><p>Denny Zhou 引用了 Richard Feynman 的名言：「真理总是比你想象的更简单。」他强调，这句话对于机器学习研究尤其适用。很多学术论文过于复杂，但实际上，我们的研究可以保持简洁明了。</p><p><img src="https://pic2.zhimg.com/v2-c2c50bd269c5fc9f73d803e0a8a2b30f_1440w.jpg" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"></p><blockquote><p>参考链接：</p><ul><li><a href="https://dennyzhou.github.io/LLM-Reasoning-Stanford-CS-25.pdf" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://dennyzhou.github.io/LLM-Reasoning-Stanford-CS-25.pdf</a></li><li><a href="https://www.youtube.com/watch?v=ebnX5Ur1hBk&amp;amp" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://www.youtube.com/watch?v=ebnX5Ur1hBk&amp;amp</a></li><li><a href="https://x.com/denny_zhou/status/1948499173986201915" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://x.com/denny_zhou/status/1948499173986201915</a></li><li><a href="https://zhuanlan.zhihu.com/p/1940422869269087692" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">https://zhuanlan.zhihu.com/p/1940422869269087692</a></li></ul></blockquote>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;这可能是对于大语言模型（LLM）原理最清晰、易懂的解读。&lt;/p&gt;
&lt;p&gt;前段时间，Google DeepMind 的首席科学家兼研究总监 &lt;a href=&quot;https://dennyzhou.github.io/&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;Denny Zhou&lt;/a&gt; 在斯坦福大学课程中，分享了大语言模型推理的深刻洞见。&lt;/p&gt;</summary>
    
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/categories/AI/"/>
    
    
    <category term="AI" scheme="https://blog.hufeifei.cn/tags/AI/"/>
    
  </entry>
  
  <entry>
    <title>OpenObserve观测平台</title>
    <link href="https://blog.hufeifei.cn/2025/07/Distribution/OpenObserve/"/>
    <id>https://blog.hufeifei.cn/2025/07/Distribution/OpenObserve/</id>
    <published>2025-07-10T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.396Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>OpenObserve是目前用过的性能最好的观测性平台，底层基于Rust写的，采用的是parquet列式存储，数据压缩效率极高，单机版的性能就已经超过很多市面上其他技术了。</p><img width="1912" height="954" alt="image" src="https://github.com/user-attachments/assets/78c979be-eceb-4577-95f4-45fe6d7a90ef" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><p>观测性数据属于时序数据范畴，所以OpenObserve和大多数时序数据库一样使用的是LSM-Tree的存储数据结构。这就导致数据并发采集量过大的时候，经常出现MemoryTableOverflowError的问题。</p><figure class="highlight sh"><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">2025-06-18T07:40:22.074188063+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:22.074317749+00:00 INFO actix_web::middleware::logger: 10.233.71.119 <span class="string">&quot;POST /api/default/v1/traces HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;1706&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000299    </span><br><span class="line">2025-06-18T07:40:22.449896048+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:22.450004619+00:00 INFO actix_web::middleware::logger: 10.233.80.211 <span class="string">&quot;POST /api/default/v1/traces HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;2230&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000270    </span><br><span class="line">2025-06-18T07:40:22.517553812+00:00 INFO actix_web::middleware::logger: 10.233.71.0 <span class="string">&quot;POST /api/default/v1/metrics HTTP/1.0&quot;</span> 503 74 <span class="string">&quot;3826&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OpenTelemetry Collector Contrib/0.111.0 (linux/amd64)&quot;</span> 0.000867    </span><br><span class="line">2025-06-18T07:40:23.572270669+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:23.572416843+00:00 INFO actix_web::middleware::logger: 10.233.71.1 <span class="string">&quot;POST /api/default/v1/traces HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;2278&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000371    </span><br><span class="line">2025-06-18T07:40:23.657375098+00:00 INFO actix_web::middleware::logger: 10.233.71.247 <span class="string">&quot;POST /api/default/v1/metrics HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;20634&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000578    </span><br><span class="line">2025-06-18T07:40:23.803923763+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:24.635078516+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:24.635189325+00:00 INFO actix_web::middleware::logger: 10.233.71.223 <span class="string">&quot;POST /api/default/v1/traces HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;2162&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000268    </span><br><span class="line">2025-06-18T07:40:25.119413710+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:25.120251549+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError</span><br></pre></td></tr></table></figure><p>所以不得不迁移到<a href="https://openobserve.ai/docs/architecture/#high-availability-ha-mode" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">集群版的OpenObserve</a>。</p><p><img src="https://openobserve.ai/docs/images/arch-ha.webp" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="OpenObserve高可用架构"></p><p>OpenObserve高可用架构中分以下几个角色：</p><ul><li>Router、Querier、Ingester、Compactor 和 AlertManager 节点都可以水平扩展以适应更高的流量。</li><li>NATS 用作集群协调器并存储节点信息。它还用于集群事件。</li><li>MySQL / PostgreSQL 用于存储元数据，如组织、用户、函数、警报规则、流模式和文件列表（parquet 文件的索引）。</li><li>对象存储（例如 s3、minio、gcs 等）存储 parquet 文件的所有数据。</li></ul><p>官方提供了<a href="https://openobserve.ai/docs/ha_deployment/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">基于helm charts的部署方式</a>，我这边选用的是本地minio的存储方式。Router、Querier、Ingester、Compactor 和 AlertManager等节点是通过控制<a href="https://openobserve.ai/docs/environment-variables/#common" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"><code>ZO_NODE_ROLE</code></a>环境变量来实现不同角色的任务处理，<a href="https://openobserve.ai/docs/architecture/#components" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">官方文档</a>有提到不同组件的作用。</p><ul><li>Ingester(数据采集器)：数据采集器用于接收数据采集请求，并将数据转换为 Parquet 格式并存储在对象存储中。在将数据传输到对象存储之前，它会将数据临时存储在 WAL 中。<br>Ingester 包含三部分数据：<ul><li>Memtable 中的数据</li><li>Immutable 中的数据</li><li>wal 中的 parquet 文件尚未上传到对象存储。</li></ul></li><li>Querier(查询器): 查询器用于查询数据。查询器节点完全无状态。</li><li>Compactor(压缩器): 压缩器将小文件合并为大文件，以提高搜索效率。压缩器还强制执行数据保留策略、全流删除以及文件列表索引的更新。</li><li>Router(路由器): 路由器将请求分发给Ingester或Querier。它还会通过浏览器中的 GUI 进行响应。路由器是一个超级简单的代理，用于在Ingester和Querier之间发送适当的请求。</li><li>AlertManager: AlertManager 运行标准警报查询、报告作业并发送通知。</li></ul><img width="1912" height="954" alt="image" src="https://github.com/user-attachments/assets/ed49746f-dd4f-4965-98ed-edb2aa31ec06" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" /><img width="1912" height="954" alt="image" src="https://github.com/user-attachments/assets/bd61829b-2744-42fb-aad1-6311751dd1e2" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" />]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;OpenObserve是目前用过的性能最好的观测性平台，底层基于Rust写的，采用的是parquet列式存储，数据压缩效率极高，单机版的性能就已经超过很多市面上其他技术了。&lt;/p&gt;
&lt;img width=&quot;1912&quot; height=&quot;954&quot; alt=&quot;image&quot; src=&quot;https://github.com/user-attachments/assets/78c979be-eceb-4577-95f4-45fe6d7a90ef&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;</summary>
    
    
    
    <category term="分布式" scheme="https://blog.hufeifei.cn/categories/%E5%88%86%E5%B8%83%E5%BC%8F/"/>
    
    
    <category term="Distributed" scheme="https://blog.hufeifei.cn/tags/Distributed/"/>
    
    <category term="OpenObserve" scheme="https://blog.hufeifei.cn/tags/OpenObserve/"/>
    
    <category term="OpenTelemetry" scheme="https://blog.hufeifei.cn/tags/OpenTelemetry/"/>
    
  </entry>
  
  <entry>
    <title>信息检索的三种方式：稀疏检索、稠密检索、知识图谱增强检索</title>
    <link href="https://blog.hufeifei.cn/2025/07/DataStructure/information-retrieval/"/>
    <id>https://blog.hufeifei.cn/2025/07/DataStructure/information-retrieval/</id>
    <published>2025-07-01T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.392Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h2>核心概念概述</h2><ol><li> <strong>检索（Retrieval）</strong>：在信息检索中，指的是从一个大规模文档集合中找到与用户查询相关的文档子集的过程。这是搜索引擎、问答系统等的核心步骤。</li><li> <strong>表示（Representation）</strong>：如何用计算机可处理的形式来表示查询和文档，是检索效果好坏的关键。</li></ol><hr><h2>1. 稀疏检索</h2><p><img src="https://miro.medium.com/v2/resize:fit:1400/1*lGwuTdBuX3Jnzz4Mi9gSTA.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="tf-idf"></p><ul><li><p><strong>核心思想</strong>：</p><ul><li>  使用高维、稀疏的向量来表示查询和文档。</li><li>  向量的维度通常对应于词汇表中的所有词项（Term）。</li><li>  每个维度的值表示该词项在查询或文档中的重要性（权重）。</li><li>  权重计算通常基于词频（TF）、逆文档频率（IDF）等统计信息。</li><li>  <strong>关键特征：向量的大部分维度值为 0（稀疏），只有文档或查询中实际出现的词对应的维度值不为 0。</strong></li></ul></li><li><p><strong>代表算法</strong>：</p><ul><li>  <strong>TF-IDF</strong>：词频-逆文档频率，经典权重计算方法。</li><li><strong>BM25</strong>：TF-IDF 的改进和概率化版本，<strong>是目前最主流的稀疏检索算法</strong>，效果稳定且优异。它考虑了词频、文档长度、逆文档频率等因素。<br>以下是 <strong>TF-IDF</strong> 和 <strong>BM25</strong> 的完整计算公式，使用 LaTeX 格式呈现：</li></ul><ol><li><p><strong>TF-IDF 公式</strong><br>TF-IDF 由两部分组成：<strong>词频 (TF)</strong> 和 **逆文档频率 (IDF)**。</p><ul><li>词频(TF) <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.452ex" xmlns="http://www.w3.org/2000/svg" width="17.371ex" height="3.809ex" role="img" focusable="false" viewBox="0 -1041.6 7678.1 1683.4"><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="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"></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(389,0)"></path></g></g><g data-mml-node="mo" transform="translate(761,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(1150,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="mo" transform="translate(1511,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(1955.7,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 data-mml-node="mo" transform="translate(2475.7,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(3142.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="mfrac" transform="translate(4198.2,0)"><g data-mml-node="msub" transform="translate(1247.6,543.1) scale(0.707)"><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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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="mrow" transform="translate(220,-370.3) scale(0.707)"><g data-mml-node="munder"><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="TeXAtom" transform="translate(1089,-285.4) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="msup"><g data-mml-node="mi"><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="mo" transform="translate(394,289)"><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(719,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(1386,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="msub" transform="translate(2653.4,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="TeXAtom" transform="translate(523,-246.7) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="msup"><g data-mml-node="mi"><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="mo" transform="translate(394,289)"><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(719,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(997,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><rect width="3239.9" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container><br>其中：</li></ul><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.65ex" xmlns="http://www.w3.org/2000/svg" width="4.911ex" height="2.347ex" role="img" focusable="false" viewBox="0 -750 2170.5 1037.2"><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="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(389,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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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(1781.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>：词项 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.577ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1139 1000"><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="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(389,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="mo" transform="translate(750,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> 在文档 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.937ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1298 1000"><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="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(389,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 data-mml-node="mo" transform="translate(909,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><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.71ex" xmlns="http://www.w3.org/2000/svg" width="11.229ex" height="2.406ex" role="img" focusable="false" viewBox="0 -750 4963.2 1063.6"><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="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="munder" transform="translate(389,0)"><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="TeXAtom" transform="translate(1089,-285.4) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="msup"><g data-mml-node="mi"><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="mo" transform="translate(394,289) 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(638.5,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(1305.5,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="msub" transform="translate(2985.5,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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="msup"><g data-mml-node="mi"><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="mo" transform="translate(394,289) 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(638.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(916.5,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(4574.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>：文档 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.937ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1298 1000"><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="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(389,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 data-mml-node="mo" transform="translate(909,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></ul><ul><li><p>逆文档频率 (IDF) <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.033ex" xmlns="http://www.w3.org/2000/svg" width="16.967ex" height="3.017ex" role="img" focusable="false" viewBox="0 -877 7499.3 1333.5"><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="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"></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(278,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(834,0)"></path></g></g><g data-mml-node="mo" transform="translate(1206,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(1595,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="mo" transform="translate(1956,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(2400.7,0)"><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="mo" transform="translate(3228.7,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(3895.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(4951.2,0)"><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"></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(278,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(778,0)"></path></g><g data-mml-node="mo" transform="translate(6229.2,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mfrac" transform="translate(6395.9,0)"><g data-mml-node="mi" transform="translate(237.8,394) 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 data-mml-node="msub" transform="translate(220,-345) scale(0.707)"><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(633,-150) scale(0.707)"><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><rect width="863.5" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container><br>其中：</p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="3.769ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1666 1000"><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="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(389,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(1277,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><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="3.883ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1716.3 1000"><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="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(389,0)"><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(633,-150) scale(0.707)"><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><g data-mml-node="mo" transform="translate(1327.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>：包含词项 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.577ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1139 1000"><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="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(389,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="mo" transform="translate(750,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></ul></li><li><p>TF-IDF 最终分数<br><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="32.388ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 14315.7 1000"><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="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"></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(389,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(695,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(973,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(1529,0)"></path></g></g><g data-mml-node="mo" transform="translate(1901,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(2290,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="mo" transform="translate(2651,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(3095.7,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 data-mml-node="mo" transform="translate(3615.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(4060.3,0)"><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="mo" transform="translate(4888.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(5555.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="TeXAtom" data-mjx-texclass="ORD" transform="translate(6610.9,0)"><g data-mml-node="mi"><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"></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(389,0)"></path></g></g><g data-mml-node="mo" transform="translate(7371.9,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(7760.9,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="mo" transform="translate(8121.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(8566.6,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 data-mml-node="mo" transform="translate(9086.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(9697.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="TeXAtom" data-mjx-texclass="ORD" transform="translate(10698,0)"><g data-mml-node="mi"><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"></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(278,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(834,0)"></path></g></g><g data-mml-node="mo" transform="translate(11904,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(12293,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="mo" transform="translate(12654,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(13098.7,0)"><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="mo" transform="translate(13926.7,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></li></ul></li><li><p><strong>BM25 公式</strong><br>BM25 在 TF-IDF 基础上引入了<strong>词频饱和控制</strong>和<strong>文档长度归一化</strong>。<br>完整 BM25 分数<br><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -2.516ex" xmlns="http://www.w3.org/2000/svg" width="44.345ex" height="4.945ex" role="img" focusable="false" viewBox="0 -1073.4 19600.5 2185.5"><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="42" d="M131 622Q124 629 120 631T104 634T61 637H28V683H229H267H346Q423 683 459 678T531 651Q574 627 599 590T624 512Q624 461 583 419T476 360L466 357Q539 348 595 302T651 187Q651 119 600 67T469 3Q456 1 242 0H28V46H61Q103 47 112 49T131 61V622ZM511 513Q511 560 485 594T416 636Q415 636 403 636T371 636T333 637Q266 637 251 636T232 628Q229 624 229 499V374H312L396 375L406 377Q410 378 417 380T442 393T474 417T499 456T511 513ZM537 188Q537 239 509 282T430 336L329 337H229V200V116Q229 57 234 52Q240 47 334 47H383Q425 47 443 53Q486 67 511 104T537 188Z"></path><path data-c="4D" d="M132 622Q125 629 121 631T105 634T62 637H29V683H135Q221 683 232 682T249 675Q250 674 354 398L458 124L562 398Q666 674 668 675Q671 681 683 682T781 683H887V637H854Q814 636 803 634T785 622V61Q791 51 802 49T854 46H887V0H876Q855 3 736 3Q605 3 596 0H585V46H618Q660 47 669 49T688 61V347Q688 424 688 461T688 546T688 613L687 632Q454 14 450 7Q446 1 430 1T410 7Q409 9 292 316L176 624V606Q175 588 175 543T175 463T175 356L176 86Q187 50 261 46H278V0H269Q254 3 154 3Q52 3 37 0H29V46H46Q78 48 98 56T122 69T132 86V622Z" transform="translate(708,0)"></path></g><g data-mml-node="mn" transform="translate(1625,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="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><g data-mml-node="mo" transform="translate(2625,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(3014,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 data-mml-node="mo" transform="translate(3534,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(3978.7,0)"><path data-c="1D45E" d="M33 157Q33 258 109 349T280 441Q340 441 372 389Q373 390 377 395T388 406T404 418Q438 442 450 442Q454 442 457 439T460 434Q460 425 391 149Q320 -135 320 -139Q320 -147 365 -148H390Q396 -156 396 -157T393 -175Q389 -188 383 -194H370Q339 -192 262 -192Q234 -192 211 -192T174 -192T157 -193Q143 -193 143 -185Q143 -182 145 -170Q149 -154 152 -151T172 -148Q220 -148 230 -141Q238 -136 258 -53T279 32Q279 33 272 29Q224 -10 172 -10Q117 -10 75 30T33 157ZM352 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(4438.7,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(5105.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="munder" transform="translate(6161.2,0)"><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="TeXAtom" transform="translate(1089,-285.4) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(1028,0)"><path data-c="1D45E" d="M33 157Q33 258 109 349T280 441Q340 441 372 389Q373 390 377 395T388 406T404 418Q438 442 450 442Q454 442 457 439T460 434Q460 425 391 149Q320 -135 320 -139Q320 -147 365 -148H390Q396 -156 396 -157T393 -175Q389 -188 383 -194H370Q339 -192 262 -192Q234 -192 211 -192T174 -192T157 -193Q143 -193 143 -185Q143 -182 145 -170Q149 -154 152 -151T172 -148Q220 -148 230 -141Q238 -136 258 -53T279 32Q279 33 272 29Q224 -10 172 -10Q117 -10 75 30T33 157ZM352 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="TeXAtom" data-mjx-texclass="ORD" transform="translate(8519.1,0)"><g data-mml-node="mi"><path data-c="49" d="M328 0Q307 3 180 3T32 0H21V46H43Q92 46 106 49T126 60Q128 63 128 342Q128 620 126 623Q122 628 118 630T96 635T43 637H21V683H32Q53 680 180 680T328 683H339V637H317Q268 637 254 634T234 623Q232 620 232 342Q232 63 234 60Q238 55 242 53T264 48T317 46H339V0H328Z"></path><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" transform="translate(361,0)"></path><path data-c="46" d="M128 619Q121 626 117 628T101 631T58 634H25V680H582V676Q584 670 596 560T610 444V440H570V444Q563 493 561 501Q555 538 543 563T516 601T477 622T431 631T374 633H334H286Q252 633 244 631T233 621Q232 619 232 490V363H284Q287 363 303 363T327 364T349 367T372 373T389 385Q407 403 410 459V480H450V200H410V221Q407 276 389 296Q381 303 371 307T348 313T327 316T303 317T284 317H232V189L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z" transform="translate(1125,0)"></path></g></g><g data-mml-node="mo" transform="translate(10297.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(10686.1,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="mo" transform="translate(11047.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(11658.3,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="mfrac" transform="translate(12158.5,0)"><g data-mml-node="mrow" transform="translate(2064.9,543.1) scale(0.707)"><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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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(1392.5,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(1670.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="msub" transform="translate(2059.5,0)"><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="mn" transform="translate(554,-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(3017.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="mn" transform="translate(3795.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(4295.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><g data-mml-node="mrow" transform="translate(220,-652.8) scale(0.707)"><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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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(1392.5,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="msub" transform="translate(2170.5,0)"><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="mn" transform="translate(554,-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(3128.1,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="mrow" transform="translate(3406.1,0)"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="28" d="M180 96T180 250T205 541T266 770T353 944T444 1069T527 1150H555Q561 1144 561 1141Q561 1137 545 1120T504 1072T447 995T386 878T330 721T288 513T272 251Q272 133 280 56Q293 -87 326 -209T399 -405T475 -531T536 -609T561 -640Q561 -643 555 -649H527Q483 -612 443 -568T353 -443T266 -270T205 -41Z"></path></g><g data-mml-node="mn" transform="translate(597,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(1097,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(1875,0)"><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="mo" transform="translate(2304,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(3082,0)"><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="mo" transform="translate(3511,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="mfrac" transform="translate(3789,0)"><g data-mml-node="mrow" transform="translate(674.7,516.4) 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="mi" transform="translate(278,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 data-mml-node="mo" transform="translate(798,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><g data-mml-node="TeXAtom" transform="translate(220,-345) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="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(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(1028,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(1528,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(2084,0)"></path></g></g><rect width="1870.2" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(5899.2,0) translate(0 -0.5)"><path data-c="29" d="M35 1138Q35 1150 51 1150H56H69Q113 1113 153 1069T243 944T330 771T391 541T416 250T391 -40T330 -270T243 -443T152 -568T69 -649H56Q43 -649 39 -647T35 -637Q65 -607 110 -548Q283 -316 316 56Q324 133 324 251Q324 368 316 445Q278 877 48 1123Q36 1137 35 1138Z"></path></g></g></g><rect width="7202" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container><br>组件详解：</p><ul><li><p><strong>逆文档频率 (IDF)</strong><br><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.469ex" xmlns="http://www.w3.org/2000/svg" width="24.037ex" height="4.07ex" role="img" focusable="false" viewBox="0 -1149.5 10624.5 1799"><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="49" d="M328 0Q307 3 180 3T32 0H21V46H43Q92 46 106 49T126 60Q128 63 128 342Q128 620 126 623Q122 628 118 630T96 635T43 637H21V683H32Q53 680 180 680T328 683H339V637H317Q268 637 254 634T234 623Q232 620 232 342Q232 63 234 60Q238 55 242 53T264 48T317 46H339V0H328Z"></path><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" transform="translate(361,0)"></path><path data-c="46" d="M128 619Q121 626 117 628T101 631T58 634H25V680H582V676Q584 670 596 560T610 444V440H570V444Q563 493 561 501Q555 538 543 563T516 601T477 622T431 631T374 633H334H286Q252 633 244 631T233 621Q232 619 232 490V363H284Q287 363 303 363T327 364T349 367T372 373T389 385Q407 403 410 459V480H450V200H410V221Q407 276 389 296Q381 303 371 307T348 313T327 316T303 317T284 317H232V189L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z" transform="translate(1125,0)"></path></g></g><g data-mml-node="mo" transform="translate(1778,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(2167,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="mo" transform="translate(2528,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(3194.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(4250.6,0)"><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"></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(278,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(778,0)"></path></g><g data-mml-node="mo" transform="translate(5528.6,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mrow" transform="translate(5695.2,0)"><g data-mml-node="mo" transform="translate(0 -0.5)"><path data-c="28" d="M180 96T180 250T205 541T266 770T353 944T444 1069T527 1150H555Q561 1144 561 1141Q561 1137 545 1120T504 1072T447 995T386 878T330 721T288 513T272 251Q272 133 280 56Q293 -87 326 -209T399 -405T475 -531T536 -609T561 -640Q561 -643 555 -649H527Q483 -612 443 -568T353 -443T266 -270T205 -41Z"></path></g><g data-mml-node="mfrac" transform="translate(597,0)"><g data-mml-node="mrow" transform="translate(220,451.6) scale(0.707)"><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(888,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="msub" transform="translate(1666,0)"><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(633,-150) scale(0.707)"><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><g data-mml-node="mo" transform="translate(2604.3,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(3382.3,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 data-mml-node="mrow" transform="translate(809,-345) scale(0.707)"><g data-mml-node="msub"><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(633,-150) scale(0.707)"><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><g data-mml-node="mo" transform="translate(938.3,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(1716.3,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><rect width="3495.3" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(4332.3,0) translate(0 -0.5)"><path data-c="29" d="M35 1138Q35 1150 51 1150H56H69Q113 1113 153 1069T243 944T330 771T391 541T416 250T391 -40T330 -270T243 -443T152 -568T69 -649H56Q43 -649 39 -647T35 -637Q65 -607 110 -548Q283 -316 316 56Q324 133 324 251Q324 368 316 445Q278 877 48 1123Q36 1137 35 1138Z"></path></g></g></g></g></svg></mjx-container></p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="3.769ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1666 1000"><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="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(389,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(1277,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><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="3.883ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1716.3 1000"><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="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(389,0)"><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(633,-150) scale(0.707)"><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><g data-mml-node="mo" transform="translate(1327.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>：包含词项 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.577ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1139 1000"><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="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(389,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="mo" transform="translate(750,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><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="6.412ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 2834 1000"><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="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="mo" transform="translate(389,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(1167,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 data-mml-node="mo" transform="translate(2445,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></ul></li><li><p><strong>词频饱和控制</strong><br><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.24ex" xmlns="http://www.w3.org/2000/svg" width="8.489ex" height="3.668ex" role="img" focusable="false" viewBox="0 -1073.4 3752.2 1621.5"><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(220,543.1) scale(0.707)"><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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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(1392.5,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(1670.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="msub" transform="translate(2059.5,0)"><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="mn" transform="translate(554,-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(3017.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="mn" transform="translate(3795.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(4295.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><g data-mml-node="mrow" transform="translate(770.1,-345) scale(0.707)"><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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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(1392.5,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="msub" transform="translate(2170.5,0)"><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="mn" transform="translate(554,-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><rect width="3512.2" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container></p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.65ex" xmlns="http://www.w3.org/2000/svg" width="4.911ex" height="2.347ex" role="img" focusable="false" viewBox="0 -750 2170.5 1037.2"><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="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(389,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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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(1781.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>：词项 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.577ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1139 1000"><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="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(389,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="mo" transform="translate(750,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> 在文档 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.937ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1298 1000"><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="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(389,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 data-mml-node="mo" transform="translate(909,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><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="3.927ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1735.6 1000"><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="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(389,0)"><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="mn" transform="translate(554,-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(1346.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></g></svg></mjx-container>：饱和度参数（默认值 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="14.739ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 6514.8 1000"><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="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(389,0)"><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="mn" transform="translate(554,-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(1624.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="mo" transform="translate(2569.1,0)"><path data-c="5B" d="M118 -250V750H255V710H158V-210H255V-250H118Z"></path></g><g data-mml-node="mn" transform="translate(2847.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><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="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(778,0)"></path></g><g data-mml-node="mo" transform="translate(4125.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(4569.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><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></g><g data-mml-node="mo" transform="translate(5847.8,0)"><path data-c="5D" d="M22 710V750H159V-250H22V-210H119V710H22Z"></path></g><g data-mml-node="mo" transform="translate(6125.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>作用：抑制高频词的过度影响（非线性增长）</li></ul></li><li><p><strong>文档长度归一化</strong><br><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.11ex" xmlns="http://www.w3.org/2000/svg" width="15.012ex" height="3.478ex" role="img" focusable="false" viewBox="0 -1046.4 6635.5 1537.1"><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="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="mi" transform="translate(1722.4,0)"><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="mo" transform="translate(2373.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(3373.9,0)"><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="mo" transform="translate(4025.1,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="mfrac" transform="translate(4525.3,0)"><g data-mml-node="mrow" transform="translate(674.7,516.4) 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="mi" transform="translate(278,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 data-mml-node="mo" transform="translate(798,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><g data-mml-node="TeXAtom" transform="translate(220,-345) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="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(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(1028,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(1528,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(2084,0)"></path></g></g><rect width="1870.2" height="60" x="120" y="220"></rect></g></g></g></svg></mjx-container></p><ul><li><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="4.195ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1854 1000"><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="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="mo" transform="translate(389,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(667,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 data-mml-node="mo" transform="translate(1187,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(1465,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><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="7.104ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 3140 1000"><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="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="TeXAtom" data-mjx-texclass="ORD" transform="translate(389,0)"><g data-mml-node="mi"><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="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(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(1028,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(1528,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(2084,0)"></path></g></g><g data-mml-node="mo" transform="translate(2751,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><mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.731ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1207 1000"><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="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(389,0)"><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="mo" transform="translate(818,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>：长度归一化参数（默认 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="9.77ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 4318.6 1000"><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="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(389,0)"><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="mo" transform="translate(1095.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(2151.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><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="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(778,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(1278,0)"></path></g><g data-mml-node="mo" transform="translate(3929.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></g></svg></mjx-container>）  </li><li>作用：惩罚长文档，避免长度偏差  </li></ul></li></ul><ol start="3"><li>关键改进对比</li></ol><table><thead><tr><th>组件</th><th>TF-IDF</th><th>BM25 改进</th></tr></thead><tbody><tr><td><strong>词频 (TF)</strong></td><td>线性增长： <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.65ex" xmlns="http://www.w3.org/2000/svg" width="4.911ex" height="2.347ex" role="img" focusable="false" viewBox="0 -750 2170.5 1037.2"><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="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(389,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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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(1781.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></td><td>非线性饱和： <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.24ex" xmlns="http://www.w3.org/2000/svg" width="10.249ex" height="3.668ex" role="img" focusable="false" viewBox="0 -1073.4 4530.2 1621.5"><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="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="mfrac" transform="translate(389,0)"><g data-mml-node="mrow" transform="translate(220,543.1) scale(0.707)"><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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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(1392.5,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(1670.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="msub" transform="translate(2059.5,0)"><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="mn" transform="translate(554,-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(3017.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="mn" transform="translate(3795.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(4295.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><g data-mml-node="mrow" transform="translate(770.1,-345) scale(0.707)"><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="TeXAtom" transform="translate(523,-150) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="mo" transform="translate(361,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(639,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(1392.5,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="msub" transform="translate(2170.5,0)"><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="mn" transform="translate(554,-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><rect width="3512.2" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(4141.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></td></tr><tr><td><strong>文档长度处理</strong></td><td>无</td><td>显式归一化： <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.11ex" xmlns="http://www.w3.org/2000/svg" width="16.773ex" height="3.478ex" role="img" focusable="false" viewBox="0 -1046.4 7413.5 1537.1"><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="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(389,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(1111.2,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(2111.4,0)"><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="mo" transform="translate(2762.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(3762.9,0)"><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="mo" transform="translate(4414.1,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="mfrac" transform="translate(4914.3,0)"><g data-mml-node="mrow" transform="translate(674.7,516.4) 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="mi" transform="translate(278,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 data-mml-node="mo" transform="translate(798,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><g data-mml-node="TeXAtom" transform="translate(220,-345) scale(0.707)" data-mjx-texclass="ORD"><g data-mml-node="mi"><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="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(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(1028,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(1528,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(2084,0)"></path></g></g><rect width="1870.2" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(7024.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></td></tr><tr><td><strong>IDF 平滑</strong></td><td>基础： <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.033ex" xmlns="http://www.w3.org/2000/svg" width="7.525ex" height="3.017ex" role="img" focusable="false" viewBox="0 -877 3326.1 1333.5"><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="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(389,0)"><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"></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(278,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(778,0)"></path></g><g data-mml-node="mo" transform="translate(1667,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mfrac" transform="translate(1833.7,0)"><g data-mml-node="mi" transform="translate(237.8,394) 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 data-mml-node="msub" transform="translate(220,-345) scale(0.707)"><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(633,-150) scale(0.707)"><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><rect width="863.5" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(2937.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></g></svg></mjx-container></td><td>鲁棒平滑： <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -1.033ex" xmlns="http://www.w3.org/2000/svg" width="13.48ex" height="3.147ex" role="img" focusable="false" viewBox="0 -934.5 5958 1391.1"><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="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(389,0)"><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"></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(278,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(778,0)"></path></g><g data-mml-node="mo" transform="translate(1667,0)"><path data-c="2061" d=""></path></g><g data-mml-node="mfrac" transform="translate(1833.7,0)"><g data-mml-node="mrow" transform="translate(220,451.6) scale(0.707)"><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(888,0)"><path data-c="2212" d="M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z"></path></g><g data-mml-node="msub" transform="translate(1666,0)"><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(633,-150) scale(0.707)"><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><g data-mml-node="mo" transform="translate(2604.3,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(3382.3,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 data-mml-node="mrow" transform="translate(809,-345) scale(0.707)"><g data-mml-node="msub"><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(633,-150) scale(0.707)"><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><g data-mml-node="mo" transform="translate(938.3,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(1716.3,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><rect width="3495.3" height="60" x="120" y="220"></rect></g><g data-mml-node="mo" transform="translate(5569,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></td></tr><tr><td><strong>可调参数</strong></td><td>无</td><td>参数化： <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="3.927ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1735.6 1000"><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="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(389,0)"><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="mn" transform="translate(554,-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(1346.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></g></svg></mjx-container> (控制饱和度) 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.731ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1207 1000"><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="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(389,0)"><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="mo" transform="translate(818,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> (控制长度惩罚)</td></tr></tbody></table><ol start="4"><li>核心优势总结<br>BM25 通过 <strong>非线性 TF 饱和</strong> 和 <strong>文档长度归一化</strong> 解决了 TF-IDF 的两大缺陷：  </li></ol><ul><li><strong>避免长文档主导结果</strong>（例如一篇 10,000 词的文档偶然多次出现查询词）  </li><li><strong>抑制关键词重复堆砌</strong>（例如关键词重复 100 次不代表相关性线性增加 100 倍）  </li><li><strong>参数可调</strong>（通过 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="3.927ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1735.6 1000"><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="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(389,0)"><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="mn" transform="translate(554,-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(1346.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></g></svg></mjx-container> 和 <mjx-container class="MathJax" jax="SVG"><svg style="vertical-align: -0.566ex" xmlns="http://www.w3.org/2000/svg" width="2.731ex" height="2.262ex" role="img" focusable="false" viewBox="0 -750 1207 1000"><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="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(389,0)"><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="mo" transform="translate(818,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> 适配不同场景的数据分布）<br><img src="https://ethen8181.github.io/machine-learning/search/img/tf_comparison.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="tf score"></li></ul></li></ol></li><li><p><strong>计算相关性</strong>：</p><ul><li>  查询向量 <code>q</code> 和文档向量 <code>d</code> 的相关性得分通常通过它们向量的点积（Dot Product）<code>q · d</code> 计算。</li><li>  点积的结果本质上是查询和文档中共同出现的词项权重乘积之和。</li></ul></li><li><p><strong>优点</strong>：</p><ul><li>  <strong>可解释性强</strong>：得分直接来源于共同词项及其权重，容易理解为什么某文档被召回。</li><li>  <strong>效率高</strong>：可以利用倒排索引（Inverted Index）实现非常高效的检索（仅需处理包含查询词的文档）。索引构建和查询速度通常很快。</li><li>  <strong>无需训练数据</strong>：经典方法（如BM25）不需要特定的训练语料来学习参数（虽然参数可以调优）。</li><li>  <strong>对精确匹配效果好</strong>：当查询包含明确关键词时，效果通常很好。</li></ul></li><li><p><strong>缺点</strong>：</p><ul><li>  <strong>词汇鸿沟问题</strong>：无法处理同义词（<code>car</code> vs <code>automobile</code>）、近义词（<code>big</code> vs <code>large</code>）、一词多义（<code>bank</code> 可以是河岸或银行）等问题。查询和文档必须包含相同的词项才能匹配。</li><li>  <strong>语义理解有限</strong>：主要基于词形（lexical）匹配，缺乏对深层语义的理解。</li><li>  <strong>长尾/复杂查询效果可能不佳</strong>：对于表述模糊、依赖语义而非关键词的查询效果可能不如稠密检索。</li></ul></li><li><p><strong>典型应用</strong>：</p><ul><li>  传统搜索引擎（如早期的Google，现在核心BM25仍是重要组成部分）。</li><li>  需要高效、可解释检索结果的场景。</li><li>  作为更复杂检索系统的第一级召回器（快速筛选候选文档）。</li></ul></li></ul><hr><h2>2. 稠密检索</h2><p><img src="https://cosminsanda.com/assets/images/pgvector-seaorm/embedded-intuition.png" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="Embedding"></p><ul><li><strong>核心思想</strong>：<ul><li>  使用低维、稠密的向量（通常称为嵌入向量）来表示查询和文档。</li><li>  向量维度通常在几百到几千维。</li><li>  <strong>关键特征：向量的每个维度通常都有非零值（稠密），每个维度代表某种潜在的语义特征。这些特征是通过深度神经网络学习得到的。</strong></li></ul></li><li><strong>代表模型</strong>：<ul><li>  <strong>双塔模型（Dual Encoder）</strong>：最常见架构。一个神经网络编码器将查询映射为向量 <code>q</code>，另一个（通常共享参数）将文档映射为向量 <code>d</code>。</li><li>  <strong>预训练语言模型驱动</strong>：如基于BERT的模型（DPR, ANCE, ColBERT等）。这些模型利用大规模语料上预训练得到的强大语义理解能力。</li></ul></li><li><strong>计算相关性</strong>：<ul><li>  查询向量 <code>q</code> 和文档向量 <code>d</code> 的相关性得分通过计算它们之间的向量相似度得到，最常用的是余弦相似度（Cosine Similarity）<code>cos(q, d)</code>。</li><li>  相似度衡量的是它们在低维语义空间中的“距离”或“方向一致性”。</li></ul></li><li><strong>优点</strong>：<ul><li>  <strong>强大的语义表示能力</strong>：能有效捕捉同义词、近义词、语义关联（<code>AI</code> 和 <code>机器学习</code>），缓解词汇鸿沟问题。</li><li>  <strong>对复杂/模糊查询效果好</strong>：能更好地理解查询的意图和上下文语义。</li><li>  <strong>迁移学习潜力</strong>：预训练语言模型的知识可以迁移到特定领域任务。</li></ul></li><li><strong>缺点</strong>：<ul><li>  <strong>可解释性差</strong>：难以解释为什么某个向量代表了某个语义，以及为什么两个向量相似。是一个“黑盒”。</li><li>  <strong>需要大量训练数据</strong>：训练高质量的稠密检索模型通常需要大量的标注数据（查询-相关文档对）。</li><li><strong>计算开销大</strong>：<ul><li>  <strong>训练成本高</strong>：需要GPU资源和时间训练模型。</li><li>  <strong>索引构建复杂</strong>：需要为所有文档生成稠密向量（嵌入），存储空间需求大（比稀疏索引大得多）。</li><li>  <strong>检索效率挑战</strong>：计算所有文档向量的余弦相似度在大规模库中非常慢（<code>O(N)</code>）。通常需要借助<strong>近似最近邻搜索</strong>技术来加速。</li></ul></li><li>  <strong>对精确匹配可能不如BM25</strong>：如果查询就是精确的关键词组合，BM25可能更直接有效。</li></ul></li><li><strong>典型应用</strong>：<ul><li>  开放域问答（Open-Domain QA）。</li><li>  需要深度语义理解的检索任务（如对话系统、推荐系统）。</li><li>  作为稀疏检索的补充，提高召回结果的相关性和多样性（混合检索）。</li></ul></li></ul><h3>RAG 详细分步流程</h3><h4>第一阶段：数据准备（预处理，通常是离线完成）</h4><p>这一步是构建RAG系统的基础，类似于为模型准备一个“参考图书馆”。</p><ol><li> <strong>加载数据（Loading）</strong>：从指定的数据源（如公司内部的PDF、Word文档、API文档、网页、数据库等）获取原始数据。</li><li><strong>转换数据（Splitting）</strong>：将文档转换成更小的、具有语义的文本片段（chunks）。这是因为大模型有上下文窗口限制，且小块文本更易于精准检索。<ul><li>  <strong>方法</strong>：通常使用文本分割器（Text Splitter），按字符、标记（token）或标题等自然断点进行分割。</li></ul></li><li> <strong>向量化（Embedding）</strong>：使用<strong>嵌入模型（Embedding Model）</strong>（如OpenAI的text-embedding-ada-002、Cohere的模型、开源的BGE模型等）将每个文本块转换为一个高维数值向量（Vector）。这个向量代表了该文本的语义信息。</li><li> <strong>存储（Storing）</strong>：将这些向量及其对应的原始文本内容，存入一个专门的<strong>向量数据库（Vector Database）</strong>（如Chroma, Pinecone, Weaviate, Qdrant等）。向量数据库的优势在于能高效地进行相似性搜索。</li></ol><h4>第二阶段：检索（Retrieval - 实时）</h4><p>当用户提出一个问题时，系统会在这个“参考图书馆”里查找最相关的资料。</p><ol start="5"><li> <strong>查询向量化（Query Embedding）</strong>：当用户输入一个问题（Query）时，系统使用<strong>同一个嵌入模型</strong>将这个问题也转换为一个向量。</li><li><strong>向量相似性搜索（Similarity Search）</strong>：系统在向量数据库中，搜索与“查询向量”最相似的<strong>前K个</strong>文本块向量（K是一个可设定的数量，例如Top 5）。<ul><li>  <strong>度量标准</strong>：通常使用余弦相似度（Cosine Similarity）等方法来计算向量间的相似度。</li></ul></li><li> <strong>获取上下文（Retrieve Context）</strong>：系统根据上一步找到的向量，从数据库中取出对应的原始文本块（Chunks）。这些文本块就是与用户问题最相关的“证据”或“上下文”。</li></ol><h4>第三阶段：增强生成（Augmented Generation - 实时）</h4><p>现在，大模型拿到了“参考资料”，开始生成答案。</p><ol start="8"><li><p><strong>构造提示词（Prompt Construction）</strong>：系统构造一个最终的提示词（Prompt），发送给大语言模型（如GPT-4等）。这个提示词通常由三部分组成：</p><ul><li>  <strong>指令（Instruction）</strong>：告诉模型它的角色和任务（例如：“你是一个有帮助的助手，请根据以下上下文回答问题。”）</li><li>  <strong>检索到的上下文（Retrieved Context）</strong>：将第7步中获取到的所有相关文本块作为背景信息。</li><li>  <strong>用户问题（User Question）</strong>：原始的用户问题。</li><li><strong>示例</strong>：<blockquote><p><strong>指令：</strong> 请严格根据提供的上下文内容来回答问题。如果答案不在上下文中，请回答“根据已知信息无法回答该问题”。<br><strong>上下文：</strong> {这里插入从向量数据库检索到的相关文本块1、2、3…}<br><strong>问题：</strong> {用户的原始问题}<br><strong>答案：</strong></p></blockquote></li></ul></li><li><p> <strong>生成回答（Generation）</strong>：大语言模型接收到这个精心构造的提示词后，会基于<strong>提供的上下文</strong>（而不是仅凭其内部记忆）来生成一个准确、可靠的答案。</p></li><li><p><strong>返回答案（Response）</strong>：将生成的答案返回给用户。</p></li></ol><h2>3. 知识图谱增强检索</h2><p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8b4ee6fd-fcc2-4e02-9f6c-472615c77730_800x830.gif" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="RAG vs. GraphRAG"></p><ul><li><strong>核心思想</strong>：<ul><li>  <strong>不是独立的检索模型，而是利用外部结构化的知识图谱来增强现有的检索模型（稀疏或稠密）。</strong></li><li>  知识图谱是一个由实体（Entity）、实体属性（Attribute）和实体间关系（Relation）组成的语义网络。</li><li>  目标是将KG中包含的丰富语义信息（实体链接、关系、类型、描述等）融入到检索过程中，提升对查询和文档的理解。</li></ul></li><li><strong>增强方式</strong>：<ol><li><strong>查询扩展/重写</strong>：<ul><li>  识别查询中的实体。</li><li>  利用KG查找该实体的别名、同义词、相关实体（如：<code>Steve Jobs</code> -&gt; <code>Apple Inc.</code> 创始人 -&gt; <code>Apple</code> 产品 <code>iPhone</code>）。</li><li>  将扩展得到的信息（别名、相关实体词）加入到原始查询中，再用稀疏/稠密模型检索。</li></ul></li><li><strong>文档表示增强</strong>：<ul><li>  识别文档中的实体。</li><li>  将实体在KG中的信息（类型、关系、描述文本的嵌入）融入到文档的向量表示中（稀疏或稠密）。</li></ul></li><li><strong>联合检索/排序</strong>：<ul><li>  在检索或排序阶段，不仅考虑查询-文档的匹配度，也考虑文档中实体与查询中实体的语义关联度（通过KG中的路径、关系等计算）。</li><li>  构建图神经网络模型，同时建模文本信息和KG结构信息。</li></ul></li><li> <strong>实体链接（Entity Linking）</strong>：将文本中提到的实体指称项链接到KG中对应的实体，这是很多增强方法的基础步骤。</li></ol></li><li><strong>优点</strong>：<ul><li>  <strong>引入结构化知识</strong>：提供额外的、明确的语义信息，弥补纯文本理解的不足。</li><li>  <strong>提升语义理解深度</strong>：更好地理解实体间关系、实体类型、背景知识。</li><li>  <strong>缓解歧义</strong>：帮助区分一词多义（利用实体上下文）。</li><li>  <strong>可解释性潜力</strong>：通过实体链接和关系路径，可以提供部分解释（如：文档被召回是因为提到了与查询实体相关的另一个实体X）。</li></ul></li><li><strong>缺点</strong>：<ul><li>  <strong>依赖高质量KG</strong>：检索效果高度依赖于所使用的知识图谱的覆盖面、准确度和时效性。构建和维护高质量KG成本高昂。</li><li>  <strong>实体链接错误传播</strong>：如果实体链接步骤出错，后续增强可能引入噪声甚至错误。</li><li>  <strong>系统复杂度增加</strong>：需要集成实体识别、链接、KG查询等多个模块，系统架构更复杂。</li><li>  <strong>领域依赖性强</strong>：特定领域的KG可能难以获取或构建。</li></ul></li><li><strong>典型应用</strong>：<ul><li>  需要深度领域知识的检索（如医疗、金融、法律）。</li><li>  百科问答、事实核查。</li><li>  需要理解实体间复杂关系的场景。</li><li>  任何希望利用结构化知识提升纯文本检索效果的领域。</li></ul></li></ul><blockquote><p>在RAG中Embdding Model不存在“绝对最好”，只有“最合适”：</p><ul><li>中文为主的 RAG：BGE 系列（bge-m3 / bge-large-zh）是目前性价比和效果最均衡的选择</li><li>中英混合 / 通用检索：bge-m3 或 text-embedding-3-large（OpenAI）</li><li>极致效果、不差钱：OpenAI embedding（text-embedding-3-large）</li></ul><p>目前北京智源人工智能研究院的BGE几乎是当前检索领域开源 Embedding 的事实标准，中文语义检索明显强于 sentence-transformers</p></blockquote><h2>总结对比表</h2><table><thead><tr><th align="left">特性</th><th align="left">稀疏检索 (如 BM25)</th><th align="left">稠密检索 (如 DPR, ANCE)</th><th align="left">知识图谱增强检索 (KG-Augmented)</th></tr></thead><tbody><tr><td align="left"><strong>核心表示</strong></td><td align="left">高维稀疏向量 (词袋)</td><td align="left">低维稠密向量 (嵌入)</td><td align="left"><strong>利用KG增强</strong>稀疏或稠密向量/检索过程</td></tr><tr><td align="left"><strong>匹配基础</strong></td><td align="left">词形 (Lexical) 匹配</td><td align="left">语义 (Semantic) 匹配</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"><strong>高</strong> (基于词项)</td><td align="left"><strong>低</strong> (黑盒向量)</td><td align="left">中等 (依赖实体链接和关系路径)</td></tr><tr><td align="left"><strong>训练数据需求</strong></td><td align="left">无/低 (BM25参数可调)</td><td align="left"><strong>高</strong> (需要大量标注对)</td><td align="left">中等/高 (依赖KG和可能的链接模型训练)</td></tr><tr><td align="left"><strong>索引/检索效率</strong></td><td align="left"><strong>非常高</strong> (倒排索引)</td><td align="left">较低 (需ANN加速稠密向量搜索)</td><td align="left">中等 (取决于基础检索模型+KG操作开销)</td></tr><tr><td align="left"><strong>计算开销(训练)</strong></td><td align="left">极低</td><td align="left"><strong>非常高</strong> (GPU训练)</td><td align="left">高 (KG构建/维护 + 模型训练)</td></tr><tr><td align="left"><strong>计算开销(推理)</strong></td><td align="left">低</td><td align="left">中等/高 (向量计算/ANN)</td><td align="left">中等 (基础模型推理 + KG查询/计算)</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">依赖KG质量，系统复杂，实体链接可能出错</td></tr></tbody></table><h2>发展趋势与融合</h2><ul><li><strong>混合检索</strong>：当前最先进的检索系统通常<strong>结合稀疏检索和稠密检索</strong>。例如：<ul><li>  第一级：用BM25快速召回一批候选文档（高召回）。</li><li>  第二级：用稠密检索模型对候选文档进行精细化重排（高精度）。</li><li>  或者，将稀疏检索分数和稠密检索分数线性融合（如 <code>score = α * BM25 + β * Dense</code>）。</li></ul></li><li>  <strong>知识融入稠密模型</strong>：研究者致力于将KG知识直接编码到预训练语言模型中（如在预训练或微调阶段融入KG信息），让模型本身学习到更多结构化知识，减少对外部KG查询的依赖。</li><li>  <strong>端到端学习</strong>：探索将KG信息、检索、排序甚至答案生成整合到一个端到端的可训练框架中。</li></ul>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;h2&gt;核心概念概述&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;检索（Retrieval）&lt;/strong&gt;：在信息检索中，指的是从一个大规模文档集合中找到与用户查询相关的文档子集的过程。这是搜索引擎、问答系统等的核心步骤。&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;表示（Representation）&lt;/strong&gt;：如何用计算机可处理的形式来表示查询和文档，是检索效果好坏的关键。&lt;/li&gt;
&lt;/ol&gt;</summary>
    
    
    
    <category term="数据结构与算法" scheme="https://blog.hufeifei.cn/categories/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/"/>
    
    
    <category term="BM25" scheme="https://blog.hufeifei.cn/tags/BM25/"/>
    
    <category term="Embedding" scheme="https://blog.hufeifei.cn/tags/Embedding/"/>
    
    <category term="GraphRAG" scheme="https://blog.hufeifei.cn/tags/GraphRAG/"/>
    
  </entry>
  
  <entry>
    <title>公司章程——公司内部的宪法</title>
    <link href="https://blog.hufeifei.cn/2025/06/business/constitution-of-company/"/>
    <id>https://blog.hufeifei.cn/2025/06/business/constitution-of-company/</id>
    <published>2025-06-13T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p><strong>公司章程不能高于《公司法》，它必须在《公司法》框架内制定和发挥作用。《公司法》是上位法和强制法，而公司章程是下位法和自治法。</strong></p><h3>一、 基本关系：服从与补充</h3><ol><li><p><strong>《公司法》是根本大法，具有强制性和普适性</strong></p><ul><li>  《公司法》是国家制定的法律，规定了公司组织与行为的基本原则、基本制度和底线要求。</li><li>它包含大量<strong>强制性规范</strong>，这些规范是公司必须遵守的，不能通过公司章程予以排除或修改。例如：<ul><li>  公司股东滥用公司法人独立地位和股东有限责任，应对公司债务承担连带责任（“法人人格否认”）。</li><li>  董事、监事、高级管理人员对公司负有忠实和勤勉义务。</li><li>  公司必须遵守财务会计制度。</li><li>  股东会的某些核心职权（如修改公司章程、合并、分立、解散等）是法定的，不能通过章程下放给董事会。</li></ul></li></ul></li><li><p><strong>公司章程是“公司的宪法”，具有自治性和具体性</strong></p><ul><li>  公司章程是公司股东共同制定的内部最高行为准则。</li><li>  它的效力主要来源于《公司法》的授权，在《公司法》留下的<strong>自治空间</strong>内，公司章程可以做出更具体、甚至不同于《公司法》默认安排的规定。</li></ul></li></ol><h3>二、 公司章程与《公司法》的互动关系（具体表现）</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">有限责任公司股东向股东以外的人转让股权，应当经其他股东过半数同意。</td><td align="left"><strong>章程可以规定更宽松或更严格的程序</strong>。例如，可以约定“股东向外转让股权需经全体股东一致同意”，或者“可以自由转让，无需其他股东同意”。</td><td align="left"><strong>章程优于公司法</strong>。因为《公司法》明确规定：“公司章程对股权转让另有规定的，从其规定。”</td></tr><tr><td align="left"><strong>分红比例</strong></td><td align="left">股东按照实缴的出资比例分取红利。</td><td align="left"><strong>章程可以约定不按出资比例分红</strong>。例如，可以约定“股东A虽只出资40%，但可享有60%的分红权”。</td><td align="left"><strong>章程优于公司法</strong>。《公司法》规定：“股东按照出资比例分取红利……但是，全体股东约定不按照出资比例分取红利……的除外。”章程就是这种约定的书面形式。</td></tr><tr><td align="left"><strong>股东会表决权</strong></td><td align="left">股东会会议由股东按照出资比例行使表决权。</td><td align="left"><strong>章程可以约定“同股不同权”</strong>。例如，可以约定“股东A每股享有三个表决权”。</td><td align="left"><strong>章程优于公司法</strong>。《公司法》规定：“股东会会议由股东按照出资比例行使表决权……公司章程另有规定的除外。”</td></tr><tr><td align="left"><strong>股东会/董事会职权</strong></td><td align="left">《公司法》明确列举了股东会和董事会的法定职权。</td><td align="left"><strong>章程可以在法定职权范围内，将股东会的部分职权授予董事会行使</strong>（但修改章程、增资减资、合并分立等最核心的职权不能下放）。</td><td align="left"><strong>章程在法定框架内进行细化</strong>，但不能剥夺法定核心职权。</td></tr><tr><td align="left"><strong>法定代表人</strong></td><td align="left">由董事长、执行董事或者经理担任。</td><td align="left"><strong>章程必须在此范围内选择一人</strong>担任法定代表人。例如，章程可以规定“本公司法定代表人由经理担任”。</td><td align="left"><strong>章程在法定选项内选择</strong>，不能超出法律规定范围创设职位。</td></tr></tbody></table><h3>三、 核心结论：效力层级与冲突解决</h3><ol><li> <strong>效力层级</strong>：《公司法》是 <strong>“上位法”</strong> ，公司章程是 <strong>“下位法”</strong> 。下位法不能违反上位法。</li><li> <strong>“另有规定”是关键</strong>：当《公司法》的条文中出现 <strong>“但是，公司章程另有规定的除外”</strong> 这类表述时，意味着法律明确授权公司章程可以做出不同于默认规则的规定。<strong>在这种情况下，公司章程的效力优先于《公司法》的默认规定。</strong></li><li><strong>冲突解决</strong>：<ul><li>  如果公司章程的规定<strong>落入《公司法》的授权（自治）范围</strong>，则该规定<strong>有效且优先适用</strong>。</li><li>  如果公司章程的规定<strong>违反了《公司法》的强制性规范</strong>（例如，试图排除股东的法定知情权，或免除董事的忠实义务），则该部分章程条款<strong>无效</strong>。</li><li>  在实践中，如果公司章程的条款与《公司法》的强制性规定相冲突，该条款自始无效，法院或监管部门将不予认可，并会适用《公司法》的相应规定。</li></ul></li></ol><p><strong>一个形象的比喻：</strong></p><ul><li>  <strong>《公司法》</strong> 就像国家的 <strong>《宪法》</strong> ，它设定了基本的游戏规则和公民的权利底线。</li><li>  <strong>公司章程</strong> 就像一所 <strong>大学的《学生手册》</strong> ，它可以在《宪法》和法律允许的范围内，制定更具体的校内规则（比如宿舍管理规定、学分计算办法），但这些校规绝不能违反国家的法律。</li></ul><p><strong>总结：</strong></p><p>公司章程的自治权是《公司法》所赋予的，它只能在法律划定的“自治跑道”上奔跑，而不能冲出跑道、违反法律的强制性规定。因此，<strong>公司章程不能高于《公司法》，它是《公司法》框架下的内部治理核心文件。</strong> 在制定和修改章程时，必须仔细甄别哪些是法律的强制性规定，哪些是法律授权的自治空间。</p><p>公司章程是公司的“宪法”，其制定、保存和执行直接关系到公司的健康运营和风险防范。以下是一份详细的指南，涵盖公司章程的<strong>制定、保存与实践执行</strong>。</p><h3>第一部分：如何制定公司章程</h3><p>公司章程的制定绝非简单地填写一份工商局的标准模板，而应是一个深思熟虑、量身定制的过程。</p><h4>制定流程</h4><ol><li><p><strong>发起人起草</strong>：</p><ul><li>  对于有限责任公司，由初始股东共同制定。</li><li>  对于股份有限公司，由发起人制订。</li><li>  在实践中，通常由核心股东或律师在充分协商的基础上起草草案。</li></ul></li><li><p><strong>关键内容协商</strong>：</p><ul><li>  股东们必须对章程的核心条款进行充分讨论和谈判，确保所有重要问题达成一致。这是<strong>最重要的一步</strong>。</li></ul></li><li><p><strong>正式审议与通过</strong>：</p><ul><li>  <strong>有限责任公司</strong>：必须经<strong>全体股东</strong>一致同意并签名、盖章。</li><li>  <strong>股份有限公司</strong>：在创立大会上由出席会议的认股人所持表决权过半数通过。</li></ul></li><li><p><strong>报送登记与生效</strong>：</p><ul><li>  公司章程是公司设立登记的必备文件，需报送市场监督管理局（工商部门）进行审核。</li><li>  公司章程自公司正式成立（领取营业执照）之日起生效。</li></ul></li></ol><h4>核心内容与个性化设计（超越模板）</h4><p>工商局会提供标准模板，但切忌直接使用。必须在以下关键领域进行个性化设计：</p><table><thead><tr><th align="left">核心章节</th><th align="left">标准化模板内容（默认规则）</th><th align="left"><strong>个性化设计建议与关键点</strong></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>股东信息</strong></td><td align="left">股东名称/姓名、出资额</td><td align="left">明确股东的权利和义务。</td></tr><tr><td align="left"><strong><strong>股权结构与转让</strong></strong></td><td align="left"><strong>按出资比例行使表决权、分红权。</strong><br><strong>股权转让按《公司法》默认程序。</strong></td><td align="left"><strong>【重中之重】</strong><br>• <strong>表决权</strong>：可否约定“同股不同权”？（有限公司可，股份公司复杂）<br>• <strong>分红权</strong>：可否不按出资比例分红？（<strong>可以</strong>，明确约定即可）<br>• <strong>股权转让</strong>：<strong>必须详细规定！</strong> 可严于《公司法》，如“对外转让需全体股东一致同意”，并明确优先购买权的行使细则。</td></tr><tr><td align="left"><strong>股东会/股东大会</strong></td><td align="left">法定职权、会议召集</td><td align="left">• <strong>通知期限</strong>：可约定更短或更长的通知时间。<br>• <strong>表决方式</strong>：可否书面、通讯表决？（<strong>可以约定</strong>）<br>• <strong>决议通过比例</strong>：除法定事项（如修改章程、合并分立需2/3以上表决权）外，可约定其他事项的特定通过比例（如过半数、3/4等）。</td></tr><tr><td align="left"><strong>董事会/执行董事</strong></td><td align="left">法定职权、人数</td><td align="left">• 可将股东会的部分<strong>非核心职权</strong>授权给董事会。<br>• 明确董事会的议事规则和表决程序。</td></tr><tr><td align="left"><strong>法定代表人</strong></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></tr><tr><td align="left"><strong>解散与清算</strong></td><td align="left">按《公司法》规定</td><td align="left">可约定公司经营期限，以及解散事由。</td></tr></tbody></table><p><strong>强烈建议</strong>：在制定章程，特别是涉及多位股东时，<strong>咨询专业律师</strong>。律师能帮助您预见潜在纠纷，并将对各股东最有利的保护条款写入章程。</p><h3>第二部分：如何保存公司章程</h3><p>公司章程不应被锁在柜子里蒙尘，而应作为活文件被妥善管理和使用。</p><ol><li><p><strong>物理保存</strong>：</p><ul><li>  <strong>正本</strong>：将市场监督管理局盖章核准的公司章程正本，与营业执照、公章等重要文件一起，存放在公司的<strong>安全场所</strong>（如保险柜），由专人负责管理。</li><li>  <strong>副本</strong>：制作多份副本，供日常使用。</li></ul></li><li><p><strong>电子保存</strong>：</p><ul><li>  将章程的电子版（PDF/Word）保存在公司的共享服务器或加密云盘中，确保管理层和股东可以方便地查阅。</li><li>  确保电子版与工商登记备案的版本一致。</li></ul></li><li><p><strong>分发与告知</strong>：</p><ul><li>  应确保<strong>每位股东、董事、监事和高级管理人员</strong>都持有一份章程副本，并已阅读和理解其内容。</li><li>  新加入的股东或高管，应在入职或入股时第一时间获取并学习章程。</li></ul></li></ol><h3>第三部分：如何实践执行公司章程</h3><p>章程的生命在于执行。否则，它只是一纸空文。</p><ol><li><p><strong>作为日常行为的最高准则</strong>：</p><ul><li>  <strong>决策依据</strong>：公司召开股东会、董事会，作出任何重大决策，都必须<strong>首先查阅章程</strong>，确保权限和程序符合规定。</li><li>  <strong>合同与授权</strong>：在对外签订重要合同时，应核查签约人（如法定代表人、授权代表）的权限是否与章程规定一致。</li><li>  <strong>避免程序瑕疵</strong>：例如，章程规定召开股东会需提前15日通知，若只提前了10日，则形成的决议可能因程序违法而被撤销。</li></ul></li><li><p><strong>解决内部纠纷的准绳</strong>：</p><ul><li>  当股东之间、股东与公司之间发生争议（如分红、股权转让、投票权等），<strong>公司章程是解决争议的第一位和最重要的依据</strong>。</li><li>  例如，关于股权转让的争议，完全取决于章程是如何约定的，而不是《公司法》的默认规定。</li></ul></li><li><p><strong>对抗外部风险的盾牌</strong>：</p><ul><li>  对于董事、高管来说，只要其行为是依据公司章程和相关法律作出的，就可以在很大程度上去主张免除个人责任。</li><li>  规范的章程执行记录（如股东会决议、董事会决议）是证明公司行为独立、避免“法人人格否认”（股东连带责任）的重要证据。</li></ul></li><li><p><strong>定期审查与修订</strong>：</p><ul><li>公司章程不是一成不变的。当公司发生以下情况时，应及时启动章程的修订程序：<ul><li>  增加或减少注册资本。</li><li>  股东结构发生变化（如新股东加入、老股东退出）。</li><li>  公司业务模式或战略发生重大调整。</li><li>  法律法规出现重大变更。</li></ul></li><li>  修订章程必须遵循章程本身规定的程序（通常是经持有三分之二以上表决权的股东通过），并重新报送市场监督管理局备案。</li></ul></li></ol><h3>总结：最佳实践清单</h3><ul><li>  <strong>[ ] 量身定制</strong>：拒绝简单套用模板，围绕股东关系和公司战略设计核心条款。</li><li>  <strong>[ ] 专业把关</strong>：在制定和修订时，寻求法律专业人士的帮助。</li><li>  <strong>[ ] 全员知晓</strong>：确保所有股东和管理层熟悉章程内容。</li><li>  <strong>[ ] 严格遵循</strong>：在做出任何重大决策前，养成“先查章程”的习惯。</li><li>  <strong>[ ] 完整记录</strong>：妥善保管与章程执行相关的所有会议记录和决议。</li><li>  <strong>[ ] 动态更新</strong>：根据公司发展和法律变化，定期审视并适时修订章程。</li></ul><p>将公司章程真正融入到公司的血液中，是公司实现规范治理、基业长青的根本保障。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;&lt;strong&gt;公司章程不能高于《公司法》，它必须在《公司法》框架内制定和发挥作用。《公司法》是上位法和强制法，而公司章程是下位法和自治法。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;一、 基本关系：服从与补充&lt;/h3&gt;</summary>
    
    
    
    <category term="商业" scheme="https://blog.hufeifei.cn/categories/%E5%95%86%E4%B8%9A/"/>
    
    
    <category term="商业" scheme="https://blog.hufeifei.cn/tags/%E5%95%86%E4%B8%9A/"/>
    
    <category term="法律" scheme="https://blog.hufeifei.cn/tags/%E6%B3%95%E5%BE%8B/"/>
    
    <category term="公司法" scheme="https://blog.hufeifei.cn/tags/%E5%85%AC%E5%8F%B8%E6%B3%95/"/>
    
  </entry>
  
  <entry>
    <title>K8S中探针请求与OTEL链路采集的问题</title>
    <link href="https://blog.hufeifei.cn/2025/06/Distribution/opentelemetry-spring-actuator/"/>
    <id>https://blog.hufeifei.cn/2025/06/Distribution/opentelemetry-spring-actuator/</id>
    <published>2025-06-10T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.396Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><p>最近给所有的<a href="https://docs.spring.io/spring-boot/docs/3.1.0/reference/htmlsingle/#features.spring-application.application-availability" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">java应用加了就绪探针和存活探针</a>，并且通过<code>kubectl rollout status deploy</code>命令让Gitlab流水线能检测应用是否已经就绪。</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kubectl rollout status deploy <span class="variable">$DOCKER_APP_NAME</span> --context=dev-admin@cluster.dev -n recircle-industry-platform-dev</span><br></pre></td></tr></table></figure><p><img src="https://github.com/user-attachments/assets/074d682a-df64-4804-9b41-6a9a67e29e36" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="image"></p><p>但是又遇到一个新的问题，<a href="https://opentelemetry.io/docs/zero-code/java/agent/getting-started/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">OpenTelemetry的java-agent</a>默认也会把探针的请求上报到后端的监控服务。</p><p><img src="https://github.com/user-attachments/assets/fbff209b-e8b6-424d-9805-d3a0f6ca6cc7" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer" alt="image"></p><p>由于探针请求的频率有点高，而且每个应用都会有探针请求，结果导致OpenObserver处理不过来，报MemoryTableOverflowError：</p><figure class="highlight sh"><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">2025-06-18T07:40:22.074188063+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:22.074317749+00:00 INFO actix_web::middleware::logger: 10.233.71.119 <span class="string">&quot;POST /api/default/v1/traces HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;1706&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000299    </span><br><span class="line">2025-06-18T07:40:22.449896048+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:22.450004619+00:00 INFO actix_web::middleware::logger: 10.233.80.211 <span class="string">&quot;POST /api/default/v1/traces HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;2230&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000270    </span><br><span class="line">2025-06-18T07:40:22.517553812+00:00 INFO actix_web::middleware::logger: 10.233.71.0 <span class="string">&quot;POST /api/default/v1/metrics HTTP/1.0&quot;</span> 503 74 <span class="string">&quot;3826&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OpenTelemetry Collector Contrib/0.111.0 (linux/amd64)&quot;</span> 0.000867    </span><br><span class="line">2025-06-18T07:40:23.572270669+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:23.572416843+00:00 INFO actix_web::middleware::logger: 10.233.71.1 <span class="string">&quot;POST /api/default/v1/traces HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;2278&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000371    </span><br><span class="line">2025-06-18T07:40:23.657375098+00:00 INFO actix_web::middleware::logger: 10.233.71.247 <span class="string">&quot;POST /api/default/v1/metrics HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;20634&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000578    </span><br><span class="line">2025-06-18T07:40:23.803923763+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:24.635078516+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:24.635189325+00:00 INFO actix_web::middleware::logger: 10.233.71.223 <span class="string">&quot;POST /api/default/v1/traces HTTP/1.1&quot;</span> 503 74 <span class="string">&quot;2162&quot;</span> <span class="string">&quot;-&quot;</span> <span class="string">&quot;OTel-OTLP-Exporter-Java/1.40.0&quot;</span> 0.000268    </span><br><span class="line">2025-06-18T07:40:25.119413710+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError    </span><br><span class="line">2025-06-18T07:40:25.120251549+00:00 ERROR openobserve::service::traces: [TRACES:OTLP] ingestion error <span class="keyword">while</span> checking memtable size: MemoryTableOverflowError</span><br></pre></td></tr></table></figure><p>目前找到几种解决方法。</p><h2>java-agent上报时过滤掉actuator的请求</h2><p><a href="https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/1060" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">opentelemetry-java-instrumentation#1060</a>和<a href="https://github.com/open-telemetry/opentelemetry-java-instrumentation/discussions/6605" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">discussions#6605</a>中提到了这个问题，但是agent并不打算实现Exclude URL的功能。</p><p>opentelemetry有一个三方提供的<a href="https://github.com/open-telemetry/opentelemetry-java-contrib/tree/main/samplers" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">samplers</a>包，可以做到过滤<a href="https://github.com/open-telemetry/opentelemetry-java-examples/blob/main/javaagent/sdk-config.yaml#L101" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">actuator</a>请求。需要你将其打包成<a href="https://github.com/open-telemetry/opentelemetry-java-examples/blob/main/javaagent/build.gradle.kts#L30" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"><code>java-agent-extension</code></a>，并对<a href="https://opentelemetry.io/docs/zero-code/java/agent/configuration/#extensions" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"><code>java-agent-extension</code></a>进行配置</p><h2>通过opentelemetry-spring-boot-starter过滤actuator请求</h2><p>还有一种方式是通过<a href="https://opentelemetry.io/docs/zero-code/java/spring-boot-starter/sdk-configuration/#exclude-actuator-endpoints-from-tracing" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer">opentelemetry-spring-boot-starter</a>过滤掉actuator请求。</p><p>但是这种方式需要侵入代码，比较好的方式是把这个功能和spring-boot-actuator一起封装成二方包。但是需要对业务开发人员灌输这个二方包的作用，仍然不够优雅。</p><h2>通过opentelemetry-collector丢弃掉actuator请求</h2><p>第三种方式就是在java应用和openobserver之间添加一个<code>opentelemetry-collector</code>的组件，这个好处是让<code>opentelemetry-collector</code>统一收集所有java应用上报的OTEL消息，然后批量发给openobserver可以缓解openobserver的压力（openobserver底层使用LSM数据结构，有后台merge的过程），其次就是有非常多的processor可以对OTEL消息进行处理。</p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="attr">receivers:</span></span><br><span class="line">  <span class="attr">otlp:</span></span><br><span class="line">    <span class="attr">protocols:</span></span><br><span class="line">      <span class="attr">grpc:</span></span><br><span class="line">        <span class="attr">endpoint:</span> <span class="number">0.0</span><span class="number">.0</span><span class="number">.0</span><span class="string">:4317</span></span><br><span class="line">      <span class="attr">http:</span></span><br><span class="line">        <span class="attr">endpoint:</span> <span class="number">0.0</span><span class="number">.0</span><span class="number">.0</span><span class="string">:4318</span></span><br><span class="line"></span><br><span class="line"><span class="attr">processors:</span></span><br><span class="line">  <span class="attr">batch:</span></span><br><span class="line">  <span class="attr">memory_limiter:</span></span><br><span class="line">    <span class="attr">check_interval:</span> <span class="string">1s</span></span><br><span class="line">    <span class="attr">limit_mib:</span> <span class="number">512</span></span><br><span class="line">  <span class="attr">filter/skip_actuator:</span></span><br><span class="line">    <span class="attr">error_mode:</span> <span class="string">ignore</span></span><br><span class="line">    <span class="attr">traces:</span></span><br><span class="line">      <span class="attr">span:</span></span><br><span class="line">        <span class="comment"># 丢弃包含actuator或healthz请求</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">attributes[&quot;http.route&quot;]</span> <span class="type">!=</span> <span class="string">nil</span> <span class="string">and</span> <span class="string">IsMatch(attributes[&quot;http.route&quot;],</span> <span class="string">&quot;.*actuator.*&quot;</span><span class="string">)</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">attributes[&quot;http.target&quot;]</span> <span class="type">!=</span> <span class="string">nil</span> <span class="string">and</span> <span class="string">IsMatch(attributes[&quot;http.target&quot;],</span> <span class="string">&quot;.*/healthz&quot;</span><span class="string">)</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">attributes[&quot;url.path&quot;]</span> <span class="type">!=</span> <span class="string">nil</span> <span class="string">IsMatch(attributes[&quot;url.path&quot;],</span> <span class="string">&quot;.*actuator.*&quot;</span><span class="string">)</span></span><br><span class="line">        <span class="comment"># 丢弃kube-probe发出的探针请求</span></span><br><span class="line">        <span class="bullet">-</span> <span class="string">attributes[&quot;http.user_agent&quot;]</span> <span class="type">!=</span> <span class="string">nil</span> <span class="string">and</span> <span class="string">IsMatch(attributes[&quot;http.user_agent&quot;],</span> <span class="string">&quot;^kube-probe.*&quot;</span><span class="string">)</span></span><br><span class="line"></span><br><span class="line"><span class="attr">exporters:</span></span><br><span class="line">  <span class="attr">otlphttp/openobserve:</span></span><br><span class="line">    <span class="attr">endpoint:</span> <span class="string">&quot;http://openobserve.recircle-industry-platform-dev:5080/api/default&quot;</span></span><br><span class="line">    <span class="attr">headers:</span></span><br><span class="line">      <span class="attr">Authorization:</span> <span class="string">Basic</span> <span class="string">cm9vdEBleGFtcGxlLmNvbTpjNEVxU1Jhb0F5SHNWTDVn</span></span><br><span class="line">      <span class="attr">stream-name:</span> <span class="string">default</span></span><br><span class="line"></span><br><span class="line"><span class="attr">service:</span></span><br><span class="line">  <span class="attr">pipelines:</span></span><br><span class="line">    <span class="attr">traces:</span></span><br><span class="line">      <span class="attr">receivers:</span> [<span class="string">otlp</span>]</span><br><span class="line">      <span class="attr">processors:</span> [<span class="string">filter/skip_actuator</span>, <span class="string">memory_limiter</span>, <span class="string">batch</span>]</span><br><span class="line">      <span class="attr">exporters:</span> [<span class="string">otlphttp/openobserve</span>]</span><br><span class="line">    <span class="attr">logs:</span></span><br><span class="line">      <span class="attr">receivers:</span> [<span class="string">otlp</span>]</span><br><span class="line">      <span class="attr">processors:</span> [<span class="string">memory_limiter</span>, <span class="string">batch</span>]</span><br><span class="line">      <span class="attr">exporters:</span> [<span class="string">otlphttp/openobserve</span>]</span><br><span class="line">    <span class="attr">metrics:</span></span><br><span class="line">      <span class="attr">receivers:</span> [<span class="string">otlp</span>]</span><br><span class="line">      <span class="attr">processors:</span> [<span class="string">memory_limiter</span>, <span class="string">batch</span>]</span><br><span class="line">      <span class="attr">exporters:</span> [<span class="string">otlphttp/openobserve</span>]</span><br></pre></td></tr></table></figure><p>这里推荐一个网站<a href="https://www.otelbin.io/" rel="external noreferrer nofollow noopener" referrerpolicy="no-referrer"><code>otelbin.io</code></a>可以可视化opentelemetry-collector的配置。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;p&gt;最近给所有的&lt;a href=&quot;https://docs.spring.io/spring-boot/docs/3.1.0/reference/htmlsingle/#features.spring-application.application-availability&quot; rel=&quot;external noreferrer nofollow noopener&quot; referrerpolicy=&quot;no-referrer&quot;&gt;java应用加了就绪探针和存活探针&lt;/a&gt;，并且通过&lt;code&gt;kubectl rollout status deploy&lt;/code&gt;命令让Gitlab流水线能检测应用是否已经就绪。&lt;/p&gt;
&lt;figure class=&quot;highlight sh&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;kubectl rollout status deploy &lt;span class=&quot;variable&quot;&gt;$DOCKER_APP_NAME&lt;/span&gt; --context=dev-admin@cluster.dev -n recircle-industry-platform-dev&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="分布式" scheme="https://blog.hufeifei.cn/categories/%E5%88%86%E5%B8%83%E5%BC%8F/"/>
    
    
    <category term="Distributed" scheme="https://blog.hufeifei.cn/tags/Distributed/"/>
    
    <category term="OpenTelemetry" scheme="https://blog.hufeifei.cn/tags/OpenTelemetry/"/>
    
    <category term="OTEL" scheme="https://blog.hufeifei.cn/tags/OTEL/"/>
    
  </entry>
  
  <entry>
    <title>有限责任的内涵与法人人格否认制度</title>
    <link href="https://blog.hufeifei.cn/2025/06/business/Limited-Liability/"/>
    <id>https://blog.hufeifei.cn/2025/06/business/Limited-Liability/</id>
    <published>2025-06-03T16:00:00.000Z</published>
    <updated>2026-05-07T06:18:37.408Z</updated>
    
    <content type="html"><![CDATA[<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css"><h3>一、公司的有限责任内涵</h3><p>“有限责任”是公司制度的基石，它包含两个相互关联但又独立的层面，理解这一点至关重要。</p><p><strong>1. 公司自身的责任 - 独立法人责任</strong></p><ul><li>  <strong>内涵</strong>：公司是独立的<strong>企业法人</strong>，拥有独立的法人财产。这意味着公司在法律上被视为一个独立的“人”，拥有独立的人格，能够以自己的名义拥有财产、签订合同、起诉和应诉。</li><li>  <strong>责任承担</strong>：公司以其<strong>全部财产</strong>对自己的债务承担责任。这里的“全部财产”包括公司的<strong>注册资本、经营积累的固定资产、现金、知识产权等所有资产</strong>。</li><li>  <strong>简单来说</strong>：公司的债，用自己的家当来还。</li></ul><p><strong>2. 股东的责任 - 有限出资责任</strong></p><ul><li>  <strong>内涵</strong>：股东在履行其出资义务后，其对公司的责任即告完成。</li><li><strong>责任承担</strong>：<ul><li>有限责任公司的股东以其<strong>认缴的出资额</strong>为限对公司承担责任。</li><li>股份有限公司的股东以其<strong>认购的股份</strong>为限对公司承担责任。</li></ul></li><li>  <strong>简单来说</strong>：股东对公司债务的责任，上限就是他们投资进去的钱。如果公司资不抵债破产，股东最多损失全部投资，但<strong>其个人财产与公司债务完全隔离</strong>，债权人无权要求股东用个人财产来偿还公司债务。</li></ul><p><strong>核心关系图示：</strong></p><pre class="mermaid">flowchart TD    A[公司债务] --> B[“公司（独立法人）”]    B --> C[“以公司全部财产<br>承担责任”]        D[股东] --> E[“履行出资义务<br>（认缴额/认购股份）”]    E --> F[“责任上限<br>（仅损失其投资）”]        G[债权人] -- 只能向 --> B    G -- 不能向 --> D</pre><p><strong>举例说明：</strong><br>小明、小红和小刚三人共同出资100万元成立了一家“创想科技有限公司”，小明认缴50万，小红认缴30万，小刚认缴20万。公司经营中欠下供应商500万元债务，但公司全部资产只剩80万元。</p><ul><li>  <strong>公司责任</strong>：创想公司需用这80万元资产来偿还债务，不足部分，因公司无力偿还，可以破产清算。</li><li>  <strong>股东责任</strong>：小明、小红和小刚<strong>无需</strong>用自己的个人存款、房产或车辆来偿还剩余的420万元债务。他们最多就是损失了自己已经投入的50万、30万和20万。</li><li>  <strong>这就是“有限责任”的保护作用</strong>：它鼓励了投资和创业，将股东的风险控制在其出资范围之内。</li></ul><h3>二、有限责任的例外：“刺破公司面纱”或“法人人格否认”</h3><p>“有限责任”不是绝对的护身符。如果股东滥用这层“保护罩”来从事不法行为、损害他人利益，法律就会揭开这层面纱，让躲在公司背后的股东直接承担责任。这就是“<strong>法人人格否认</strong>”制度。</p><p>根据中国《公司法》第23条（2023年修订版）的规定，主要有以下两种例外情况：</p><p><strong>1. 纵向人格否认：股东滥用公司独立人格</strong></p><ul><li>  <strong>情形</strong>：公司股东<strong>滥用公司法人独立地位和股东有限责任</strong>，逃避债务，<strong>严重损害公司债权人利益</strong>的。</li><li>  <strong>法律后果</strong>：该股东应当对<strong>公司债务</strong>承担<strong>连带责任</strong>。</li><li><strong>常见行为</strong>：<ul><li><strong>人格混同</strong>：公司与股东在财产、业务、人员、场所等方面界限不清，无法区分。俗称“一套人马，两块牌子”。（<strong>这是最常见的类型</strong>）<ul><li><strong>表现</strong>：公司账户与股东个人账户混用，公款私用；公司业务与股东个人业务不分；公司账簿与股东账簿不分。</li></ul></li><li>  <strong>过度控制与支配</strong>：股东像操作木偶一样完全操控公司，使公司失去独立意志，成为股东谋取私利的工具。</li><li>  <strong>资本显著不足</strong>：股东投入的资本与公司经营所隐含的风险相比明显不匹配，实质上是利用少量资本从事高风险业务，将风险转嫁给债权人。</li></ul></li></ul><p><strong>2. 横向人格否认：股东滥用股东有限责任</strong></p><ul><li>  <strong>情形</strong>：公司股东利用其控制的<strong>两个以上公司</strong>实施上述滥用行为，逃避债务，严重损害公司债权人利益的。</li><li>  <strong>法律后果</strong>：各公司应当对<strong>任何一个公司的债务</strong>承担<strong>连带责任</strong>。</li><li><strong>常见行为</strong>：<ul><li>  股东设立多个“兄弟公司”或“母子公司”，彼此之间财产、利益随意输送。</li><li>  当其中一个公司负债时，迅速将资产转移至其他公司，导致债权人无法执行。</li></ul></li></ul><h2>法人人格否认制度的历史沿革</h2><p><strong>中国法律上的“法人人格否认”制度在2023年新《公司法》修订之前就已经确立并存在了多年。</strong> 下面我们来详细梳理一下这个制度的发展历程：</p><h3>一、 制度起源与确立（2005年）</h3><p>在2005年之前，中国法律并没有成文法的明确规定“法人人格否认”制度。但在司法实践中，已经出现了一些基于公平原则和禁止权利滥用原则的类似判决。</p><p><strong>里程碑式的节点是2005年《公司法》的修订。</strong></p><ul><li><p><strong>2005年《公司法》第二十条：</strong></p><blockquote><p><strong>公司股东应当遵守法律、行政法规和公司章程，依法行使股东权利，不得滥用股东权利损害公司或者其他股东的利益；不得滥用公司法人独立地位和股东有限责任损害公司债权人的利益。</strong></p><p><strong>公司股东滥用股东权利给公司或者其他股东造成损失的，应当依法承担赔偿责任。</strong></p><p><strong>公司股东滥用公司法人独立地位和股东有限责任，逃避债务，严重损害公司债权人利益的，应当对公司债务承担连带责任。</strong></p></blockquote></li><li><p><strong>意义</strong>：</p><ul><li>  这是中国<strong>首次在成文法中明确确立“法人人格否认”（或“刺破公司面纱”）制度</strong>，具有划时代的意义。</li><li>  它为解决实践中普遍存在的股东滥用公司独立人格和有限责任的问题提供了明确的法律武器。</li></ul></li></ul><h3>二、 制度的司法实践与发展（2005-2023）</h3><p>在2005年《公司法》生效后，最高人民法院通过一系列司法解释和指导性案例，进一步细化和发展了这一制度的适用规则。</p><ol><li> <strong>《公司法》司法解释（二）</strong>（2008年）：在清算环节，规定了股东因怠于履行义务导致公司无法清算时，应对公司债务承担连带责任，这被视为法人人格否认在清算程序中的具体化。</li><li> <strong>《公司法》司法解释（三）</strong>（2011年）：规定了股东出资不足、抽逃出资等情况下的责任，也为否认公司人格提供了相关依据。</li><li><strong>《九民纪要》</strong>（2019年）：这是<strong>司法实践中关于法人人格否认最重要的指导性文件之一</strong>。<ul><li>  <strong>明确了判断标准</strong>：它详细阐述了如何认定“人格混同”，核心标准是“公司是否已丧失独立意志”，最关键的判断因素是<strong>财产混同</strong>（如公司账户与股东账户不分，公款私用等）。</li><li>  <strong>强调了审慎适用原则</strong>：要求法官必须严格掌握适用标准，不能轻易否认公司的独立人格。</li><li>  <strong>明确了横向否认</strong>：《九民纪要》虽然不属于司法解释，但它首次在官方文件中系统地提出了“横向刺破公司面纱”的思路，即当多个关联公司人格高度混同，难以区分时，可以判令它们相互之间承担连带责任。</li></ul></li></ol><h3>三、 2023年新《公司法》的完善与升级</h3><p>2023年修订的《公司法》（2024年7月1日生效）在总结近二十年司法实践经验的基础上，对法人人格否认制度进行了<strong>系统的整合和升级</strong>。</p><ul><li><p><strong>新《公司法》第二十三条</strong>：</p><blockquote><p><strong>公司股东滥用公司法人独立地位和股东有限责任，逃避债务，严重损害公司债权人利益的，应当对公司债务承担连带责任。</strong></p><p><strong>股东利用其控制的两个以上公司实施前款规定行为的，各公司应当对任何一个公司的债务承担连带责任。</strong></p></blockquote></li><li><p><strong>主要变化和进步</strong>：</p><ol><li> <strong>结构整合</strong>：将原本散见于不同条款和司法解释中的精神，整合为一个更为精炼和核心的条款。</li><li> <strong>明文规定“横向否认”</strong>：这是<strong>最大的进步</strong>。新法第二款明确将《九民纪要》中探索的“横向人格否认”<strong>正式写入法律</strong>，使其有了明确的法律依据。这意味着，不仅股东和公司之间可以被“刺破”，关联公司之间也可以被“刺破”。</li><li> <strong>法律位阶提升</strong>：将实践中已经成熟适用的规则从司法解释层面提升到了基本法律层面，权威性更高。</li></ol></li></ul><h3>总结</h3><table><thead><tr><th align="left">时间阶段</th><th align="left">法律状态</th><th align="left">核心内容</th></tr></thead><tbody><tr><td align="left"><strong>2005年之前</strong></td><td align="left">无法条依据</td><td align="left">司法实践中偶有基于民法基本原则的探索。</td></tr><tr><td align="left"><strong>2005-2023年</strong></td><td align="left"><strong>制度确立与实践期</strong></td><td align="left"><strong>2005年《公司法》第20条</strong>首次确立纵向否认。最高法院通过司法解释和《九民纪要》细化规则，并探索横向否认。</td></tr><tr><td align="left"><strong>2024年7月1日起</strong></td><td align="left"><strong>制度完善与升级期</strong></td><td align="left"><strong>2023年新《公司法》第23条</strong>整合并明确了纵向否认，并<strong>将横向否认正式写入成文法</strong>。</td></tr></tbody></table><p>中国的法人人格否认制度自<strong>2005年</strong>起就已正式确立，并经过近二十年的司法实践不断丰富和发展。2023年的修订是对这一成熟制度的法定化、系统化和升级，使其更能适应复杂的商业实践，更好地保护债权人的合法权益。</p><h2><strong>总结与实践提示</strong></h2><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>有限责任</strong></td><td align="left">股东以其出资为限承担责任，公司以其全部财产承担责任。</td></tr><tr><td align="left"><strong>股东滥用权利<br>(人格混同、逃避债务等)</strong></td><td align="left"><strong>例外：法人人格否认</strong></td><td align="left"><strong>刺破公司面纱</strong>，滥用权利的股东需对公司债务承担<strong>连带责任</strong>。</td></tr></tbody></table><p><strong>给创业者和公司股东的建议：</strong></p><ol><li> <strong>尊重公司的独立性</strong>：建立独立的财务制度，公司账户与股东个人账户严格分开。</li><li> <strong>规范治理</strong>：按时召开股东会，制作并保存完整的会议记录和财务报告。</li><li> <strong>避免公私不分</strong>：不要随意将公司资金用于个人消费，也不要把个人财产和公司财产混为一谈。</li><li> <strong>依法出资</strong>：按时足额缴纳认缴的出资，避免“空壳”运营。</li></ol><p><strong>有限责任是法律赋予的“保护伞”，但绝不是“欺诈的护身符”。</strong> 一旦被法院认定为人格混同或滥用公司形式，这层保护将瞬间消失，股东将面临无限连带责任的风险。</p>]]></content>
    
    
    <summary type="html">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;https://cdn.jsdelivr.net/hint.css/2.4.1/hint.min.css&quot;&gt;&lt;h3&gt;一、公司的有限责任内涵&lt;/h3&gt;&lt;p&gt;“有限责任”是公司制度的基石，它包含两个相互关联但又独立的层面，理解这一点至关重要。&lt;/p&gt;</summary>
    
    
    
    <category term="商业" scheme="https://blog.hufeifei.cn/categories/%E5%95%86%E4%B8%9A/"/>
    
    
    <category term="商业" scheme="https://blog.hufeifei.cn/tags/%E5%95%86%E4%B8%9A/"/>
    
    <category term="法律" scheme="https://blog.hufeifei.cn/tags/%E6%B3%95%E5%BE%8B/"/>
    
    <category term="公司法" scheme="https://blog.hufeifei.cn/tags/%E5%85%AC%E5%8F%B8%E6%B3%95/"/>
    
  </entry>
  
</feed>
