<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>工程实践 on Renxin's Blog</title><link>https://zh.renxinblog.cn/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/</link><description>Recent content in 工程实践 on Renxin's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Thu, 13 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://zh.renxinblog.cn/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/index.xml" rel="self" type="application/rss+xml"/><item><title>RAG 分块策略：为什么你的知识库答非所问，问题多半出在这里</title><link>https://zh.renxinblog.cn/post/rag-chunking-strategies/</link><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid>https://zh.renxinblog.cn/post/rag-chunking-strategies/</guid><description>&lt;img src="https://zh.renxinblog.cn/images/rag-chunking-strategies-cover.png" alt="Featured image of post RAG 分块策略：为什么你的知识库答非所问，问题多半出在这里" /&gt;&lt;p&gt;你搭了一个知识库问答系统：上传文档、建好索引、跑通 demo——然后 LLM 开始答非所问。&lt;/p&gt;
&lt;p&gt;你以为是模型不够聪明。换更强的模型，还是不对。&lt;/p&gt;
&lt;p&gt;问题很可能出在一个不起眼的环节：&lt;strong&gt;文档入库时的分块&lt;/strong&gt;。LLM 根本没读到该读的内容，模型再强也白搭。&lt;/p&gt;
&lt;p&gt;这篇文章把分块这件事讲透：为什么要分块、五种分块策略分别解决什么问题、生产环境到底怎么选。&lt;/p&gt;
&lt;h2 id="为什么要分块三个绕不过去的原因"&gt;为什么要分块？三个绕不过去的原因
&lt;/h2&gt;&lt;p&gt;先把结论摆出来：解析完的文档，不能整篇扔进检索。&lt;/p&gt;
&lt;p&gt;原因有三个，每一个都独立成立。&lt;/p&gt;
&lt;h3 id="原因一上下文窗口是有限的"&gt;原因一：上下文窗口是有限的
&lt;/h3&gt;&lt;p&gt;LLM 的上下文窗口再大也有上限。就算现在有 128K、1M 上下文的模型，检索也不是把整个文档库塞进 Prompt——那样成本直接爆炸。&lt;/p&gt;
&lt;p&gt;更重要的是，窗口越大，模型越难从中找到准确的那一段。这就是著名的&amp;quot;大海捞针&amp;quot;问题：上下文拉长，检索精度反而下降。&lt;/p&gt;
&lt;h3 id="原因二检索信噪比"&gt;原因二：检索信噪比
&lt;/h3&gt;&lt;p&gt;用户问的是文档里的一个小问题，但整篇文档有几千字。&lt;/p&gt;
&lt;p&gt;整篇匹配会发生什么？不相关的内容把相关内容的信号稀释了。向量检索返回的 Top-K 结果里，噪音占了大多数，相关的那一小段被埋没。&lt;/p&gt;
&lt;p&gt;块太大 → 无关信息稀释信号。这是信噪比的第一面。&lt;/p&gt;
&lt;h3 id="原因三embedding-对长文本的平均化"&gt;原因三：Embedding 对长文本的&amp;quot;平均化&amp;quot;
&lt;/h3&gt;&lt;p&gt;Embedding 模型擅长表示短文本——一两句话的语义最清晰。&lt;/p&gt;
&lt;p&gt;文本一长，向量就被&amp;quot;平均&amp;quot;了：整段的语义混在一起，变成一个模糊的方向。检索时，这个模糊向量既匹配不上问题，也匹配不上文档里的任何精确信息。&lt;/p&gt;
&lt;p&gt;Embedding 模型对短文本的语义表示最好，长文本会被&amp;quot;平均&amp;quot;成模糊向量。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;三个原因叠加，结论只有一个：&lt;strong&gt;必须把文档切成合适大小的块&lt;/strong&gt;。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 A["① 上下文窗口有限"] --&gt; D["必须分块"]
 B["② 检索信噪比"] --&gt; D
 C["③ Embedding 平均化"] --&gt; D
 style A fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style B fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style C fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style D fill:#d1fae5,stroke:#059669,color:#064e3b&lt;/pre&gt;&lt;p&gt;但怎么切，才是真正的问题。切小了语境不够，切大了检索不精——这就是分块的核心矛盾：&lt;strong&gt;检索精度 vs 上下文完整性&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="分块的两个基础参数"&gt;分块的两个基础参数
