跳到主要内容

最左边那格,我一直是随手画的

画唠
画唠

· 阅读约 5 分钟

RAG 那张图我画过不止一次。每次画到最左边,我都随手写两个字:切片。然后视线立刻往右移——检索、重排、拼 prompt,那才是重头戏。

上个月看到一篇论文,专门把我随手写过去的这两个字拆了六页。EAR,arXiv 2609.12268,9 月 10 号挂上去的,已经被 ASYU 2026 收了。整篇连六页纸都不到。

先撂一句:切片这件事本身没那么玄,它只是从来没人愿意停在那一步回头看。

画张图。

   你提问 ──► [ 切 ] ──► 建索引 ──► 检索 top-k ──► 拼进 prompt ──► 回答
                 ↑
          我每次都在这写"随便切"

所有人的注意力都在两头:换 embedding、调 top-k、上 reranker、重写 prompt。中间这个"切"字,从项目第一天定下来之后,再也没人回头看过它一眼。论文里有句话我读到的时候有点被戳到——怎么把源语料切成可检索单元,这个早期的设计选择,容易被忽略。挺客气的说法。直白点就是:我们都在优化下游,没人愿意承认上游就没选过。

固定大小分块的毛病在哪儿?说穿了很土:你按 512 个 token 一刀切下去,检索命中的那一整段通常很长,而这一长段里跟问题真正有关的,可能就一句话。关联是隐式的——模型得自己从一段水里捞出那根针。

   问题:XXX?
        ↓ 按 512 切
   ┌────────────────────────────────────────────┐
   │ ...铺垫... ...铺垫... [针] ...废话... ...铺垫 │
   └────────────────────────────────────────────┘
   top-k=3 = 往 prompt 里倒三桶这样的水

EAR 的路子不是"切得更聪明",是切法本身换了。它从实体入手,三步:

一是从问题、答案选项、语料里各自抽出规范化之后的表面锚点;二是检索时拿查询的锚点去撞语料里的锚点,撞上了,就在撞中的位置周围截一个局部窗口;三是给这个局部窗口配一个更大的父段落,父段落是用抽取式摘要做的。

   固定切法:  |———— 512 ————|———— 512 ————|———— 512 ————|
   实体切法:        [锚]              [锚]        [锚]
                        └窗口┘            └窗口┘
                          └───── 父段落(摘要补的) ─────┘

(写到这岔一下:父段落那步我第一眼以为是做了两级检索,回头才看明白不是——它是摘要出来当背景,不是再查一次。这俩完全不是一回事。算了,拉回来。)

这个图值得盯两秒:窗口是围绕锚点截的,所以它天然短,也天然跟问题沾着边。按长度切和按内容锚点切,不是同一个动作的不同参数,是两个不同的动作。

数字来了。

检索词数量降了 37.5% 到 40.2%。这个我一点不怀疑,也能解释——窗口短了,top-k 倒进去的水自然少。省钱是实打实的。

然后就是让我卡住的那一段。top-k=3,三个模型的准确率变化分别是 +5.2、+1.3、-3.9 个百分点;top-k=8 是 +5.9、-3.3、-4.6。三个模型,一涨一平一跌,换一档 k,涨的跌的还互换位置。作者写得很老实:这些差异都没到统计显著。

我盯着这六个数看了半天。第一反应是:忙活一圈,就省了点 token,能力没赚着。

然后我停了一下,回头看它拿什么考的。153 道题,MMLU 风格的多选,从去污染的公开教科书里用自动启发式筛出来的。

等等等等,先别急。

多选题这个考场,答案就明晃晃躺在选项里。模型就算检索回来一段完全无关的东西,也完全可以凭参数记忆、或者干脆靠选项措辞把答案选对。也就是说,这套评测对"检索单元切得好不好"的分辨力,本来就很粗。你拿一把刻度很粗的尺子去量一个细微差别,量出来"无显著差异"——最可能出问题的是尺子,不是差别。

这里我得老实标一下:这是我的猜测,作者没这么说。他们只是把不显著原样报出来,没往这个方向解释。

但顺着这个想,我反而对这篇论文更有兴趣了。它报出来的组合很怪:token 少花四成,准确率纹丝不动。如果检索当真是"查资料",那我少倒四成的料进去,多少得掉一点吧。没掉。说明这 153 道题里,大部分题目的答案根本不依赖检索到的那点东西。它考的是"这个模型会不会做这道多选",不是"这个检索单元切得行不行"。要测后者,得换题型——答案不在选项里明摆着、必须从语料里捞出来才答得出的那种。

那这论文白写了?不。作者把贡献圈得很小,就一句:提供一种紧凑、可检查的检索单元。这个是真的。"可检查"三个字在工程里比准确率小数点后那位值钱——线上出问题的时候,你得能一眼看出系统为什么捞了这一段。围绕锚点截出来的窗口,这件事是能对的;一桶 512 token 的水,对不了。

漏风的地方标两处。

一是锚点抽取是规则做的。规则就意味着领域特定,换到别的语料,那套抽取规则得重新验一遍。作者自己写了这点,没藏。所以 EAR 目前的状态更接近"这套切法在教科书语料上跑通了",不是"换哪都能用"。

二是前面那个说法本身漏风。我说"从按长度切变成按内容锚点切",听着很顺,但它藏了一个前提:锚点得先被抽出来。抽不出来,就没有窗口,没有窗口就没有父段落。规则抽取器在某个领域抽不到锚点,这套方法在那个领域是空的。所以它跟"切得不一样"不是一回事——它更像"切得只有一半,另一半全靠抽取器顶着"。

我不打算给它下"有效"还是"无效"的判词。它最有意思的地方恰恰是那个不显著:它说明拿准确率去衡量检索单元,本身就不太好使。这比涨几个点值得画开得多。✨

自检一下。现在你能不能用一句话讲清 EAR 和固定分块的区别?讲不清的话,多半是我这张图画漏了——最可能漏的就是"锚点得先抽出来"那一步,那一步我自己也还没画舒服。

一个所有人都跳过去的预处理步骤,居然还有得改。这玩意儿真的太酷了。

画唠
画唠

把被讲玄的概念用图 + 比喻 + 动手实验拆到咔哒扣明白,错的也保留。

查看主页 →