将文档直接摄取到知识库中 - Amazon Bedrock

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

将文档直接摄取到知识库中

本主题描述了如何将文档直接摄取到知识库中。您可以直接摄取的文档类型是有限制的,具体取决于您的数据来源。对于可用于指定要摄取的文档的方法限制,请参阅下表:

数据来源类型 以内联方式定义的文档 Amazon S3 位置中的文档
Amazon S3 Red circular icon with an X symbol, indicating cancellation or denial. Green circular icon with a white checkmark symbol inside.
自定义 Green circular icon with a white checkmark symbol inside. Green circular icon with a white checkmark symbol inside.

展开与您的使用案例相对应的部分:

注意

如果使用控制台,则您最多可以将 10 个文档直接摄取到知识库中。如果您改用 IngestKnowledgeBaseDocuments API,则您最多可以将 25 个文档摄取到知识库中。有关此配额的更多信息,请参阅《AWS 通用参考指南》中的 Amazon Bedrock 服务配额

要直接在中添加或修改文档AWS 管理控制台,请执行以下操作:

  1. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。AWS 管理控制台然后,在 https://console.aws.amazon.com/bedrock 上打开 Amazon Bedrock 控制台。

  2. 在左侧导航窗格中,选择知识库

  3. 知识库部分,选择要将文档摄取到的知识库。

  4. 数据来源部分,选择要在其中添加、修改或删除文档的数据来源。

  5. 文档部分,选择添加文档。然后,执行以下操作之一:

    • 要直接添加或修改文档,请选择直接添加文档。然后执行以下操作:

      1. 文档标识符字段中,为文档指定一个唯一的名称。如果您指定的名称已存在于数据来源中,则该文档将被替换。

      2. 要上传文档,请选择上传。要以内联方式定义文档,请选择以内联方式添加文档,然后选择格式并在框中输入文档的文本。

      3. (可选)要将元数据与文档关联,请选择添加元数据并输入密钥、类型和值。

    • 要通过指定文档的 S3 位置来添加或修改文档,请选择添加 S3 文档。然后执行以下操作:

      1. 文档标识符字段中,为文档指定一个唯一的名称。如果您指定的名称已存在于数据来源中,则该文档将被替换。

      2. 指定文档的 S3 位置是在您的当前AWS账户中还是在其他账户中。然后指定文档的 S3 URI。

      3. (可选)要将元数据与文档关联,请选择元数据来源。指定元数据的 S3 URI,或选择添加元数据并输入密钥、类型和值。

  6. 要摄取文档和任何关联的元数据,请选择添加

要使用 Amazon Bedrock API 将文档直接提取到知识库中,请向 Amazon Bedrock 代理构建时终端节点发送IngestKnowledgeBaseDocuments请求,并指定知识库及其连接的数据源的 ID。

注意

如果您指定知识库中已存在的文档标识符或 S3 位置,则该文档将被新内容覆盖。

请求正文包含一个字段documents,该字段映射到一组KnowledgeBaseDocument对象,每个对象都表示要添加到数据源并提取到知识库中的文档的内容和可选元数据。KnowledgeBaseDocument 对象包含以下字段:

选择一个主题,了解如何摄取不同数据来源类型的文档或查看示例:

将文档摄取到与自定义数据来源相连的知识库中

dataSourceId如果您指定的属于自定义数据源,则可以为documents数组中的每个KnowledgeBaseDocument对象添加内容和元数据。

可以使用以下方式,定义添加到自定义数据来源的文档内容:

您可以采用内联方式定义以下类型的文档:

Text

如果文档是文本,则DocumentContent对象应采用以下格式:

{ "custom": { "customDocumentIdentifier": { "id": "string" }, "inlineContent": { "textContent": { "data": "string" }, "type": "TEXT" }, "sourceType": "IN_LINE" }, "dataSourceType": "CUSTOM" }

文档 ID 包括在 id 字段中,文档的文本包括在 data 字段中。

Bytes

如果文档不止包含文本,请将其转换为 Base64 字符串。然后,该DocumentContent对象应采用以下格式:

{ "custom": { "customDocumentIdentifier": { "id": "string" }, "inlineContent": { "byteContent": { "data": blob, "mimeType": "string" }, "type": "BYTE" }, "sourceType": "IN_LINE" }, "dataSourceType": "CUSTOM" }

文档 ID 包括在 id 字段中,Base64 编码的文档包括在 data 字段中,MIME 类型包括在 mimeType 字段中。

如果您要从 S3 位置提取文档,则content字段中的DocumentContent对象应采用以下格式:

{ "custom": { "customDocumentIdentifier": { "id": "string" }, "s3Location": { "bucketOwnerAccountId": "string", "uri": "string" }, "sourceType": "S3" }, "dataSourceType": "CUSTOM" }

文档 ID 包括在 id 字段中,包含文档的 S3 存储桶的所有者包括在 bucketOwnerAccountId 字段中,文档的 S3 URI 包括在 uri 字段中。

可以使用以下方式定义文档的元数据:

