View a markdown version of this page

在数据来源中包含元数据以改进知识库查询 - Amazon Bedrock

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

在数据来源中包含元数据以改进知识库查询

在提取 CSV(逗号分隔值)文件时,您可以让知识库将某些列视为内容字段而不是元数据字段。现在,您可以拥有一个 CSV content/metadata 文件和一个相应的 metadata.json 文件,从而为知识库提供有关如何处理 CSV 中每列的提示,而不必拥有成百上千个文件对。

fields/attributes 每个区块的文档元数据有限制。请参阅 Quotas for knowledge bases

在提取 CSV 文件之前,请确保:

  • 您的 CSV 格式为 RFC4180 并 UTF-8 已进行编码。

  • CSV 的第一行包含标题信息。

  • 您的 metadata.json 中提供的元数据字段以列的形式出现在 CSV 中。

  • 您提供以下格式Name.csv.metadata.json 的文件文件:

    { "metadataAttributes": { "${attribute1}": "${value1}", "${attribute2}": "${value2}", ... }, "documentStructureConfiguration": { "type": "RECORD_BASED_STRUCTURE_METADATA", "recordBasedStructureMetadata": { "contentFields": [ { "fieldName": "string" } ], "metadataFieldsSpecification": { "fieldsToInclude": [ { "fieldName": "string" } ], "fieldsToExclude": [ { "fieldName": "string" } ] } } } }

CSV 文件每次解析一行,并将分块策略和向量嵌入应用于内容字段。Amazon Bedrock 知识库目前支持一个内容字段。内容字段被拆分为多个分块,与每个分块关联的元数据字段(列)被视为字符串值。

例如,假设有一个 CSV,其中有一列 “描述”,一列 “Creation_Date”。描述字段是内容字段,创建日期是关联的元数据字段。描述文本被分成多个块,并转换为 CSV 中每行的向量嵌入。创建日期值被视为日期的字符串表示形式,并与描述的每个分块相关联。

如果未提供任何 inclusion/exclusion 字段,则除内容列外,所有列都将被视为元数据列。如果仅提供包含字段,则仅将提供的列视为元数据。如果仅提供排除字段,则除排除列之外的所有列都将被视为元数据。如果您在 fieldsToIncludefieldsToExclude 中都提供了相同的 fieldName,Amazon Bedrock 将引发验证异常。如果包容和排除之间存在冲突,则将导致失败。

在 CSV 中找到的空行将被忽略或跳过。

示例:带有元数据 Multi-row 的 CSV

以下示例显示了一个完整的 CSV 文件及其相应的元数据 JSON 文件。

CSV 文件示例 (properties.csv)

description,city,price,bedrooms "Spacious 3-bedroom home with updated kitchen and large backyard.",Seattle,450000,3 "Modern downtown condo with floor-to-ceiling windows and city views.",Portland,325000,2 "Charming craftsman bungalow with original hardwood floors.",Austin,275000,2

相应的元数据文件 (properties.csv.metadata.json)

{ "metadataAttributes": { "source": "property_listings_2024" }, "documentStructureConfiguration": { "type": "RECORD_BASED_STRUCTURE_METADATA", "recordBasedStructureMetadata": { "contentFields": [ { "fieldName": "description" } ], "metadataFieldsSpecification": { "fieldsToInclude": [ { "fieldName": "city" }, { "fieldName": "price" } ] } } } }

在本示例中:

  • contentFields— 指定一列 (description) 作为要分块和嵌入的内容。仅支持一个内容字段。

  • fieldsToInclude— 指定要将哪些列(cityprice)视为可筛选的元数据。由于未bedrooms列出该列,因此将其排除在外。

  • metadataAttributes— 指定应用于此 CSV 中每个区块的文档级元数据。在此示例中,source是应用于所有行的静态属性。

每行生成一个块。对于第一行,区块文本是描述,元数据是city: "Seattle"price: "450000"、和source: "property_listings_2024"。CSV 列中的所有元数据值都存储为字符串。

支持的元数据数据类型

元数据属性支持以下数据类型:

  • STRING— 文本值。

  • NUMBER:数值。使用本页上描述的 CSV-based 元数据配置时,数字值存储为字符串。

  • BOOLEAN— 真值或假值。

  • STRING_LIST— 字符串值列表。

有关筛选查询中使用的完整元数据属性架构,请参阅 API 参考MetadataAttributeSchema中的。

除了本页上描述的 CSV-based 元数据配置外,您还可以使用 Sidecar .metadata.json 文件为 Amazon S3 数据源中的任何文档类型配置元数据。此方法支持全套数据类型和includeForEmbedding选项。有关更多信息,请参阅 文档元数据字段

要了解如何使用元数据筛选查询结果,请参阅中的知识库提示模板部分配置和自定义查询与响应生成