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

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

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

本主题介绍如何将文档直接提取到知识库中。限制适用于您可以直接摄取的文档类型,具体取决于您的数据源。有关可用于指定要收录的文档的方法的限制,请参阅下表:

数据来源类型 内联定义的文档 亚马逊 S3 位置的文档
Amazon S3 No Yes
自定义 Yes Yes

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

要直接在中添加或修改文档 AWS Management Console,请执行以下操作:

  1. AWS Management Console 使用具有 Amazon Bedrock 权限的 IAM 角色登录,然后通过以下网址打开 Amazon Bedrock 控制台。https://console.aws.amazon.com/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" } } ] }