文档分块
文档分块是把原始文档拆成可检索、可引用的片段,再送入嵌入模型或生成模型。一个块应保留足够上下文,同时满足后续模型的输入限制。
常见策略
| 方法 | 思路 | 需要检查 |
|---|---|---|
| 固定长度 | 按字符或 token 窗口切分 | 是否截断句子与结构 |
| 句段与标题 | 尽量沿自然边界切分 | 块长度是否差异过大 |
| 结构感知 | 按 Markdown、HTML、代码等结构解析 | 表格、代码与标题是否完整 |
| 语义分块 | 根据相邻文本的语义变化决定边界 | 额外计算是否改善实际检索 |
LlamaIndex 的节点解析器提供上述多种思路;选型应通过自己的问题集验证。
一个建议配置实验
可先比较 256、512、1024 token 三种窗口,再检查答案证据是否完整、检索结果是否重复、送入生成器的材料是否超限。这些数字仅为实验候选,不是最佳参数。
重叠能保留边界信息,但会增加存储与重复候选。字符数不等于 token 数,应明确计数方法。
每块保留什么
建议记录 document_id、chunk_id、标题路径、原文位置、版本及访问范围。例如一条操作步骤应能回到原帮助页的具体章节,而不只是返回一段失去出处的文字。
常见误区
不要只看向量相似度。建议人工抽查表格被拆散、标题丢失、跨页句子断裂和多块重复占满上下文的情况。
参考资料
- LlamaIndex:Node Parser Modules — 切分策略与参数。
- LlamaIndex:Documents / Nodes — 节点、元数据与来源关系。