<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>RAG on Kmoon Blog</title>
    <link>https://blog.kmoon.fun/blog/rag/</link>
    <description>Recent content in RAG on Kmoon Blog</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    
      <managingEditor>hushan@kmoon.fun (Kmoon)</managingEditor>
    
    
      <webMaster>hushan@kmoon.fun (Kmoon)</webMaster>
    
    
    <copyright>Copyright © 2020-2026. Kmoon.</copyright>
    
    
    <lastBuildDate>Sat, 20 Jun 2026 20:26:53 +0800</lastBuildDate>
    
    
    <follow_challenge>
        <feedId>00000000000000000</feedId>
        <userId>00000000000000000</userId>
    </follow_challenge>
    
    <atom:link href="https://blog.kmoon.fun/blog/rag/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>一文讲清 RAG 效果评测 101</title>
      <link>https://blog.kmoon.fun/%E4%B8%80%E6%96%87%E8%AE%B2%E6%B8%85-rag-%E6%95%88%E6%9E%9C%E8%AF%84%E6%B5%8B-101/</link>
      <pubDate>Sat, 20 Jun 2026 20:26:53 +0800</pubDate><author>hushan@kmoon.fun (Kmoon)</author>
      <guid>https://blog.kmoon.fun/%E4%B8%80%E6%96%87%E8%AE%B2%E6%B8%85-rag-%E6%95%88%E6%9E%9C%E8%AF%84%E6%B5%8B-101/</guid>
      <description>&lt;h2 id=&#34;评估阶段&#34;&gt;评估阶段&lt;/h2&gt;&#xA;&lt;p&gt;针对 RAG 的评估主要分为两个阶段的评估：检索阶段、生成阶段。其中检索阶段需要评估召回的文档的相关性，生成阶段需要评估模型生成的内容的正确性。&lt;/p&gt;&#xA;&lt;h3 id=&#34;检索阶段&#34;&gt;检索阶段&lt;/h3&gt;&#xA;&lt;h3 id=&#34;生成阶段&#34;&gt;生成阶段&lt;/h3&gt;&#xA;&lt;h2 id=&#34;评估指标&#34;&gt;评估指标&lt;/h2&gt;&#xA;&lt;h2 id=&#34;评估框架&#34;&gt;评估框架&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/vibrantlabsai/ragas&#34;&gt;RAGAS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/Marker-Inc-Korea/AutoRAG&#34;&gt;AutoRAG&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.zdoc.app/zh/confident-ai/deepeval&#34;&gt;DeepEval&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>RAG vs LLM Wiki：“无状态”或成护城河?</title>
      <link>https://blog.kmoon.fun/rag-vs-llm-wiki%E6%97%A0%E7%8A%B6%E6%80%81%E6%88%96%E6%88%90%E6%8A%A4%E5%9F%8E%E6%B2%B3/</link>
      <pubDate>Sat, 13 Jun 2026 15:21:16 +0800</pubDate><author>hushan@kmoon.fun (Kmoon)</author>
      <guid>https://blog.kmoon.fun/rag-vs-llm-wiki%E6%97%A0%E7%8A%B6%E6%80%81%E6%88%96%E6%88%90%E6%8A%A4%E5%9F%8E%E6%B2%B3/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Reference：&lt;a href=&#34;https://mp.weixin.qq.com/s?__biz=MzY4OTMxODkyNQ==&amp;amp;mid=2247483768&amp;amp;idx=1&amp;amp;sn=2185014ab823f2e2d25a6c20841385bb&amp;amp;chksm=f3d83c1ac4afb50c24e3a67630a9199353352017cbc65154d5bcc947ec5695d98e3714d151be&amp;amp;cur_album_id=4531621795329884171&#34;&gt;&amp;ldquo;无状态&amp;quot;是 RAG 的护栏&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Karpathy 最近提了一个很有意思的方案叫 &lt;a href=&#34;https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f&#34;&gt;LLM Wiki&lt;/a&gt; —— 与其每次查询都重新检索一堆原始资料，不如让 LLM 先把所有文档读一遍，整理成一个结构化的知识库。以后有新文档进来，LLM 自动找出受影响的页面然后更新。查询的时候直接读 wiki，不用再翻原始材料了。&lt;/p&gt;&#xA;&lt;p&gt;说实话我第一反应是：这不就是我理想中的知识管理吗？干净、有序、能自己生长。比 RAG 那种每次都从头翻文档的&amp;quot;笨办法&amp;quot;优雅太多了。&lt;/p&gt;&#xA;&lt;p&gt;但仔细想想，这套方案的代价其实挺大的。而且有意思的是，这些代价恰恰是 RAG 那个&amp;quot;笨办法&amp;quot;天然避开的。&lt;/p&gt;&#xA;&lt;h2 id=&#34;错误会滚雪球&#34;&gt;错误会滚雪球&lt;/h2&gt;&#xA;&lt;p&gt;RAG 拿给你的是原始文档的片段，你可以自己判断靠不靠谱。LLM Wiki 拿给你的是 LLM 写出来的东西——它理解错了、漏了关键信息、过度压缩导致失真，这些偏差会直接变成 wiki 里的&amp;quot;事实&amp;rdquo;。&lt;/p&gt;&#xA;&lt;p&gt;更要命的是，错误会繁殖。LLM 处理第 15 篇论文的时候，参考了第 3 篇的摘要，而那个摘要本身就有偏差。基于偏差做了交叉引用，错误没被修正反而被放大了。后面所有查询都在这个有问题的基底上回答，lint 检查也是——lint 本身也是 LLM 跑的，它在有偏差的 wiki 上做检查，能查出什么？&lt;/p&gt;&#xA;&lt;p&gt;这让我想到一个词：&lt;strong&gt;有状态的错误传播&lt;/strong&gt;。一旦错误进入系统，它不是静止的，它会沿着依赖链扩散，而且你很难定位是哪个环节出了问题。&lt;/p&gt;&#xA;&lt;p&gt;RAG 之所以没有这个问题，恰恰因为它每次都从源头重新来——上一次的错不会留给下一次。我们一直说 RAG&amp;quot;无状态&amp;quot;是局限，但换个角度看，这是道护栏。&lt;/p&gt;&#xA;&lt;h2 id=&#34;写入成本膨胀&#34;&gt;写入成本膨胀&lt;/h2&gt;&#xA;&lt;p&gt;Karpathy 估算一篇新文档可能涉及 10-15 个 wiki 页面。听起来不多，但跑一下流程就知道了：LLM 先读完整篇新文档，再翻 index.md 找相关页面，然后读这十几页的内容判断怎么改，最后逐个重写。一篇文档的摄入就是几万到十几万 token。&lt;/p&gt;&#xA;&lt;p&gt;更关键的是，这个成本不是恒定的。wiki 页面越来越多、越来越长，摄入第 101 篇时 LLM 要读的上下文比第 1 篇大得多。而 RAG 的摄入成本基本是恒定的——切分、embedding，完事，知识库再大也不会越来越贵。&lt;/p&gt;&#xA;&lt;p&gt;两种模式的成本节奏也完全不同：RAG 是查询时花钱，按次付费；LLM Wiki 是写入时花钱，而且账单随规模往上走。对于查询量不大但资料持续涌入的场景，这个成本结构很致命。&lt;/p&gt;&#xA;&lt;h2 id=&#34;分布式一致性的老问题&#34;&gt;分布式一致性的老问题&lt;/h2&gt;&#xA;&lt;p&gt;当 wiki 到了 200 个页面，一个新事实进来，LLM 怎么确保找全了所有该更新的地方？没法确保。更新了 mixture-of-experts.md 忘了改 training-cost-comparison.md，两个页面矛盾了，你大概率要碰巧都读到才能发现。&lt;/p&gt;&#xA;&lt;p&gt;这本质上是分布式系统的一致性问题——只不过节点换成了 Markdown 文件。&lt;a href=&#34;https://baike.sogou.com/v175447357.htm&#34;&gt;CAP 定理&lt;/a&gt; 告诉我们这类问题没有银弹，交给 LLM 来扛，说实话我不太放心。&lt;/p&gt;&#xA;&lt;p&gt;审计也是。RAG 能清楚告诉你答案来自哪几个 chunk，鼠标一点就能核对。LLM Wiki 呢？一个结论在第 5、12、18、23 次摄入时被改过，每次都是 LLM 当时理解的产物，原始信息在多次&amp;quot;传话&amp;quot;后溯源链早就断了。除非你给 wiki 上 git 版本控制并且每次 diff 审查——但真这么干，省下来的精力又贴回去了。&lt;/p&gt;&#xA;&lt;p&gt;还有冷启动。开头最痛苦——你不知道该定什么结构，LLM 也不知道。如果方向错了，前几十篇的产物可能得推倒重来。后续理解深入了发现分类方式有问题要大规模重组，这跟代码重构一样疼，但这次是让 LLM 来重构，你对结果没有完全的把握。&lt;/p&gt;&#xA;&lt;h2 id=&#34;适用场景较窄&#34;&gt;适用场景较窄&lt;/h2&gt;&#xA;&lt;p&gt;LLM Wiki 最适合的其实是 Karpathy 自己的场景——个人研究笔记，几十到一两百篇材料，容错率高，错了也没什么大不了。结构化、知识密度高的内容（论文、技术报告）也还行。&lt;/p&gt;&#xA;&lt;p&gt;但现实中大量场景不太适合：会议纪要和对话记录信息密度低、上下文咬合紧，拆成独立页面很勉强；代码仓库变化太快 wiki 追不上；法律合规文档一个字都不能动，摘要就有遗漏风险；实时数据根本没有&amp;quot;编译&amp;quot;的时间窗口。&lt;/p&gt;&#xA;&lt;h2 id=&#34;写在最后&#34;&gt;写在最后&lt;/h2&gt;&#xA;&lt;p&gt;RAG 的&amp;quot;无状态&amp;quot;不是缺陷，是护城河。它保证了每一轮问答都能回溯到原始材料，不会把 LLM 的理解偏差一层层叠加上去。&lt;/p&gt;&#xA;&lt;p&gt;但这不代表只能二选一。更务实的路线是把 LLM Wiki 定位成&lt;strong&gt;缓存层和知识导航&lt;/strong&gt;——用它建立高层知识地图，帮你快速定位该看的范围，真正作答时还是回到原始文档做最终核验。&lt;/p&gt;&#xA;&lt;p&gt;编译是为了提速和导航，不是为了取代信源。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>RAG 如何解决语义鸿沟问题？</title>
      <link>https://blog.kmoon.fun/rag-%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E8%AF%AD%E4%B9%89%E9%B8%BF%E6%B2%9F%E9%97%AE%E9%A2%98/</link>
      <pubDate>Sun, 17 May 2026 17:25:57 +0800</pubDate><author>hushan@kmoon.fun (Kmoon)</author>
      <guid>https://blog.kmoon.fun/rag-%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%E8%AF%AD%E4%B9%89%E9%B8%BF%E6%B2%9F%E9%97%AE%E9%A2%98/</guid>
      <description>&lt;p&gt;Write the article here.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
