RAG Playground

核心原则

固定长度切分可预测、易缓存,但容易把一个概念切到两个片段中。
递归和结构化切分通常更忠实,因为标题、段落、列表和表格不会被随意打断。
Overlap 能补边界上下文,但过高 overlap 会膨胀索引并让生成阶段看到重复证据。
长文档应区分父子节点:小 chunk 用于召回,父段落用于生成上下文。
不同文档类型应使用不同切分策略,FAQ、合同、表格和长报告不应共用一个默认值。

方法对比

方法延迟成本最适合
固定长度很快同质语料和高吞吐系统
递归字符通用文本和 Markdown
语义切分长篇分析、手册、白皮书
句子窗口FAQ、短章节、法律条款

大厂与框架实践

OpenAI file search 的托管默认值适合快速上线,但复杂表格仍需额外评测。

LlamaIndex sentence window 会先召回目标句,再扩展相邻句作为上下文。

企业 ACL 系统常把权限写入每个 chunk,切分太粗会导致可见性过宽。

研发文档适合按标题层级切分,因为用户通常询问模块、接口和异常场景。

合同条款适合按条款编号切分,并把定义条款作为可扩展上下文。

关键论文与参考

DPR,Karpukhin 等,2020
REALM,Guu 等,2020
FiD,Izacard 与 Grave,2021
RETRO,Borgeaud 等,2022
Atlas,Izacard 等,2023

深度讲解

切分可以从 chunk_size、overlap 和 evidence_density 三个维度调参。若 chunk_size=512、overlap=96,一个 10 万 token 文档大约生成 240 个 chunk;overlap 提到 256 后,索引量可能增加 35% 以上。经验上先用 384、512、768 三档做 Recall@5 和 citation accuracy 对比,不要只看向量相似度。伪代码:for size in [384,512,768]: build_index(size); score = recall_at_k(gold_queries, 5)。最终选择应同时满足召回、生成可读性和成本。

最佳实践

先按文档结构切,再用 token 长度兜底。
把 chunk_size 和 overlap 写入索引版本。
对表格、代码和 FAQ 建立专用切分器。