&lt;/h2&gt;&lt;p&gt;在讨论策略之前，先理解所有分块策略都绕不开的两个参数。&lt;/p&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;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;chunk_size&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;每块的大小&lt;/td&gt;
					&lt;td&gt;300-800 字（约 500-1200 tokens）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;chunk_overlap&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;相邻块之间的重叠量&lt;/td&gt;
					&lt;td&gt;chunk_size 的 10%-20%&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;为什么需要 overlap？看一个例子。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 A["文档&lt;br/&gt;AAAABBBBCCCCDDDD"] --&gt; B["chunk_size=8, overlap=2&lt;br/&gt;块1: AAAABBBB&lt;br/&gt;块2: BBCCCCDD&lt;br/&gt;BB 被两块共享"]
 A --&gt; C["chunk_size=8, overlap=0&lt;br/&gt;块1: AAAABBBB&lt;br/&gt;块2: CCCCDD&lt;br/&gt;BB-CC 之间语义断裂"]
 B --&gt; D["✅ 跨块内容仍可检索"]
 C --&gt; E["❌ 关键句恰好被切断时丢失"]
 style A fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style B fill:#d1fae5,stroke:#059669,color:#064e3b
 style C fill:#fef9c3,stroke:#ca8a04,color:#713f12
 style D fill:#d1fae5,stroke:#059669,color:#064e3b
 style E fill:#fee2e2,stroke:#dc2626,color:#7f1d1d&lt;/pre&gt;&lt;p&gt;overlap=0 时，如果&amp;quot;BBCC&amp;quot;恰好是完整语义（比如一个概念的完整描述），它被拦腰切断，两块都不完整。检索时哪块都匹配不精准，LLM 拿到的都是残句。&lt;/p&gt;
&lt;p&gt;overlap 就是给跨块语义留的缓冲带。&lt;/p&gt;
&lt;h2 id="五种分块策略逐个拆解"&gt;五种分块策略，逐个拆解
&lt;/h2&gt;&lt;p&gt;理解了参数，进入正题。分块策略从简单到复杂，正好是一条问题驱动的问题链。&lt;/p&gt;
&lt;h3 id="策略一固定大小分块最简单也最粗暴"&gt;策略一：固定大小分块——最简单，也最粗暴
&lt;/h3&gt;&lt;p&gt;做法：按预设的字符数或 token 数直接切。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# LangChain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;text_splitter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;CharacterTextSplitter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chunk_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chunk_overlap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;优点只有一个：实现最简单、速度最快。&lt;/p&gt;
&lt;p&gt;缺点却很致命：&lt;strong&gt;完全无视语义边界&lt;/strong&gt;。可能在句子中间、甚至词语中间切断。&lt;/p&gt;
&lt;p&gt;切出来的块，很多是&amp;quot;半个意思&amp;quot;。检索时匹配到半句话，LLM 看着上下文猜——这正是答非所问的来源。&lt;/p&gt;
&lt;p&gt;适合日志、代码等结构弱、语义依赖不强的文本。自然语言文档用它，基本等于摆烂。&lt;/p&gt;
&lt;h3 id="策略二递归分块默认策略性价比之王"&gt;策略二：递归分块——默认策略，性价比之王
&lt;/h3&gt;&lt;p&gt;做法：按优先级尝试分隔符，从大到小逐级切。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# LangChain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;text_splitter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;RecursiveCharacterTextSplitter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chunk_size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;chunk_overlap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;separators&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;。&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;，&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34; &amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 A["超长段落"] --&gt; B{"按优先级逐级切分&lt;br/&gt;段落 → 换行 → 句子 → 词"}
 B --&gt;|"每块 ≤ 上限"| C["✅ 在语义边界成块"]
 B --&gt;|"仍超限"| D["降级到更细的分隔符"]
 D --&gt; B
 style A fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style B fill:#fef9c3,stroke:#ca8a04,color:#713f12
 style C fill:#d1fae5,stroke:#059669,color:#064e3b
 style D fill:#fef9c3,stroke:#ca8a04,color:#713f12&lt;/pre&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;h3 id="策略三语义分块让-embedding-参与决策"&gt;策略三：语义分块——让 Embedding 参与决策
&lt;/h3&gt;&lt;p&gt;递归分块是按&amp;quot;形式&amp;quot;切（分隔符）。语义分块按&amp;quot;意思&amp;quot;切。&lt;/p&gt;
&lt;p&gt;做法：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;把文本拆成句子&lt;/li&gt;
&lt;li&gt;计算每个句子的 Embedding 向量&lt;/li&gt;
&lt;li&gt;计算相邻句子的语义相似度&lt;/li&gt;
&lt;li&gt;在相似度&amp;quot;断崖&amp;quot;处切分&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 A["句子1: 聚类算法把样本分组"] --&gt; B["句子2: K-Means 是经典算法"]
 B --&gt; C["句子3: 明天北京多云转晴"]
 C --&gt; D["语义断崖&lt;br/&gt;句子2→3 相似度骤降&lt;br/&gt;在这里切"]
 A -.-&gt;|"高相似"| B
 B -.-&gt;|"低相似"| C
 style A fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style B fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style C fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
 style D fill:#fef9c3,stroke:#ca8a04,color:#713f12&lt;/pre&gt;&lt;p&gt;核心算法是新颖度检测：&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;novelty(s_i) = 1 - cosine_sim(embed(s_i), embed(context_window))
