| 策略名称 | 描述 | 优点 | 缺点 | 建议 |
|---|---|---|---|---|
| 固定长度分块 | 将文本按照预定义长度分割,适合简单文档或快速处理 | 简单、高效 | 上下文丢失,相关性弱 | 选择合适大小,考虑使用重叠窗口以保持上下文 |
| 基于句子的分块 | 按句子边界分割,确保每个块是完整的 | 保持上下文,易于实现 | 块大小不一致,不适合长句、控制力弱 | 使用NLP库检测句子,必要时合并短句 |
| 段落分块 | 按文档段落分块,每个段落通常包含完整的想法或主题,适合结构化问答 | 更丰富的上下文,逻辑分割 | 大小行不一致,可能超出行的限制 | 监控块大小,必要时分割大小段以保持上下文 |
| 文档分块 | 将整个文档是做一个块或最小分割,保持完整结构和上下文,适合法律或医学文档 | 保持完整上下文、适合结构化文档 | 可扩展性问题,效率低、缺乏细节提取 | 适用于不希望分割影响流程的场景 |
| 滑动窗口分块 | 通过滑动创建重叠块,确保相邻块共享内容,适合需要保持跨部分上下文的文档 | 上下文连续性、提高检索效果 | 冗余、计算成本高 | 优化窗口大小和重叠,使用去重技术处理冗余 |
| 语义分块 | 使用嵌入或机器学习模型按语义分割,确保每个块主题连贯 | 上下文相关性、灵活性、提高检索准确性 | 复杂性、处理时间长、计算成本高 | 利用预训练模型,平衡成本和粒度 |
| 递归分块 | 使用层次分隔符或多个分隔符逐步分割为小块,适合大型结构化文档 | 层次上下文,可扩展性强,细粒度控制 | 实现复杂,可能丢失上下文,复杂度高 | 使用文档结构标识层次,存储块位置元数据 |
| 上下文增强分块 | 为每个块附近添加 周围块的 摘要或元数据,保持序列间的上下文,适合长文档 | 增强上下文,提高连贯性 | 复杂性,存储开销大 | 生成简要摘要,考虑用关键术语或概念作为元数据 |
| 模式特定分块 | 按内容类型(如文本、表格、图像)分别处理,每个类型按其性质分块 | 定制方法,提高准确性 | 实现复杂,集成困难 | 使用OCR处理图像,将表格转化为结构化,保持索引一致 |
| 代理分块 | 使用AI按内容结构和语义建议拆分边界 | 任务导向效率高,聚焦相关数据 | 复杂设置、计算密集、成本高 | 选择性使用,优化LLM提示 |
| 子文档分块 | 总结整个文档或打结 并将摘要作为元数据附加到单个块,适合大型文档集 | 层次检索,上下深度 | 额外处理,元数据管理复杂 | 自动化生成摘要,高效存储摘要 |
| 混合分块 | 结合多种分块策略,动态适应不同查询类型或文档结构,适合多用途系统 | 灵活性,性能好 | 逻辑复杂,维难度大 | 制定选择策略的标准,广泛测试以确保可靠性 |
| 基于token分块 | 按预定义token数分割,确保块在模型token限制内 | 优化语言模型,精确控制块大小、一致性 | 上下文碎片化、忽略语义结构,灵活性有限 | 确保块 在 token 限制内 |
在选择合适的分块策略时需要考虑如下因素:
- 文档类型:结构化适合段落分块,非结构化适合语义分块
- 查询复杂性:复杂查询需语义或代理分块,简单查询可用固定长度分块
- 资源可用性:计算资源有限时,有限固定长度或给予句子的分块
- 期望结果:速度优先 则 选固定长度, 准确性 优先 则 选语义分块, 上下文 优先选滑动窗口