|
随着信息技术的快速发展,大规模文档的处理与分析已成为信息检索、自然语言处理(NLP)等领域的核心挑战之一。在复杂的文档处理任务中,如何有效地将大型文档分割成更小的、主题相关的部分,对提升系统性能至关重要。近年来,Retrieval-Augmented Generation (RAG) 系统的兴起为这一难题提供了新的解决方案。本文将深入探讨一种基于句子embedding的创新RAG切块方法,该方法旨在通过精准识别文档中的主题转换点,实现更加智能和高效的文档分割。 
RAG系统概述 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;color: rgb(5, 7, 59);letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">Retrieval-Augmented Generation (RAG)系统是一种结合了检索与生成方法的机器学习模型,旨在通过融合外部知识库来提升生成内容的质量和相关性。RAG系统首先根据输入查询从大型数据集中检索出相关文档或信息,然后利用生成模型(如基于Transformer的语言模型)整合这些信息,生成连贯且上下文恰当的响应或内容。这种混合方法显著增强了模型在复杂或知识密集型任务中的表现能力。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;color: rgb(5, 7, 59);letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">
 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";color: rgb(5, 7, 59);font-weight: 600;font-size: 24px;border-width: initial;border-style: none;border-color: initial;line-height: 1.6;letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">传统文档分割方法的局限性传统的文档分割方法(大模型RAG(检索增强)切块策略),如基于字符、标记、句子边界或正则表达式的分割方法,虽然在一定程度上实现了文档的分割,但在识别文档中的主题转换点时往往表现不佳。这些方法要么过于简单,容易错过细微的主题变化,要么过于复杂,容易引入噪声,导致分割结果不够准确。特别是在处理包含多个复杂主题的学术论文、长篇报告和详细文章时,这些问题尤为突出。 我们一般使用的langchain的切块策略主要有: Recursive Character Text Splitter:此方法通过根据字符递归划分文本来拆分文档,确保每个块都低于指定长度。这对于具有自然段落或句子分隔符的文档特别有用。Token Splitter:该方法使用 Token 拆分文档。当使用具有标记限制的语言模型时,确保每个块都符合模型的约束,适合用Token SplitterSentence Splitter:此方法在句子边界处拆分文档Regex Splitter :此方法使用正则表达式来定义自定义拆分点。它提供了最高的灵活性,允许用户根据特定于其用例的模式来拆分文档。Markdown Splitter:此方法专为 Markdown 文档量身定制。它根据特定于 Markdown 的元素(如标题、列表和代码块)拆分文本 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";color: rgb(5, 7, 59);font-weight: 600;font-size: 24px;border-width: initial;border-style: none;border-color: initial;line-height: 1.6;letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">基于句子embedding的创新RAG切块方法ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;color: rgb(5, 7, 59);letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">为了克服传统方法的局限性,本文介绍一种基于句子embedding的RAG创新切块方法。该方法利用Sentence-BERT(SBERT)等先进模型生成句子的向量表示,通过定量测量句子之间的相似性来识别主题转换点,从而实现文档的精准分割。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";color: rgb(5, 7, 59);font-weight: 600;font-size: 20px;border-width: initial;border-style: none;border-color: initial;line-height: 1.7;letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">1. 句子embedding生成ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;color: rgb(5, 7, 59);letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">首先,利用Sentence-BERT(SBERT)模型为文档中的每个句子生成密集的向量表示。SBERT通过捕捉句子的语义内容,将句子映射到高维向量空间中,使得语义相似的句子在向量空间中的距离较近,而语义不同的句子则距离较远。ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";color: rgb(5, 7, 59);font-weight: 600;font-size: 20px;border-width: initial;border-style: none;border-color: initial;line-height: 1.7;letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">2. 相似性计算与Gap Score计算ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";font-size: 15px;line-height: 1.7;color: rgb(5, 7, 59);letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">随后,通过计算连续句子之间的相似性(通常采用余弦相似度)来确定句子之间的连贯性。为了更准确地捕捉主题转换,引入了一个参数n,指定要比较的句子数量。对于文档中的每个位置,算法提取该位置前后各n个句子的embedding,并计算这些序列之间的相似性,得到所谓的“Gap Score”。Gap Score反映了句子之间连贯性的变化,主题转换时通常会出现较大的Gap Score变化。 ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Source Han Sans CN", sans-serif, "Apple Color Emoji", "Segoe UI Emoji";color: rgb(5, 7, 59);font-weight: 600;font-size: 20px;border-width: initial;border-style: none;border-color: initial;line-height: 1.7;letter-spacing: normal;text-align: start;text-wrap: wrap;background-color: rgb(253, 253, 254);">3. 平滑处理与边界检测原始的Gap Score可能因文本中的微小变化而产生噪声。因此,采用平滑算法对Gap Score进行处理,通过定义一个窗口大小k,对窗口内的Gap Score进行平均,以减少噪声的影响。平滑后的Gap Score更加稳定,能够更清晰地指示主题转换的位置。 接着,通过分析平滑后的Gap Score来识别局部最小值,这些局部最小值可能代表潜在的主题转换点。通过计算每个局部最小值的深度分数(即局部最小值与其前后值之差的累积),并使用阈值c来确定显著的分割点,可以进一步筛选出有效的主题转换边界。 4. 聚类与冗余消除由于长文档可能在不同位置重复讨论类似的主题,因此需要对分割得到的段落进行聚类处理。通过将段落转换为embedding并使用聚类技术(如K-means)合并相似段落,可以减少冗余,确保每个主题都得到唯一且准确的表示。 优点与应用前景基于句子embedding的RAG创新切块方法具有以下优点: 精准度高:通过定量测量句子之间的相似性,能够准确识别文档中的主题转换点。 灵活性好:支持多种参数设置,可根据不同需求调整分割的细粒度。 适应性强:不仅适用于普通文本,还可应用于Markdown等特定格式的文档。
该方法在学术论文分析、新闻摘要生成、法律知识库构建等领域具有广阔的应用前景。特别是在需要深入理解文档结构和内容的情况下,该方法能够显著提升文档处理的效率和准确性。 
本文分享了一种创新的RAG文档分割方法(Paper:https://ieeexplore.ieee.org/document/10467643),该方法通过结合传统原则和先进的句子embedding技术,实现了大型文档中话题的精确建模。利用SBERT生成句子embedding,并通过计算间隙分数、平滑处理、边界检测和段落聚类等步骤,该方法为RAG系统提供了更精确的文档分割方案。随着未来研究的深入,该方法有望在更多领域和更复杂的任务中发挥重要作用。
|