当 novelty &amp;gt; 均值 + 0.8 * 标准差 → 切分
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;优点：语义连贯性最好，检索精度最高。这也是为什么生产环境在&amp;quot;疑难块&amp;quot;上会启用它。&lt;/p&gt;
&lt;p&gt;缺点：每个句子都要算一次 Embedding，&lt;strong&gt;计算成本翻倍&lt;/strong&gt;。全量用不划算，适合作为精修手段。&lt;/p&gt;
&lt;p&gt;工具：semchunk、LlamaIndex SemanticSplitterNodeParser。官方 benchmark 里，semchunk 的 AI 分块模式在 Legal RAG QA 上正确率 37.7%，比 LangChain 递归分块的 34.8% 高约 2.9 个百分点。&lt;/p&gt;
&lt;h3 id="策略四结构感知分块利用文档自身的结构"&gt;策略四：结构感知分块——利用文档自身的结构
&lt;/h3&gt;&lt;p&gt;如果文档本身有结构，为什么不直接用？&lt;/p&gt;
&lt;p&gt;做法：按文档的固有边界切——Markdown 按标题层级、HTML 按标签、代码按函数类定义、对话按轮次。&lt;/p&gt;
&lt;p&gt;关键技巧是&lt;strong&gt;注入结构元数据&lt;/strong&gt;：每个 chunk 附带它在文档中的位置路径。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;content&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;聚类算法的核心思想是...&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;metadata&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;header_path&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;第三章 &amp;gt; 3.2 无监督学习 &amp;gt; 3.2.1 K-Means&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;section_level&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;好处很实在：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;逻辑清晰，切块天然语义完整&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检索结果自带上下文&lt;/strong&gt;——LLM 不光看到这段内容，还知道它来自哪一章哪一节&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 A["第三章 无监督学习"] --&gt; B["3.2 无监督学习"]
 B --&gt; C["3.2.1 K-Means&lt;br/&gt;chunk 携带 header_path"]
 C --&gt; D["检索命中 3.2.1 时&lt;br/&gt;LLM 知道完整上下文位置"]
 style A fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style B fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style C fill:#d1fae5,stroke:#059669,color:#064e3b
 style D fill:#d1fae5,stroke:#059669,color:#064e3b&lt;/pre&gt;&lt;p&gt;缺点：依赖文档格式规范。纯文本、扫描件这类无结构文档，它无从下手。&lt;/p&gt;
&lt;h3 id="策略五父子分块生产环境的首选"&gt;策略五：父子分块——生产环境的首选
&lt;/h3&gt;&lt;p&gt;前面的策略都在解决一个问题：块大还是块小。父子分块跳出这个取舍——&lt;strong&gt;大小都要&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;做法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;父块&lt;/strong&gt;：段落/小节级别（500-1000 tokens），提供完整上下文&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;子块&lt;/strong&gt;：句子级别（100-200 tokens），负责精确检索&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;检索流程：用小的找，用大的答。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 A["用户提问"] --&gt; B["在子块中检索&lt;br/&gt;句子级别，高精度"]
 B --&gt; C["命中子块：&lt;br/&gt;K-Means 是经典算法"]
 C --&gt; D["通过 parent_id 找到父块"]
 D --&gt; E["返回父块完整内容&lt;br/&gt;上下文完整，LLM 能理解"]
 style A fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style B fill:#d1fae5,stroke:#059669,color:#064e3b
 style C fill:#d1fae5,stroke:#059669,color:#064e3b
 style D fill:#fef9c3,stroke:#ca8a04,color:#713f12
 style E fill:#d1fae5,stroke:#059669,color:#064e3b&lt;/pre&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 subgraph P["父块：3.2.1 完整小节"]
 C1["子块1: 算法定义"]
 C2["子块2: 参数说明"]
 C3["子块3: 适用场景"]
 end
 Q["问题命中子块2"] --&gt; C2
 C2 --&gt; P
 P --&gt; LLM["LLM 收到父块全文"]
 style P fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style C1 fill:#d1fae5,stroke:#059669,color:#064e3b
 style C2 fill:#fef9c3,stroke:#ca8a04,color:#713f12
 style C3 fill:#d1fae5,stroke:#059669,color:#064e3b
 style Q fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style LLM fill:#d1fae5,stroke:#059669,color:#064e3b&lt;/pre&gt;&lt;p&gt;优点：&lt;strong&gt;检索精度与上下文完整性兼得&lt;/strong&gt;——化解了分块最核心的矛盾。小粒度保证命中精准，大粒度保证 LLM 拿到完整语境，避免&amp;quot;找到了关键句但缺前因后果&amp;quot;。&lt;/p&gt;
