RAG的5种切分策略
├── 固定大小切分
│ ├── 根据字符数、单词数或Token数量均匀切分
│ │ ├── Token切分
│ │ │ ├── 基于自然语言处理中的Token标准
│ │ │ ├── 常见方法:字节对编码(BPE)、WordPiece等
│ │ │ └── 案例:GPT模型中的BPE策略
│ │ ├── 单词切分
│ │ │ ├── 适用于语法相对固定的语言
│ │ │ ├── 优点:计算简单,节省资源
│ │ │ └── 缺点:可能丢失语义连接
│ │ └── 字符切分
│ │ ├── 适用于字符为主的语言如中文
│ │ ├── 保证基础语义完整性
│ │ └── 案例:汉字处理中的字符粒度切分
│ ├── 保留部分重叠(如段落交接)
│ │ ├── 提升语义流畅性
│ │ ├── 避免关键信息丢失
│ │ └── 调整重叠比例以适应不同任务
│ ├── 优点:实现简单,段落大小统一,便于批处理
│ └── 缺点:可能破坏语义流畅性,重要信息可能分散
├── 语义切分
│ ├── 按句子、段落或主题进行切分
│ │ ├── 句子级切分
│ │ │ ├── 使用标点符号作为边界
│ │ │ ├── 保持句子逻辑完整
│ │ │ └── 适用于总结性任务
│ │ ├── 段落级切分
│ │ │ ├── 结合段落主旨
│ │ │ ├── 避免主旨混乱
│ │ │ └── 示例:大规模文档中的自然段处理
│ │ └── 主题级切分
│ │ ├── 使用主题建模(如LDA)划分内容
│ │ ├── 提升相似主题语义流畅性
│ │ └── 案例:基于知识图谱的主题提取
│ ├── 基于嵌入余弦相似度判定切片
│ │ ├── 嵌入向量生成
│ │ │ ├── 使用预训练模型生成向量
│ │ │ ├── 例如:Transformer模型
│ │ │ └── 案例:BERT嵌入应用
│ │ ├── 判定相似度阈值
│ │ │ ├── 高相似度段落组成切片
│ │ │ ├── 动态调整阈值以适应不同文档
│ │ │ └── 案例:基于余弦相似度动态切片
│ │ └── 相似度显著下降后重新开始
│ ├── 优点:语言流畅性高,完整思想保留
│ └── 缺点:阈值选择因文档而异
├── 递归切分
│ ├── 首次按内在分隔符切分(如段落、章节)
│ │ ├── 内在分隔符类型
│ │ │ ├── 标题
│ │ │ │ ├── 一级标题
│ │ │ │ └── 二级标题
│ │ │ ├── 段落
│ │ │ └── 章节
│ │ ├── 切分规则定义
│ │ │ ├── 保持章节内逻辑完整
│ │ │ └── 灵活设置分隔符优先级
│ │ └── 案例:书籍章节的递归处理
│ ├── 对超出大小限制的切片再次切分
│ │ ├── 二次切分策略
│ │ │ ├── 结合内容权重评估
│ │ │ ├── 优先处理超长段落
│ │ │ └── 案例:超限段落的逐步切分
│ │ └── 动态调整规则适应特定文档
│ ├── 优点:语言流畅性高,思想完整
│ └── 缺点:实现复杂,计算开销较高
├── 基于文档结构的切分
│ ├── 依照文档标题、章节或段落自然分隔
│ │ ├── 标题识别
│ │ │ ├── 文档级标题提取
│ │ │ ├── 子标题与主标题关系明确
│ │ │ └── 案例:论文结构化切分
│ │ ├── 章节分隔
│ │ │ ├── 适用于内容层级明确的文档
│ │ │ ├── 避免混乱交叉
│ │ │ └── 案例:教材章节提取
│ │ └── 段落分隔
│ │ ├── 使用换行符作为标记
│ │ ├── 简化处理逻辑
│ │ └── 案例:新闻段落分隔
│ ├── 优点:逻辑结构完整,清晰对齐文档部分
│ └── 缺点:文档结构不清晰时效果受限
└── 基于LLM的切分
├── 利用LLM的语义理解生成切片
│ ├── 基于上下文窗口的切分
│ │ ├── 结合上下文窗口大小
│ │ ├── 避免超出LLM处理范围
│ │ └── 案例:ChatGPT生成内容切分
│ ├── 利用提示词辅助切分
│ │ ├── 编写任务导向提示词
│ │ ├── 提高切分与任务目标的相关性
│ │ └── 案例:问答任务的提示词优化
│ └── 自适应语义切分
│ ├── 根据内容复杂度动态调整
│ ├── 提升切片与上下文一致性
│ └── 案例:动态生成对话历史
├── 优点:语义准确性高,上下文理解强
└── 缺点:计算成本最高,上下文窗口限制明显