如果您以内联方式定义元数据,则metadata字段中的DocumentMetadata对象应采用以下格式:

{ "inlineAttributes": [ { "key": "string", "value": { "stringValue": "string", "booleanValue": boolean, "numberValue": number, "stringListValue": [ "string" ], "type": "STRING" | "BOOLEAN" | "NUMBER" | "STRING_LIST" } } ], "type": "IN_LINE_ATTRIBUTE" }

对于您添加的每个属性,请在 key 字段中定义密钥。在 type 字段中指定值的数据类型,并将与该数据类型对应的字段包括在内。例如,如果包含字符串,则属性将采用以下格式:

{ "key": "string", "value": { "stringValue": "string", "type": "STRING" } }

您还可以从 S3 位置中扩展名为 .metadata.json 的文件摄取元数据。有关元数据文件格式的更多信息,请参阅将知识库连接到 Amazon S3中的文档元数据字段部分。

如果元数据来自 S3 文件,则metadata字段中的DocumentMetadata对象应采用以下格式:

{ "s3Location": { "bucketOwnerAccountId": "string", "uri": "string" }, "type": "S3_LOCATION" } }

包含元数据文件的 S3 存储桶的所有者包括在 bucketOwnerAccountId 字段中,元数据文件的 S3 URI 包括在 uri 字段中。

警告

如果您以内联方式定义了内容,则必须以内联方式定义元数据。

将文档摄取到与 Amazon S3 数据来源相连的知识库中

dataSourceId如果您指定的属于 S3 数据源,则可以为documents数组中的每个KnowledgeBaseDocument对象添加内容和元数据。

注意

对于 S3 数据来源,您只能从 S3 位置添加内容和元数据。

要添加到 S3 的 S3 文档的内容应按以下格式添加到DocumentContent对象中:

{ "dataSourceType": "string", "s3": { "s3Location": { "uri": "string" } } }

包含文档的 S3 存储桶的所有者包括在 bucketOwnerAccountId 字段中,文档的 S3 URI 包括在 uri 字段中。

可以使用以下方式,为添加到自定义数据来源的文档定义元数据:

{ "s3Location": { "bucketOwnerAccountId": "string", "uri": "string" }, "type": "S3_LOCATION" } }
警告

您直接摄取到与 S3 数据来源相连的知识库中的文档,不会添加到 S3 存储桶本身。我们建议您将这些文档也添加到 S3 数据来源中,这样在同步数据来源时,这些文档不会被删除或覆盖。

请求正文示例

展开以下部分,查看 IngestKnowledgeBaseDocuments 在不同使用案例中的请求正文:

以下示例显示了如何将一个文本文档添加到自定义数据来源:

PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1 Content-type: application/json { "documents": [ { "content": { "dataSourceType": "CUSTOM", "custom": { "customDocumentIdentifier": { "id": "MyDocument" }, "inlineContent": { "textContent": { "data": "Hello world!" }, "type": "TEXT" }, "sourceType": "IN_LINE" } } } ] }

以下示例显示如何将 PDF 文档添加到自定义数据来源:

PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1 Content-type: application/json { "documents": [ { "content": { "dataSourceType": "CUSTOM", "custom": { "customDocumentIdentifier": { "id": "MyDocument" }, "inlineContent": { "byteContent": { "data": "<Base64-encoded string>", "mimeType": "application/pdf" }, "type": "BYTE" }, "sourceType": "IN_LINE" } } } ] }

以下示例显示了如何将一个文本文档从 S3 位置添加到自定义数据来源:

PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1 Content-type: application/json { "documents": [ { "content": { "dataSourceType": "CUSTOM", "custom": { "customDocumentIdentifier": { "id": "MyDocument" }, "s3": { "s3Location": { "uri": "amzn-s3-demo-bucket" } }, "sourceType": "S3" } } } ] }

以下示例显示了如何以内联方式,将文档及其包含两个属性的元数据添加到自定义数据来源:

PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1 Content-type: application/json { "documents": [ { "content": { "dataSourceType": "CUSTOM", "custom": { "customDocumentIdentifier": { "id": "MyDocument" }, "inlineContent": { "textContent": { "data": "Hello world!" }, "type": "TEXT" }, "sourceType": "IN_LINE" } }, "metadata": { "inlineAttributes": [ { "key": "genre", "value": { "stringValue": "pop", "type": "STRING" } }, { "key": "year", "value": { "numberValue": 1988, "type": "NUMBER" } } ], "type": "IN_LINE_ATTRIBUTE" } } ] }

以下示例显示了如何将文档及其元数据添加到 S3 数据来源。您只能通过 S3 包含元数据:

PUT /knowledgebases/KB12345678/datasources/DS12345678/documents HTTP/1.1 Content-type: application/json { "documents": [ { "content": { "dataSourceType": "S3", "s3": { "s3Location": { "uri": "amzn-s3-demo-bucket" } } }, "metadata": { "s3Location": { "bucketOwnerId": "111122223333", "uri": "amzn-s3-demo-bucket" }, "type": "S3_LOCATION" } } ] }