&lt;p&gt;缺点：存储开销翻倍（父子块都要存向量）、实现复杂度较高。&lt;/p&gt;
&lt;p&gt;工具：LlamaIndex 的 auto-merging retriever / recursive retriever 就是这种思路的官方实现。&lt;/p&gt;
&lt;h2 id="生产环境怎么选"&gt;生产环境怎么选
&lt;/h2&gt;&lt;p&gt;五种策略各有适用场景，先看总对比。&lt;/p&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;&lt;strong&gt;固定大小&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;按字符/token 数硬切&lt;/td&gt;
					&lt;td&gt;最简单、最快&lt;/td&gt;
					&lt;td&gt;无视语义，可能在句中切断&lt;/td&gt;
					&lt;td&gt;日志、代码等弱语义文本&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;递归分块&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;按分隔符优先级切&lt;/td&gt;
					&lt;td&gt;语义边界与块大小平衡，通用&lt;/td&gt;
					&lt;td&gt;需调分隔符；复杂结构无力&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;通用默认&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;语义分块&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;用 Embedding 找语义断崖&lt;/td&gt;
					&lt;td&gt;语义最连贯、精度最高&lt;/td&gt;
					&lt;td&gt;计算成本翻倍&lt;/td&gt;
					&lt;td&gt;高质量问答、疑难块精修&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;结构感知&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;按文档标题/标签/轮次切&lt;/td&gt;
					&lt;td&gt;语义完整、自带上下文&lt;/td&gt;
					&lt;td&gt;依赖文档格式规范&lt;/td&gt;
					&lt;td&gt;Markdown/HTML/代码文档&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;父子分块&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;子块检索、父块作答&lt;/td&gt;
					&lt;td&gt;精度与上下文兼得&lt;/td&gt;
					&lt;td&gt;存储翻倍、实现复杂&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;生产环境首选&lt;/strong&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;单看这张表，你可能会问：到底用哪个？&lt;/p&gt;
&lt;p&gt;答案是：&lt;strong&gt;生产环境用混合分块&lt;/strong&gt;。单一策略覆盖不了所有文档类型——你的知识库里既有 Markdown 规范文档，也有扫描 PDF，还有代码片段。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph LR
 B["① 结构感知粗切&lt;br/&gt;按标题/章节"] --&gt; C{"块大小判断"}
 C --&gt;|"过小"| D["合并相邻块"]
 C --&gt;|"合适"| E["直接使用"]
 C --&gt;|"过大"| F["递归/语义细分"]
 D --&gt; G["② 父子分块映射&lt;br/&gt;+ 元数据注入"]
 E --&gt; G
 F --&gt; G
 style B fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style C fill:#fef9c3,stroke:#ca8a04,color:#713f12
 style D fill:#d1fae5,stroke:#059669,color:#064e3b
 style E fill:#d1fae5,stroke:#059669,color:#064e3b
 style F fill:#d1fae5,stroke:#059669,color:#064e3b
 style G fill:#dbeafe,stroke:#2563eb,color:#1e3a5f&lt;/pre&gt;&lt;p&gt;混合分块的思路：结构感知先粗切出框架，块大小判断决定后续处理（过小合并、合适直接用、过大递归/语义细分），最后用父子分块建立层级，注入元数据。&lt;/p&gt;
