分块策略在RAG中至关重要,目的是提高效率、相关性和上下文保持。分块能减少计算开销,增加检索相关信息的可能性,同时保持信息完整性。但也存在风险,如上下文丢失、冗余和不一致性。选择策略需考虑文档类型(结构化 vs 非结构化)、查询复杂性、资源可用性和期望结果(速度 vs 准确性 vs 上下文)。
以下是13种独特分块策略的详细描述,按策略名称、描述、优点、缺点和实施建议。仅供参考。
策略名称 | 描述 | 优点 | 缺点 | 实施建议 |
---|---|---|---|---|
固定长度分块 | ||||
将文本按预定义长度(如基于令牌或字符)分割,适合简单文档或快速处理。 | ||||
简单性、统一性、效率 | ||||
上下文丢失、相关性问题、潜在信息丢失 | ||||
选择合适大小,考虑使用重叠窗口以保持上下文 | ||||
基于句子的分块 | ||||
按句子边界分割,确保每个块是完整的思想,适合短响应如客户查询。 | ||||
保持上下文、易于实现、更好的可读性 | ||||
块大小不一致、不适合长句、控制力弱 | ||||
使用NLP库检测句子,必要时合并短句 | ||||
段落分块 | ||||
将文档按段落分割,每个段落通常包含完整想法或主题,适合结构化文档。 | ||||
更丰富的上下文、逻辑分割 | ||||
大小不一致、可能超出行牌限制 | ||||
监控块大小,必要时分割大段落以保持上下文 | ||||
文档分块 | ||||
将整个文档视为一个块或最小分割,保持完整结构和上下文,适合法律或医学文档。 | ||||
保持完整上下文、适合结构化文本、简单 | ||||
可扩展性问题、效率低、缺乏细节提取 | ||||
适用于不希望分割影响流程的场景 | ||||
滑动窗口分块 | ||||
通过滑动窗口创建重叠块,确保相邻块共享内容,适合需保持跨部分上下文的文档。 | ||||
上下文连续性、提高检索效果 | ||||
冗余、计算成本高 | ||||
优化窗口大小和重叠,使用去重技术处理冗余 | ||||
语义分块 | ||||
使用嵌入或机器学习模型按语义意义分割,确保每个块主题连贯。 | ||||
上下文相关性、灵活性、提高检索准确性 | ||||
复杂性、处理时间长、计算成本高、阈值调整 | ||||
利用预训练模型,平衡成本和粒度 | ||||
递归分块 | ||||
使用层次分隔符或多个分隔符逐步分割为小块,适合大型结构化文档。 | ||||
层次上下文、可扩展性、意义块、细粒度控制 | ||||
实现复杂、可能丢失上下文、复杂性高、计算开销大 | ||||
使用文档结构标识层次,存储块位置元数据 | ||||
上下文增强分块 | ||||
为每个块添加周围块的摘要或元数据,保持序列间的上下文,适合长文档。 | ||||
增强上下文、提高连贯性 | ||||
复杂性、存储开销大 | ||||
生成简洁摘要,考虑用关键术语或概念作为元数据 | ||||
模式特定分块 | ||||
按内容类型(如文本、表格、图像)分别处理,每个类型按其性质分块。 | ||||
定制方法、提高准确性 | ||||
实现复杂、集成困难 | ||||
使用OCR处理图像,将表格转为结构化数据,保持索引一致 | ||||
代理分块 | ||||
使用AI(如大型语言模型)按内容结构和语义建议块边界,或按代理角色任务组织。 | ||||
任务导向效率、聚焦相关数据、灵活性、智能分割 | ||||
复杂设置、计算密集、成本高、可能过分专业化、丢失全局上下文 | ||||
选择性使用,优化LLM提示,明确代理角色和任务规则 | ||||
子文档分块 | ||||
总结整个文档或大节并将摘要作为元数据附加到单个块,适合大型文档集。 | ||||
层次检索、上下文深度 | ||||
额外处理、元数据管理复杂 | ||||
自动化摘要生成,高效存储摘要 | ||||
混合分块 | ||||
结合多种分块策略,动态适应不同查询类型或文档结构,适合多用途系统。 | ||||
灵活性、优化性能 | ||||
逻辑复杂、维护难度大 | ||||
制定选择策略的标准,广泛测试以确保可靠性 | ||||
基于令牌的分块 | ||||
按预定义令牌数(如单词或子词)分割,确保块在模型令牌限制内。 | ||||
优化语言模型、精确控制块大小、一致性 | ||||
上下文碎片化、忽略语义结构、灵活性有限 | ||||
确保块在模型令牌限制内 | ||||
选择策略时需考虑以下因素 :
- 文档类型 :结构化(如报告)适合段落分块,非结构化(如聊天记录)适合语义分块。
- 查询复杂性 :复杂查询需语义或代理分块,简单查询可用固定长度分块。
- 资源可用性 :计算资源有限时,优先固定长度或基于句子的分块。
- 期望结果 :速度优先选固定长度,准确性优先选语义分块,上下文优先选滑动窗口。
关于作者:余俊晖,主要研究方向为自然语言处理、大语言模型、文档智能。曾获CCF、Kaggle、ICPR、CCL、CAIL等国内外近二十项AI算法竞赛/评测冠亚季军。发表SCI、顶会等文章多篇,专利数项。