本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在数据源中包含元数据以改进知识库查询
在提取 CSV(逗号分隔值)文件时,您可以让知识库将某些列视为内容字段而不是元数据字段。现在,您可以拥有一个 CSV 文件和一个相应的 metadata.json 文件,从而为知识库提供有关如何处理 CSV 中每列的提示,而不必拥有成百上千个内容/元数据文件对。
每个分块的文档元数据字段/属性有限制。请参阅 Quotas for knowledge bases
在提取 CSV 文件之前,请确保:
-
您的 CSV 格式 RFC418为 0,并采用 UTF-8 编码。
-
CSV 的第一行包含标题信息。
-
您的 metadata.json 中提供的元数据字段以列的形式出现在 CSV 中。
-
您提供一个采用以下格式的 fileName.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 中有一列“描述”和一列“创建日期”。描述字段是内容字段,创建日期是关联的元数据字段。描述文本被分成多个块,并转换为 CSV 中每行的向量嵌入。创建日期值被视为日期的字符串表示形式,并与描述的每个分块相关联。
如果未提供包含/排除字段,则除内容列外,所有列都将被视为元数据列。如果仅提供包含字段,则仅将提供的列视为元数据。如果仅提供排除字段,则除排除列之外的所有列都将被视为元数据。如果您在 fieldsToInclude
和 fieldsToExlcude
中都提供了相同的 fieldName
,Amazon Bedrock 将引发验证异常。如果包容和排除之间存在冲突,则将导致失败。
在 CSV 中找到的空行将被忽略或跳过。