&lt;h2 id="落地建议"&gt;落地建议
&lt;/h2&gt;&lt;p&gt;回到开头的场景——知识库答非所问，怎么排查？&lt;/p&gt;
&lt;p&gt;按这个顺序自查，90% 的问题能定位：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;先看分块&lt;/strong&gt;：打开一个 chunk 看看，句子是不是被拦腰切断？上下文是不是残缺？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;默认从递归分块起步&lt;/strong&gt;：chunk_size 500-800、overlap 10%-20%，把基线跑通&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构化文档换结构感知&lt;/strong&gt;：你的文档有标题层级，就别浪费这个信息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;检索精度不够再上父子分块&lt;/strong&gt;：让子块找、父块答，通常能显著提升&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;疑难块用语义分块精修&lt;/strong&gt;：只对检索差的高频问题块启用，控制成本&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;分块不是一个&amp;quot;选一次就完事&amp;quot;的环节。文档类型变了、检索效果变了，分块策略就要跟着调。这是 RAG 系统里最值得花时间的调优点之一——因为它是整个检索质量的起点，也是你最能控制的一环。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;本文基于个人对 RAG 工程实践的梳理与官方文档验证（MinerU OmniDocBench v1.6 得分 95.39 来自其官方 README；semchunk 基准数据来自其官方 README 及 isaacus.com 博客）。&lt;/em&gt;&lt;/p&gt;</description></item><item><title>你其实不需要更强的模型</title><link>https://zh.renxinblog.cn/post/you-dont-need-stronger-models/</link><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><guid>https://zh.renxinblog.cn/post/you-dont-need-stronger-models/</guid><description>&lt;img src="https://zh.renxinblog.cn/images/you-dont-need-stronger-models-cover.png" alt="Featured image of post 你其实不需要更强的模型" /&gt;&lt;p&gt;你有没有这样一种感觉——&lt;/p&gt;
&lt;p&gt;2023 年用上 GPT-4 的时候，那种震撼是真实的：它居然能写代码、能推理、能理解上下文。每发布一个新版本，你会迫不及待去试。但现在呢？GPT-5.6 发布了、Claude Fable 5 来了、Kimi K3 也出来了——你的第一反应是不是变成了：「哦，又强了一点。」&lt;/p&gt;
&lt;p&gt;不是它们不够强。GPT-5.6 Sol 在复杂推理上确实甩开了上一代一大截。问题在于：&lt;strong&gt;你 90% 的日常任务，两三年前的模型就已经够用了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这不是观点，是正在发生的现实。这篇不聊模型有多强，聊一个更实际的问题——为什么大部分 AI 项目依然在失败，以及真正该花精力在什么地方。&lt;/p&gt;
&lt;h2 id="2026-年的模型版图"&gt;2026 年的模型版图
&lt;/h2&gt;&lt;p&gt;先看看我们现在有什么。&lt;/p&gt;
&lt;p&gt;把今天的主流模型放在一张图里，按能力和价格两个维度看：&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;%%{init: {'theme':'neutral', 'fontFamily':'monospace'}}%%
flowchart LR
 经济层["💰 经济层&lt;br/&gt;$0.10-0.50/1M 输入"] --&gt;|"80% 日常任务"| 日常["分类/提取/摘要&lt;br/&gt;客服/简单推理"]
 主力层["🔋 主力层&lt;br/&gt;$2-3/1M 输入"] --&gt;|"15% 复杂任务"| 复杂["多步推理&lt;br/&gt;长文档分析"]
 旗舰层["🚀 旗舰层&lt;br/&gt;$5-10/1M 输入"] --&gt;|"5% 特殊场景"| 特殊["高难度代码&lt;br/&gt;研究级分析"]
 style 经济层 fill:#d1fae5,stroke:#059669,color:#064e3b
 style 主力层 fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style 旗舰层 fill:#fef3c7,stroke:#d97706,color:#78350f
 style 日常 fill:#d1fae5,stroke:#059669,color:#064e3b
 style 复杂 fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style 特殊 fill:#fef3c7,stroke:#d97706,color:#78350f&lt;/pre&gt;&lt;p&gt;数据来源：OpenRouter API（2026-07 实时定价），涵盖 344 个模型。&lt;a class="link" href="https://openai.com/index/gpt-5-6/" target="_blank" rel="noopener"
 &gt;OpenAI GPT-5.6&lt;/a&gt; 于 2026 年 7 月 9 日发布，&lt;a class="link" href="https://www.anthropic.com/news/claude-fable-5-mythos-5" target="_blank" rel="noopener"
 &gt;Claude Fable 5&lt;/a&gt; 于 6 月 9 日发布。&lt;a class="link" href="https://api-docs.deepseek.com/news/news260424/" target="_blank" rel="noopener"
 &gt;DeepSeek V4 Pro&lt;/a&gt; 于 4 月开源，1.6T 参数/49B 活跃参数，1M 上下文。&lt;a class="link" href="https://apnews.com/article/kimi-k3-china-ai-0d8a5e268deb11a673f4d444fc597cc5" target="_blank" rel="noopener"
 &gt;Kimi K3&lt;/a&gt; 据称可媲美 OpenAI 和 Anthropic 的旗舰模型。&lt;/p&gt;
