【第四周】SmartChunk详细过程

【第四周】SmartChunk详细过程 这篇文章提出的SmartChunk Retrieval是一种查询自适应Query-Aware的检索框架。它的核心目标是解决传统 RAG 中“固定分块”无法适应不同复杂度查询的问题同时在保证准确率的前提下大幅降低计算和金钱成本。以下是查询Query,qqq和文档Documents,DDD在该框架中经历的详细全过程第一阶段离线预处理文档准备在用户提问之前文档库需要先经过处理建立多层级的索引结构。基础分块 (Base Chunking)原始长文档DDD被切分成细粒度的基础块如句子级或短段落级记为集合CCC。构建层级 hierarchy (HHH)系统不仅仅保留细粒度块还会通过聚合Clustering/Aggregation构建更粗粒度的块如段落级、章节级、全文级。关键创新 - 压缩编码器 (Chunk Compression Encoder,EEE)传统方法需要用大模型LLM对每个大块写摘要再嵌入成本极高。SmartChunk 训练了一个轻量级的压缩编码器EEE。它直接读取多个细粒度块的 Embedding输出一个代表该大块语义的压缩向量。结果文档库现在拥有一个多层级的向量索引每一层代表不同的抽象粒度从细节到宏观且构建成本低。第二阶段在线推理当一个新的查询qqq进来时这是 SmartChunk 的核心流程分为四个步骤步骤 1规划 (Planning) —— 决定“看多细”输入用户查询qqq 文档元数据 (MetaData)。执行者规划器 (Planner,PPP)。这是一个经过特殊训练使用 STITCH 方法的小型语言模型。动作规划器分析查询的意图和复杂度。输出预测两个关键参数 ——最小粒度 (levelminlevel_{min}levelmin​)和最大粒度 (levelmaxlevel_{max}levelmax​)。例子如果问“某具体数值是多少”规划器可能判定只需要看细粒度句子级输出[sentence,sentence][sentence, sentence][sentence,sentence]。如果问“故事的主旨是什么”规划器可能判定需要宏观视角输出[paragraph,section][paragraph, section][paragraph,section]。目的动态缩小检索范围只保留那些粒度在[levelmin,levelmax][level_{min}, level_{max}][levelmin​,levelmax​]之间的候选块避免检索无关的碎片或过于模糊的大块。步骤 2动态层级构建与选择 (Hierarchy Selection)动作根据规划器输出的范围系统从预建好的多层级索引HHH中筛选出符合粒度要求的块集合CcandidateC_{candidate}Ccandidate​。特点这一步是并行的且极快的因为多层级的 Embedding 已经在离线阶段由压缩编码器EEE生成好了不需要实时调用大模型写摘要。步骤 3自适应检索 (Adaptive Retrieval)输入查询qqq 筛选后的候选块集合CcandidateC_{candidate}Ccandidate​。执行者检索器 (RRR)。动作将qqq编码为向量。在CcandidateC_{candidate}Ccandidate​中进行相似度搜索Top-K。由于候选池已经过滤掉了不合适的粒度例如去掉了太碎的或太粗的检索到的内容更精准噪声更少。输出一组最相关的文本块SSS。步骤 4生成答案 (Generation)输入查询qqq 检索到的文本块SSS。执行者生成器 (GGG通常是强大的 LLM 如 GPT-4o)。动作LLM 阅读SSS中的内容结合qqq生成最终答案aaa。核心组件的深度解析为了让你更清楚qqq和DDD是如何被“智能”处理的这里补充两个关键模块的训练逻辑1. 规划器 (PPP) 是如何学会“做计划”的 (STITCH 算法)规划器不是普通分类器它需要平衡准确率和成本。文章提出了STITCH训练法难点没有标准答案告诉模型“这个问题就该用段落级检索”。解决方法RL 尝试 (Vanilla RL)让模型自己猜粒度如果猜对了回答正确且成本低就奖励。提示 RL (Hinted RL)如果猜错了给模型一个“专家提示”比如“试试扩大范围到章节级”让它基于提示再猜一次。模仿学习 (Imitation Learning)如果加了提示还不会就把这个“专家解题全过程”存下来专门用来微调模型SFT让它死记硬背这种难题的解法。效果规划器学会了根据问题类型事实型 vs. 综合型动态调整检索粒度。2. 压缩编码器 (EEE) 是如何省钱的传统做法要把 10 个小块合并成一个大块→\rightarrow→调用 GPT-4 写摘要→\rightarrow→调用 Embedding 模型编码。成本极高。SmartChunk 做法离线时用 GPT-4 写少量摘要作为“老师”训练一个小模型EEE。EEE学习直接映射Embedding(小块1)...Embedding(小块n)→大块向量Embedding(小块1) ... Embedding(小块n) \rightarrow 大块向量Embedding(小块1)...Embedding(小块n)→大块向量。在线时完全不需要调用 GPT-4直接用训练好的小模型EEE瞬间生成大块向量。成本极低。总结与传统 RAG 的对比步骤传统 RAG (Static)SmartChunk (Adaptive)文档处理固定切成 512 token 的块。建立多层级hierarchy (句子~全文)并用轻量模型压缩嵌入。查询处理直接编码查询去所有块里搜。先规划分析查询决定只搜哪几个层级的块。检索范围全量固定块容易混入噪声或丢失上下文。动态子集只搜最适合当前问题的粒度范围。成本/速度检索快但为了准可能需要搜很多块或重复检索。更优权衡通过精准规划减少无效检索通过压缩编码器省去摘要成本。一句话概括过程用户提问后规划器先判断这个问题需要“显微镜”还是“望远镜”决定粒度范围系统随即在预先建好的多层级文档库中只拿出对应倍率的镜头进行检索最后由 LLM 生成答案。整个过程既避免了大海捞针又节省了建立多层索引的昂贵成本。