知识库的内容分块是如何运作的 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

知识库的内容分块是如何运作的

在摄取数据时,Amazon Bedrock 首先将您的文档或内容拆分为可管理的分块,以实现高效的数据检索。然后将这些分块转换为嵌入内容并写入向量索引(数据的向量表示),同时保持与原文档的映射。向量嵌入支持对文本进行定量比较。

标准分块

Amazon Bedrock 支持以下分块的标准方法:

注意

文本分块策略仅适用于文本文档。对于多模态内容(音频、视频、图像),分块发生在嵌入模型级别,而不是通过这些基于文本的策略。

  • 固定大小分块:您可以通过指定每个分块的词元数量和重叠百分比来配置所需的分块大小,从而灵活地满足您的特定要求。您可以设置分块中词元数量不得超过的最大值以及连续分块之间的重叠百分比。

    注意

    对于已解析的内容(例如使用高级解析器或从 HTML 转换的内容),Amazon Bedrock 知识库可能会对内容进行分块以优化以获得最佳结果。分块器尊重逻辑文档边界(例如页面或部分),并且不会跨越这些边界合并内容,即使增加最大令牌大小会允许更大的块。

  • 默认分块:将内容拆分为包含大约 300 个词元的文本块。分块过程遵循句子边界,确保在每个分块中保留完整的句子。

您还可以选择不为文档分块。每个文档都被视为为单个文本块。在选择不分块作为分块方法/策略之前,您需要先预处理文档,将它拆分为单独的文件。如果您为文档选择不分块,则无法在引文中查看页码,也无法按 x-amz-bedrock-kb-document-page-number 元数据字段/属性进行筛选。

分层分块

分层分块涉及将信息整理成子块和父块的嵌套结构。创建数据来源时,您可以定义父块大小、子块大小以及每个分块之间重叠的词元数量。在检索过程中,系统最初会检索子块,但会用更广泛的父块替换它们,以便为模型提供更全面的上下文。

小文本嵌入更精确,但检索的目的是获得全面的上下文。分层分块系统通过适时将检索到的子块替换为父块来平衡这些需求。

注意
  • 由于在检索过程中子块会被父块替换,因此返回的结果数可能少于请求的数量。

  • 使用 S3 矢量存储桶作为矢量存储时,不建议使用分层分块。使用大量令牌进行分块(总共超过 8000 个令牌)时,可能会遇到元数据大小限制。

对于分层分块,Amazon Bedrock 知识库支持为分块指定两个级别或以下深度:

  • 父级:您可以设置父块词元的最大大小。

  • 子级:您可以设置子块词元的最大大小。

您还可以设置分块之间的重叠词元数量。这是连续父块和连续子块之间重叠词元的绝对数量。

语义分块

语义分块是一种自然语言处理技术,它将文本分成有意义的块,以增强理解和信息检索。它旨在通过关注语义内容而不仅仅是句法结构来提高检索的准确性。这样做有助于更精确地提取和处理相关信息。

配置语义分块时,您可以选择指定以下超级参数。

  • 最大词元数量:在遵守句子边界的情况下,单个分块中应包含的最大词元数。

  • 缓冲区大小:对于给定的句子,缓冲区大小定义了创建嵌入时要添加的周围句子的数量。例如,缓冲区大小为 1 会产生 3 个句子(当前句、上一句和下一句)的组合和嵌入。此参数能够影响一起检查多少文本以确定每个分块的边界,从而影响生成的分块的粒度和连贯性。较大的缓冲区大小可能会捕获更多的上下文,但也会带来噪音,而较小的缓冲区大小可能会错过重要的上下文,但可以确保更精确的分块。

  • 断点百分位数阈值:在句子之间画断点的句 distance/dissimilarity 子的百分位数阈值。较高的阈值要求句子更容易区分,以便分成不同的块。阈值越高,分块越少,平均分块大小通常越大。

    注意

    由于语义分块使用基础模型,因此使用语义分块会产生额外的成本。费用取决于您拥有的数据量。有关基础模型成本的更多信息,请参阅 Amazon Bedrock 定价

多模态内容分块

对于多模式内容(音频、视频、图像),分块行为与文本文档不同:

  • Nova 多模态嵌入:分块发生在嵌入模型级别。您可以将音频和视频区块的持续时间配置为 1-30 秒(默认值:5 秒)。对于视频文件,即使视频包含音频,也只适用视频区块时长。音频区块持续时间仅适用于独立音频文件。

  • 基岩数据自动化 (BDA) 解析器:首先将内容转换为文本(脚本和场景摘要),然后将标准文本分块策略应用于转换后的文本。

注意

使用 Nova 多模态嵌入时,知识库中配置的文本分块策略仅影响数据源中的文本文档,而不影响音频、视频或图像文件。