&lt;p&gt;这张图的信息量比看起来大。注意定价跨度——旗舰层和主力层之间是 5-10 倍的价格差，和 DeepSeek V4 Flash 比更是 100 倍的差距。更深层的信号是：&lt;strong&gt;经济层的模型能力线已经远远到了日常任务「够用」的基准线之上。&lt;/strong&gt; 日常任务不需要旗舰模型的原因不是「没钱」，是「没必要」。&lt;/p&gt;
&lt;h2 id="80155-的分层现实"&gt;80/15/5 的分层现实
&lt;/h2&gt;&lt;p&gt;那实际在用的时候是怎么选的？&lt;/p&gt;
&lt;p&gt;以我托管的 hermes-home 多 Agent 系统为例——它跑着 7 个 Agent，每天处理调研、写作、决策分析、知识管理等任务。实际用量比例：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;层级&lt;/th&gt;
					&lt;th&gt;模型&lt;/th&gt;
					&lt;th style="text-align: center"&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;&lt;strong&gt;经济层&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;DeepSeek V4 Pro（$0.44）&lt;/td&gt;
					&lt;td style="text-align: center"&gt;&lt;strong&gt;~80%&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;日常推理、内容生成、知识检索、决策辅助&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;主力层&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;GPT-5.6 Luna（$1.00）&lt;/td&gt;
					&lt;td style="text-align: center"&gt;&lt;strong&gt;~15%&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;需要更强推理能力的复杂任务&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;旗舰层&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;GPT-5.6 Sol / Claude Fable 5&lt;/td&gt;
					&lt;td style="text-align: center"&gt;&lt;strong&gt;~5%&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;高难度代码生成、架构设计、研究级分析&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这不是预算问题。换成 DeepSeek V4 Pro 每百万 token 只需 $0.44，全跑旗舰模型（Claude Fable 5 $10/1M）也就多花二十几倍。真正的原因是：&lt;strong&gt;对于 80% 的任务，换旗舰模型的提升用户感知不到。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;写一篇博客、整理一份调研、做一个决策分析——这些任务 DeepSeek V4 Pro 完成得很好。只有当你需要处理极其复杂的推理链条、或者生成需要深度理解上下文的高难度代码时，旗舰模型的优势才会显现。而且即便是这些时候，差距也在快速缩小：DeepSeek V4 Pro 的 Benchmark 已经追平了两年前的旗舰模型。&lt;/p&gt;
&lt;p&gt;现在，旗舰模型针对的是「不可能轻松做到的业务」，是「需要博士级的研究分析」，是「5% 的场景」。大部分公司的绝大部分业务和大部分个人的日常任务，处在那个 80% 的范围内。&lt;/p&gt;
&lt;h2 id="ai-项目真正的死因"&gt;AI 项目真正的死因
&lt;/h2&gt;&lt;p&gt;如果模型已经够用了，那为什么那么多 AI 项目还是失败了？&lt;/p&gt;
&lt;p&gt;RAND 公司对 65 个企业 AI 项目的元分析给出了一个发人深省的数字：&lt;strong&gt;80% 的企业 AI 项目以失败告终。&lt;/strong&gt; Gartner 的追踪数据给出了类似的结论，MIT 的研究甚至将这个比例推高到了 95%。这些项目不是用 DeepSeek V4 Pro 做的——很多花了大价钱上了最好的模型。&lt;/p&gt;
&lt;p&gt;导致项目失败的原因，排在最前面的从来不是「模型不够聪明」。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;%%{init: {'theme':'neutral', 'fontFamily':'monospace'}}%%
flowchart LR
 模型["📈 模型能力&lt;br/&gt;飞速提升"] --&gt;|"但……"| 失败["⚠️ 80-95% 项目失败"]
 失败 --&gt; 根因["为什么失败？"]
 根因 --&gt; 需求["❌ 需求没挖对&lt;br/&gt;解决了错误的问题"]
 根因 --&gt; 成本["❌ 成本跑飞了&lt;br/&gt;不分层 &gt; 预算超支"]
 根因 --&gt; 工程["❌ 工程不靠谱&lt;br/&gt;缺乏可观测性和错误处理"]
 style 模型 fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style 失败 fill:#fecaca,stroke:#dc2626,color:#7f1d1d
 style 根因 fill:#fef3c7,stroke:#d97706,color:#78350f
 style 需求 fill:#fecaca,stroke:#dc2626,color:#7f1d1d
 style 成本 fill:#fecaca,stroke:#dc2626,color:#7f1d1d
 style 工程 fill:#fecaca,stroke:#dc2626,color:#7f1d1d&lt;/pre&gt;&lt;p&gt;数据来源：&lt;a class="link" href="https://mybusinessfuture.com/en/80-ai-failure-rate-2026-how-rand-and-gartner-expose-the-ai/" target="_blank" rel="noopener"
 &gt;RAND 企业 AI 元分析&lt;/a&gt;（65 个项目，80% 失败率）、&lt;a class="link" href="https://www.softwareseni.com/why-95-percent-of-enterprise-ai-projects-fail-mit-research-breakdown-and-implementation-reality-check/" target="_blank" rel="noopener"
 &gt;MIT 研究&lt;/a&gt;（95% 企业 AI 项目未交付价值）。&lt;/p&gt;
