

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 連接至知識庫的 Amazon S3
<a name="s3-data-source-connector"></a>

Amazon S3 是將資料當做物件存放在儲存貯體中的物件儲存服務。您可以使用 Amazon S3 Bedrock [AWS 的管理主控台或 CreateDataSource API （請參閱 Amazon Bedrock](https://console.aws.amazon.com/bedrock/home) [支援的 SDKs和 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html)) 來連線至 Amazon Bedrock 知識庫的 Amazon S3 儲存貯體。 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 

**多模態內容支援**  
Amazon S3 資料來源支援多模式內容，包括影像、音訊和影片檔案。如需使用多模態內容的完整指引，請參閱 [建立多模態內容的知識庫](kb-multimodal.md)。

您可以使用 Amazon S3 主控台或 API，將一小批檔案上傳至 Amazon S3 儲存貯體。或者，您可以使用 持續將多個檔案[AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/create-s3-location.html)上傳至 S3，並依排程從內部部署、邊緣、其他雲端或 AWS 儲存體傳輸檔案。

目前僅支援一般用途 S3 儲存貯體。

可網路爬取的檔案數量及每個檔案大小 (MB) 都有限制。請參閱[知識庫的配額](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)。

**Topics**
+ [支援的功能](#supported-features-s3-connector)
+ [先決條件](#prerequisites-s3-connector)
+ [連線組態](#configuration-s3-connector)

## 支援的功能
<a name="supported-features-s3-connector"></a>
+ 文件中繼資料欄位
+ 包含字首
+ 新增、更新、刪除內容的增量內容同步

## 先決條件
<a name="prerequisites-s3-connector"></a>

**在 Amazon S3 中，請確定您**：
+ 請注意 Amazon S3 儲存貯體 URI、Amazon Resource Name (ARN)，以及儲存貯體擁有者的 AWS 帳戶 ID。您可以在 Amazon S3 主控台的屬性區段中找到 URI 和 ARN。您的儲存貯體必須與 Amazon Bedrock 知識庫位於相同的區域中。您必須具有存取儲存貯體的許可。

**在您的帳戶中 AWS ，請確定您**：
+ 在知識庫的 AWS Identity and Access Management (IAM) 角色/許可政策中包含要連接至資料來源的必要許可。如需此資料來源新增至知識庫 IAM 角色的必要許可資訊，請參閱[存取資料來源的許可](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)。

**注意**  
如果您使用 主控台，則可以在建立知識庫的步驟中為您建立具有所有必要許可 IAM 的角色。在您設定資料來源和其他組態之後，具有所有必要許可的 IAM 角色會套用至特定知識庫。

## 連線組態
<a name="configuration-s3-connector"></a>

若要連線至 Amazon S3 儲存貯體，您必須提供必要的組態資訊，Amazon Bedrock 才能存取和網路爬取資料。您也必須遵循 [先決條件](#prerequisites-s3-connector)。

本節包含此資料來源的組態範例。

如需包含篩選條件、文件中繼資料欄位、增量同步以及這些運作方式的詳細資訊，請選取下列各項：

### 文件中繼資料欄位
<a name="ds-s3-metadata-fields"></a>

您可以包含一個獨立的檔案，該檔案會指定 Amazon S3 資料來源中每個檔案的文件中繼資料欄位/屬性，以及在為資料來源編製索引至向量存放區時是否將其包含在嵌入中。例如，您可以建立以下格式的檔案，將其命名為 {{fileName.extension.metadata.json}}，並將其上傳至 S3 儲存貯體。

```
{
  "metadataAttributes": {
    "company": {
      "value": {
        "type": "STRING",
        "stringValue": "BioPharm Innovations"
      },
      "includeForEmbedding": true
    },
    "created_date": {
      "value": {
        "type": "NUMBER",
        "numberValue": 20221205
      },
      "includeForEmbedding": true
    },
    "author": {
      "value": {
        "type": "STRING",
        "stringValue": "Lisa Thompson"
      },
      "includeForEmbedding": true
    },
    "origin": {
      "value": {
        "type": "STRING",
        "stringValue": "Overview"
      },
      "includeForEmbedding": true
    }
  }
}
```

中繼資料檔案必須使用與其相關聯來源文件檔案相同的名稱，並將 `.metadata.json` 附加到檔案名稱的結尾。中繼資料檔案必須與 Amazon S3 儲存貯體中的來源檔案存放在相同的資料夾或位置。檔案不得超過 10 KB 的限制。如需可套用至中繼資料欄位之支援屬性/欄位資料類型和篩選運算子的詳細資訊，請參閱[中繼資料和篩選](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。

`includeForEmbedding` 欄位控制內嵌區塊時是否包含中繼資料屬性：
+ `includeForEmbedding: false` – 在擷取期間，只會嵌入區塊文字並將其轉換為向量。中繼資料仍會儲存並可用於篩選，但不會影響語意搜尋結果。
+ `includeForEmbedding: true` – 中繼資料鍵/值對在嵌入之前會與區塊文字串連 （例如，`key1: value1\n\nchunk text`)。這表示內嵌向量中包含中繼資料資訊，因此提及中繼資料索引鍵或值的查詢將導致相似性分數並提高搜尋相關性。中繼資料鍵/值對不包含在結果中傳回的區塊文字中，確保結果僅包含來源檔案的原始內容。

當您不需要控制內嵌行為時，也可以對中繼資料屬性使用簡化格式：

```
{
    "metadataAttributes": {
        "tag": "value"
    }
}
```

透過簡化的格式，中繼資料會儲存以進行篩選，但不包含在內嵌中 （相當於 `includeForEmbedding: false`)。

### 包含字首
<a name="ds-s3-inclusion-exclusion"></a>

您可以指定包含字首，這是 Amazon S3 路徑字首，您可以在其中使用 S3 檔案或資料夾，而不是整個儲存貯體來建立 S3 資料來源連接器。

### 增量同步
<a name="ds-s3-incremental-sync"></a>

每次資料來源與您的知識庫同步時，資料來源連接器都會編目新的、修改過的和刪除的內容。 Amazon Bedrock 可以使用資料來源的機制來追蹤自上次同步以來變更的內容和編目內容。當您第一次將資料來源與知識庫同步時，依預設會網路爬取所有內容。

若要將資料來源與知識庫同步，請使用 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) API，或在主控台中選取知識庫，然後在資料來源概觀區段中選取**同步**。

**重要**  
您從資料來源同步的所有資料可供具有 `bedrock:Retrieve` 許可能擷取資料的任何人使用。這也可以包含具有受控資料來源許可的任何資料。如需詳細資訊，請參閱[知識庫許可](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html)。

------
#### [ Console ]

**將 Amazon S3 儲存貯體連接到知識庫**

1. 遵循 [透過連線至 Amazon Bedrock 知識庫中的資料來源來建立知識庫](knowledge-base-create.md) 中的步驟，然後選擇 **Amazon S3** 作為資料來源。

1. 提供資料來源的名稱。

1. 指定 Amazon S3 儲存貯體是否位於您目前的 AWS 帳戶或其他 AWS 帳戶中。您的儲存貯體必須與知識庫位於相同的區域中。

1. (選用) 如果 Amazon S3 儲存貯體是使用 KMS 金鑰加密的，請包含該金鑰。如需詳細資訊，請參閱[在 Amazon S3 中解密資料來源 AWS KMS 金鑰的許可](encryption-kb.md#encryption-kb-ds)。

1. (選用) 在**內容剖析和分塊**區段中，您可以自訂如何將資料剖析和分塊。請參閱下列資源進一步了解這些自訂項目：
   + 如需剖析選項的詳細資訊，請參閱[剖析資料來源的選項](kb-advanced-parsing.md)。
   + 如需有關分塊策略的詳細資訊，請參閱[內容群集如何適用於知識庫](kb-chunking.md)。
**警告**  
在連線至資料來源之後，便無法變更分塊策略。
   + 如需如何使用 Lambda 函式自訂資料分塊和處理中繼資料的詳細資訊，請參閱[使用自訂轉換 Lambda 函式來定義如何擷取您的資料](kb-custom-transformation.md)。

1. 在**進階設定**區段中，您可以選擇設定下列項目：
   + **用於暫時性資料儲存的 KMS 金鑰。**– 您可以使用預設 AWS 受管金鑰 或您自己的 KMS 金鑰，在將資料轉換為內嵌時加密暫時性資料。如需詳細資訊，請參閱[資料擷取期間的暫時性資料儲存加密](encryption-kb.md#encryption-kb-ingestion)。
   + **資料刪除政策** – 您可以刪除預設存放在向量存放區中資料來源的向量嵌入，或選擇保留向量存放區資料。

1. 繼續選擇嵌入模型和向量存放區。若要查看剩餘的步驟，請返回[透過連線至 Amazon Bedrock 知識庫中的資料來源來建立知識庫](knowledge-base-create.md)，並在連接資料來源後繼續進行該步驟。

------
#### [ API ]

以下是 Amazon Bedrock 知識庫連線至 Amazon S3 的組態範例。您可以使用 API 搭配 AWS CLI 或支援的 SDK 來設定資料來源，例如 Python。呼叫 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 之後，您可以呼叫 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)，在 `dataSourceConfiguration` 中使用連線資訊建立資料來源。

若要了解您可以透過包含選用 `vectorIngestionConfiguration` 欄位套用至擷取的自訂項目，請參閱[自訂資料來源的擷取](kb-data-source-customize-ingestion.md)。

**AWS Command Line Interface**

```
aws bedrock-agent create-data-source \
 --name "S3-connector" \
 --description "S3 data source connector for Amazon Bedrock to use content in S3" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://s3-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":{"maxTokens":100,"overlapPercentage":10}}}'
                    
s3-bedrock-connector-configuration.json
{
    "s3Configuration": {
	    "bucketArn": "arn:aws:s3:::bucket-name",
	    "bucketOwnerAccountId": "000000000000",
	    "inclusionPrefixes": [
	        "documents/"
	    ]
    },
    "type": "S3"	
}
```

------