文本分块导出 JSONL
按固定字符窗口与重叠切分纯文本,导出 JSONL 便于 RAG 入库。
字符数: 262
RAG 文本分块参数与 JSONL 导出指南
RAG 系统不会把整本文档直接塞进模型上下文,而是先切成可检索的片段,再写入向量库。分块过大影响召回精度,分块过小又会丢失上下文。
FormaX 的 RAG Chunker 使用固定字符窗口和 overlap,适合快速验证知识库、客服文档、产品手册和 Markdown 资料。它不是 tokenizer,但足够用于原型和参数探索。
常见使用场景
- 知识库构建:将产品文档、技术手册切分为向量库可索引的片段。
- 客服机器人:把 FAQ 和帮助中心文章分块,提升问答召回准确率。
- 代码文档 RAG:切分 API 文档和 README,供开发助手检索引用。
- 法律/合规文档:按段落分块长篇合同和政策文件,便于条款级检索。
- 多语言资料库:统一分块参数处理中英文混合文档,导出标准 JSONL 格式。
参数调优方法
- 从 400 字符 chunk、50 到 80 字符 overlap 开始测试。
- 技术文档和 API 文档可适当增大 chunk,聊天记录和 FAQ 可适当减小。
- 导出 JSONL 后保留 chunk_index、start 和 end,方便答案引用原文。
- 上线前用真实用户问题评估召回结果,而不是只看分块数量。
JSONL 输出形态
{"chunk_index":0,"text":"...","metadata":{"start":0,"end":400,"source":"formax-rag-chunker"}}适用边界
- 字符窗口不等于 token 窗口,接入具体 embedding 模型前应重新评估长度。
- 分块前建议去除页眉、页脚、版权重复文本和导航噪声。
- 重叠越大并不一定越好,它会增加向量数量、存储成本和重复召回。
FAQ
chunk size 应该设置多少?
没有固定答案。可以从 400 字符开始,观察真实问题召回的片段是否完整,再按文档类型调整。
为什么需要 overlap?
overlap 能减少句子或段落在边界被切断导致的漏召回,但过大会造成重复和成本上升。
字符数和 token 数有什么区别?
中文通常 1 字符约 1-2 token,英文约 4 字符 1 token。接入 embedding 模型前应按 token 重新估算 chunk 大小。
导出的 JSONL 格式是什么?
每行一个 JSON 对象,包含 chunk_index、text 和 metadata(含 start、end 位置),可直接导入向量数据库。
Markdown 标题会影响分块吗?
当前按字符窗口切分,不会自动识别 Markdown 标题边界。建议预处理时按标题手动分段,再分别输入。
适合处理 PDF 或 Word 文档吗?
工具接受纯文本输入。PDF 和 Word 需先提取文本(可用 FormaX 的 PDF 转 Word 等工具),再粘贴到分块器。
overlap 设置多少比较合适?
一般设为 chunk size 的 10%-20%。例如 400 字符 chunk 配 50-80 字符 overlap,再根据召回效果微调。
分块后如何评估质量?
用 10-20 个真实用户问题测试召回结果,检查返回的 chunk 是否包含完整答案上下文,而不是只看分块数量。