&lt;p&gt;我跑了几个月多 Agent 系统，最深的感受就是：&lt;strong&gt;模型从来不是瓶颈。&lt;/strong&gt; 出错最多的地方，永远是需求没对齐、成本估算偏差、以及系统工程的细节。&lt;/p&gt;
&lt;h2 id="真正卡脖子的三件事"&gt;真正卡脖子的三件事
&lt;/h2&gt;&lt;p&gt;如果瓶颈不是模型，那是什么？基于实战观察，我认为有三件事比模型选型重要得多。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;%%{init: {'theme':'neutral', 'fontFamily':'monospace'}}%%
flowchart LR
 旧认知["过去以为瓶颈&lt;br/&gt;是模型能力"] --&gt; 新认知["实际瓶颈&lt;br/&gt;（三件事）"]
 新认知 --&gt; 需求挖掘["🔍 需求挖掘&lt;br/&gt;解决对的问题"]
 新认知 --&gt; 成本控制["💰 成本控制&lt;br/&gt;分层选型不跑偏"]
 新认知 --&gt; Agent工程["⚙️ Agent 工程&lt;br/&gt;可靠系统需要 Engineering"]
 style 旧认知 fill:#fecaca,stroke:#dc2626,color:#7f1d1d
 style 新认知 fill:#fef3c7,stroke:#d97706,color:#78350f
 style 需求挖掘 fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style 成本控制 fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style Agent工程 fill:#dbeafe,stroke:#2563eb,color:#1e3a5f&lt;/pre&gt;&lt;h3 id="需求挖掘你确定你在解决对的问题"&gt;需求挖掘：你确定你在解决对的问题？
