11 个 chunking 策略 在 RAG 中 — 简化和可视化
检索增强生成模型(RAG) 结合了预训练的语言模型和信息检索系统来,以产生更准确和上下文相关的回应。通过检索外部文档中的相关信息,增强了其处理超出训练数据范围查询的能力。
RAG的一个关键组成部分是分块,在这个过程中,大型文档被分成更小、更易管理的段落。这些段落随后被索引并用于检索阶段,以提供与语言模型相关的上下文。
为为什么分块很重要在RAG(检索增强生成)中,分段有多重用途。
- 效率:在检索过程中减少计算开销。
- 相关性:更精确的块增加了检索相关信息的可能性。
- 上下文保留:合适的分块保持了信息的完整性,确保了连贯的回答。
然而,如果在不恰当的分段的情况下,可能会导致一些问题:
- 丢失上下文:将信息随意切分可能会破坏信息的意义。
- 冗余:重叠的片段可能导致信息重复。
- 不一致性:片段大小不同可能会使检索和索引变得复杂。
分段策略根据它们如何划分文本及其保留的上下文程度不同。这里主要指的是几种方法,主要策略有:
- 固定长度分块
- 基于句子的分块
- 段落分块
- 滑动窗口分块
- 语义分块
- 递归分块
- 富含上下文的分块
- 模态特定的分块
- 代理相关的分块
- 子文档分块
- 混合型分块
每种方法都提供了独特的优势,并且适用于特定的用例。让我们来理解每种分块方法的细节,比较不同的分块方法,如何选择合适的分块方法,以及了解在RAG中实现分块的最佳实践。
分块方法的深入探讨 固定长度的分块它是这样工作的:将文本按照词元或字符来划分,通常设定为预定义的长度。
固定长度的分块——可视化展示
最适合用于:简单的文档、常见问题解答,或者当处理速度是关键时。
优点:
- 简单性:简单易行,不需要复杂的算法。
- 统一性:保持一致的块大小,简化索引过程。
挑战:
- 上下文丢失:可能会把句子或想法分开,导致信息不完整。
- 相关性问题:关键信息可能分散在多个片段中,从而降低检索效果。
实现技巧:
- 选择一个合适的分块大小,以在上下文和效率之间取得平衡。
- 考虑结合使用(重叠窗口)来减少上下文丢失的影响。
它是怎么工作的:在句子边界处拆分文本内容,确保每个片段都是一个完整的句子。
基于句子的分块 —— 可视化
最适合用于:简短直接的回答,如客户提问或聊天机器人。
好处:
- 上下文保留:保持每个句子的完整。
- 易于实现:利用NLP工具实现句子检测。
挑战:
- 有限的上下文:单个句子可能缺乏足够的背景信息来处理复杂的问题。
- 长度不一:句子长度不一,导致段落长度不一致。
实施提示:
- 使用NLP库来准确地检测句子边界。
- 如果句子较短,则可以将它们合并成一个较长的内容块。
它的工作原理是将文档分成段落,这些段落通常包含一个完整的思想或主题。
基于段落的分块——可视化
最适用于:结构化的文档,如文章、报告或文章。
好处:
- 提供了比单纯句子更多的背景信息:提供了比基于句子的片段更多的信息。
- 符合文本的自然逻辑结构:符合文本的自然结构。
挑战:,
- 大小不一:段落长度可能会有很大差异。
- 令牌限制:过长的段落可能会超出模型的令牌限制。
小贴士:
- 监控分块的大小,确保它们的大小保持在可接受的字符限制内。
- 如有必要,进一步拆分较长的段落,尽量保持上下文的连贯性。
你是在准备Gen AI/LLM面试准备吗?来看看我们的LLM面试准备课程吧。
- 120+ 个覆盖 14 个类别的问题及真实的 案例研究
- 每个类别都有 100+ 份评估被精选了
- 基于 真实世界面试问题,这些问题是根据 FAANG 和 Fortune 500 公司的需求精心准备的,经过深入研究得出
- 注重视觉学习
- 完成证书认证
50%折扣码 — 输入代码:LLM50
课程链接:
大型语言模型(LLM)面试问答深入了解AI的世界,学习大型语言模型(LLM)面试问答……www.masteringllm.com 滑动窗口它是怎么工作的:通过在文本上滑动一个窗口来创建重叠的部分,确保这些部分相邻的内容有重叠。
滑动窗口分段——可视化展示
最适用于:需要在各部分间保持上下文一致的文档,如法律或医学资料。
优势 :
- 上下文连续性:重叠有助于保持信息的连贯性。
- 提高检索效果:提高检索到的相关信息片段的可能性。
难题:
- 冗余:重复内容可能会导致信息重复。
- 计算资源消耗:更多的数据块会增加处理和存储的负担。
实现提示:
- 根据文档的性质优化窗口大小和重叠区域。
- 在检索过程中使用去重技术来处理重复内容。
它是如何工作的:使用词嵌入或机器学习模型根据语义拆分文本,确保每个段落在主题或思想上连贯。
语义分组,可视化
最适合用于:需要深入理解的复杂查询需求,例如技术文档或学术文章。
优点包括:
- 上下文相关性:片段有意义地分组,提升了检索的准确性。
- 灵活性:适应文本本身的结构和内容。
挑战:
- 复杂度:需要高级的自然语言处理模型和足够的计算资源。
- 处理时间:语义分析可能会比较耗时。
实施小贴士:
- 利用预训练模型进行语义分割任务。
- 权衡计算成本和语义块精细程度的粒度。
它是怎么运作的:通过使用层级分隔符如标题、子标题、段落和句子,逐步将文本分割成更小的部分。
递归分割可视化
最适合用于:有层级结构的文档,例如书籍或长篇报告。
以下是优点:
- 保持文档的层级结构关系:维持文档的结构关系。
- 适用于非常大的文本内容:适用于非常大的文本。
挑战:
遇到的挑战有:
- 复杂的实现:需要处理多层文本结构。
- 潜在的语境丢失:即使是最小的文本片段,也可能因为管理不当而丢失语境。
实施小贴士:
- 使用文档结构(如HTML标签)来识别层级。
- 存储每个部分在层次结构中的所在位置的元数据,以便在检索时提供上下文。
它是怎么工作的:通过加入周围片段的摘要或元数据来丰富每个片段,从而在整个过程中保持上下文。
上下文增强的分块,可视化技术
最适合用于:需要在多个部分之间保持连贯的长篇文档。
好处:
- 增强上下文:提供额外信息而不显著增加大小。
- 改进连贯性:帮助模型生成更准确且符合上下文的回答。
挑战:
面临的挑战:
- 复杂度:需要额外处理来生成摘要或元数据。
- 存储开销:增强的数据块会占用更多的存储空间。
实现小贴士:
- 为了减少额外的 token 使用,生成简洁的摘要。
- 可以把关键术语或概念作为元数据来代替完整的摘要。
它是怎么工作的:分别处理不同类型的内容(文本、表格、图片等),根据每种内容的特性进行分块。
模态特定分块——视觉化表示
最适用于:包含多种媒介的文档,例如科学论文或产品使用手册。
好处:
- 量身定制的方法:针对每种内容类型进行优化分块
- 提高准确性:专门处理能进一步提高检索准确性
挑战:
- 实现复杂度:每个模态都需要自定义的实现逻辑。
- 集成难度:在检索过程中,结合不同模态的信息可能会比较棘手。
提示:
- 使用OCR来识别包含文本的图像。
- 将表格转为结构化数据格式。
- 在不同模态之间保持索引系统的一致性。
它是怎么运作的:利用大型语言模型(LLM)来分析文本,并根据内容结构和语义来建议分割文本的边界。
代理分块——一种可视化技术
最适用于:复杂文档,其中保留意义和上下文非常重要。
好处:
- 智能分段:利用LLM来理解,生成有意义的片段。
- 灵活适应:能够有效应对各种无结构内容。
挑战 :
我们面临的挑战。
- 计算密集型:处理整个文档需要大量计算资源。
- 成本:由于高昂的计算成本,可能在大规模应用中不切实际。
实施小贴士:
- 有选择地对重要文件使用代理分块(注:代理分块是一种分块技术,用于处理某些特定任务)。
- ——优化LLM提示内容,专注于高效地识别逻辑分块的边界。
它是怎么工作的:总结整个文档或大段落的内容,并将这些总结作为元数据附加到各个部分。
子文档切片以及可视化展示
最适用于:提高大量文档的检索效率。
优点:
- 分层检索:允许检索系统在多个层次上运行。
- 上下文层次:为模型提供更多的信息层次。
挑战 :
- 额外的处理:需要生成和管理概要。
- 管理元数据:增加了索引系统的复杂度。
实现小贴士
- 使用NLP技术自动化摘要生成过程。
- 高效地存储摘要以减少存储需求。
它的工作原理是:结合多种分段策略,灵活应对不同类型的查询和文档结构。
混合分块 — 可视化技术
最适合用于:处理各种查询和文档类型的多功能的系统。
优点:
- 灵活度:可以根据内容和需求灵活调整策略。
- 高性能优化:在各种应用场景中平衡速度和准确度。
挑战:
- 复杂逻辑:需要更复杂的决策算法。
- 维护:更多的组件可能会导致更多的错误。
实施提示:
- 制定选择分块策略的标准(例如,文档类型,查询复杂度)。
- 广泛测试和验证混合方法论,以确保其可靠。
了解我们的AgenticRAG with LlamaIndex 课程,包含5个实际案例研究。
- RAG基础知识 通过实际案例研究
- 学习 高级AgenticRAG技术,包括:
- 路由代理
- 查询代理规划
- 结构规划代理
- 带有人类参与的ReAct代理
- 深入了解5个实时案例研究,附带代码解析
了解更多关于代理增强检索生成(AgenticRAG)与LlamaIndex的内容,克服传统RAG的挑战……www.masteringllm.com
选择正确的分段策略选择合适的分段策略,需要考虑几个因素,
- 文档类型:结构化与非结构化,长度及类型。
- 查询复杂度:简单FAQ和复杂技术问题。
- 资源可用性:计算能力和时间限制。
- 期望结果:速度与准确性与保留上下文。
指导方针:
- 为了速度:使用固定长度或以句子为基础的分块。
- 针对上下文:选择滑动窗口、语义或上下文增强型的分块。
- 针对混合类型的内容:采用特定于模态或混合分块。
- 针对大规模系统:在效率和上下文之间取得平衡,可以使用递归或子文档分块。
- 监控块的大小:确保块的大小保持在语言模型的标记限制内。
- 保留意义:避免随意分割句子或逻辑单位。
- 优化检索:使用适合您的分块策略的高效索引和检索机制。
- 处理冗余:实现去重以管理重叠的部分。
- 广泛测试:使用特定数据和查询评估不同的策略,以找到最佳方案。
- 利用元数据:通过添加元数据来增强块内容,以提高检索的相关度。
分块是一个基础步骤,直接影响系统的效率和准确性。了解各种分块策略及其适用场景,可以让开发人员根据具体需求定制RAG系统。通过权衡上下文保留、计算成本和实现复杂度之间的关系,可以选择最适合的分块方法来有效提升他们的语言模型。
参考文献- Lewis, P., et al. (2020). 用于知识密集型NLP任务的检索增强生成. 神经信息处理系统年刊, 33.
- Jurafsky, D., & Martin, J. H. (2021). 语音和语言处理 (第3版). Pearson.
- Manning, C. D., et al. (2008). 信息检索入门. Cambridge University Press.
- OpenAI. (2023). GPT-4技术文档. OpenAI.
在这里关注我们,你们的评论和点赞鼓励了我们继续前进,这样我们就能为社区创造更好的内容。
能给点掌声吗?给咱们50掌声吧!
共同学习,写下你的评论
评论加载中...
作者其他优质文章