跳至主要内容

概述

文本切分器 是构建大型语言模型(LLM)应用程序的关键组件。 它们的主要作用是将长文本分割成多个较短的段落,从而便于后续任务,例如文本嵌入、增强检索生成(RAG)和问答系统。

在大型语言模型中,文本分割主要基于以下几个原因:

  • 提高效率和准确性:通过将大段文本分解为较小的段落,可以优化大型语言模型生成的嵌入向量的相关性和准确性。 分块有助于确保嵌入内容在保留语义相关性的同时,噪音最小。 例如,在语义搜索中,当为文档库建立索引时,每个文档都包含特定主题的有价值信息。 采用有效的分块策略确保搜索结果能够准确捕捉用户查询的本质。
  • 限制上下文窗口大小:在使用类似 GPT-4 的模型时,可处理的 token 数量是有限的。 例如,GPT-4 的上下文窗口大小限制为 32K 个 token。 虽然这一限制通常不会构成问题,但从一开始就考虑分块大小非常重要。 如果文本块过大,可能会丢失信息或无法将所有内容嵌入上下文中,从而影响模型的性能和输出。
  • 处理长文档:虽然长文档的嵌入向量可以捕捉整体上下文,但它们可能会忽略与特定主题相关的重要细节,导致输出不精确或不完整。 分块使得对信息的提取和嵌入有更好的控制,从而降低信息丢失的风险。

Casibase目前提供多种文本切分方法,允许用户针对不同文本场景采用不同的处理策略。

默认文本切分器

默认文本切分器旨在根据标记数量和文本结构高效地分段文本。 其分割策略包括:

  • 逐行读取和段落识别:文本按行读取,通过连续空行准确确定段落分隔。 它还通过标记敏感地识别自然断点,确保文本分割逻辑严谨且精确。
  • 代码块的特殊处理:被```符号包围的代码块将被单独处理。 代码块内的行数决定了它是否可以独立作为一个段落。 这一机制既保持了代码块的完整性,又有效防止单个文本段落超过标记限制。
  • 维护句子完整性:在整个分割过程中,严格保持句子完整,确保句子不会被分割。 这一特性保证每个文本段落都包含一个完整的信息单元。 不论文本多么复杂,分割均精确地在句子边界进行,有效避免因句子被拆分而引起的歧义和信息丢失。

问答切分器

问答切分器专注于对问答格式文本进行精确分割,并提供以下核心优势:

  • 问答单元的准确切分:它采用逐行扫描机制,智能识别问答文本的结构。 通过确定每行是否以“Q:”或“A:”开头,它能精确定位问题与答案之间的边界,确保每个问答对都被完整分割。 这确保了每个问答单元的独立性和完整性,为后续的问答处理和分析提供了清晰的数据。
  • 清晰且逻辑性强的实现:代码简洁直观,易于理解和维护。 通过管理当前问答对的状态以及指示是否正在收集答案的标志,文本分割过程得到了清晰控制,确保每个问答单元正确配对。