&lt;/h3&gt;&lt;p&gt;大部分 AI 项目死得冤枉。团队花了几周时间搭建一个完美的 RAG 流水线，上线后发现用户根本不需要这个功能。或者花了大价钱微调了一个模型，结果业务需求已经变了。&lt;/p&gt;
&lt;p&gt;这不是技术问题，这是需求挖掘问题。一个简单的判断标准：&lt;strong&gt;你能否一句话说清楚「这个 AI 系统做成了，用户的什么行为会改变？」&lt;/strong&gt; 如果你说不清楚，模型再强也没用。&lt;/p&gt;
&lt;p&gt;真实教训：hermes-home 里有一个 Agent 最早的设计是「帮我决定今天做什么」，上线后完全没人用。后来改成「帮我记录和管理待办事项」，用户每天在用。模型没换，Prompt 也没大幅改——换的是解决哪个问题。&lt;/p&gt;
&lt;h3 id="成本控制不分层的架构跑不远"&gt;成本控制：不分层的架构跑不远
&lt;/h3&gt;&lt;p&gt;很多团队的做法是：选一个最强的模型，全量流量都走它。结果第一个月账单出来，团队傻眼了。&lt;/p&gt;
&lt;p&gt;分层的逻辑很简单：&lt;strong&gt;不是所有请求都值得用最好的模型处理。&lt;/strong&gt; 80% 的请求可以用 DeepSeek V4 Pro 甚至 V4 Flash，15% 需要 GPT-5.6 Luna 级别，只有 5% 需要动用旗舰模型。&lt;/p&gt;
&lt;p&gt;实操层面，成本优化的手段远不止分层：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;语义缓存&lt;/strong&gt;：重复查询命中缓存，彻底省掉模型调用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prompt 压缩&lt;/strong&gt;：精简历史记录和上下文，减少 token 消耗&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fallback 链&lt;/strong&gt;：小模型先处理，处理不了再升级到大模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出长度控制&lt;/strong&gt;：很多场景不需要完整输出，设置 max_tokens 能省一大半&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2026 年的行业共识是：一个设计良好的分层架构，可以将 LLM 成本降低 30-50%，同时保持 95% 以上的用户体验不下降。&lt;/p&gt;
&lt;h3 id="agent-工程能力是-engineering-出来的不是模型送过来的"&gt;Agent 工程：能力是 Engineering 出来的，不是模型送过来的
&lt;/h3&gt;&lt;p&gt;这是最容易被忽视、但也是真正的壁垒所在。&lt;/p&gt;
&lt;p&gt;从 GPT-3.5 到 GPT-5.6，模型能力在涨。但把一个 LLM 从「能回答问题」变成「能可靠地完成一个任务」，需要的是一整套工程能力——&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tool 设计&lt;/strong&gt;：模型需要知道自己有什么工具可用，每个工具的输入输出是什么，什么时候该用哪个&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory 管理&lt;/strong&gt;：会话历史、长期记忆、知识库检索——怎么存、怎么查、怎么不爆上下文&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;错误处理&lt;/strong&gt;：模型调用超时怎么办？工具返回异常怎么办？重试逻辑怎么写？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可观测性&lt;/strong&gt;：每次调用花了多少 token？哪个环节耗时最长？出错了怎么定位？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多 Agent 协作&lt;/strong&gt;：多个 Agent 之间怎么发现彼此的能力、怎么传递任务、怎么避免冲突&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些东西，换再强的模型也不会自动变好。它们需要工程投入。&lt;/p&gt;
&lt;h2 id="实战案例一个跑在-deepseek-上的多-agent-系统"&gt;实战案例：一个跑在 DeepSeek 上的多 Agent 系统
&lt;/h2&gt;&lt;p&gt;hermes-home 是一个真实运行的多 Agent 系统，7 个 Agent 分布在云服务器和本地 Docker 中，通过 MCP 协议通信。这个系统 80% 的请求由 DeepSeek V4 Pro 处理。&lt;/p&gt;
&lt;p&gt;它能做什么？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;知识库 Agent 每天自动扫描 GitHub 新项目，整理入库&lt;/li&gt;
&lt;li&gt;博客 Agent 从知识库拉取素材，写成 Hugo 文章并部署&lt;/li&gt;
&lt;li&gt;待办 Agent 管理日常任务并定时提醒&lt;/li&gt;
&lt;li&gt;决策 Agent 综合分析多个来源，给出结构化建议&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所有这些任务，没有一个需要用到 Claude Fable 5 的全能力量。系统的瓶颈从来不在模型能力上——而是在 Tool 设计得够不够好、Memory 管理得够不够稳定、错误处理得够不够健壮。&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;%%{init: {'theme':'neutral', 'fontFamily':'monospace'}}%%
flowchart LR
 subgraph 模型层["模型层 (80% DeepSeek V4 Pro)"]
 A["LLM 推理"]
 end
 subgraph 工程层["工程层 (真正的壁垒)"]
 B["Tool 系统"]
 C["Memory 管理"]
 D["错误处理"]
 E["可观测性"]
 end
 subgraph 应用层["应用层"]
 F["7 个 Agent&lt;br/&gt;调研/写作/决策/待办"]
 end
 A --&gt; B --&gt; C --&gt; D --&gt; E --&gt; F
 style 模型层 fill:#dbeafe,stroke:#2563eb,color:#1e3a5f
 style 工程层 fill:#d1fae5,stroke:#059669,color:#064e3b
 style 应用层 fill:#fef3c7,stroke:#d97706,color:#78350f&lt;/pre&gt;&lt;p&gt;我花了大量时间优化的是中间这一层——Tool 的接口设计、Memory 的持久化策略、错误恢复逻辑、以及每次调用链路的可观测性。这些才是真正决定系统质量的因素。模型只要「够用」就行。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;下次有新模型发布的时候，先问自己三个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;我的瓶颈真的是模型能力吗？&lt;/strong&gt; ——还是需求没挖对、成本没控好、工程没做扎实？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;换模型能解决我的什么问题？&lt;/strong&gt; ——它会让用户感知到显著提升吗？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;我的系统有足够好的可观测性吗？&lt;/strong&gt; ——如果你不知道每次调用花在哪、错在哪，换模型就是盲人摸象。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;模型在飞速进步，这是好事。但 &lt;strong&gt;90% 的日常任务已经越过了「够用」的基准线。&lt;/strong&gt; 真正的差距，从来不在模型本身。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;数据来源：OpenRouter API 实时定价、DeepSeek 官方发布公告（2026-04-24）、OpenAI GPT-5.6 官方公告（2026-07-09）、Anthropic Claude Fable 5 公告（2026-06-09）、RAND 企业 AI 项目元分析、AP News Kimi K3 报道。&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>