返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

RAG的五种分块策略

[复制链接]
链载Ai 显示全部楼层 发表于 前天 21:53 |阅读模式 打印 上一主题 下一主题
RAG 是将附加文档存储为嵌入向量,将传入的查询计算向量与这些向量进行匹配,并将最相似的信息与查询一起提供给LLM的过程。
由于附加文档可能非常大,流程的步骤1还需要分块,将大文档分成较小/方便管理的文本块,RAG的分块策略主要有五种,分别是固定大小分块、语义分块、递归分块、基于文档结构的分块、基于LLM的分块。
  • 固定大小的分块
固定大小的分块是最直观和直接的方法,根据预定数量的字符、单词或标记将文本分成统一的段。
由于直接分割会破坏语义,因此在实际使用时在两个连续块之间保持一些重叠。还有一个问题,固定大小分块通常会打断句子或者语境。因此,重要的信息很可能会分散到不同的块中。
  • 语义分块
根据句子、段落或主题部分等有意义的单位对文档进行细分,为每个片段创建嵌入,如果多个文本段的嵌入向量具有较高的余弦相似度,一直持续到余弦相似度显著下降,则这些段就形成了一个文本块。

与固定大小的块不同,这保持了语言的自然流畅并保留了完整的想法。由于每个块都更加丰富、完整,它提高了检索准确性,进而使 LLM 产生更加连贯和相关的响应。

由于依赖于一个阈值来确定余弦相似度是否显著下降,而这个阈值在不同文档之间差异可能很大。


  • 递归分块

根据固有分隔符(如段落或章节)进行分块。接下来,如果每个块的大小超出了预定义的块大小限制,则将其拆分成更小的块。但是,如果块符合块大小限制,则不再进行进一步拆分。


与固定大小的块不同,这种方法还保持了语言的自然流畅性并保留了完整的语境。然而,在实施和计算复杂性方面存在一些额外的开销。

  • 基于文档结构的分块

它利用文档的固有结构(如标题、章节或段落)来定义块边界,它就通过与文档的逻辑部分对齐来保持结构完整性。

基于文档结构的分块应用的前提条件是假设文档具有清晰的结构,但事实可能并非如此。此外,文本块的长度可能会有所不同,可能会超出模型token的限制。当出现这些问题时通常使用递归拆分进行合并。


  • 基于LLM的分块

基于LLM的分块可以按照 LLM 生成语义上孤立且有意义的块,这种方法将确保较高的语义准确性,因为 LLM 可以理解超越简单启发式方法的上下文和含义。

唯一的问题是,基于LLM的分块是这里讨论的五种技术中计算要求最高的分块技术,另外还需要考虑 LLM 的上下文窗口通常是有限的。


  • 总结

总之,每种文本分块技术都有其自身的优势和劣势。分块策略的选择将很大程度上取决于内容的性质、嵌入模型的功能、计算资源等具体情况。我在实际应用中发现语义分块在多数情况下效果很好,但你在使用语义分块时效果就有可能不理想。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