

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

# 使用 Amazon Bedrock 知識庫擷取資料並產生 AI 回應
<a name="knowledge-base"></a>

雖然基礎模型具有一般知識，但您可以使用檢索增強生成 (RAG) 進一步改善其回應。RAG 是一種技術，使用來自資料來源的資訊來改善所產生回應的相關性和準確性。使用 Amazon Bedrock 知識庫，您可以將專屬資訊整合到您的生成式 AI 應用程式。進行查詢時，知識庫會搜尋您的資料，以尋找相關資訊來回應查詢。然後，擷取的資訊可用於改善產生的回應。您可以使用 Amazon Bedrock 知識庫的功能，建置自己的 RAG 型應用程式。

透過 Amazon Bedrock 知識庫，您可以：
+ 從資料來源傳回相關資訊，以回答使用者查詢。
+ 使用從資料來源擷取的資訊，協助產生準確且相關的使用者查詢回應。
+ 將傳回的相關資訊饋送至提示中，增強您自己的提示。
+ 在產生的回應中包含引文，以便參考原始資料來源並檢查準確性。
+ 包含具有豐富視覺化資源的文件，可從中擷取和擷取影像，以回應查詢。如果您根據擷取的資料產生回應，模型可以根據這些影像提供額外的洞見。
+ 使用影像做為查詢來搜尋視覺上相似的內容，或使用多模態內嵌模型在查詢中結合文字和影像，以獲得更精確的結果。
+ 將自然語言轉換為針對結構化資料庫自訂的查詢 (例如 SQL 查詢)。這些查詢用於從結構化資料存放區擷取資料。
+ 更新您的資料來源，並直接將變更擷取至知識庫，以便立即存取。
+ 使用重新排名模型來影響從資料來源擷取的結果。
+ 在 [Amazon Bedrock 代理人](agents.md)工作流程中包含知識庫。

若要設定知識庫，您必須完成下列一般步驟：

1. (選用) 如果您將知識庫連線至非結構化資料來源，請設定您自己的[支援向量存放區](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)，以編製資料的向量嵌入表示的索引。如果您打算使用 Amazon Bedrock 主控台來為您建立 Amazon OpenSearch Serverless 向量存放區，則可以略過此步驟。

1. 將您的知識庫連線至非結構化或結構化資料來源。

1. 將資料來源與您的知識庫同步。

1. 設定應用程式或代理程式以執行下列動作：
   + 查詢知識庫並傳回相關來源。
   + 查詢知識庫，並根據擷取的結果產生自然語言回應。
   + (如果您查詢連線至結構化資料存放區的知識庫) 將查詢轉換為結構化資料特定語言查詢 (例如 SQL 查詢)。

**Topics**
+ [知識庫的運作方式](kb-how-it-works.md)
+ [支援的模型和區域](knowledge-base-supported.md)
+ [以零設定與您的文件聊天](knowledge-base-chatdoc.md)
+ [設定許可以建立和管理知識庫](knowledge-base-prereq-permissions-general.md)
+ [透過連線至資料來源來建立知識庫](knowledge-base-build.md)
+ [建立多模態內容的知識庫](kb-multimodal.md)
+ [透過連線至結構化資料存放區來建立知識庫](knowledge-base-build-structured.md)
+ [使用 Amazon Kendra GenAI 指數建立知識庫](knowledge-base-build-kendra-genai-index.md)
+ [使用 Amazon Neptune Analytics 圖形建立知識庫](knowledge-base-build-graphs.md)
+ [使用查詢和回應測試您的知識庫](knowledge-base-test.md)
+ [部署應用程式的知識庫](knowledge-base-deploy.md)
+ [檢視知識庫的相關資訊](kb-info.md)
+ [修改知識庫](kb-update.md)
+ [刪除知識庫](kb-delete.md)

# Amazon Bedrock 知識庫的運作方式
<a name="kb-how-it-works"></a>

Amazon Bedrock 知識庫可協助您充分利用檢索增強生成 (RAG) 這項熱門技術，其涉及從資料存放區提取資訊，以增強大型語言模型 (LLM) 產生的回應。當您使用資料來源設定知識庫時，您的應用程式可以查詢知識庫以傳回資訊，以使用來源的直接引述，或從查詢結果產生的自然回應來回答查詢。

透過 Amazon Bedrock 知識庫，您可以建置由查詢知識庫所收到的內容來充實應用程式。透過從繁重的建置管道中抽取出來，並提供現成可用的 RAG 解決方案，以減少應用程式的建置時間，進而加快上市時間。新增知識庫也可提高成本效益，因為不需要持續訓練模型來利用您的私有資料。

以下圖表以圖解方式說明 RAG 的進行方式。知識庫透過自動執行此過程中的幾個步驟，簡化 RAG 的設定和實作。

**預先處理非結構化資料**

若要從非結構化私有資料 (不存在於結構化資料存放區中的資料) 進行有效擷取，常見的做法是將資料轉換為文字，並將其分割為可管理的部分。然後，部分或區塊會轉換為嵌入項目，並寫入向量索引，同時保持與原始文件對應。這些內嵌項用於確定查詢和資料來源的文字之間的語意相似性。下圖說明了向量資料庫資料的預先處理。

![\[預先處理資料以進行檢索增強生成\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/rag-preprocess.png)


向量嵌入是代表每個文字區塊的一系列數字。模型會將每個文字區塊轉換為一系列數字，稱為向量，以數學方式比較文字。這些向量可以是浮點數 (float32) 或二進位數字。根據預設，Amazon Bedrock 支援的大多數嵌入模型都會使用浮點向量。不過，某些模型支援二進位向量。如果您選擇二進位嵌入模型，您也必須選擇支援二進位向量的模型和向量存放區。

每個維度只使用 1 位元的二進位向量，其在儲存上的成本低於浮點 (float32) 向量高，其每個維度使用 32 位元。不過，二進位向量在文字表示方面不如浮點向量精確。

下列範例以三種表示顯示一段文字：


****  

| 代表 | 值 | 
| --- | --- | 
| 文字 | 「Amazon Bedrock 使用來自領導 AI 公司和 Amazon 的高效能基礎模型。」 | 
| 浮點向量 | [0.041..., 0.056..., -0.018..., -0.012..., -0.020..., ...] | 
| 二進位向量 | [1,1,0,0,0, ...] | 

**執行時期執行**

在執行時期，內嵌模型用於將使用者的查詢轉換為向量。然後查詢向量索引，藉由將文件向量與使用者查詢向量進行比較，以尋找語意與使用者查詢類似的區塊。在最後一個步驟中，使用從向量索引擷取的區塊中的其他內容來增強使用者提示。然後，提示與附加上下文一起傳送到模型，為使用者產生回應。下圖說明 RAG 如何在執行時期運作，以增強對使用者查詢的回應。

![\[在執行時期檢索增強生成\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/rag-runtime.png)


若要進一步了解如何將資料轉換為知識庫、如何在設定知識庫之後查詢知識庫，以及您可以在擷取期間套用至資料來源的自訂，請參閱下列主題：

**Topics**
+ [將資料轉換為知識庫](kb-how-data.md)
+ [使用 Amazon Bedrock 知識庫從資料來源擷取資訊](kb-how-retrieval.md)
+ [自訂您的知識庫](kb-how-customization.md)

# 將資料轉換為知識庫
<a name="kb-how-data"></a>

若要建立知識庫，請連線至您想要讓知識庫能夠存取的支援資料來源。您的知識庫將能夠回應使用者查詢，或根據擷取的資料產生回應。

 Amazon Bedrock 知識庫支援各種文件，包括文字、影像或包含資料表、圖表和其他影像的多模態文件。*多模態*資料是指文字和視覺化資料的組合。包含非結構化資料的檔案類型範例為文字、Markdown、HTML 和 PDF。

下列各節說明 Amazon Bedrock 知識庫支援的資料類型，以及您可以針對每種資料類型將知識庫連線到的服務：

## 非結構化資料
<a name="kb-how-unstructured"></a>

非結構化資料是指未強制進入預先定義結構的資料。Amazon Bedrock 知識庫支援連線至下列服務，將非結構化資料新增至您的知識庫：
+ Amazon S3
+ Confluence (預覽)
+ Microsoft SharePoint (預覽)
+ Salesforce (預覽)
+ Web Crawler (預覽)
+ 自訂資料來源 (允許直接將資料擷取至知識庫，而不需要同步)

資料來源包含文件的原始形式。為了最佳化查詢程序，知識庫會將您的原始資料轉換為*向量嵌入*，此為資料的數值表示，以量化與也轉換為向量嵌入之查詢的相似性。Amazon Bedrock 知識庫會在轉換資料來源的程序中使用下列資源：
+ 嵌入模型 – 將您的資料轉換為向量嵌入的基礎模型。對於同時包含文字和影像的多模態資料，您可以使用多模態內嵌模型，例如 Amazon Titan 多模態內嵌 G1 或 Cohere Embed v3。
+ 向量存放區 – 存放資料向量表示的服務。支援下列向量存放區：
  + Amazon OpenSearch Serverless
  + Amazon Neptune
  + Amazon Aurora (RDS)
  + Pinecone
  + Redis Enterprise Cloud
  + MongoDB Atlas

將資料轉換為向量嵌入的程序稱為*擷取*。將您的資料轉換為知識庫的擷取程序涉及下列步驟：

**擷取**

1. 您選擇的剖析器會剖析資料。如需剖析的詳細資訊，請參閱 [剖析資料來源的選項](kb-advanced-parsing.md)。

1. 資料來源中的每個文件都會分割為*區塊*、資料細分，可由字符數量和其他參數定義。如需分塊的詳細資訊，請參閱 [內容群集如何適用於知識庫](kb-chunking.md)。

1. 您選擇的嵌入模型會將資料轉換為向量嵌入。對於多模態內容，影像會內嵌為視覺化向量，而文字會內嵌為文字向量，因此可跨這兩種模態進行搜尋。

1. 向量嵌入會寫入您選擇的向量存放區中的向量索引。

擷取程序完成後，您的知識庫已準備好進行查詢。如需有關如何從您的知識庫查詢和擷取資訊的資訊，請參閱 [使用 Amazon Bedrock 知識庫從資料來源擷取資訊](kb-how-retrieval.md)。

如果您變更資料來源，則必須同步變更以將新增、修改和刪除擷取至知識庫。有些資料來源支援將檔案直接擷取或刪除至知識庫，無需將資料來源修改和擷取視為個別步驟，也無需一律執行完整同步。若要了解如何將文件直接擷取至您的知識庫和支援該文件的資料來源，請參閱 [將變更直接擷取到知識庫](kb-direct-ingestion.md)。

Amazon Bedrock 知識庫提供各種選項，可讓您自訂資料的擷取方式。如需自訂此程序的詳細資訊，請參閱 [自訂您的知識庫](kb-how-customization.md)。

## 結構化資料
<a name="kb-how-structured"></a>

結構化資料是指表格式資料，其格式由其存在的資料存放區預先定義。Amazon Bedrock 知識庫會透過 Amazon Redshift 查詢引擎連線至支援的結構化資料存放區。Amazon Bedrock 知識庫提供全受管機制，可分析查詢模式、查詢歷史記錄和結構描述中繼資料，將自然語言查詢轉換為 SQL 查詢。然後，這些轉換後的查詢會用來從支援的資料來源擷取相關資訊。

Amazon Bedrock 知識庫支援連線至下列服務，將結構化資料存放區新增至您的知識庫：
+ Amazon Redshift
+ AWS Glue Data Catalog(AWS Lake Formation)

如果您將知識庫連線至結構化資料存放區，則不需要將資料轉換為向量嵌入。相反地，Amazon Bedrock 知識庫可以直接查詢結構化資料存放區。在查詢期間，Amazon Bedrock 知識庫可以將使用者查詢轉換為 SQL 查詢，以擷取與使用者查詢相關的資料，並產生更準確的回應。您也可以在不擷取資料的情況下產生 SQL 查詢，並將其用於其他工作流程。

例如，資料庫儲存庫包含下表，其中包含客戶及其購買的相關資訊：


****  

| 客戶 ID | 2020 年購買的金額 | 2021 年購買的金額 | 2022 年購買的金額 | 至今購買的總金額 | 
| --- | --- | --- | --- | --- | 
| 1 | 200 | 300 | 500 | 1000 | 
| 2 | 150 | 100 | 120 | 370 | 
| 3 | 300 | 300 | 300 | 900 | 
| 4 | 720 | 180 | 100 | 900 | 
| 5 | 500 | 400 | 100 | 1000 | 
| 6 | 900 | 800 | 1000 | 2700 | 
| 7 | 470 | 420 | 400 | 1290 | 
| 8 | 250 | 280 | 250 | 780 | 
| 9 | 620 | 830 | 740 | 2190 | 
| 10 | 300 | 200 | 300 | 800 | 

如果使用者查詢顯示「為我提供支出前 5 的客戶的摘要」，知識庫可以執行下列動作：
+ 將查詢轉換為 SQL 查詢。
+ 從包含下列項目的資料表傳回摘錄：
  + 相關資料表欄「客戶 ID」和「至今購買的總金額」
  + 包含 10 個最高支出客戶總購買金額的資料表列
+ 產生回應，說明哪些客戶是支出前 5 的客戶，以及他們購買的金額。

知識庫可以為其產生資料表摘錄的其他查詢範例包括：
+ 「2020 年支出前 5 的客戶」
+ 「2020 年購買金額最高的客戶」
+ 「從 2020 年至 2022 年購買金額前 5 的客戶」
+ 「2020 年至 2022 年最高支出前 5 的客戶」
+ 「總購買金額低於 10 USD 的客戶」
+ 「最低支出前 5 的客戶」

查詢愈具體或詳細，知識庫愈能縮小要傳回的確切資訊。例如，不是查詢「2020 年支出前 10 的客戶」，更具體的查詢是「尋找 2020 年客戶至今 10 次最高購買金額」。特定查詢是指客戶支出資料庫資料表中的資料欄名稱「至今購買的總金額」，並指出資料應該按「最高」排序。

# 使用 Amazon Bedrock 知識庫從資料來源擷取資訊
<a name="kb-how-retrieval"></a>

設定知識庫之後，您可以設定應用程式來查詢其中的資料來源。若要查詢知識庫，您可以利用下列 API 操作：
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) – 從與查詢最相關的資料擷取來源區塊或影像，並在回應中以陣列傳回它們。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) – 將 `Retrieve` 與 Amazon Bedrock 中的 [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) 操作聯結，從與查詢最相關的資料擷取來源區塊，並產生自然語言回應。包含資料中特定來源區塊的引文。如果您的資料來源包含視覺化元素，模型會在產生文字回應時利用這些影像的洞見，並為影像提供來源屬性。
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) – 將自然語言使用者查詢轉換為格式適合結構化資料存放區的查詢。

`RetrieveAndGenerate` 操作是合併的動作，基本會使用 `GenerateQuery` (如果您的知識庫連線至結構化資料存放區)、`Retrieve` 和 `InvokeModel` 來執行整個 RAG 程序。由於 Amazon Bedrock 知識庫也可讓您存取 `Retrieve` 操作，因此您可以靈活地分離 RAG 中的步驟，並根據您的特定使用案例進行自訂。

您也可以在使用 `Retrieve` 或 `RetrieveAndGenerate` 時，使用[重新排名模型](rerank.md)來重新排名查詢期間所擷取文件的相關性。

若要了解如何在查詢知識庫時使用這些 API 操作，請參閱 [使用查詢和回應測試您的知識庫](knowledge-base-test.md)。

# 自訂您的知識庫
<a name="kb-how-customization"></a>

Amazon Bedrock 知識庫提供選項，可讓您自訂資料來源在知識庫中的處理方式，讓您靈活地存放、剖析資料並將其傳回給最終使用者。選取下列其中一個主題，進一步了解設定知識庫時可考慮的自訂選項：

**Topics**
+ [內容群集如何適用於知識庫](kb-chunking.md)
+ [剖析資料來源的選項](kb-advanced-parsing.md)
+ [使用自訂轉換 Lambda 函數來定義如何擷取您的資料](kb-custom-transformation.md)
+ [在資料來源中包含中繼資料，以改善知識庫查詢](kb-metadata.md)

# 內容群集如何適用於知識庫
<a name="kb-chunking"></a>

擷取資料時，Amazon Bedrock 會先將文件或內容分割為可管理區塊，以有效擷取資料。然後，區塊會轉換為嵌入項目，並寫入向量索引 (資料的向量表示法)，同時保持與原始文件映射。向量內嵌允許量化比較文字。

**Topics**
+ [標準群集](#kb-standard-chunking)
+ [階層群集](#kb-hiearchical-chunking)
+ [語意群集](#kb-semantic-chunking)
+ [多模態內容區塊](#kb-multimodal-chunking)

## 標準群集
<a name="kb-standard-chunking"></a>

Amazon Bedrock 支援下列標準群集方法：

**注意**  
文字區塊化策略僅適用於文字文件。對於多模態內容 （音訊、影片、影像），區塊會在內嵌模型層級發生，而不是透過這些文字型策略。
+ 固定大小群集：您可以透過指定每個區塊的字符數量和重疊百分比來設定所需的區塊大小，從而提供靈活性，以適應您的特定需求。您可以設定區塊不得超過的字符數量上限，以及連續區塊之間的重疊百分比。
**注意**  
對於剖析的內容 （例如使用進階剖析器或從 HTML 轉換的內容），Amazon Bedrock 知識庫可能會區塊內容，以最佳化以獲得最佳結果。區塊器遵守邏輯文件邊界 （例如頁面或區段），即使增加字符大小上限，也不會在這些邊界之間合併內容，否則允許較大的區塊。
+ 預設群集：內容會分割為大約 300 個字符的文字區塊。群集程序遵守句子界限，確保在每個區塊內保留完整的句子。

您也可以為文件選擇無群集。每個文件都會視為單一文字區塊。建議您先將文件分割為不同的檔案，再選擇無群集做為群集方法/策略，以預先處理文件。如果您為文件選擇無群集，則無法檢視引文中的頁碼，也無法依 *x-amz-bedrock-kb-document-page-number* 中繼資料欄位/屬性進行篩選。

## 階層群集
<a name="kb-hiearchical-chunking"></a>

階層群集涉及將資訊組織成子區塊和父區塊的巢狀結構。建立資料來源時，您可以定義父區塊大小、子區塊大小，以及每個區塊之間重疊的字符數量。在擷取期間，系統一開始會擷取子區塊，但會以更廣泛的父區塊取代它們，以便為模型提供更全面的內容。

小型文本嵌入更為精確，但擷取旨在提供全面的內容。階層群集系統會在適當時以其父區塊取代擷取的子區塊，以平衡這些需求。

**注意**  
由於子區塊在擷取期間會被父區塊取代，因此傳回的結果數量可能小於請求的數量。
使用 S3 向量儲存貯體做為向量存放區時，不建議使用階層式區塊。使用大量字符進行區塊處理時 （合計超過 8000 個字符），您可能會遇到中繼資料大小限制。

對於階層群集，Amazon Bedrock 知識庫支援為群集指定兩個層級或以下深度：
+ 父系：您可以設定父系區塊字符大小上限。
+ 子系：您可以設定子區塊字符大小上限。

您也可以設定區塊之間的重疊字符。這是設定連續父區塊和連續子區塊之間重疊字符的絕對數量。

## 語意群集
<a name="kb-semantic-chunking"></a>

語意群集是一種自然語言處理技術，可將文字分割為有意義的區塊，以增強理解和資訊擷取。它旨在透過專注於語意內容而非僅語法結構來提高擷取準確性。透過這樣做，它可以促進更精確的擷取和處理相關資訊。

設定語意群集時，您可以選擇指定下列超參數。
+ 字符數量上限：單一區塊中應包含的字符數量上限，同時遵守句子界限。
+ 緩衝區大小：對於指定的句子，緩衝區大小會定義要為內嵌建立新增的周圍句子數量。例如，緩衝區大小為 1 會產生 3 個要合併和內嵌的句子 (目前、上一個和下一個句子)。此參數會影響一起檢查多少文字，以判斷每個區塊的邊界，進而影響所產生區塊的精細性和一致性。較大的緩衝區大小可能會擷取更多內容，但也可能引入雜訊，而較小的緩衝區大小可能會遺漏重要的內容，但可確保更精確的群集。
+ 中斷點百分位閾值：句子距離/差異程度的百分位閾值，用來在句子之間繪製中斷點。閾值越高，句子就需更易辨別，才能拆分成不同區塊。閾值越高，產生的區塊越少，且通常平均區塊大小越大。
**注意**  
由於語義群集會使用基礎模型，因此使用此功能時需要額外付費。費用取決於您擁有的資料量。如需有關基礎模型成本的詳細資訊，請參閱 [Amazon Bedrock 定價](https://aws.amazon.com/bedrock/pricing/)。

## 多模態內容區塊
<a name="kb-multimodal-chunking"></a>

對於多模態內容 （音訊、影片、影像），區塊行為與文字文件不同：
+ **Nova 多模式內嵌：**區塊會在內嵌模型層級發生。您可以設定 1-30 秒的音訊和視訊區塊持續時間 （預設值：5 秒）。對於影片檔案，即使影片包含音訊，也只會套用影片區塊持續時間。音訊區塊持續時間僅適用於獨立音訊檔案。
+ **Bedrock Data Automation (BDA) 剖析器：**內容會先轉換為文字 （文字記錄和場景摘要），然後將標準文字區塊化策略套用至轉換的文字。

**注意**  
使用 Nova 多模式內嵌時，知識庫中設定的文字區塊化策略只會影響資料來源中的文字文件，而不會影響音訊、影片或影像檔案。

# 剖析資料來源的選項
<a name="kb-advanced-parsing"></a>

剖析是指了解及擷取來自原始資料的內容。Amazon Bedrock 知識庫提供下列選項，可在擷取期間剖析資料來源：
+ **Amazon Bedrock 預設剖析器** – 僅剖析文字檔案中的文字，包括 .txt、.md、.html、.doc/.docx、.xls/.xlsx 和 .pdf 檔案。此剖析器不會產生任何使用費。
**注意**  
由於預設剖析器只會輸出文字，因此如果您的文件包含圖形、圖表、資料表或影像，建議您使用 Amazon Bedrock Data Automation 或基礎模型做為剖析器，而非預設剖析器。Amazon Bedrock Data Automation 和基礎模型可從文件中擷取這些元素，並將其作為輸出傳回。
+ Amazon Bedrock 知識庫提供下列剖析器，除了 .jpeg 和 .png 影像檔案之外，還可以剖析多模態資料，包括 .pdf 檔案中的圖形、圖表和資料表。這些剖析器也可以擷取這些圖形、圖表、資料表和映像，並將其做為檔案存放在您在知識庫建立期間指定的 S3 目的地中。在知識庫擷取期間，可以在回應或來源屬性中傳回這些檔案。
  + **Amazon Bedrock Data Automation –** 一種全受管服務，可有效處理多模態資料，而不需要提供任何額外的提示。此剖析器的成本取決於文件中的頁數或要處理的影像數量。如需此服務的詳細資訊，請參閱 [Amazon Bedrock Data Automation](bda.md)。
  + **基礎模型** – 使用基礎模型處理多模態資料。此剖析器可讓您選擇自訂用於資料擷取的預設提示。此剖析器的成本取決於基礎模型所處理的輸入和輸出字符數量。如需支援剖析 Amazon Bedrock 知識庫資料的模型清單，請參閱 [剖析支援的模型和區域](knowledge-base-supported.md#knowledge-base-supported-parsing)。

**重要**  
如果您選擇 Amazon Bedrock Data Automation 或基礎模型做為剖析器，則即使 .pdf 檔案僅包含文字，您所選的方法仍會用於剖析資料來源中的所有 .pdf 檔案。預設剖析器不會用來剖析這些 .pdf 檔案。您的帳戶在剖析這些檔案時，使用 Amazon Bedrock Data Automation 或基礎模型會產生費用。

選取資料剖析方式時，請考慮下列事項：
+ 無論您的資料是純文字，還是包含您希望知識庫能夠查詢的多模態資料，例如影像、圖形和圖表。
+ 您是否希望能自訂用於指示模型如何剖析資料的提示。
+ 剖析器的成本。Amazon Bedrock Data Automation 會使用每一頁定價，而基礎模型剖析器會根據輸入和輸出字符收費。如需詳細資訊，請參閱 [Amazon Bedrock 定價](https://aws.amazon.com/bedrock/pricing/)。
+ 總檔案大小限制。當您使用基礎模型做為剖析器時，所有檔案的總檔案大小不得超過 100 GB。

若要了解如何設定知識庫的剖析方式，請參閱 [將資料來源連結至知識庫](data-source-connectors.md) 中資料來源的連線組態。

# 使用自訂轉換 Lambda 函數來定義如何擷取您的資料
<a name="kb-custom-transformation"></a>

您可以定義自訂轉換 Lambda 函數，將自己的邏輯注入知識庫擷取程序。

您可能有特定的群集邏輯，Amazon Bedrock 知識庫原生不支援。使用無群集策略選項，同時指定包含群集邏輯的 Lambda 函數。此外，您將需要為知識庫指定 Amazon S3 儲存貯體，以寫入 Lambda 函數要群集的檔案。

群集之後，Lambda 函數會將群集檔案寫入相同的儲存貯體，並傳回知識庫的參考以供進一步處理。您可以選擇提供自己的 AWS KMS 金鑰，以加密存放在 S3 儲存貯體中的檔案。

**注意**  
如果使用 Web 連接器，則會將 Markdown 文字傳遞給 Lambda，而不是 HTML。

或者，您可能要指定區塊層級中繼資料，同時讓知識庫套用其中一個原生支援的群集策略。在此情況下，選取其中一個預先定義的群集策略 (例如預設或固定大小的群集)，同時提供 Lambda 函數和 S3 儲存貯體的參考。在此情況下，知識庫會在呼叫 Lambda 函數以進一步新增區塊層級中繼資料之前，將已剖析和預先群集的檔案存放在預先定義的 S3 儲存貯體中。

新增區塊層級中繼資料之後，Lambda 函數會將群集檔案寫入相同的儲存貯體，並傳回知識庫的參考以供進一步處理。請注意，區塊層級中繼資料會優先處理，並在發生任何衝突時，覆寫檔案層級中繼資料。

如需使用 Python Lambda 函數進行自訂群集的範例，請參閱[使用 Lambda 函數自訂群集](https://github.com/aws-samples/amazon-bedrock-samples/blob/main/rag/knowledge-bases/features-examples/03-optimizing-accuracy-retrieved-results/advanced_chunking_options.ipynb)。

如需 API 和檔案合約，請參閱下列結構：

**使用 Lambda 函數新增自訂轉換時的 API 合約**

```
{
...
    "vectorIngestionConfiguration": {
        "customTransformationConfiguration": { // Custom transformation 
            "intermediateStorage": {
                "s3Location": { // the location where input/output of the Lambda is expected 
                    "uri": "string"
                }
            },
            "transformations": [{
                "transformationFunction": {
                    "transformationLambdaConfiguration": {
                        "lambdaArn": "string"
                    }
                },
                "stepToApply": "string" // enum of POST_CHUNKING
            }]
        },
        "chunkingConfiguration": {
            "chunkingStrategy": "string",
            "fixedSizeChunkingConfiguration": {
                "maxTokens": "number",
                "overlapPercentage": "number"
            }
            ...
        }
    }
}
```

**自訂 Lambda 轉換輸入格式**

```
{
    "version": "1.0",
    "knowledgeBaseId": "string",
    "dataSourceId": "string",
    "ingestionJobId": "string",
    "bucketName": "string",
    "priorTask": "string",
    "inputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key":"string"
        }]
    }]
}
```

**自訂 Lambda 轉換輸出格式**

```
{
    "outputFiles": [{
        "originalFileLocation": {
            "type": "S3",
            "s3_location": {
                "uri": "string"
            }
        },
        "fileMetadata": {
            "key1": "value1",
            "key2": "value2"
        },
        "contentBatches": [{
            "key": "string"
        }]
    }]
}
```

**在 `fileContents` 中參考之物件的檔案格式**

```
{
    "fileContents": [{
        "contentBody": "...",
        "contentType": "string", // enum of TEXT, PDF, ...
        "contentMetadata": {
            "key1": "value1",
            "key2": "value2"
        }
    }
    ...
    ]
}
```

# 在資料來源中包含中繼資料，以改善知識庫查詢
<a name="kb-metadata"></a>

擷取 CSV (逗號分隔值) 檔案時，您可以讓知識庫將特定資料欄視為內容欄位與中繼資料欄位。您現在可以擁有單一 CSV 檔案和對應的 metadata.json 檔案，提供知識庫如何處理 CSV 內每個資料欄的提示，而不是擁有數百或數千個內容/中繼資料檔案對。

每個區塊的文件中繼資料欄位/屬性具有限制。請參閱[知識庫的配額](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)

擷取 CSV 檔案之前，請確定：
+ 您的 CSV 格式為 RFC4180，且以 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 具有資料欄 'Description' 和資料欄 'Creation\$1Date'。描述欄位是內容欄位，而建立日期是相關聯的中繼資料欄位。描述文字會分割為區塊，並轉換為 CSV 中每一列的向量嵌入。建立日期值會視為日期的字串表示，並與描述的每個區塊相關聯。

如果未提供包含/排除欄位，則所有資料欄都會視為中繼資料資料欄，但內容資料欄除外。如果只提供包含欄位，則只會將提供的資料欄視為中繼資料。如果只提供排除欄位，則排除資料欄以外的所有資料欄都會視為中繼資料。如果您在 `fieldsToInclude` 和 `fieldsToExclude` 中提供相同的 `fieldName`，Amazon Bedrock 會擲回驗證例外狀況。如果包含和排除之間發生衝突，將導致失敗。

在 CSV 中找到的空白資料列會被忽略或略過。

# Amazon Bedrock 知識庫支援的模型和區域
<a name="knowledge-base-supported"></a>

Amazon Bedrock 知識庫支援使用下列基礎模型進行查詢：


| 供應商 | 模型 | 模型 ID | 單一區域模型支援 | 跨區域推論設定檔支援 | 
| --- | --- | --- | --- | --- | 
| AI21 Labs | Jamba 1.5 Large | ai21.jamba-1-5-large-v1:0 |  us-east-1  |  | 
| AI21 Labs | Jamba 1.5 Mini | ai21.jamba-1-5-mini-v1:0 |  us-east-1  |  | 
| Amazon | Nova Lite | amazon.nova-lite-v1:0 |  ap-northeast-1 ap-southeast-2 eu-north-1 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Amazon | Nova Micro | amazon.nova-micro-v1:0 |  ap-southeast-2 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Amazon | Nova Pro | amazon.nova-pro-v1:0 |  ap-southeast-2 eu-west-2 us-east-1 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude 3 Haiku | anthropic.claude-3-haiku-20240307-v1:0 |  ap-northeast-1 ap-northeast-2 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-gov-west-1 us-west-2  |  eu-central-1 us-east-2 us-gov-east-1  | 
| Anthropic | Claude 3 Sonnet | anthropic.claude-3-sonnet-20240229-v1：0 |  ap-south-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  |  ap-northeast-1 ap-northeast-2 ap-southeast-1 eu-central-1  | 
| Anthropic | Claude 3.5 Haiku | anthropic.claude-3-5-haiku-20241022-v1:0 |  us-west-2  |  us-east-1 us-east-2  | 
| Anthropic | Claude 3.5 Sonnet | anthropic.claude-3-5-sonnet-20240620-v1:0 |  ap-northeast-1 ap-northeast-2 ap-southeast-1 eu-central-1 eu-central-2 us-east-1 us-gov-west-1 us-west-2  |  ap-south-1 ap-southeast-2 eu-central-1 eu-west-1 eu-west-3 us-east-1 us-east-2 us-gov-east-1 us-west-2  | 
| Anthropic | Claude 3.5 Sonnet v2 | anthropic.claude-3-5-sonnet-20241022-v2:0 |  ap-southeast-2 us-west-2  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 us-east-1 us-east-2  | 
| Anthropic | Claude 3.7 Sonnet | anthropic.claude-3-7-sonnet-20250219-v1:0 |  eu-west-2 us-gov-west-1  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-west-1 eu-west-3 us-east-1 us-east-2 us-gov-east-1 us-west-2  | 
| Anthropic | Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude Sonnet 4 | anthropic.claude-sonnet-4-20250514-v1:0 |  |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 eu-central-1 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-3 us-east-1 us-east-2 us-west-2  | 
| Anthropic | Claude Sonnet 4.5 | anthropic.claude-sonnet-4-5-20250929-v1:0 | N/A |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-east-2 us-gov-east-1 us-gov-west-1 us-west-2  | 
| Cohere | Command R | cohere.command-r-v1：0 |  us-east-1 us-west-2  |  | 
| Cohere | Command R\$1 | cohere.command-r-plus-v1：0 |  us-east-1 us-west-2  |  | 
| DeepSeek | DeepSeek-R1 | deepseek.r1-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3 70B Instruct | meta.llama3-70b-instruct-v1:0 |  ap-south-1 ca-central-1 eu-west-2 us-east-1 us-gov-west-1 us-west-2  |  | 
| Meta | Llama 3 8B Instruct | meta.llama3-8b-instruct-v1:0 |  ap-south-1 ca-central-1 eu-west-2 us-east-1 us-gov-west-1 us-west-2  |  | 
| Meta | Llama 3.1 405B Instruct | meta.llama3-1-405b-instruct-v1:0 |  us-west-2  |  us-east-2  | 
| Meta | Llama 3.1 70B Instruct | meta.llama3-1-70b-instruct-v1:0 |  us-west-2  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.1 8B Instruct | meta.llama3-1-8b-instruct-v1:0 |  us-west-2  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.2 11B Instruct | meta.llama3-2-11b-instruct-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.2 90B Instruct | meta.llama3-2-90b-instruct-v1:0 |  |  us-east-1 us-east-2 us-west-2  | 
| Meta | Llama 3.3 70B Instruct | meta.llama3-3-70b-instruct-v1:0 |  us-east-2  |  us-east-1 us-east-2 us-west-2  | 
| Mistral AI | Mistral Large (24.02) | mistral.mistral-large-2402-v1:0 |  ap-south-1 ap-southeast-2 ca-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  |  | 
| Mistral AI | Mistral Large (24.07) | mistral.mistral-large-2407-v1:0 |  us-west-2  |  | 
| Mistral AI | Mistral Small (24.02) | mistral.mistral-small-2402-v1:0 |  us-east-1  |  | 

Amazon Bedrock 知識庫也支援使用推論設定檔來剖析資料或產生回應。透過推論設定檔，您可以追蹤成本和指標，也可以執行跨區域推論，將模型推論請求分散到一組區域，以允許更高的輸送量。您可以在 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 或 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 請求中指定推論設定檔。如需詳細資訊，請參閱[使用推論設定檔設定模型調用資源](inference-profiles.md)。

**重要**  
如果您使用跨區域推論，您的資料可以跨區域共用。

您也可以使用 SageMaker AI 模型或根據自己的資料訓練的[自訂模型](custom-models.md)。

**注意**  
如果您使用 SageMaker AI 或自訂模型，則必須指定協同運作和產生提示 (如需詳細資訊，請參閱 [設定和自訂查詢和回應產生](kb-test-config.md) 中的**知識庫提示範本**)。您的提示必須包含資訊變數，才能存取使用者的輸入和內容。

Amazon Bedrock 知識庫中某些功能的區域和模型支援有所不同。選取主題以檢視功能的支援：

**Topics**
+ [向量嵌入支援的模型](#knowledge-base-supported-embeddings)
+ [剖析支援的模型和區域](#knowledge-base-supported-parsing)
+ [支援在查詢期間重新排名結果的模型和區域](#knowledge-base-supported-rerank)
+ [具有結構化資料存放區的知識庫支援區域](#knowledge-base-supported-structured)

## 向量嵌入支援的模型
<a name="knowledge-base-supported-embeddings"></a>

Amazon Bedrock 知識庫使用嵌入模型將您的資料轉換為向量嵌入，並將嵌入存放在向量資料庫中。如需詳細資訊，請參閱[將資料轉換為知識庫](kb-how-data.md)。

Amazon Bedrock 知識庫支援使用下列基礎模型的向量內嵌：


| 供應商 | 模型 | 模型 ID | 單一區域模型支援 | 
| --- | --- | --- | --- | 
| Amazon | Titan Embeddings G1 - Text | amazon.titan-embed-text-v1 |  ap-northeast-1 eu-central-1 us-east-1 us-west-2  | 
| Amazon | Titan 文本嵌入 V2 | amazon.titan-embed-text-v2:0 |  ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-2 ca-central-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-east-2 us-gov-east-1 us-gov-west-1 us-west-2  | 
| Cohere | Embed English | cohere.embed-english-v3 |  ap-northeast-1 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  | 
| Cohere | Embed Multilingual | cohere.embed-multilingual-v3 |  ap-northeast-1 ap-south-1 ap-southeast-1 ap-southeast-2 ca-central-1 eu-central-1 eu-west-1 eu-west-2 eu-west-3 sa-east-1 us-east-1 us-west-2  | 

嵌入模型支援下列向量類型。


****  

| 模型名稱 | 支援的向量類型 | 支援的維度數目 | 
| --- | --- | --- | 
| Amazon Titan Embeddings G1 - Text | 浮點 | 1536 | 
| Amazon Titan 文本嵌入 V2 | 浮點，二進位 | 256、512、1024 | 
| Cohere Embed (英文) | 浮點，二進位 | 1024 | 
| Cohere Embed (多語言) | 浮點，二進位 | 1024 | 
| Amazon Titan Multimodal Embeddings G1 | 浮點 | 1024 | 
| Cohere 內嵌 v3 （多模式） | 浮點，二進位 | 1024 | 

## 剖析支援的模型和區域
<a name="knowledge-base-supported-parsing"></a>

將資料轉換為向量嵌入時，您在 Amazon Bedrock 知識庫中剖析資料時有不同的選項。如需詳細資訊，請參閱[剖析資料來源的選項](kb-advanced-parsing.md)。

下列清單支援剖析選項：
+ 美國西部 (奧勒岡) 支援 Amazon Bedrock Data Automation 剖析器，且預覽版中可能會有所變更。
+ 下列基礎模型系列可作為剖析器使用：
  + Claude 視覺模型
  + Nova 視覺模型
  + LLama 4 視覺模型

  基礎模型剖析適用於直接提供這些模型的 AWS 區域（而不是透過跨區域推論）。如需目前按區域的模型可用性，請參閱 [Amazon Bedrock 中支援的基礎模型](models-supported.md)。

## 支援在查詢期間重新排名結果的模型和區域
<a name="knowledge-base-supported-rerank"></a>

擷取知識庫查詢結果時，您可以使用重新排名模型來重新排名知識庫查詢的結果。如需詳細資訊，請參閱[查詢知識庫並擷取資料](kb-test-retrieve.md)及[查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md)。

如需支援重新排名的模型和區域的清單，請參閱 [Amazon Bedrock 中支援重新排名的區域和模型](rerank-supported.md)。

## 具有結構化資料存放區的知識庫支援區域
<a name="knowledge-base-supported-structured"></a>

具有結構化資料存放區的知識庫可讓您將知識庫連線至結構化資料存放區，並將自然語言查詢轉換為 SQL 查詢。如需詳細資訊，請參閱[透過連線至結構化資料存放區來建立知識庫](knowledge-base-build-structured.md)。

具有結構化資料存放區的知識庫提供如下AWS 區域：
+ 歐洲 (法蘭克福)
+ 歐洲 (蘇黎世)
+ 歐洲 (愛爾蘭)
+ 歐洲 (倫敦)
+ Europe (Paris)
+ 亞太地區 (東京)
+ 亞太地區 (首爾)
+ 亞太地區 (孟買)
+ 亞太地區 (新加坡)
+ 亞太地區 (雪梨)
+ 加拿大 (中部)
+ 南美洲 (聖保羅)
+ 美國東部 (維吉尼亞北部)
+ 美國東部 (俄亥俄)
+ 美國西部 (奧勒岡)
+ AWSGovCloud （美國西部）

# 與未設定知識庫的文件聊天
<a name="knowledge-base-chatdoc"></a>

Amazon Bedrock 主控台中的**與您的文件聊天**功能可讓您輕鬆地測試播放知識庫，而無需設定知識庫。您可以在主控台聊天視窗中載入文件或拖放文件，然後開始提出問題。**與您的文件聊天**使用您的文件回答問題、進行分析、建立摘要、在編號清單中詳細列舉欄位，或重寫內容。**與您的文件聊天**不會在使用後存放您的文件或其資料。

**注意**  
Anthropic Sonnet 模型目前最支援**與您的文件聊天**功能。如需如何存取和使用知識庫模型的詳細資訊，請參閱[知識庫支援的模型](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html)。  
與文件聊天時，您無法使用重新排名器模型。

您也可以輕鬆建立聊天或流程應用程式的原型，而不需要設定知識庫。使用 [Amazon Bedrock Studio](https://docs.aws.amazon.com/bedrock/latest/userguide/br-studio.html)，您可以從電腦上傳文件，為您的應用程式提供資料或「資料來源」。重新命名為 Amazon Bedrock IDE 的 Amazon Bedrock Studio 現在可在 Amazon SageMaker Unified Studio 中使用。如需詳細資訊，請參閱 [Amazon Bedrock IDE](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/bedrock.html)。

若要使用**與您的文件聊天**功能作為知識庫的一部分，請選取下面的索引標籤並遵循步驟。

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

**在 Amazon Bedrock 中與您的文件聊天：**

1. 開啟位於 [https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/) Amazon Bedrock 主控台。

1. 從左側導覽窗格選取**知識庫**，然後選擇**與您的文件聊天**。

1. 在**與您的文件聊天**索引標籤中，選取**模型**下的**選取模型**。

1. 選擇您要用於文件分析的模型，然後選取**套用**。

1. 在**與您的文件聊天**索引標籤上輸入系統提示。

1. 在**資料**下選取**您的電腦**或 **S3**。

1. 選擇**選取文件**以上傳您的文件。您也可以在顯示**寫入查詢**的方塊中，在聊天主控台中拖放文件。
**注意**  
檔案類型：PDF、MD、TXT、DOC、DOCX、HTML、CSV、XLS、XLSX。使用小於 10MB 的檔案時有預設的固定字符限制。小於 10MB 的大量文字檔案可能會大於字符限制。

1. 在顯示**寫入查詢**的方塊中輸入自訂提示。您可以輸入自訂提示或使用預設提示。載入的文件和提示會顯示在聊天視窗底部。

1. 選取**執行**。回應會使用**顯示來源區塊**的選項產生搜尋結果，以顯示回答的來源資料資訊。

1. 若要載入新檔案，請選取 X 以刪除載入聊天視窗的目前檔案，然後拖放新檔案。輸入新的提示，然後選取**執行**。
**注意**  
選取新檔案會清除先前的查詢和回應，並開始新的工作階段。

------

# 設定使用者或角色的許可，以建立和管理知識庫
<a name="knowledge-base-prereq-permissions-general"></a>

若要讓使用者或角色執行與 Amazon Bedrock 知識庫相關的動作，您必須將授予執行動作許可的政策連接至該使用者或角色。它描述允許使用者從這些知識庫擷取資訊並從中產生回應的許可。

展開下列各節，了解如何設定特定使用案例的許可：

## 允許角色建立知識庫並進行管理
<a name="w2aac28c10c21b7b1"></a>

若要允許 IAM 角色建立知識庫、將其連線至結構化資料存放區、管理知識庫，以及啟動和管理從資料來源到知識庫的擷取任務，您必須提供 `KnowledgeBase`、`DataSource` 和 `IngestionJob` 動作的許可。若要提供標記知識庫的許可，請包含 `bedrock:TagResource` 和 `bedrock:UntagResource` 的許可。

**注意**  
如果使用者或角色已連接 [AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess) AWS 受管政策，您可以略過此先決條件。

若要允許角色執行這些動作，請將下列政策連接至角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CreateKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:CreateKnowledgeBase"
            ],
            "Resource": "*"
        },
        {
            "Sid": "KBDataSourceManagement",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase",
                "bedrock:ListKnowledgeBases",
                "bedrock:UpdateKnowledgeBase",
                "bedrock:DeleteKnowledgeBase",
                "bedrock:StartIngestionJob",
                "bedrock:GetIngestionJob",
                "bedrock:ListIngestionJobs",
                "bedrock:StopIngestionJob",
                "bedrock:TagResource",
                "bedrock:UntagResource"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/*"
            ]
        }
    ]
}
```

------

建立知識庫之後，建議您將萬用字元 (*\$1*) 取代為您建立的知識庫 ID，以縮小 `KBDataSourceManagement` 陳述式中的許可範圍。

## 允許角色執行知識庫 API 操作
<a name="w2aac28c10c21b7b3"></a>

本節說明為知識庫執行 `Retrieve` 和 `RetrieveAndGenerate` API 操作所需的許可。

將下列政策連接至該角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        },
        {
            "Sid": "Retrieve",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        },
        {
            "Sid": "RetrieveAndGenerate",
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

您可以移除不需要的陳述式，視您的使用案例而定：
+ `GetKB` 陳述式用於取得知識庫資訊。
+ 呼叫 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 需要 `Retrieve` 陳述式，才能從資料存放區擷取資料。
+ 呼叫 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 需要 `RetrieveAndGenerate` 陳述式，才能從資料存放區擷取資料，並根據資料產生回應。

## 請求存取 RetrieveAndGenerate 的基礎模型
<a name="knowledge-base-prereq-structured-model-access"></a>

如果您計劃使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 根據從資料來源擷取的資料來產生回應，請遵循 [存取 Amazon Bedrock 基礎模型](model-access.md) 中的步驟，請求存取基礎模型以用於產生。

若要進一步限制許可，您可以忽略動作，也可以指定要篩選許可的資源和條件索引鍵。如需動作、資源和條件索引鍵的詳細資訊，請參閱*服務授權參考*中的下列主題：
+ [Amazon Bedrock 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions) – 了解動作、您可以在 `Resource` 欄位中限制其範圍的資源類型，以及您可以在 `Condition` 欄位中篩選許可的條件索引鍵。
+ [Amazon Bedrock 定義的資源類型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies) – 了解 Amazon Bedrock 中的資源類型。
+ [Amazon Bedrock 的條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) – 了解 Amazon Bedrock 中的條件索引鍵。

# 透過連線至資料來源來建立知識庫
<a name="knowledge-base-build"></a>

Amazon Bedrock 知識庫支援存放在資料來源中的各種檔案類型。為了從資料來源解譯資料，Amazon Bedrock 知識庫需要將資料轉換為向量嵌入，即資料的數值表示。這些嵌入項目可以與查詢的向量表示進行比較，以評估相似性，並判斷在資料擷取期間要傳回的來源。

將您的知識庫連線至資料來源涉及下列一般步驟：

1. 將知識庫連線至支援的資料來源。

1. 如果您的資料來源包含多模態資料，包括影像、音訊和影片檔案，您必須選擇支援多模態內容的適當處理方法和內嵌模型。
**注意**  
多模態資料僅支援 Amazon S3 和自訂資料來源。如需使用多模態內容的完整指引，請參閱 [建立多模態內容的知識庫](kb-multimodal.md)。

1. 選擇嵌入模型，將資料來源中的資料轉換為向量嵌入。

1. 選擇向量存放區以存放資料的向量表示。

1. 同步您的資料，使其轉換為向量嵌入。

1. 如果您修改資料來源中的資料，則必須重新同步變更。

**Topics**
+ [使用非結構化資料來源建立 Amazon Bedrock 知識庫的先決條件](knowledge-base-prereq.md)
+ [搭配 Amazon Bedrock 知識庫使用 OpenSearch 受管叢集所需的先決條件和許可](kb-osm-permissions-prereq.md)
+ [透過連線至 Amazon Bedrock 知識庫中的資料來源來建立知識庫](knowledge-base-create.md)
+ [將您的資料與您的 Amazon Bedrock 知識庫同步](kb-data-source-sync-ingest.md)
+ [將變更直接擷取到知識庫](kb-direct-ingestion.md)
+ [檢視 Amazon Bedrock 知識庫的資料來源資訊](kb-ds-info.md)
+ [修改 Amazon Bedrock 知識庫的資料來源](kb-ds-update.md)
+ [從 Amazon Bedrock 知識庫刪除資料來源](kb-ds-delete.md)

# 使用非結構化資料來源建立 Amazon Bedrock 知識庫的先決條件
<a name="knowledge-base-prereq"></a>

Amazon Bedrock 知識庫需要資料和模型來擷取和產生回應、向量存放區來存放資料的向量表示，以及存取資料和執行動作的 AWS Identity and Access Management 許可。

您必須先滿足下列先決條件，才能建立知識庫。如需一般許可要求，請參閱 [設定使用者或角色的許可，以建立和管理知識庫](knowledge-base-prereq-permissions-general.md)

1. 請確定您的資料位於[支援的資料來源連接器](data-source-connectors.md)中。

1. (選用) [設定您自己的支援向量存放區](knowledge-base-setup.md)。如果您打算使用 AWS 管理主控台 來自動為您建立向量存放區，則可以略過此步驟。

1. （選用） 遵循 中的指示，建立具有適當許可的 custom AWS Identity and Access Management (IAM) [服務角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)[為 Amazon Bedrock 知識庫建立服務角色](kb-permissions.md)。您可以使用 AWS 管理主控台 為您自動建立服務角色。
**注意**  
如果您要使用 Amazon OpenSearch Service (包括 Amazon OpenSearch Serverless) 建立知識庫，則服務角色需要超出 AWS 受管 BedrockFullAccess 政策涵蓋範圍的額外許可。這些包括 `aoss:CreateAccessPolicy`、`iam:CreateServiceLinkedRole` 和 `iam:CreateRole` 許可。

1. (選用) 依照 [知識庫資源的加密](encryption-kb.md) 中的步驟設定額外的安全組態。

1. (選用) 如果您計劃使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 操作根據從知識庫擷取的資訊產生回應，請遵循 [存取 Amazon Bedrock 基礎模型](model-access.md) 中的步驟，請求存取您將在其中使用模型的區域中使用的模型。

**Topics**
+ [Amazon Bedrock 知識庫資料的先決條件](knowledge-base-ds.md)
+ [使用您為知識庫建立的向量存放區的先決條件](knowledge-base-setup.md)

# Amazon Bedrock 知識庫資料的先決條件
<a name="knowledge-base-ds"></a>

資料來源包含檔案或內容，其中包含查詢知識庫時可擷取的資訊。您必須將文件或內容存放在至少一個[支援的資料來源](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)中。

## 支援的知識庫資料文件格式和限制
<a name="kb-ds-supported-doc-formats-limits"></a>

當您連線至[支援的資料來源](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)時，內容會擷取至您的知識庫。

如果您使用 Amazon S3 存放檔案或資料來源包含連接檔案，則必須先檢查每個來源文件檔案是否遵循下列各項：
+ 來源檔案採用下列支援的格式：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-ds.html)
+ 每個檔案的大小不超過 50 MB 的配額。

如果您使用 Amazon S3 或自訂資料來源，則可以使用多模態資料，包括 JPEG (.jpeg) 或 PNG (.png) 影像，或包含資料表、圖表或其他影像的檔案。

**注意**  
.JPEG 和 .PNG 檔案的大小上限為 3.75 MB。

# 使用您為知識庫建立的向量存放區的先決條件
<a name="knowledge-base-setup"></a>

若要存放轉換文件的向量嵌入，請使用向量存放區。Amazon Bedrock 知識庫支援某些向量存放區的快速建立流程，因此如果您偏好 Amazon Bedrock 自動在其中一個向量存放區中為您建立向量索引，請略過此先決條件並繼續 [透過連線至 Amazon Bedrock 知識庫中的資料來源來建立知識庫](knowledge-base-create.md)。

如果您想要儲存二進位向量嵌入而非標準浮點 (float32) 向量嵌入，則必須使用支援二進位向量的向量存放區。

**注意**  
Amazon OpenSearch Serverless 和 Amazon OpenSearch 受管叢集是唯一支援存放二進位向量的向量存放區。

您可以設定自己的支援向量存放區，為資料的向量嵌入表示編製索引。您可以為下列資料建立欄位：
+ 透過您選擇的嵌入模型，從資料來源中的文字產生的向量欄位。
+ 從資料來源中的檔案擷取的文字區塊欄位。
+ Amazon Bedrock 管理的來源檔案中繼資料欄位。
+ (如果您使用 Amazon Aurora 資料庫，並想要設定[中繼資料的篩選](kb-test-config.md)) 與來源檔案建立關聯的中繼資料欄位。如果您打算在其他向量存放區中設定篩選，則不需要設定這些欄位進行篩選。

您可以使用 KMS 金鑰加密的第三方向量存放區。如需詳細資訊，請參閱[知識庫資源的加密](https://docs.aws.amazon.com/bedrock/latest/userguide/encryption-kb.html)。

選取與向量存放區服務對應，且您將用來建立向量索引的索引標籤。

**注意**  
您選擇的嵌入模型和向量維度可能會影響可用的向量存放區選擇。如果您無法使用偏好的向量存放區，請選擇嵌入模型和向量維度的相容選項。

------
#### [ Amazon OpenSearch Serverless ]

1. 若要在 Amazon OpenSearch Serverless 中設定許可和建立向量搜尋集合 AWS 管理主控台，請遵循《Amazon OpenSearch Service 開發人員指南》中的[使用向量搜尋集合](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html)的步驟 1 和 2。設定集合時，請注意下列考量事項：

   1. 為集合提供您選擇的名稱和描述。

   1. 若要將您的集合設為私有，請選取**安全性**區段的**標準建立**。然後，在**網路存取設定**區段中，選取 **VPC** 作為**存取類型**，然後選擇 VPC 端點。如需為 Amazon OpenSearch Serverless 集合設定 VPC 端點的詳細資訊，請參閱《Amazon OpenSearch Service 開發人員指南》中的[使用介面端點存取 Amazon OpenSearch Serverless (AWS PrivateLink)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html)。

1. 建立集合之後，請在建立知識庫時記下**集合 ARN**。

1. 在左側導覽窗格中，選取**無伺服器**下的**集合**。然後選取向量搜尋集合。

1. 選取**索引**索引標籤。然後選擇**建立向量索引**。

1. 在**向量索引詳細資訊**區段中，在**向量索引名稱**欄位中輸入索引的名稱。

1. 在**向量欄位**區段中，選擇**新增向量欄位**。Amazon Bedrock 會將資料來源的向量嵌入存放在此欄位。提供下列組態：
   + **向量欄位名稱** – 提供欄位的名稱 (例如 **embeddings**)。
   + **引擎** – 用於搜尋的向量引擎。選取 **faiss**。
   + **維度** — 向量中的維度數。請參閱下表，以判斷向量應包含多少維度：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)
   + **距離指標** — 用於測量向量之間相似性的指標。我們建議將 **Euclidean** 用於浮點向量嵌入。

1. 展開**中繼資料管理**區段並新增兩個欄位來設定向量索引，以存放知識庫可以使用向量擷取的其他中繼資料。下表說明要為每個欄位指定的欄位和值：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)

1. 請記下您在建立知識庫時為向量索引名稱、向量欄位名稱和中繼資料管理對應欄位名稱選擇的名稱。然後選擇 **Create (建立)**。

建立向量索引之後，您可以繼續[建立知識庫](knowledge-base-create.md)。下表摘要說明您將輸入所記下每個資訊的位置。


| 欄位 | 知識庫設定 (主控台) 中的對應欄位 | 知識庫設定 (API) 中的對應欄位 | Description | 
| --- | --- | --- | --- | 
| 集合 ARN | 集合 ARN | collectionARN | 向量搜尋集合的 Amazon Resource Name (ARN)。 | 
| 向量索引名稱 | 向量索引名稱 | vectorIndexName | 向量索引的名稱。 | 
| 向量欄位名稱 | 向量欄位 | vectorField | 存放資料來源向量嵌入的欄位名稱。 | 
| 中繼資料管理 (第一個對應欄位) | 文字欄位 | textField | 要從資料來源存放原始文字的欄位名稱。 | 
| 中繼資料管理 (第二個對應欄位) | Bedrock 受管中繼資料欄位 | metadataField | 存放 Amazon Bedrock 管理之中繼資料的欄位名稱。 | 

如需在 Amazon OpenSearch Serverless 中設定向量存放區的詳細文件，請參閱《Amazon OpenSearch Service 開發人員指南》中的[使用向量搜尋集合](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html)。

------
#### [ Amazon OpenSearch Service Managed Clusters ]

**重要**  
在 OpenSearch 受管叢集中使用任何網域資源之前，您需要設定特定 IAM 存取許可和政策。如需詳細資訊，請參閱[搭配 Amazon Bedrock 知識庫使用 OpenSearch 受管叢集所需的先決條件和許可許可組態概觀](kb-osm-permissions-prereq.md)。
如果您遇到資料擷取失敗，可能表示 OpenSearch 網域容量不足。若要解決此問題，請透過佈建較高的 IOPS 和增加輸送量設定來增加網域的容量。如需詳細資訊，請參閱 [Amazon OpenSearch Service 的操作最佳實務](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/bp.html)。

1. 若要在 AWS 管理主控台中的 OpenSearch 叢集中建立網域和向量索引，請遵循《Amazon OpenSearch Service 開發人員指南》**中的[建立和管理 OpenSearch Service 網域](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)中所述的步驟。

   設定您的網域時，請注意下列考量事項：

   1. 您選擇的網域名稱。

   1. 我們建議您使用**輕鬆建立**選項快速開始建立您的網域。
**注意**  
此選項為您提供低輸送量的網域。如果您有較大的工作負載需要更高的輸送量，請選擇**標準建立**選項。您可以視需要稍後調整容量。使用此選項，您可以從最低容量開始，之後即可視需要修改。

   1. 對於網路，您必須選擇**公開存取**。您的知識庫不支援 VPC 後方的 OpenSearch 網域。

   1. 對於**版本**，如果您使用的是二進位向量嵌入，Amazon Bedrock 知識庫需要 2.16 或更新版本的引擎版本。此外，建立 k-nn 索引需要 2.13 或更新版本。如需詳細資訊，請參閱《Amazon OpenSearch Service 開發人員指南》**中的 [K-NN 搜尋](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/knn.html)。

   1. 我們建議您使用**雙堆疊模式**。

   1. 我們建議您啟用**精細的存取控制**來保護網域中的資料，並進一步控制授予知識庫服務角色存取 OpenSearch 網域和提出請求的許可。

   1. 將所有其他設定保留為其預設值，然後選擇**建立**以建立您的網域。

1. 建立網域後，請按一下該網域，以便在建立知識庫時記下**網域 ARN** 和**網域端點**。

1. 建立網域之後，您可以在 OpenSearch 儀表板上執行下列命令或使用 curl 命令來建立向量索引。如需詳細資訊，請參閱 [OpenSearch 文件](https://opensearch.org/docs/latest/search-plugins/knn/knn-index/)。

   執行命令時：
   + 提供向量欄位的名稱 (例如 **embeddings**)。
   + 請確定用於搜尋的向量為 **faiss**。不支援 **nmslib**。
   + 如需向量中的維度數目，請參閱下表，以判斷向量應包含多少維度：
**注意**  
Titan V2 Embeddings - 文字模型支援多個維度。它也可以是 256 或 512。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)
   + 您可以新增兩個欄位來設定向量索引，以存放知識庫可以使用向量擷取的其他中繼資料。下表說明要為每個指定的欄位和值。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)

   ```
   PUT /<index-name>
   {
       "settings": {
           "index": {
               "knn": true
           }
       },
       "mappings": {
           "properties": {
               "<vector-name>": {
                   "type": "knn_vector",
                   "dimension": <embedding-dimension>,
                   "data_type": "binary",          # Only needed for binary embeddings
                   "space_type": "l2" | "hamming", # Use l2 for float embeddings and hamming for binary embeddings
                   "method": {
                       "name": "hnsw",
                       "engine": "faiss",
                       "parameters": {
                           "ef_construction": 128,
                           "m": 24
                       }
                   }
               },
   
               "AMAZON_BEDROCK_METADATA": {
                   "type": "text",
                   "index": "false"
               },
               "AMAZON_BEDROCK_TEXT_CHUNK": {
                   "type": "text",
                   "index": "true"            
               }
           }
       }
   }
   ```

1. 請記下網域 ARN 和端點，以及您在建立知識庫時為向量索引名稱、向量欄位名稱和中繼資料管理對應欄位名稱選擇的名稱。

建立向量索引之後，您可以繼續[建立知識庫](knowledge-base-create.md)。下表摘要說明您將輸入所記下每個資訊的位置。


| 欄位 | 知識庫設定 (主控台) 中的對應欄位 | 知識庫設定 (API) 中的對應欄位 | Description | 
| --- | --- | --- | --- | 
| 網域 ARN | 網域 ARN | domainARN | OpenSearch 網域的 Amazon Resource Name (ARN)。 | 
| 網域端點 | 網域端點 | domainEndpoint | 要連線至 OpenSearch 網域的端點。 | 
| 向量索引名稱 | 向量索引名稱 | vectorIndexName | 向量索引的名稱。 | 
| 向量欄位名稱 | 向量欄位 | vectorField | 存放資料來源向量嵌入的欄位名稱。 | 
| 中繼資料管理 (第一個對應欄位) | 文字欄位 | textField | 要從資料來源存放原始文字的欄位名稱。 | 
| 中繼資料管理 (第二個對應欄位) | Bedrock 受管中繼資料欄位 | metadataField | 存放 Amazon Bedrock 管理之中繼資料的欄位名稱。 | 

------
#### [ Amazon S3 Vectors ]

Amazon S3 Vectors 在 Amazon S3 中提供具成本效益的向量儲存，可用於存放和查詢向量資料。它為大型向量資料集提供耐久且彈性的儲存，以及不到一秒的查詢效能。Amazon S3 Vectors 最適合非經常性查詢工作負載，而且在檢索增強生成 (RAG) 和語義搜尋應用程式中使用時，可協助降低成本。

Amazon S3 Vectors 推出 S3 向量儲存貯體，其中包含您可以根據語意意義和相似性查詢的向量索引。它可用來提供不到一秒的查詢回應時間，並降低成本，同時大規模儲存、存取和查詢向量資料，而無需佈建任何基礎設施。在向量儲存貯體中，您可以在向量索引中組織向量資料。您的向量儲存貯體可以有多個向量索引。如需詳細資訊，請參閱《Amazon S3 使用者指南》**中的 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。

**注意**  
您可以在可使用 Amazon Bedrock 和 Amazon S3 Vectors 的所有 AWS 區域中建立 Amazon S3 Vectors 的知識庫。如需有關 Amazon S3 Vectors 區域可用性的資訊，請參閱《Amazon S3 使用者指南》**中的 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。
在 Amazon Bedrock 知識庫中使用非常高的字符計數搭配階層式區塊時，您可以超過中繼資料大小上限，因為父子區塊關係和階層內容會儲存為 Amazon S3 向量中不可篩選的中繼資料。如需每個向量中繼資料大小限制的詳細資訊，請參閱《*Amazon S3 使用者指南*》中的[限制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-limitations.html)。如需分塊策略的資訊，請參閱 [內容群集如何適用於知識庫](kb-chunking.md)。
<a name="metadata-support"></a>
**中繼資料支援**  
您可以將中繼資料做為索引鍵/值對連接至每個向量。根據預設，中繼資料是可篩選的，可用於相似性搜尋查詢，以依日期、類別或使用者偏好設定等條件進行篩選。

您也可以在建立向量索引時，將中繼資料設定為不可篩選。Amazon S3 向量索引支援字串、布林值和數字類型。

搭配 Amazon Bedrock 知識庫使用 Amazon S3 Vectors 時，您最多可以連接 1 KB 的自訂中繼資料 （包括可篩選和不可篩選的中繼資料），以及每個向量 35 個中繼資料金鑰。如需每個向量中繼資料大小限制的詳細資訊，請參閱《*Amazon S3 使用者指南*》中的[限制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-limitations.html)。

如果中繼資料超過這些限制，則擷取任務會在填入向量索引時擲回例外狀況。如需詳細資訊，請參閱《Amazon S3 使用者指南》**中的 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。

**所需的許可**  
請確定您的 IAM 政策允許 Amazon Bedrock 存取 S3 向量儲存貯體中的向量索引。如需所需許可的詳細資訊，請參閱[為 Amazon Bedrock 知識庫建立服務角色](kb-permissions.md)。

**建立 S3 向量儲存貯體和索引**  
若要將 Amazon S3 Vectors 與知識庫搭配使用，您需要建立 S3 向量儲存貯體和向量索引。您可以使用 Amazon S3 主控台 AWS CLI或 AWS SDK 建立向量儲存貯體和索引。如需詳細說明，請參閱《Amazon S3 使用者指南》**中的[建立向量索引](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-index-create.html)。

在 [Amazon S3 主控台](https://console.aws.amazon.com/s3/vector-buckets#)中建立向量儲存貯體和索引時，請注意下列考量事項。

1. 建立 S3 向量儲存貯體時，請注意下列考量事項。
   + 提供唯一的**向量儲存貯體名稱**。
   + (選用) Amazon S3 會使用預設的**使用 Amazon S3 受管金鑰 (SSE-S3) 的伺服器端加密**自動加密資料。您可以選擇是否使用此預設加密，還是**使用 AWS Key Management Service 金鑰 (SSE-KMS) 進行伺服器端加密**。
**注意**  
建立向量儲存貯體後，就無法變更加密類型。

     如需step-by-step說明，請參閱[使用 AWS KMS 金鑰加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-bucket-encryption.html)。

1. 建立 S3 向量儲存貯體之後，請在建立知識庫時記下向量儲存貯體的 **Amazon Resource Name (ARN)**。

1. 選擇您建立的向量儲存貯體，然後建立向量索引。建立向量索引時，請注意下列考量事項。
   + **向量索引名稱** – 提供欄位的名稱 (例如 **embeddings**)。
   + **維度** — 向量中的維度數。維度必須是介於 1 到 4096 之間的值。請參閱下表，根據您選取的嵌入模型，判斷向量應包含多少維度：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)
   + 
**注意**  
Amazon S3 Vectors 僅支援浮點嵌入。不支援二進位嵌入。

     **距離指標** — 用於測量向量之間相似性的指標。您可以使用 **Cosine** 或 **Euclidean**。

1. 展開**其他設定**，並在**不可篩選的中繼資料**欄位中提供任何不可篩選的中繼資料。

   您最多可以設定 10 個不可篩選的中繼資料金鑰。選擇**新增金鑰**，然後新增 `AMAZON_BEDROCK_TEXT` 和 `AMAZON_BEDROCK_METADATA` 作為金鑰。

1. 在**加密**下，選擇**指定加密類型**。您可以選擇**使用儲存貯體設定進行加密**，或覆寫向量索引的加密設定。如果您覆寫儲存貯體層級設定，您可以選擇將向量索引的加密類型指定為**使用 AWS Key Management Service 金鑰 (SSE-KMS) 的伺服器端加密**，或使用 **Amazon S3 受管金鑰 (SSE-S3) 的預設伺服器端加密**。如需設定向量索引加密組態的詳細資訊，請參閱 [Amazon S3 Vectors 中的資料保護和加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-data-encryption.html)。

1. 在**標籤 （選用）** 下，您可以將標籤新增為鍵值對，以協助使用 AWS Billing and Cost Management 追蹤和組織向量索引成本。輸入 **Key (索引鍵)** 和 **Value (數值)**。若要新增其他標籤，選擇 **Add Tag (新增標籤)**。您可以為向量索引輸入最多 50 個標籤。如需詳細資訊，請參閱[搭配 Amazon S3 向量索引使用標籤](https://docs.aws.amazon.com/console/s3/vector-index-create-with-tag)。

1. 當您建立知識庫時，請建立向量索引並記下向量索引的 **Amazon Resource Name (ARN)**。

**建立 S3 向量儲存貯體的知識庫**  
收集此資訊後，您可以繼續[建立知識庫](knowledge-base-create.md)。使用 S3 向量儲存貯體建立知識庫時，您需要提供向量儲存貯體的 ARN 和向量索引。向量索引將存放從資料來源產生的嵌入。下表摘要說明您將輸入每個資訊的位置：


| 欄位 | 知識庫設定 (主控台) 中的對應欄位 | 知識庫設定 (API) 中的對應欄位 | Description | 
| --- | --- | --- | --- | 
| 向量儲存貯體 ARN | S3 向量儲存貯體 ARN | vectorBucketArn | S3 向量儲存貯體的 Amazon Resource Name (ARN)。 | 
| 向量索引 ARN | S3 向量索引 ARN | vectorIndexARN | S3 向量儲存貯體向量索引的 Amazon Resource Name (ARN)。 | 

------
#### [ Amazon Aurora (RDS) ]

1. 遵循[使用 Aurora PostgreSQL 作為知識庫](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.VectorDB.html)的步驟，建立 Amazon Aurora 資料庫 (DB) 叢集、結構描述和資料表。建立資料表時，請使用下列資料欄和資料類型進行設定。您可以使用自己喜歡的資料欄名稱，而不是下表中列出的資料欄名稱。記下您選擇的資料欄名稱，以便您可以在知識庫設定期間提供這些資料欄名稱。

   您必須先提供這些欄位，才能建立知識庫。建立知識庫後，不會更新它們。
**重要**  
Aurora 叢集必須與為 Amazon Bedrock 建立知識庫 AWS 帳戶 的叢集位於相同的 中。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)

1. 您必須在資料欄向量和文字上為您的文字和嵌入欄位建立索引。如果您使用的是自訂中繼資料欄位，您也必須在此資料欄上建立 GIN 索引。GIN 索引可用來有效搜尋 jsonb 文件中的鍵值對，以進行中繼資料篩選。如需詳細資訊，請參閱 [PostgreSQL 文件](https://www.postgresql.org/docs/current/datatype-json.html#JSON-INDEXING)中的 *jsonb indexing*。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)
**注意**  
為了改善英文內容的混合搜尋準確性和延遲，請考慮使用「英文」字典，而不是「簡單」：  

   ```
   CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('english', chunks));
   ```

1. (選用) 如果您[將中繼資料新增至檔案以進行篩選](kb-test-config.md)，建議您在自訂中繼資料欄位中提供資料欄名稱，將所有中繼資料存放在單一資料欄中。在[資料擷取](kb-data-source-sync-ingest.md)期間，此資料欄將填入來自資料來源的中繼資料檔案中的所有資訊。如果您選擇提供此欄位，則必須在此資料欄上建立 GIN 索引。
**注意**  
如果您經常在數值中繼資料上使用範圍篩選條件，則若要最佳化效能，請為特定索引鍵建立索引。例如，如果您使用 `"lessThan": { "key": "year", "value": 1989 }` 等篩選條件，請在 `year` 索引鍵上建立表達式索引。如需詳細資訊，請參閱 *PostgreSQL 文件*中的[運算式上的索引](https://www.postgresql.org/docs/current/indexes-expressional.html)。  

   ```
   CREATE INDEX ON your_table ((custom_metadata->>'year')::double precision
   ```

   或者，如果您不提供此欄位名稱，您可以為檔案中的每個中繼資料屬性建立資料欄，並指定資料類型 (文字、數字或布林值)。例如，如果您的資料來源中存在屬性 `genre`，您可以新增名為 `genre` 的資料欄，並將 `text` 指定為資料類型。在[資料擷取](kb-data-source-sync-ingest.md)期間，這些個別的資料欄會填入對應的屬性值。

1. 遵循[使用 Amazon Aurora 和 進行密碼管理中的步驟，為您的 Aurora AWS Secrets Manager](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-secrets-manager.html) 資料庫叢集設定 AWS Secrets Manager 秘密。

1. 建立資料庫叢集並設定秘密之後，請注意下列資訊。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)

------
#### [ Neptune Analytics graphs (GraphRAG) ]

1. 若要在 AWS 管理主控台中的 Neptune Analytics 中建立圖形和向量存放區，請遵循《Neptune Analytics 使用者指南》**中的 [Neptune Analytics 中的向量索引](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/vector-index.html)中所述的步驟。
**注意**  
若要使用 Neptune GraphRAG，請使用向量搜尋索引建立空的 Neptune Analytics 圖形。向量搜尋索引只能在建立圖形時建立。當您[在主控台中建立 Neptune Analytics 圖形](https://docs.aws.amazon.com/neptune-analytics/latest/userguide/create-graph-using-console.html)時，您可以在程序即將結束時的**向量搜尋設定**下指定索引維度。

   建立圖形時請注意下列考量事項：

   1. 為圖形提供您選擇的名稱。

   1. 在**資料來源**下，選擇**建立空白圖形**，然後指定要配置的 m-NCU 數目。每個 m-NCU 都有大約 1 GiB 的記憶體容量和對應的運算和聯網。
**注意**  
您可以稍後修改圖形的容量。我們建議您從最小執行個體開始，然後視需要選擇不同的執行個體。

   1. 您可以保留預設的網路連線設定。Amazon Bedrock 將建立與 Neptune Analytics 圖形的聯網連線，您可以將知識庫與其建立關聯。您不需要為圖形設定公有連線或私有端點。

   1. 在**向量搜尋設定**下，選擇**使用向量維度**，並指定每個向量中的維度數目。
**注意**  
每個向量中的維度必須與嵌入模型中的向量維度相符。請參閱下表，以判斷向量應包含多少維度：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)

   1. 將所有其他設定保留為預設值並建立圖形。

1. 建立圖形後，按一下該圖形，以便在建立知識庫時記下**資源 ARN** 和**向量維度**。在 Amazon Bedrock 中選擇嵌入模型時，請務必選擇與 Neptune Analytics 圖形上設定的**向量維度**具有相同維度的模型。

建立向量索引之後，您可以繼續[建立知識庫](knowledge-base-create.md)。下表摘要說明您將輸入所記下每個資訊的位置。


| 欄位 | 知識庫設定 (主控台) 中的對應欄位 | 知識庫設定 (API) 中的對應欄位 | Description | 
| --- | --- | --- | --- | 
| 圖形 ARN | Neptune Analytics 圖形 ARN | graphARN | Neptune Analytics 圖形的 Amazon Resource Name (ARN)。 | 
| 中繼資料管理 (第一個對應欄位) | 文字欄位名稱 | textField | 要從資料來源存放原始文字的欄位名稱。您可以為此欄位提供任何值，例如文字。 | 
| 中繼資料管理 (第二個對應欄位) | Bedrock 受管中繼資料欄位 | metadataField | 存放 Amazon Bedrock 管理之中繼資料的欄位名稱。您可以為此欄位提供任何值，例如中繼資料。 | 

------
#### [ Pinecone ]

**注意**  
如果您使用 Pinecone，即表示您同意授權 代表您 AWS 存取指定的第三方來源，以便為您提供向量存放區服務。您有責任遵守適用於從第三方服務使用和傳輸資料的任何第三方條款。

如需在 Pinecone 中設定向量存放區的詳細文件，請參閱 [Pinecone 作為 Amazon Bedrock 知識庫](https://docs.pinecone.io/docs/amazon-bedrock)。

設定向量存放區時，請注意下列資訊，以便在建立知識庫時填寫這些資訊：
+ **端點 URL** – 索引管理頁面的端點 URL。
+ **登入資料秘密 ARN** – 您在 中建立的秘密的 Amazon Resource Name (ARN) AWS Secrets Manager ，其中包含資料庫使用者的使用者名稱和密碼。
+ **(選用) 憑證機密 ARN 的客戶受管 KMS 金鑰** – 如果您加密憑證機密 ARN，請提供 KMS 金鑰，以便 Amazon Bedrock 可以將其解密。
+ **命名空間** – (選用) 用來將新資料寫入資料庫的命名空間。如需詳細資訊，請參閱[使用命名空間](https://docs.pinecone.io/docs/namespaces)。

建立 Pinecone 索引時，您必須提供其他組態：
+ **文字欄位名稱** – Amazon Bedrock 應將原始區塊文字存放在其中的欄位名稱。
+ **中繼資料欄位名稱** – Amazon Bedrock 應將來源歸因中繼資料存放在其中的欄位名稱。

若要存取 Pinecone 索引，您必須透過 AWS Secrets Manager提供您的 Pinecone API 金鑰給 Amazon Bedrock。

**為您的 Pinecone 組態設定一個秘密**

1. 遵循[建立 AWS Secrets Manager 秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中的步驟，將金鑰設定為 `apiKey` ，並將值設定為 API 金鑰以存取您的Pinecone索引。

1. 若要找到您的 API 金鑰，請打開您的 [Pinecone 主控台](https://app.pinecone.io/)，然後選擇 **API 金鑰**。

1. 建立秘密之後，請記下 KMS 金鑰的 ARN。

1. 依照 [解密包含知識庫之向量存放區的 AWS Secrets Manager 秘密的許可](encryption-kb.md#encryption-kb-3p) 中的步驟將許可連接至您的服務角色，以解密 KMS 金鑰的 ARN。

1. 稍後，當您建立知識庫時，請在**憑證機密 ARN** 欄位中輸入 ARN。

------
#### [ Redis Enterprise Cloud ]

**注意**  
如果您使用 Redis Enterprise Cloud，即表示您同意授權 代表您 AWS 存取指定的第三方來源，以便為您提供向量存放區服務。您有責任遵守適用於從第三方服務使用和傳輸資料的任何第三方條款。

如需在 Redis Enterprise Cloud 中設定向量存放區的詳細文件，請參閱[整合 Redis Enterprise Cloud 與 Amazon Bedrock](https://docs.redis.com/latest/rc/cloud-integrations/aws-marketplace/aws-bedrock/)。

設定向量存放區時，請注意下列資訊，以便在建立知識庫時填寫這些資訊：
+ **端點 URL** – 資料庫的公用端點 URL。
+ **向量索引名稱** — 資料庫的向量索引名稱。
+ **向量欄位** — 將存放向量嵌入項目的欄位名稱。請參閱下表，以判斷向量應包含多少維度。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/knowledge-base-setup.html)
+ **文字欄位** – Amazon Bedrock 存放原始文字區塊的欄位名稱。
+ **Bedrock 受管中繼資料欄位** – Amazon Bedrock 存放與知識庫相關中繼資料的欄位名稱。

若要存取您的 Redis Enterprise Cloud 叢集，您必須透過 AWS Secrets Manager提供 Redis Enterprise Cloud 安全組態給 Amazon Bedrock。

**為您的 Redis Enterprise Cloud 組態設定一個秘密**

1. 遵循 [Transport Layer Security (TLS)](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/) 中的步驟，啟用 TLS 以將您的資料庫與 Amazon Bedrock 搭配使用。

1. 請遵循[建立 AWS Secrets Manager 秘密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中的步驟。使用秘密中 Redis Enterprise Cloud 組態的適當值設定下列金鑰：
   + `username` – 存取 Redis Enterprise Cloud 資料庫的使用者名稱。若要尋找您的使用者名稱，請查看 [Redis 主控台](http://app.redislabs.com/)內資料庫的**安全性**區段下方。
   + `password` – 存取 Redis Enterprise Cloud 資料庫的密碼。若要尋找您的使用者名，請查看 [Redis 主控台](http://app.redislabs.com/)內資料庫的**安全性**區段下方。
   + `serverCertificate`— 來自 Redis 雲端憑證授權單位的憑證內容。依照[下載憑證](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)的步驟，從 Redis 管理主控台下載伺服器憑證。
   + `clientPrivateKey`— 來自 Redis 雲端憑證授權單位之憑證的私密金鑰。依照[下載憑證](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)的步驟，從 Redis 管理主控台下載伺服器憑證。
   + `clientCertificate`— Redis 雲端憑證授權單位的憑證公有金鑰。依照[下載憑證](https://docs.redis.com/latest/rc/security/database-security/tls-ssl/#download-certificates)的步驟，從 Redis 管理主控台下載伺服器憑證。

1. 建立秘密之後，請記下其 ARN。稍後，當您建立知識庫時，請在**憑證機密 ARN** 欄位中輸入 ARN。

------
#### [ MongoDB Atlas ]

**注意**  
如果您使用 MongoDB Atlas，您同意授權 代表您 AWS 存取指定的第三方來源，以便為您提供向量存放區服務。您有責任遵守適用於從第三方服務使用和傳輸資料的任何第三方條款。

如需在 MongoDB Atlas 中設定向量存放區的詳細文件，請參閱[使用 MongoDB Atlas 和 Amazon Bedrock 啟動全受管 RAG 工作流程](https://www.mongodb.com/developer/products/atlas/rag-workflow-with-atlas-amazon-bedrock/)。

設定向量存放區時，請注意下列資訊，以便在建立知識庫時新增這些資訊：
+ **端點 URL** – MongoDB Atlas 叢集的端點 URL。
+ **資料庫名稱** – MongoDB Atlas 叢集中的資料庫名稱。
+ **集合名稱** – 資料庫中集合的名稱。
+ **登入資料秘密 ARN** – 您在 中建立的秘密的 Amazon Resource Name (ARN) AWS Secrets Manager ，其中包含 MongoDB Atlas 叢集中資料庫使用者的使用者名稱和密碼。秘密必須包含名為 `username` 和 `password` 的金鑰。
+ **(選用) 憑證機密 ARN 的客戶受管 KMS 金鑰** – 如果您加密憑證機密 ARN，請提供 KMS 金鑰，以便 Amazon Bedrock 可以將其解密。

建立 MongoDB Atlas 索引時，您必須提供**欄位對應**的額外的組態：
+ **向量索引名稱** – 集合上 MongoDB Atlas 向量搜尋索引的名稱。
+ **向量欄位名稱** – Amazon Bedrock 應將向量嵌入儲存在其中的欄位名稱。
+ **文字欄位名稱** – Amazon Bedrock 應將原始區塊文字存放在其中的欄位名稱。
+ **中繼資料欄位名稱** – Amazon Bedrock 應將來源歸因中繼資料存放在其中的欄位名稱。
+ **(選用) 文字搜尋索引名稱** – 集合上 MongoDB Atlas 搜尋索引的名稱。

**重要**  
如果您打算搭配 MongoDB Atlas 知識庫使用中繼資料篩選，您必須在向量索引中手動設定篩選條件。根據預設，中繼資料篩選無法運作，並且需要在 MongoDB Atlas 向量索引組態中額外設定。

（選用） 若要讓 Amazon Bedrock 連接至 MongoDB Atlas 叢集 AWS PrivateLink，請參閱[使用 Amazon Bedrock 搭配 MongoDB Atlas 的 RAG 工作流程](https://www.mongodb.com/developer/products/atlas/rag-workflow-with-atlas-amazon-bedrock/)。

------

# 搭配 Amazon Bedrock 知識庫使用 OpenSearch 受管叢集所需的先決條件和許可
<a name="kb-osm-permissions-prereq"></a>

本節說明如何在使用 Amazon OpenSearch Service 受管叢集建立自己的向量資料庫時設定許可。必須先執行此組態，才能建立知識庫。這些步驟假設您已在 Amazon OpenSearch Service 中建立網域和向量索引。如需詳細資訊，請參閱《Amazon OpenSearch Service 開發人員指南》**中的[建立和管理 OpenSearch Service 網域](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html)。

## 關鍵考量
<a name="kb-osm-permissions-prereq-considerations"></a>

以下是搭配 Amazon OpenSearch Service 受管叢集使用 Amazon Bedrock 知識庫的一些重要考量事項。
+ 在 OpenSearch 受管叢集中使用任何網域資源之前，您需要設定特定 IAM 存取許可和政策。對於知識庫與受管叢集的整合，執行本節中的步驟之前，如果您的網域具有限制存取政策，您必須授予必要的 IAM 存取並設定資源型政策。我們也建議您設定精細的存取控制，以縮小許可的範圍。
+ 擷取知識庫的資料時，如果遇到失敗，可能表示 OpenSearch 網域容量不足以處理擷取速度。若要解決此問題，請透過佈建較高的 IOPS (每秒輸入/輸出操作數) 和增加輸送量設定來增加網域的容量。等待幾分鐘以佈建新容量，然後重試擷取程序。若要確認問題已解決，您可以在重試程序期間監控效能。如果限流仍然存在，您可能需要進一步調整容量以提高效率。如需詳細資訊，請參閱 [Amazon OpenSearch Service 的操作最佳實務](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/bp.html)。

## 許可組態概觀
<a name="kb-osm-permissions-prereq-overview"></a>

若要將知識庫與受管叢集整合，您需要設定下列 IAM 存取許可和資源型政策。我們建議您啟用精細的存取政策，以進一步控制使用者存取及其必須縮小至屬性層級的精細程度。

下列步驟提供如何設定許可的高階概觀。

1. 

**建立和使用知識庫服務角色**

   對於您要設定的許可，雖然您仍然可以提供自己的自訂角色，我們建議您指定選項，讓 Amazon Bedrock 知識庫為您建立知識庫服務角色。

1. 

**設定資源型政策**

   OpenSearch 網域支援資源型政策，以決定哪些主體可以存取網域並對其採取行動。若要搭配使用知識庫，請確保網域的資源型政策組態正確。

1. 

***(強烈建議)* 為精細的存取控制提供角色對應**

   雖然精細的存取控制是選用的，但建議您啟用它來控制精細程度，在屬性層級必須縮小許可範圍。

## 設定 IAM 政策
<a name="kb-osm-permissions-iam"></a>

您網域的存取政策必須授予許可，讓您帳戶中角色執行所需的 OpenSearch API 動作。

如果您的網域具有限制性存取政策，則可能需要更新，如下所示：
+ 它應該授予 Amazon Bedrock 服務的存取權，並包含必要的 HTTP 動作：`GET`、`POST`、`PUT` 和 `DELETE`。
+ 它也必須授予 Amazon Bedrock 在您的索引資源上執行 `es:DescribeDomain` 動作的許可。這可讓 Amazon Bedrock 知識庫在設定知識庫時執行必要的驗證。

## (選用) 精細的存取控制
<a name="kb-osm-permissions-console-fgap"></a>

精細的存取控制可以控制在屬性層級必須縮小許可範圍精細程度。您可以設定精細的存取政策，將所需的讀寫許可授予知識庫建立的服務角色。

若要設定精細的存取控制並提供角色對應：

1. 請確定您建立的 OpenSearch 網域已啟用精細的存取控制。

1. 如果您尚未建立 OpenSearch UI (Dashboards)，請予以建立。這將用於設定角色對應

1. 在您的 OpenSearch Dashboards 中，建立 OpenSearch 角色並指定向量索引名稱，以及叢集和索引許可。若要新增許可，您必須建立許可群組，然後新增必要的許可，以授予對角色執行一組操作的存取權，包括 `delete`、`search`、`get` 和 `index`。

1. 新增必要的許可之後，您必須輸入 OpenSearch 後端角色的知識庫服務角色 ARN。執行此步驟將完成知識庫服務角色與 OpenSearch 角色之間的對應，然後授予 Amazon Bedrock 知識庫存取 OpenSearch 網域中向量索引的許可，並執行必要的操作。

**Topics**
+ [關鍵考量](#kb-osm-permissions-prereq-considerations)
+ [許可組態概觀](#kb-osm-permissions-prereq-overview)
+ [設定 IAM 政策](#kb-osm-permissions-iam)
+ [(選用) 精細的存取控制](#kb-osm-permissions-console-fgap)
+ [設定 OpenSearch 受管叢集的資源型政策](kb-osm-permissions-slr-rbp.md)
+ [使用精細的存取控制設定 OpenSearch 許可](kb-osm-permissions-console-fgap.md)

# 設定 OpenSearch 受管叢集的資源型政策
<a name="kb-osm-permissions-slr-rbp"></a>

建立知識庫時，您可以建立自己的自訂角色，或讓 Amazon Bedrock 為您建立一個角色。設定許可的方式取決於您是建立新角色還是使用現有角色。如果您已經有現有的 IAM 角色，您必須確保網域的存取政策不會防止帳戶中的角色執行必要的 OpenSearch API 動作。

如果您選擇讓 Amazon Bedrock 知識庫為您建立 IAM 角色，您必須確保網域的存取政策授予許可，讓您帳戶中的角色執行必要的 OpenSearch API 動作。如果您的網域具有限制性存取政策，其可能會防止您的角色執行這些動作。以下顯示限制性資源型政策的範例。

在這種情況下，您可以：
+ 使用 OpenSearch 網域可以授予此角色存取權的現有 IAM 角色建立知識庫，以執行必要的操作。
+ 或者，您可以讓 Amazon Bedrock 為您建立新的角色。在此情況下，您必須確保網域的存取政策必須授予許可，讓您帳戶中的角色執行必要的 OpenSearch API 動作。

以下各節顯示授予必要許可的範例 IAM 政策，以及如何更新網域的存取政策，以便授予執行必要 OpenSearch API 操作的許可。

**Topics**
+ [範例身分型和資源型政策](#kb-osm-permissions-iam)
+ [建立 Amazon Bedrock 知識庫服務角色](#kb-osm-permissions-slr)
+ [更新資源型政策](#kb-osm-permissions-console-rbp)

## 範例身分型和資源型政策
<a name="kb-osm-permissions-iam"></a>

本節提供範例身分政策和資源型政策，您可以在與 Amazon Bedrock 知識庫整合時為 OpenSearch 網域設定這些政策。您必須授予 Amazon Bedrock 許可，才能對您提供知識庫的索引執行這些動作。


****  

| Action | 資源 | Description | 
| --- | --- | --- | 
| es:ESHttpPost | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | 用於將資訊插入至索引 | 
| es:ESHttpGet |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | 用於從索引搜尋資訊。此動作是在 domain/index 層級和 domain/index/\$1 層級上設定的。在 domain/index 層級，它可以取得有關索引的高階詳細資訊，例如引擎類型。若要擷取儲存在索引中的詳細資訊，domain/index/\$1 層級需要許可。 | 
| es:ESHttpHead |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/kb-osm-permissions-slr-rbp.html)  | 用於從索引取得資訊。此動作是在 domain/index 層級和 domain/index/\$1 層級上設定的，以防需要在更高層級取得資訊，例如特定索引是否存在。 | 
| es:ESHttpDelete | arn:<partition>:es:<region>:<accountId>:domain/<domainName>/<indexName> | 用於刪除索引的資訊 | 
| es:DescribeDomain | arn:<partition>:es:<region>:<accountId>:domain/<domainName> | 用於對網域執行驗證，例如使用的引擎版本。 | 

### 範例身分型政策
<a name="kb-osm-permissions-idpolicy"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "OpenSearchIndexAccess",
            "Effect": "Allow",
            "Action": [
                "es:ESHttpGet",
                "es:ESHttpPost",
                "es:ESHttpPut",
                "es:ESHttpDelete"
            ],
            "Resource": [
                "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName/*"
            ]
        },
        {
            "Sid": "OpenSearchIndexGetAccess",
            "Effect": "Allow",
            "Action": [
                "es:ESHttpGet",
                "es:ESHttpHead"
            ],
            "Resource": [
            "arn:aws:es:us-east-1:123456789012:domain/domainName/indexName"
            ]
        },
        {
            "Sid": "OpenSearchDomainValidation",
            "Effect": "Allow",
            "Action": [
                "es:DescribeDomain"
            ],
            "Resource": [
            "arn:aws:es:us-east-1:123456789012:domain/domainName"
            ]
        }
    ]
}
```

------

### 範例資源型政策
<a name="kb-osm-permissions-rbp"></a>

**注意**  
請確定已建立服務角色，以便在資源型政策中使用。

## 建立 Amazon Bedrock 知識庫服務角色
<a name="kb-osm-permissions-slr"></a>

建立知識庫時，您可以選擇建立和使用新服務角色的選項。本節會逐步引導您建立 Amazon Bedrock 知識庫服務角色。透過將資源型政策和精細的存取政策對應到此角色，它將授予 Amazon Bedrock 向 OpenSearch 網域提出請求的許可。

**若要指定 Amazon Bedrock 知識庫服務角色：**

1. 在 Amazon Bedrock 主控台中，前往[知識庫](https://console.aws.amazon.com/bedrock/home#/knowledge-bases)。

1. 選擇**建立**，然後選擇**具有向量存放區的知識庫**。

1. 選擇**建立並使用新的服務角色**。您可以使用預設值，或提供自訂角色名稱，Amazon Bedrock 會自動為您建立知識庫服務角色。

1. 繼續透過主控台來設定資料來源，以及剖析和分塊策略。

1. 選擇嵌入模型，然後在**選擇現有的向量存放區**下，選擇 **Amazon OpenSearch 受管叢集**。

**重要**  
在您繼續建立知識庫之前，請完成下列步驟，以設定資源型政策和精細的存取政策。如需建立知識庫的詳細步驟，請參閱 [透過連線至 Amazon Bedrock 知識庫中的資料來源來建立知識庫](knowledge-base-create.md)。

## 更新資源型政策
<a name="kb-osm-permissions-console-rbp"></a>

如果您的 OpenSearch 網域具有限制性存取政策，您可以遵循此頁面上的指示來更新資源型政策。這些許可允許知識庫使用您提供的索引，並擷取 OpenSearch 網域定義，以對網域執行必要的驗證。

**從 設定資源型政策 AWS 管理主控台**

1. 前往 [Amazon OpenSearch Service 主控台](https://console.aws.amazon.com/aos/home?region=us-east-1#opensearch/dashboard)。

1. 前往您已建立的網域，然後前往設定資源型政策的**安全組態**。

1. 在 **JSON** 索引標籤中編輯政策，然後更新類似於 [範例資源型政策](#kb-osm-permissions-rbp) 的政策。

1. 您現在可以返回 Amazon Bedrock 主控台，並提供 OpenSearch 網域和索引的詳細資訊，如[受管叢集的知識庫設定](knowledge-base-setup.md#knowledge-base-setup-osm)中所述。

# 使用精細的存取控制設定 OpenSearch 許可
<a name="kb-osm-permissions-console-fgap"></a>

雖然為選用，我們強烈建議您為 OpenSearch 網域啟用精細的存取控制。使用精細的存取控制，您可以使用角色型存取控制，可讓您建立具有特定許可的 OpenSearch 角色，並將其對應至知識庫服務角色。對應會授予您的知識庫最低必要許可，允許其存取 OpenSearch 網域和索引並對其執行操作。

若要設定和使用精細的存取控制：

1. 請確定您使用的 OpenSearch 網域已啟用精細的存取控制。

1. 對於使用精細的存取控制的網域，以 OpenSearch 角色的形式設定縮小政策範圍的許可。

1. 對於您為其建立角色的網域，請將角色對應新增至知識庫服務角色。

下列步驟說明如何設定 OpenSearch 角色，並確保 OpenSearch 角色與知識庫服務角色之間的正確對應。

**建立 OpenSearch 角色並設定許可**  
啟用精細的存取控制並將 Amazon Bedrock 設定為連線至 OpenSearch Service 之後，您可以使用每個 OpenSearch 網域的 OpenSearch Dashboards 連結來設定許可。

**若要設定網域的許可以允許存取 Amazon Bedrock：**

1. 開啟 OpenSearch Dashboards，找到您要使用的 OpenSearch 網域。若要尋找 Dashboards 的連結，請前往您在 OpenSearch Service 主控台中建立的網域。對於執行 OpenSearch 的網域，URL 的格式為 `domain-endpoint/_dashboards/`。如需詳細資訊，請參閱《Amazon OpenSearch Service 開發人員指南》**中的 [Dashboards](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/dashboards.html)。

1. 在 OpenSearch Dashboards 中，選擇**安全性**，然後選擇**角色**。

1. 選擇建**立角色**。

1. 提供角色的任何名稱，例如 **kb\$1opensearch\$1role**。

1. 在**叢集許可**下，新增下列許可。
   + `indices:data/read/msearch`
   + `indices:data/write/bulk*`
   + `indices:data/read/mget*`

1. 在**索引許可**下，提供向量索引的名稱。選擇**建立新的許可群組**，然後選擇**建立新的動作群組**。將下列許可新增至動作群組，例如 `KnowledgeBasesActionGroup`。將下列許可新增至動作群組。
   + `indices:admin/get`
   + `indices:data/read/msearch`
   + `indices:data/read/search`
   + `indices:data/write/index`
   + `indices:data/write/update`
   + `indices:data/write/delete`
   + `indices:data/write/delete/byquery`
   + `indices:data/write/bulk*`
   + `indices:admin/mapping/put`
   + `indices:data/read/mget*`  
![\[在 OpenSearch Dashboards 中建立的動作群組，用於新增叢集和索引許可。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/kb-test-os-action-groups.png)

1. 選擇**建立**以建立 OpenSearch 角色。

以下顯示新增許可的範例 OpenSearch 角色。

![\[OpenSearch Dashboards 中新增許可的範例 OpenSearch 角色。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/kb-test-os-dashboards-permissions.png)


**建立角色對應至您的知識庫服務角色**

1. 識別需要對應的 IAM 角色。
   + 如果您建立了自己的自訂 IAM 角色，您可以從 IAM 主控台複製此角色的角色 ARN。
   + 如果您允許知識庫為您建立角色，您可以在建立知識庫時記下角色 ARN，然後複製此角色 ARN。

1. 開啟 OpenSearch Dashboards，找到您要使用的 OpenSearch 網域。URL 的格式為 `domain-endpoint/_dashboards/`。

1. 從導覽窗格中，選擇**安全**。

1. 搜尋您剛從清單中建立的角色，例如 **kb\$1opensearch\$1role**，然後開啟它。

1. 在**已對應的使用者**索引標籤上，選擇**管理對應**。

1. 在**後端角色**區段中，輸入知識庫受 AWS 管 IAM 角色的 ARN。根據您是否建立自己的自訂角色或讓知識庫為您建立角色，從 IAM 主控台或 Amazon Bedrock 主控台複製角色 ARN 資訊，然後在 OpenSearch 主控台中輸入**後端角色**的資訊。以下是範例。

   ```
   arn:aws:iam::<accountId>:role/service-role/<knowledge-base-service-role>
   ```

1. 選擇**對應**。

   知識庫服務角色現在可以連線至 OpenSearch 角色，並對網域和索引執行必要的操作。

# 透過連線至 Amazon Bedrock 知識庫中的資料來源來建立知識庫
<a name="knowledge-base-create"></a>

當您透過連線至資料來源來建立知識庫時，您可以設定或指定下列項目：
+ 定義和識別知識庫的一般資訊
+ 具有知識庫許可的服務角色。
+ 知識庫的組態，包括從資料來源轉換資料時使用的嵌入模型、存放嵌入之服務的儲存組態，以及選擇性存放多模態資料的 S3 位置。

**注意**  
您無法使用根使用者建立知識庫。請先使用 IAM 使用者登入，再開始這些步驟。

展開與使用案例對應的區段：

## 使用主控台
<a name="knowledge-base-create-console"></a>

**設定知識庫**

1. AWS 管理主控台使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，選擇建立按鈕，然後選取以使用向量存放區建立知識庫。

1. (選用) 變更預設名稱並提供知識庫的描述。

1. 選擇 AWS Identity and Access Management(IAM) 角色，提供 Amazon Bedrock 存取其他必要AWS服務的許可。您可以讓 Amazon Bedrock 建立服務角色，或選擇使用自己的[您為 Neptune Analytics 建立的自訂角色](kb-permissions.md#kb-permissions-neptune)。

1. 選擇要連線知識庫的資料來源。

1. (選用) 將標籤新增至您的知識庫。如需詳細資訊，請參閱[標記 Amazon Bedrock 資源](tagging.md)。

1. (選用) 為您的知識庫設定要交付活動日誌的服務。

1. 前往下一節，並遵循 [將資料來源連結至知識庫](data-source-connectors.md) 中的步驟來設定資料來源。

1. 在**嵌入模型**區段中，執行下列動作：

   1. 選擇嵌入模型，以將您的資料轉換為向量嵌入。對於多模態資料 （影像、音訊和視訊），選取多模態內嵌模型，例如 Amazon Titan 多模態內嵌 G1 或 Cohere Embed v3。
**注意**  
使用 Amazon Titan Multimodal Embeddings G1 時，您必須提供 S3 內容儲存貯體，並且只能使用預設剖析器。此模型已針對影像搜尋使用案例進行最佳化。如需在多模式方法之間選擇的完整指引，請參閱 [建立多模態內容的知識庫](kb-multimodal.md)。

   1. (選用) 展開**其他組態**區段，查看下列組態選項 (並非所有模型都支援所有組態)：
      + **嵌入類型** – 是否要將資料轉換為浮點 (float32) 向量嵌入 (更精確，但較昂貴) 或二進位向量嵌入 (較不精確，但成本較低)。若要了解哪些嵌入模型支援二進位向量，請參閱[支援的嵌入模型](knowledge-base-supported.md)。
      + **向量維度** – 較高的值可提高準確性，但會增加成本和延遲。

1. 在**向量資料庫**區段中，執行下列動作：

   1. 選擇向量存放區以存放將用於查詢的向量嵌入。您有下列選項：
      + **快速建立新的向量存放區** – 選擇其中一個可供 Amazon Bedrock 建立的向量存放區。您也可以選擇性地設定向量存放區的AWS KMS金鑰加密。
**注意**  
使用此選項時，Amazon Bedrock 會自動處理每個向量存放區的中繼資料放置。
        + **Amazon OpenSearch Serverless** – Amazon Bedrock 知識庫會建立 Amazon OpenSearch Serverless 向量搜尋集合和索引，並使用必要欄位為您進行設定。
        + **Amazon Aurora PostgreSQL Serverless** – Amazon Bedrock 會設定 Amazon Aurora PostgreSQL Serverless 向量存放區。此程序會從 Amazon S3 儲存貯體取得非結構化文字資料，將其轉換為文字區塊和向量，然後將它們存放在 PostgreSQL 資料庫中。如需詳細資訊，請參閱[快速建立 Aurora PostgreSQL Amazon Bedrock 知識庫](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.quickcreatekb.html)。
        + **Amazon Neptune Analytics** – Amazon Bedrock 使用檢索增強生成 (RAG) 技術與圖形結合，以增強生成式 AI 應用程式，以便最終使用者可以獲得更準確且全面的回應。
        + **Amazon S3 Vectors** – Amazon Bedrock 知識庫會建立 S3 向量儲存貯體和向量索引，以存放從資料來源產生的嵌入。

          您可以在可使用 Amazon Bedrock 和 Amazon S3 Vectors 的所有 AWS 區域中建立 Amazon S3 Vectors 的知識庫。如需詳細資訊，請參閱《Amazon S3 使用者指南》**中的 [Amazon S3 Vectors](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors.html)。
**注意**  
搭配 Amazon Bedrock 知識庫使用 Amazon S3 Vectors 時，您最多可以連接 1 KB 的自訂中繼資料 （包括可篩選和不可篩選的中繼資料），以及每個向量 35 個中繼資料金鑰。如需中繼資料限制的詳細資訊，請參閱 [中繼資料支援](knowledge-base-setup.md#metadata-support)中的 [使用您為知識庫建立的向量存放區的先決條件](knowledge-base-setup.md)。
      + **選擇您已建立的向量存放區** – 選取支援的向量存放區，並在向量索引中識別向量欄位名稱和中繼資料欄位名稱。如需詳細資訊，請參閱[使用您為知識庫建立的向量存放區的先決條件](knowledge-base-setup.md)。
**注意**  
如果您的資料來源是 Confluence、Microsoft SharePoint 或 Salesforce 執行個體，則唯一支援的向量存放區服務是 Amazon OpenSearch Serverless。

   1. (選用) 展開**其他組態**區段，並修改任何相關的組態。

1. 如果您的資料來源包含影像，請指定 Amazon S3 URI，以在其中存放剖析器將從**多模態儲存目的地**中的資料擷取的影像。您可以在查詢期間傳回影像。您也可以選擇性地選擇客戶受管金鑰，而非預設金鑰AWS 受管金鑰來加密您的資料。
**注意**  
多模態資料僅支援 Amazon S3 和自訂資料來源。
**注意**  
使用多模式內嵌模型時：  
Amazon Titan Multimodal Embeddings G1 需要 S3 內容儲存貯體，並且最適合使用預設剖析器的影像限定資料集
Cohere Embed v3 支援混合文字和影像資料集，可與任何剖析器組態搭配使用
對於影像搜尋使用案例，避免使用 Bedrock Data Automation (BDA) 或基礎模型剖析器搭配 Titan G1，因為字符限制
多模式儲存目的地會建立用於擷取目的的檔案副本，這可能會產生額外的儲存費用

1. 選擇**下一步**並檢閱知識庫的詳細資訊。您可以在繼續和建立知識庫之前編輯任何區段。
**注意**  
建立知識庫所需的時間取決於您的特定組態。建立知識庫完成後，知識庫的狀態會變更為就緒或可用。  
一旦您的知識庫準備就緒且可用，請於首次以及每當您想要將內容保持在最新狀態時同步您的資料來源。在主控台中選取您的知識庫，然後在資料來源概觀區段中選取**同步**。

## 使用 API
<a name="knowledge-base-create-api"></a>

若要建立知識庫，請使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 請求。

**注意**  
如果您希望讓 Amazon Bedrock 為您建立和管理向量存放區，請使用主控台。如需詳細資訊，請展開本主題中的**使用主控台**區段。

下列是必要欄位：


****  

| 欄位 | 基本描述 | 
| --- | --- | 
| name | 知識庫的名稱 | 
| roleArn | [Amazon Bedrock 知識庫服務角色](kb-permissions.md)的 ARN。 | 
| knowledgeBaseConfiguration | 包含知識庫的組態。請參閱下列詳細資訊。 | 
| storageConfiguration | (只有在您連線至非結構化資料來源時才需要)。包含您選擇的資料來源服務的組態。 | 

以下是選填欄位:


****  

| 欄位 | 使用案例 | 
| --- | --- | 
| description | 知識庫的描述。 | 
| clientToken | 為確保 API 請求，僅完成一次。如需詳細資訊，請參閱[確保冪等性](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)。 | 
| 標籤 | 將標籤與流程建立關聯。如需詳細資訊，請參閱[標記 Amazon Bedrock 資源](tagging.md)。 | 

在對應至 [KnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseConfiguration.html) 物件的 `knowledgeBaseConfiguration` 欄位中，在 `type` 欄位中指定 `VECTOR`，並包含 [VectorKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorKnowledgeBaseConfiguration.html) 物件。在物件中，包含下列欄位：
+ `embeddingModelArn` – 要使用的嵌入模型 ARN。
+ `embeddingModelConfiguration` – 嵌入模型的組態。若要查看您可以為每個支援的模型指定的可能值，請參閱 [Amazon Bedrock 知識庫支援的模型和區域](knowledge-base-supported.md)。
+ (如果您計劃在知識庫中納入包含影像、圖表或資料表的多模態資料) `supplementalDataStorageConfiguration` – 對應至 [SupplementalDataStorageLocation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SupplementalDataStorageLocation.html) 物件，您可以在其中指定要存放擷取資料的 S3 位置。如需詳細資訊，請參閱[剖析資料來源的選項](kb-advanced-parsing.md)。

在對應至 [StorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StorageConfiguration.html) 物件的 `storageConfiguration` 欄位中，指定您計劃在 `type` 欄位中連線的向量存放區，並包含對應至該向量存放區的欄位。如需您需要提供資訊的詳細資訊，請參閱 [StorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StorageConfiguration.html) 中的每個向量存放區組態類型。

以下顯示建立連線至 Amazon OpenSearch Serverless 集合之知識庫的範例請求。來自連線資料來源的資料將轉換為使用 Amazon Titan Text Embeddings V2 的二進位向量嵌入，且剖析器擷取的多模態資料會設定為存放在名為 *MyBucket* 的儲存貯體中。

```
PUT /knowledgebases/ HTTP/1.1
Content-type: application/json

{
   "name": "MyKB",
   "description": "My knowledge base",
   "roleArn": "arn:aws:iam::111122223333:role/service-role/AmazonBedrockExecutionRoleForKnowledgeBase_123",
   "knowledgeBaseConfiguration": {
      "type": "VECTOR",
      "vectorKnowledgeBaseConfiguration": { 
         "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-embed-text-v2:0",
         "embeddingModelConfiguration": { 
            "bedrockEmbeddingModelConfiguration": { 
               "dimensions": 1024,
               "embeddingDataType": "BINARY"
            }
         },
         "supplementalDataStorageConfiguration": { 
            "storageLocations": [ 
               { 
                  "s3Location": { 
                     "uri": "arn:aws:s3:::MyBucket"
                  },
                  "type": "S3"
               }
            ]
         }
      }
   },
   "storageConfiguration": { 
      "opensearchServerlessConfiguration": { 
         "collectionArn": "arn:aws:aoss:us-east-1:111122223333:collection/abcdefghij1234567890",
         "fieldMapping": { 
            "metadataField": "metadata",
            "textField": "text",
            "vectorField": "vector"
         },
         "vectorIndexName": "MyVectorIndex"
      }
   }
}
```

**Topics**
+ [將資料來源連結至知識庫](data-source-connectors.md)
+ [自訂資料來源的擷取](kb-data-source-customize-ingestion.md)
+ [為知識庫設定安全組態](kb-create-security.md)

# 將資料來源連結至知識庫
<a name="data-source-connectors"></a>

完成知識庫的設定後，您就可以將支援的資料來源連結到知識庫。

Amazon Bedrock 知識庫支援透過查詢引擎連結至非結構化資料來源或結構化資料存放區。選取主題以了解如何連結至該類型的資料來源：

**多模態內容支援**  
只有 Amazon S3 和自訂資料來源支援多模態內容 （影像、音訊和影片檔案）。其他資料來源類型會在擷取期間略過多模態檔案。如需使用多模態內容的完整指引，請參閱 [建立多模態內容的知識庫](kb-multimodal.md)。

若要了解如何使用 Amazon Bedrock 主控台連結至資料來源，請選取此頁面底部的與資料來源類型對應的主題：

若要使用 Amazon Bedrock API 連結至資料來源，請使用 [Amazon Bedrock 代理程式執行時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)傳送 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 請求。

下列是必要欄位：


****  

| 欄位 | 基本描述 | 
| --- | --- | 
| knowledgeBaseId | 知識庫的 ID。 | 
| name | 知識庫的名稱。 | 
| dataSourceConfiguration | 在 type 欄位中指定資料來源服務或類型，且包含對應的欄位。如需服務特定組態的詳細資訊，請從此頁面底部的主題中選取服務的主題。 | 

以下是選填欄位：


****  

| 欄位 | 使用案例 | 
| --- | --- | 
| description | 提供資料來源的描述。 | 
| vectorIngestionConfiguration | 包含用於自訂擷取程序的組態。如需詳細資訊，請參閱[自訂資料來源的擷取](kb-data-source-customize-ingestion.md)。 | 
| dataDeletionPolicy | 指定要對向量存放區中的向量嵌入進行 RETAIN，還是對他們進行 DELETE。 | 
| serverSideEncryptionConfiguration | 若要在資料與客戶自管金鑰同步期間加密暫時性資料，請在 kmsKeyArn 欄位中指定其 ARN。 | 
| clientToken | 為確保 API 請求，僅完成一次。如需詳細資訊，請參閱[確保冪等性](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)。 | 

選取主題以進一步了解服務並加以設定。

**Topics**
+ [連接至知識庫的 Amazon S3](s3-data-source-connector.md)
+ [連結至知識庫的 Confluence](confluence-data-source-connector.md)
+ [連接至 Microsoft SharePoint 以取得知識庫](sharepoint-data-source-connector.md)
+ [連接至 Salesforce 以取得知識庫](salesforce-data-source-connector.md)
+ [為您的知識庫網路爬取網頁](webcrawl-data-source-connector.md)
+ [將知識庫連結到自訂資料來源](custom-data-source-connector.md)

# 連接至知識庫的 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)。

### 包含字首
<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"	
}
```

------

# 連結至知識庫的 Confluence
<a name="confluence-data-source-connector"></a>

Atlassian Confluence 是一款協作型工作管理工具，專為共用、儲存和進行專案規劃、軟體開發和產品管理而設計。您可以使用 [Amazon Bedrock 的 AWS 管理主控台](https://console.aws.amazon.com/bedrock/home)或 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API 來連結至 Amazon Bedrock 知識庫的 Confluence 執行個體 (請參閱 Amazon Bedrock [支援的 SDK 和 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html))。

**注意**  
Confluence 資料來源連接器目前為預覽版本，並可能會有所變更。  
Confluence 資料來源不支援多模態資料，例如資料表、圖表或其他影像。

Amazon Bedrock 支援連結至 Confluence Cloud 執行個體。目前，只有 Amazon OpenSearch Serverless 向量存放區可搭配此資料來源使用。

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

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

## 支援的功能
<a name="supported-features-confluence-connector"></a>
+ 自動偵測主要文件欄位
+ 包含/排除內容篩選條件
+ 新增、更新、刪除內容的增量內容同步
+ OAuth 2.0 身分驗證，使用 Confluence API 字符進行身分驗證

## 必要條件
<a name="prerequisites-confluence-connector"></a>

**在 Confluence 中，請確定您**：
+ 記下 Confluence 執行個體的 URL。例如，若是 Confluence Cloud，則為 *https://example.atlassian.net*。Confluence Cloud 的 URL 必須是基底 URL，結尾為 *.atlassian.net*。
+ 設定內含使用者名稱 (管理員帳戶的電子郵件) 和密碼 (Confluence API 字符) 的基本身分驗證憑證，以允許 Amazon Bedrock 連結至 Confluence Cloud 執行個體。如需如何建立 Confluence API 字符的相關資訊，請參閱 Atlassian 網站上的[管理 Atlassian 帳戶的 API 字符](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Create-an-API-token)。
+ (選用) 使用應用程式金鑰、應用程式秘密、存取字符和重新整理字符的憑證，來設定 OAuth 2.0 應用程式。如需詳細資訊，請參閱 Atlassian 網站上的 [OAuth 2.0 應用程式](https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/)。
+ 必須啟用特定讀取許可或範圍，OAuth 2.0 應用程式才能連結至 Confluence。

  Confluence API：
  + offline\$1access
  + read:content:confluence：檢視詳細內容 
  + read:content-details:confluence：檢視內容詳細資訊 
  + read:space-details:confluence：檢視空間詳細資訊
  + read:audit-log:confluence：檢視稽核記錄 
  + read:page:confluence：檢視頁面 
  + read:attachment:confluence：檢視和下載內容附件 
  + read:blogpost:confluence：檢視部落格文章 
  + read:custom-content:confluence：檢視自訂內容 
  + read:comment:confluence：檢視註解 
  + read:template:confluence：檢視內容範本 
  + read:label:confluence：檢視標籤 
  + read:watcher:confluence：檢視內容監看器 
  + read:relation:confluence：檢視實體關係 
  + read:user:confluence：檢視使用者詳細資訊 
  + read:configuration:confluence：檢視 Confluence 設定 
  + read:space:confluence：檢視空間詳細資訊 
  + read:space.property:confluence：檢視空間屬性 
  + read:user.property:confluence：檢視使用者屬性 
  + read:space.setting:confluence：檢視空間設定 
  + read:analytics.content:confluence：檢視內容的分析
  + read:content.property:confluence：檢視內容屬性
  + read:content.metadata:confluence：檢視內容摘要 
  + read:inlinetask:confluence：檢視任務 
  + read:task:confluence：檢視任務 
  + read:whiteboard:confluence：檢視白板 
  + read:app-data:confluence：讀取應用程式資料 
  + read:folder:confluence：檢視資料夾
  + read:embed:confluence：檢視 Smart Link 資料

**在您的 AWS 帳戶中，請確認已完成下列項目**：
+ 將身分驗證憑證存放在 [AWS Secrets Manager 機密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中，並記下機密的 Amazon Resource Name (ARN)。遵循此頁面上的**連線組態**指示，以包含必須在機密中包含的鍵/值對。
+ 在知識庫的 AWS Identity and Access Management (IAM) 角色/許可政策中包含要連接至資料來源的必要許可。如需將此資料來源新增至知識庫 IAM 角色的必要許可資訊，請參閱[存取資料來源的許可](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)。

**注意**  
如果使用主控台，您可以前往 AWS Secrets Manager 新增秘密，或在資料來源組態步驟的過程中使用現有的秘密。您可以在建立知識庫的主控台步驟中，為您建立具有所有必要許可的 IAM 角色。在您設定資料來源和其他組態之後，具有所有必要許可的 IAM 角色會套用至特定知識庫。  
建議定期更新或輪換憑證與機密。僅授予作業所需的最低存取層級，以確保自身安全。不建議您在資料來源之間重複使用憑證和機密。

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

若要連結至 Confluence 執行個體，您必須提供必要的組態資訊，Amazon Bedrock 才能存取和網路爬取資料。您也必須遵循 [必要條件](#prerequisites-confluence-connector)。

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

如需文件欄位的自動偵測、包含/排除篩選條件、增量同步、私密身分驗證憑證，以及這些運作方式的詳細資訊，請選取下列各項：

### 自動偵測主要文件欄位
<a name="ds-confluence-document-fields"></a>

資料來源連接器會自動偵測和網路爬取文件或內容的所有主要中繼資料欄位。例如，資料來源連接器可以網路爬取與您文件同等的文件內文、文件標題、文件建立或修改日期，或其他可能適用於文件的核心欄位。

**重要**  
如果內容包含敏感資訊，則 Amazon Bedrock 可能會使用敏感資訊來回應。

您可以將篩選運算子套用至中繼資料欄位，以協助您進一步改善回應的相關性。例如，文件「epoch\$1modification\$1time」或文件上次更新時間的 1970 年 1 月 1 日經過的秒數。您可以篩選最近的資料，其中「epoch\$1modification\$1time」*大於*特定數字。如需可套用至中繼資料欄位之篩選運算子的詳細資訊，請參閱[中繼資料和篩選](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。

### 包含/排除篩選條件
<a name="ds-confluence-inclusion-exclusion"></a>

您可以包含或排除網路爬取特定內容。例如，您可以指定排除字首/規則表達式模式，略過對檔案名稱中包含「私有」的任何檔案的網路爬取。您也可以指定包含字首/規則表達式模式，以包含特定內容實體或內容類型。如果您指定包含篩選條件和排除篩選條件，且兩者皆與文件相符，則排除篩選條件會優先，且不會網路爬取文件。

規則表達式模式的範例，用於排除或篩選檔案名稱中包含「私有」的 PDF 檔案：*".\$1private.\$1\$1\$1.pdf"*

您可以在下列內容類型上套用包含/排除篩選條件：
+ `Space`：唯一空格鍵
+ `Page`：主頁面標題
+ `Blog`：主要部落格標題
+ `Comment`：屬於特定頁面或部落格的註解。指定*回覆：頁面/部落格標題*
+ `Attachment`：附件檔案名稱及其副檔名

### 增量同步
<a name="ds-confluence-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)。

### 私密身分驗證憑證
<a name="ds-confluence-secret-auth-credentials"></a>

(如果使用基本身分驗證) 您在 AWS Secrets Manager 中的私密身分驗證憑證應包含這些鍵/值對：
+ `username`：*Atlassian 帳戶的管理員使用者電子郵件地址*
+ `password`：*Confluence API 字符*

(如果使用 OAuth 2.0 身分驗證) 您在 AWS Secrets Manager 中的私密身分驗證憑證應包含這些鍵/值對：
+ `confluenceAppKey`：*應用程式金鑰*
+ `confluenceAppSecret`：*應用程式秘密*
+ `confluenceAccessToken`：*應用程式存取字符*
+ `confluenceRefreshToken`：*應用程式重新整理字符*

**注意**  
Confluence OAuth2.0 **存取**字符的預設到期時間為 60 分鐘。如果此字符在資料來源同步 (同步任務) 時過期，Amazon Bedrock 將使用提供的**重新整理**字符來重新產生此字符。此重新產生會同時重新整理存取和重新整理字符。為了讓字符從目前同步任務更新到下一個同步任務，Amazon Bedrock 需要秘密憑證的寫入/放置許可，作為知識庫 IAM 角色的一部分。

**注意**  
您在 AWS Secrets Manager 中的秘密必須使用與知識庫相同的區域。

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

**將 Confluence 執行個體連結至知識庫**

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

1. 提供資料來源的名稱和選用的描述。

1. 提供 Confluence 執行個體 URL。例如，若是 Confluence Cloud，則為 *https://example.atlassian.net*。Confluence Cloud 的 URL 必須是基底 URL，結尾為 *.atlassian.net*。

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

1. 提供驗證資訊以連結到 Confluence 執行個體：
   + 若是基本身分驗證，請前往 AWS Secrets Manager 新增您的私密身分驗證憑證，或使用現有的 Amazon Resource Name (ARN) 作為您建立的密碼。您的密碼必須包含 Atlassian 帳戶的管理員使用者電子郵件地址作為使用者名稱，以及 Confluence API 字符來取代密碼。如需如何建立 Confluence API 字符的相關資訊，請參閱 Atlassian 網站上的[管理 Atlassian 帳戶的 API 字符](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Create-an-API-token)。
   + 若是 OAuth 2.0 身分驗證，請前往 AWS Secrets Manager 新增您的私密身分驗證憑證，或使用現有的 Amazon Resource Name (ARN) 作為您建立的密碼。您的密碼必須包含 Confluence 應用程式金鑰、應用程式私密、存取字符和重新整理字符。如需詳細資訊，請參閱 Atlassian 網站上的 [OAuth 2.0 應用程式](https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/)。

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

1. 選擇以使用篩選條件/規則表達式模式來包含或排除特定內容。否則將會網路爬取所有標準內容。

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

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

以下是 Amazon Bedrock 知識庫連結至 Confluence Cloud 的組態範例。您可以使用 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 create-data-source \
 --name "Confluence Cloud/SaaS connector" \
 --description "Confluence Cloud/SaaS data source connector for Amazon Bedrock to use content in Confluence" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://confluence-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":[{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":[{"maxTokens":"100","overlapPercentage":"10"}]}]}'

confluence-bedrock-connector-configuration.json
{
    "confluenceConfiguration": {
        "sourceConfiguration": {
            "hostUrl": "https://example.atlassian.net",
            "hostType": "SAAS",
            "authType": "OAUTH2_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-Confluence"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "Attachment",
                            "inclusionFilters": [
                                ".*\\.pdf"
                            ],
                            "exclusionFilters": [
                                ".*private.*\\.pdf"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "CONFLUENCE"
}
```

------

# 連接至 Microsoft SharePoint 以取得知識庫
<a name="sharepoint-data-source-connector"></a>

Microsoft SharePoint 是一種協作式以 Web 為基礎服務，可用於文件、網頁、網站、清單等。您可以使用 Amazon 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 知識庫的 SharePoint 執行個體。 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 

**注意**  
SharePoint 資料來源連接器目前為預覽版本，並可能會有所變更。  
Microsoft SharePoint 資料來源不支援多模態資料，例如資料表、圖表、圖表或其他影像。

Amazon Bedrock 支援連線至 SharePoint Online 執行個體。目前不支援網路爬取 OneNote 文件。目前，只有 Amazon OpenSearch Serverless 向量存放區可搭配此資料來源使用。

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

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

## 支援的功能
<a name="supported-features-sharepoint-connector"></a>
+ 自動偵測主要文件欄位
+ 包含/排除內容篩選條件
+ 新增、更新、刪除內容的增量內容同步
+ SharePoint 僅應用程式驗證

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

### SharePoint (線上)
<a name="prerequisites-sharepoint-connector-online"></a>

**在 SharePoint (線上) 中，完成下列步驟以使用 SharePoint 僅應用程式驗證：**
+ 請記下您的 SharePoint Online 網站 URL。例如，*https://yourdomain.sharepoint.com/sites/mysite*。您的 URL 開頭必須是 *https*，且包含 *sharepoint.com*。您的網站 URL 必須是實際的 SharePoint 網站，而不是 *sharepoint.com/* 或 *sites/mysite/home.aspx*
+ 請記下 SharePoint Online 執行個體 URL 的網域名稱。
+ 複製您的 Microsoft 365 租用戶 ID。您可以在 Microsoft Entra 入口網站的「屬性」中找到您的租用戶 ID。如需詳細資訊，請參閱[尋找您的 Microsoft 365 租用戶 ID](https://learn.microsoft.com/en-us/sharepoint/find-your-office-365-tenant-id)。
**注意**  
如需範例應用程式，請參閱 Microsoft Learn 網站上的[在 Microsoft Entra ID 註冊用戶端應用程式](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application) (舊稱為 Azure Active Directory)。
+ 設定 SharePoint 僅應用程式驗證。
+ 將許可授予 SharePoint 僅應用程式時，複製用戶端 ID 和用戶端機密值。如需詳細資訊，請參閱[使用 SharePoint 僅應用程式授予存取權](https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs)。
**注意**  
您不需要為 SharePoint 僅應用程式設定任何 API 許可。不過，您必須在 SharePoint 端設定應用程式許可。如需所需 APP 許可的詳細資訊，請參閱[使用 SharePoint 僅應用程式授予存取權](https://learn.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs)的 Microsoft 文件。

### AWS 帳戶
<a name="prerequisites-sharepoint-connector-account"></a>

**在您的帳戶中 AWS ，請確定您**：
+ 將身分驗證憑證存放在 [AWS Secrets Manager 機密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中，並記下機密的 Amazon Resource Name (ARN)。遵循此頁面上的**連線組態**指示，以包含必須在機密中包含的鍵/值對。
+ 在知識庫的 AWS Identity and Access Management (IAM) 角色/許可政策中包含要連接至資料來源的必要許可。如需此資料來源新增至知識庫 IAM 角色的必要許可資訊，請參閱[存取資料來源的許可](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)。

**注意**  
如果您使用 主控台，您可以前往 AWS Secrets Manager 新增秘密，或使用現有的秘密做為資料來源組態步驟的一部分。您可以在建立知識庫的主控台步驟中，為您建立具有所有必要許可 IAM 的角色。在您設定資料來源和其他組態之後，具有所有必要許可 IAM 的角色會套用至您的特定知識庫。  
建議定期更新或輪換憑證與機密。僅授予作業所需的最低存取層級，以確保自身安全。不建議您在資料來源之間重複使用憑證和機密。

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

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

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

如需文件欄位的自動偵測、包含/排除篩選條件、增量同步、私密身分驗證憑證，以及這些運作方式的詳細資訊，請選取下列各項：

### 自動偵測主要文件欄位
<a name="ds-sharepoint-document-fields"></a>

資料來源連接器會自動偵測和網路爬取文件或內容的所有主要中繼資料欄位。例如，資料來源連接器可以網路爬取與您文件同等的文件內文、文件標題、文件建立或修改日期，或其他可能適用於文件的核心欄位。

**重要**  
如果您的內容包含敏感資訊，則 Amazon Bedrock 可能會使用敏感資訊來回應 。

您可以將篩選運算子套用至中繼資料欄位，以協助您進一步改善回應的相關性。例如，文件「epoch\$1modification\$1time」或文件上次更新時間的 1970 年 1 月 1 日經過的秒數。您可以篩選最近的資料，其中「epoch\$1modification\$1time」*大於*特定數字。如需可套用至中繼資料欄位之篩選運算子的詳細資訊，請參閱[中繼資料和篩選](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。

### 包含/排除篩選條件
<a name="ds-sharepoint-inclusion-exclusion"></a>

您可以包含或排除網路爬取特定內容。例如，您可以指定排除字首/規則表達式模式，略過對檔案名稱中包含「私有」的任何檔案的網路爬取。您也可以指定包含字首/規則表達式模式，以包含特定內容實體或內容類型。如果您指定包含篩選條件和排除篩選條件，且兩者皆與文件相符，則排除篩選條件會優先，且不會網路爬取文件。

規則表達式模式的範例，用於排除或篩選檔案名稱中包含「私有」的 PDF 檔案：*".\$1private.\$1\$1\$1.pdf"*

您可以在下列內容類型上套用包含/排除篩選條件：
+ `Page`：主頁面標題
+ `Event`：事件名稱
+ `File`：附件與所有文件檔案的檔案名稱及其副檔名

目前不支援網路爬取 OneNote 文件。

### 增量同步
<a name="ds-sharepoint-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)。

### 私密身分驗證憑證
<a name="ds-sharepoint-secret-auth-credentials"></a>

使用僅限 SharePoint 應用程式的身分驗證時， 中的秘密身分驗證憑證 AWS Secrets Manager 必須包含這些鍵/值對：
+ `clientId`：*與您的 Microsoft Entra SharePoint 應用程式相關聯的用戶端 ID*
+ `clientSecret`：*與您的 Microsoft Entra SharePoint 應用程式相關聯的用戶端機密*
+ `sharePointClientId`：*註冊 SharePoint 僅應用程式驗證時產生的用戶端 ID*
+ `sharePointClientSecret`：*註冊 SharePoint 僅應用程式驗證時產生的用戶端機密*

**注意**  
您在 中的秘密 AWS Secrets Manager 必須使用與知識庫相同的區域。

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

**將 SharePoint 執行個體連接至知識庫**<a name="connect-sharepoint-console"></a>

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

1. 提供資料來源的名稱和選用的描述。

1. 提供您的 SharePoint 網站 URL。例如，若是 SharePoint Online，則為 *https://yourdomain.sharepoint.com/sites/mysite*。您的 URL 開頭必須是 *https*，且包含 *sharepoint.com*。您的網站 URL 必須是實際的 SharePoint 網站，而不是 *sharepoint.com/* 或 *sites/mysite/home.aspx*

1. 提供 SharePoint 執行個體的網域名稱。

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

1. 提供驗證資訊以連線到 SharePoint 執行個體：針對 SharePoint 僅應用程式驗證：

   1. 提供租用戶 ID。您可以在 Azure Active Directory 入口網站的「屬性」中找到您的租用戶 ID。

   1. 前往 AWS Secrets Manager 以新增您的秘密登入資料，或為您建立的秘密使用現有的 Amazon Resource Name (ARN)。您的機密必須包含當在租用戶層級或網站層級註冊僅應用程式時產生的 SharePoint 用戶端 ID 和 SharePoint 用戶端機密，以及當在 Entra 中註冊應用程式時產生的 Entra 用戶端 ID 和 Entra 用戶端機密。

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

1. 選擇以使用篩選條件/規則表達式模式來包含或排除特定內容。否則將會網路爬取所有標準內容。

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

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

以下是 Amazon Bedrock 知識庫連線至 SharePoint Online 的組態範例。您可以使用 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 "SharePoint Online connector" \
 --description "SharePoint Online data source connector for Amazon Bedrock to use content in SharePoint" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://sharepoint-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE"
```

**`sharepoint-bedrock-connector-configuration.json` 的內容**

```
{
    "sharePointConfiguration": {
        "sourceConfiguration": {
            "tenantId": "888d0b57-69f1-4fb8-957f-e1f0bedf64de",
            "hostType": "ONLINE",
            "domain": "yourdomain",
            "siteUrls": [
                "https://yourdomain.sharepoint.com/sites/mysite"
            ],
            "authType": "OAUTH2_SHAREPOINT_APP_ONLY_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-SharePoint"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "File",
                            "inclusionFilters": [
                                ".*\\.pdf"
                            ],
                            "exclusionFilters": [
                                ".*private.*\\.pdf"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "SHAREPOINT"
}
```

------

**重要**  
不建議使用 OAuth2.0 身分驗證。建議您使用 SharePoint 僅應用程式驗證。

## 使用 OAuth2.0
<a name="sharepoint-connector-oauth"></a>

使用 OAuth 2.0，您可以對與知識庫整合的 SharePoint 連接器進行驗證，並授權存取 SharePoint 資源。

### 先決條件
<a name="sharepoint-connector-oauth-prereq"></a>

**在 SharePoint 中，對於 OAuth 2.0 身分驗證，請確定您**：
+ 請記下您的 SharePoint Online 網站 URL。例如，*https://yourdomain.sharepoint.com/sites/mysite*。您的 URL 開頭必須是 *https*，且包含 *sharepoint.com*。您的網站 URL 必須是實際的 SharePoint 網站，而不是 *sharepoint.com/* 或 *sites/mysite/home.aspx*
+ 請記下 SharePoint Online 執行個體 URL 的網域名稱。
+ 複製您的 Microsoft 365 租用戶 ID。您可以在 Microsoft Entra 入口網站或 OAuth 應用程式的「屬性」中找到您的租用戶 ID。

  請記下管理員 SharePoint 帳戶的使用者名稱和密碼，並在註冊應用程式時複製用戶端 ID 和用戶端機密值。
**注意**  
如需範例應用程式，請參閱 Microsoft Learn 網站上的[在 Microsoft Entra ID 註冊用戶端應用程式](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application) (舊稱為 Azure Active Directory)。
+ 當您註冊應用程式時，需要特定讀取許可才能連線至 SharePoint。
  + SharePoint：AllSites.Read (委派) – 讀取所有網站集合中的項目
+ 您可能需要使用管理員使用者在 Azure 入口網站中關閉**安全預設值**。如需在 Azure 入口網站中管理安全預設設定的詳細資訊，請參閱 [Microsoft 文件以了解如何啟用/停用安全預設值](https://learn.microsoft.com/en-us/microsoft-365/business-premium/m365bp-conditional-access?view=o365-worldwide&tabs=secdefaults#security-defaults-1)。
+ 您可能需要關閉 SharePoint 帳戶中的多重要素驗證 (MFA)，才不會封鎖 Amazon Bedrock 網路爬取您的 SharePoint 內容。

若要完成先決條件，請確定您已完成 [AWS 帳戶](#prerequisites-sharepoint-connector-account) 中的步驟。

### 私密身分驗證憑證
<a name="sharepoint-secret-auth-credentials-oauth"></a>

對於 OAuth2.0 的連線組態，您可以執行與自動偵測主要文件欄位、包含/排除篩選條件和增量同步相同的步驟，如 [連線組態](#configuration-sharepoint-connector) 中所述。

**對於 OAuth 2.0 身分驗證，您在 中的秘密身分驗證憑證 AWS Secrets Manager 必須包含這些鍵/值對**。
+ `username`：*SharePoint 管理員使用者名稱*
+ `password`：*SharePoint 管理員密碼*
+ `clientId`：*OAuth 應用程式用戶端 ID*
+ `clientSecret`：*OAuth 應用程式用戶端機密*

### 將 SharePoint 執行個體連接至知識庫
<a name="sharepoint-connector-oauth-using"></a>

若要在使用 OAuth2.0 時將 SharePoint 執行個體連線至您的知識庫：
+ (主控台) 在主控台中，遵循[將 SharePoint 執行個體連接至知識庫](https://docs.aws.amazon.com/bedrock/latest/userguide/sharepoint-data-source-connector.html#connect-sharepoint-console)中所述的相同步驟。當您想要提供驗證資訊以連線到 SharePoint 執行個體時。
  + 提供租用戶 ID。您可以在 Azure Active Directory 入口網站的「屬性」中找到您的租用戶 ID。
  + 前往 AWS Secrets Manager 以新增秘密身分驗證憑證，或為您建立的秘密使用現有的 Amazon Resource Name (ARN)。您的機密必須包含 SharePoint 管理員使用者名稱和密碼，以及您已註冊的應用程式用戶端 ID 和用戶端機密。如需範例應用程式，請參閱 Microsoft Learn 網站上的[在 Microsoft Entra ID 註冊用戶端應用程式](https://learn.microsoft.com/en-us/azure/healthcare-apis/register-application) (舊稱為 Azure Active Directory)。
+ (API) 以下範例示範如何使用 `CreateDataSource` API 建立包含 OAuth2.0 連線資訊的資料來源。

  ```
  aws bedrock-agent create-data-source \
   --name "SharePoint Online connector" \
   --description "SharePoint Online data source connector for Amazon Bedrock to use content in SharePoint" \
   --knowledge-base-id "your-knowledge-base-id" \
   --data-source-configuration file://sharepoint-bedrock-connector-configuration.json \
   --data-deletion-policy "DELETE"
  ```

  **`sharepoint-bedrock-connector-configuration.json` 的內容**

  ```
  {
      "sharePointConfiguration": {
          "sourceConfiguration": {
              "tenantId": "888d0b57-69f1-4fb8-957f-e1f0bedf64de",
              "hostType": "ONLINE",
              "domain": "yourdomain",
              "siteUrls": [
                  "https://yourdomain.sharepoint.com/sites/mysite"
              ],
              "authType": "OAUTH2_CLIENT_CREDENTIALS",
              "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-SharePoint"
          },
          "crawlerConfiguration": {
              "filterConfiguration": {
                  "type": "PATTERN",
                  "patternObjectFilter": {
                      "filters": [
                          {
                              "objectType": "File",
                              "inclusionFilters": [
                                  ".*\\.pdf"
                              ],
                              "exclusionFilters": [
                                  ".*private.*\\.pdf"
                              ]
                          }
                      ]
                  }
              }
          }
      },
      "type": "SHAREPOINT"
  }
  ```

# 連接至 Salesforce 以取得知識庫
<a name="salesforce-data-source-connector"></a>

Salesforce 是一款用於管理支援、銷售和行銷團隊的客戶關係管理 (CRM) 工具。您可以使用 [Amazon Bedrock 的 AWS 管理主控台](https://console.aws.amazon.com/bedrock/home)或 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) API 來連線至 Amazon Bedrock 知識庫的 Salesforce 執行個體 (請參閱 Amazon Bedrock [支援的 SDK 和 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html))。

**注意**  
Salesforce 資料來源連接器目前為預覽版本，並可能會有所變更。  
Salesforce 資料來源不支援多模態資料，例如資料表、圖表或其他影像。

目前，只有 Amazon OpenSearch Serverless 向量存放區可搭配此資料來源使用。

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

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

## 支援的功能
<a name="supported-features-salesforce-connector"></a>
+ 自動偵測主要文件欄位
+ 包含/排除內容篩選條件
+ 新增、更新、刪除內容的增量內容同步
+ OAuth 2.0 身分驗證

## 必要條件
<a name="prerequisites-salesforce-connector"></a>

**在 Salesforce 中，請確定您**：
+ 請記下您的 Salesforce 執行個體 URL。例如，*https://company.salesforce.com/*。執行個體必須執行 Salesforce 連線應用程式。
+ 建立 Salesforce 連線應用程式並設定用戶端憑證。然後，針對您選取的應用程式，從 OAuth 設定複製消費者金鑰 (用戶端 ID) 和消費者機密 (用戶端機密)。如需詳細資訊，請參閱有關[建立連線應用程式](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5)和[設定 OAuth 2.0 用戶端憑證的連線應用程式](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)的 Salesforce 文件。
**注意**  
對於 Salesforce 連線應用程式，在用戶端憑證流程下，請確定您在「執行身分」欄位中搜尋並選取您用戶端憑證的使用者名稱或別名。

**在您的 AWS 帳戶中，請確認已完成下列項目**：
+ 將身分驗證憑證存放在 [AWS Secrets Manager 機密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)中，並記下機密的 Amazon Resource Name (ARN)。遵循此頁面上的**連線組態**指示，以包含必須在機密中包含的鍵/值對。
+ 在知識庫的 AWS Identity and Access Management (IAM) 角色/許可政策中包含要連接至資料來源的必要許可。如需將此資料來源新增至知識庫 IAM 角色的必要許可資訊，請參閱[存取資料來源的許可](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-permissions.html#kb-permissions-access-ds)。

**注意**  
如果使用主控台，您可以前往 AWS Secrets Manager 新增秘密，或在資料來源組態步驟的過程中使用現有的秘密。您可以在建立知識庫的主控台步驟中，為您建立具有所有必要許可的 IAM 角色。在您設定資料來源和其他組態之後，具有所有必要許可的 IAM 角色會套用至特定知識庫。  
建議定期更新或輪換憑證與機密。僅授予作業所需的最低存取層級，以確保自身安全。不建議您在資料來源之間重複使用憑證和機密。

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

若要連線至 Salesforce 執行個體，您必須提供必要的組態資訊，Amazon Bedrock 才能存取和網路爬取您的資料。您也必須遵循 [必要條件](#prerequisites-salesforce-connector)。

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

如需文件欄位的自動偵測、包含/排除篩選條件、增量同步、私密身分驗證憑證，以及這些運作方式的詳細資訊，請選取下列各項：

### 自動偵測主要文件欄位
<a name="ds-salesforce-document-fields"></a>

資料來源連接器會自動偵測和網路爬取文件或內容的所有主要中繼資料欄位。例如，資料來源連接器可以網路爬取與您文件同等的文件內文、文件標題、文件建立或修改日期，或其他可能適用於文件的核心欄位。

**重要**  
如果內容包含敏感資訊，則 Amazon Bedrock 可能會使用敏感資訊來回應。

您可以將篩選運算子套用至中繼資料欄位，以協助您進一步改善回應的相關性。例如，文件 "epoch\$1modification\$1time" 或文件上次更新時間的 1970 年 1 月 1 日經過的秒數。您可以篩選最近的資料，其中 "epoch\$1modification\$1time" *大於*特定數字。如需可套用至中繼資料欄位之篩選運算子的詳細資訊，請參閱[中繼資料和篩選](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)。

### 包含/排除篩選條件
<a name="ds-salesforce-inclusion-exclusion"></a>

您可以包含或排除網路爬取特定內容。例如，您可以指定排除字首/規則表達式模式，略過對檔案名稱中包含「私有」的任何檔案的網路爬取。您也可以指定包含字首/規則表達式模式，以包含特定內容實體或內容類型。如果您指定包含篩選條件和排除篩選條件，且兩者皆與文件相符，則排除篩選條件會優先，且不會網路爬取文件。

規則運算式模式的範例，用於排除或篩選出行銷活動名稱中包含 "private" 的行銷活動：*".\$1private.\$1"*

您可以在下列內容類型上套用包含/排除篩選條件：
+ `Account`：帳戶號碼/識別碼
+ `Attachment`：附件檔案名稱及其副檔名
+ `Campaign`：行銷活動名稱和相關聯的識別碼
+ `ContentVersion`：文件版本和相關聯的識別碼
+ `Partner`：合作夥伴資訊欄位，包括相關聯的識別碼
+ `Pricebook2`：產品/價格清單名稱
+ `Case`：客戶查詢/問題編號和其他資訊欄位，包括相關聯的識別碼 (請注意：可包含個人資訊，您可以選擇排除或篩選掉)
+ `Contact`：客戶資訊欄位 (請注意：可包含個人資訊，您可以選擇排除或篩選掉)
+ `Contract`：合約名稱和相關聯的識別碼
+ `Document`：檔案名稱及其副檔名
+ `Idea`：構想資訊欄位和相關聯的識別碼
+ `Lead`：潛在的新客戶資訊欄位 (請注意：可包含個人資訊，您可以選擇排除或篩選掉)
+ `Opportunity`：待定的銷售/交易資訊欄位和相關聯的識別碼
+ `Product2`：產品資訊欄位和相關聯的識別碼
+ `Solution`：客戶查詢/問題的解決方案名稱和相關聯的識別碼
+ `Task`：任務資訊欄位和相關聯的識別碼
+ `FeedItem`：Chatter 摘要文章的識別碼
+ `FeedComment`：評論所屬的 Chatter 摘要文章其識別碼
+ `Knowledge__kav`：知識文章標題
+ `User`：組織內的使用者別名
+ `CollaborationGroup`：Chatter 群組名稱 (唯一)

### 增量同步
<a name="ds-salesforce-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)。

### 私密身分驗證憑證
<a name="ds-salesforce-secret-auth-credentials"></a>

(對於 OAuth 2.0 身分驗證) 您在 AWS Secrets Manager 中的私密身分驗證憑證應包含這些鍵/值對：
+ `consumerKey`：*應用程式用戶端 ID*
+ `consumerSecret`：*應用程式用戶端機密*
+ `authenticationUrl`：*Salesforce 執行個體 URL 或請求身分驗證字符的來源 URL*

**注意**  
您在 AWS Secrets Manager 中的秘密必須使用與知識庫相同的區域。

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

**將 Salesforce 執行個體連接至您的知識庫**

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

1. 提供資料來源的名稱和選用的描述。

1. 提供 Salesforce 執行個體 URL。例如，*https://company.salesforce.com/*。執行個體必須執行 Salesforce 連線應用程式。

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

1. 提供驗證資訊以連線到 Salesforce 執行個體：

   1. 若是 OAuth 2.0 身分驗證，請前往 AWS Secrets Manager 新增您的私密身分驗證憑證，或使用現有的 Amazon Resource Name (ARN) 作為您建立的密碼。您的機密必須包含 Salesforce 連線應用程式消費者金鑰 (用戶端 ID)、消費者機密 (用戶端機密)，以及 Salesforce 執行個體 URL 或請求身分驗證字符的來源 URL。如需詳細資訊，請參閱有關[建立連線應用程式](https://help.salesforce.com/s/articleView?id=sf.connected_app_create.htm&type=5)和[設定 OAuth 2.0 用戶端憑證的連線應用程式](https://help.salesforce.com/s/articleView?id=sf.connected_app_client_credentials_setup.htm&type=5)的 Salesforce 文件。

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

1. 選擇以使用篩選條件/規則表達式模式來包含或排除特定內容。否則將會網路爬取所有標準內容。

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

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

以下是 Amazon Bedrock 知識庫連線至 Salesforce 的組態範例。您可以使用 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 create-data-source \
 --name "Salesforce connector" \
 --description "Salesforce data source connector for Amazon Bedrock to use content in Salesforce" \
 --knowledge-base-id "your-knowledge-base-id" \
 --data-source-configuration file://salesforce-bedrock-connector-configuration.json \
 --data-deletion-policy "DELETE" \
 --vector-ingestion-configuration '{"chunkingConfiguration":[{"chunkingStrategy":"FIXED_SIZE","fixedSizeChunkingConfiguration":[{"maxTokens":"100","overlapPercentage":"10"}]}]}'

salesforce-bedrock-connector-configuration.json
{
    "salesforceConfiguration": {
        "sourceConfiguration": {
            "hostUrl": "https://company.salesforce.com/",
            "authType": "OAUTH2_CLIENT_CREDENTIALS",
            "credentialsSecretArn": "arn:aws::secretsmanager:your-region:secret:AmazonBedrock-Salesforce"
        },
        "crawlerConfiguration": {
            "filterConfiguration": {
                "type": "PATTERN",
                "patternObjectFilter": {
                    "filters": [
                        {
                            "objectType": "Campaign",
                            "inclusionFilters": [
                                ".*public.*"
                            ],
                            "exclusionFilters": [
                                ".*private.*"
                            ]
                        }
                    ]
                }
            }
        }
    },
    "type": "SALESFORCE"
}
```

------

# 為您的知識庫網路爬取網頁
<a name="webcrawl-data-source-connector"></a>

Amazon Bedrock 提供的 Web 編目程式會連線至您選取的 URL 並進行網路爬取，以用於 Amazon Bedrock 知識庫中。您可以根據設定的範圍或限制，為所選的 URL 網路爬取網站頁面。您可以使用 [Amazon Bedrock 的 AWS 管理主控台](https://console.aws.amazon.com/bedrock/home)或 [CreateDataSource API](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 來網路爬取網站頁面 (請參閱 Amazon Bedrock [支援的 SDK 和 AWS CLI](https://docs.aws.amazon.com/bedrock/latest/APIReference/welcome.html))。目前，只有 Amazon OpenSearch Serverless 向量存放區可搭配此資料來源使用。

**注意**  
Web 編目程式資料來源連接器為預覽版本，可能會有所變更。

選取要網路爬取的網站時，您必須遵守 [Amazon 可接受的使用政策](https://aws.amazon.com/aup/)以及 Amazon 所有其他條款。請記住，您只能使用 Web 編目程式為自己的網頁或您具有授權可網路爬取的網頁建立索引，且必須符合 robots.txt 組態。

Web 編目程式遵守 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) 符合 robots.txt 的規定。

可以網路爬取的網頁內容項目數量及各內容項目的大小 (單位 MB) 都有限制。請參閱[知識庫的配額](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)。

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

## 支援的功能
<a name="supported-features-webcrawl-connector"></a>

Web 編目程式從種子 URL 開始連線到 HTML 頁面並網路爬取 HTML 頁面，周遊相同頂層主要網域和路徑下的所有子連結。如果有任何 HTML 頁面參考支援的文件，Web 編目程式將擷取這些文件，無論其是否位於相同的頂層主要網域中。您可以變更網路爬取組態來修改網路爬取行為 - 請參閱[連線組態](#configuration-webcrawl-connector)。

支援您執行下列動作：
+ 選取多個來源 URL 進行網路爬取，並將 URL 的範圍設定為僅網路爬取主機或亦包含子網域。
+ 網路爬取屬於來源 URL 一部分的靜態網頁。
+ 指定自訂使用者代理程式字尾，為您自己的編目程式設定規則。
+ 包含或排除符合篩選條件模式的特定 URL。
+ 遵守標準 robots.txt 指令，例如「Allow」和「Disallow」。
+ 限制要網路爬取的 URL 範圍，並選擇性地排除符合篩選條件模式的 URL。
+ 限制網路爬取 URL 的速率和要網路爬取的頁面數目上限。
+ 在 Amazon CloudWatch 中檢視已網路爬取 URL 的狀態

## 必要條件
<a name="prerequisites-webcrawl-connector"></a>

**若要使用 Web 編目程式，請確定：**
+ 檢查您是否獲得網路爬取來源 URL 的授權。
+ 檢查對應至來源 URL 的 robots.txt 路徑，並不會阻止網路爬取 URL。Web 編目程式遵循 robots.txt 的標準：如果網站找不到 robots.txt，則預設為 `disallow`。Web 編目程式遵守 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) 符合 robots.txt 的規定。您也可以指定自訂使用者代理程式標頭字尾，為您自己的編目程式設定規則。如需詳細資訊，請參閱此頁面上 [連線組態](#configuration-webcrawl-connector) 指示中的 Web 編目程式 URL 存取。
+ [啟用 CloudWatch Logs 交付](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)，並遵循 Web 編目程式日誌的範例，以檢視用於擷取 Web 內容的資料擷取任務狀態，以及是否無法擷取特定 URL。

**注意**  
選取要網路爬取的網站時，您必須遵守 [Amazon 可接受的使用政策](https://aws.amazon.com/aup/)以及 Amazon 所有其他條款。請記住，您只能使用 Web 編目程式為自己的網頁或您具有授權可網路爬取的網頁建立索引。

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

如需網路爬取 URL、包含/排除篩選條件、URL 存取、增量同步及這些運作方式的同步範圍詳細資訊，請選取下列項目：

### 網路爬取 URL 的同步範圍
<a name="ds-sync-scope"></a>

您可以根據每個頁面 URL 與種子 URL 間的特定關係，來限制可網路爬取 URL 的範圍。若要加速網路爬取，您可以將 URL 限制為具有相同主機及種子 URL 其初始 URL 路徑的 URL。如需更廣泛的網路爬取，您可以選擇網路爬取具有相同主機或在種子 URL 其任何子網域內的 URL。

您可以從下列選項來選擇。
+ 預設：將網路爬取限制在屬於相同主機且具有相同初始 URL 路徑的網頁。例如，如果種子 URL 為「https://aws.amazon.com/bedrock/」，則將僅網路爬取此路徑與從此路徑延伸的網頁，例如「https://aws.amazon.com/bedrock/agents/」。例如，不會網路爬取像是「https://aws.amazon.com/ec2/」的同級 URL。
+ 僅限主機：將網路爬取限制在屬於相同主機的網頁。例如，如果種子 URL 為「https://aws.amazon.com/bedrock/」，則也將網路爬取具有「https://aws.amazon.com」的網頁，例如「https://aws.amazon.com/ec2」。
+ 子網域：包含網路爬取與種子 URL 具有相同主要網域的任何網頁。例如，如果種子 URL 為「https://aws.amazon.com/bedrock/」，則也將網路爬取包含「amazon.com」(子網域) 的任何網頁，例如「https://www.amazon.com」。

**注意**  
請確定您未網路爬取過多的網頁。不建議在沒有篩選條件或範圍限制的情況下網路爬取大型網站，例如 wikipedia.org。網路爬取大型網站需花費很長的時間進行網路爬取。  
無論範圍為何，且如果該檔案類型沒有排除模式，都會網路爬取[支援的檔案類型](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)。

Web 編目程式支援靜態網站。

您也可以限制網路爬取 URL 的速率，以控制網路爬取速度的限流。您可以設定每分鐘網路爬取每個主機的 URL 數目上限。此外，您也可以設定要網路爬取的網頁總數上限 (最多 25,000 個)。請注意，如果來源 URL 的網頁總數超過設定上限，則資料來源同步/擷取任務將會失敗。

### 包含/排除篩選條件
<a name="ds-inclusion-exclusion"></a>

您可以根據範圍包含或排除特定 URL。無論範圍為何，且如果該檔案類型沒有排除模式，都會網路爬取[支援的檔案類型](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)。如果您指定包含篩選條件和排除篩選條件，且兩者皆與文件相符，則排除篩選條件會優先，且不會網路爬取 Web 內容。

**重要**  
導致[災難性回溯](https://docs.aws.amazon.com/codeguru/detector-library/python/catastrophic-backtracking-regex/)和前瞻的有問題規則運算式模式篩選條件會遭到拒絕。

例如，會排除結尾為「.pdf」的 URL 或 PDF 網頁附件的規則運算式篩選條件模式：*".\$1\$1.pdf\$1"*

### Web 編目程式 URL 存取
<a name="ds-webcrawl-identity-crawling"></a>

您可以使用 Web 編目程式來編目您獲授權網路爬取的網站頁面。

選取要網路爬取的網站時，您必須遵守 [Amazon 可接受的使用政策](https://aws.amazon.com/aup/)以及 Amazon 所有其他條款。請記住，您只能使用 Web 編目程式為自己的網頁或您具有授權可網路爬取的網頁建立索引。

Web 編目程式遵守 [RFC 9309](https://www.rfc-editor.org/rfc/rfc9309.html) 符合 robots.txt 的規定。

您可以將特定使用者代理程式機器人指定為「允許」或「不允許」使用者代理程式來網路爬取來源 URL。您可以修改網站的 robots.txt 檔案，以控制 Web 編目程式如何網路爬取來源 URL 的方式。編目程式會先尋找 `bedrockbot-UUID ` 規則，然後在 robots.txt 檔案中尋找一般 `bedrockbot` 規則。

您也可以新增 User-Agent 字尾，用於在機器人保護系統中將您的編目程式加入允許清單。請注意，此字尾不需要新增至 `robots.txt` 檔案，以確保沒有一切可以模擬使用者代理程式字串。例如，若要允許 Web 編目程式網路爬取所有網站內容，且不允許任何其他機器人的網路爬取，請使用下列指令：

```
User-agent: bedrockbot-UUID # Amazon Bedrock Web Crawler
Allow: / # allow access to all pages
User-agent: * # any (other) robot
Disallow: / # disallow access to any pages
```

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

每次 Web 編目程式執行時，都會擷取可從來源 URL 連線且符合範圍和篩選條件的所有 URL 內容。對於在所有內容第一次同步後的增量同步，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 ]

**將 Web 編目程式資料來源連接到知識庫**

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

1. 提供資料來源的名稱和選用的描述。

1. 提供所要網路爬取 URL 的**來源 URL**。您最多可以新增 9 個額外的 URL，方法是選取**新增來源 URL**。透過提供來源 URL，即表示您確認已獲授權可網路爬取其網域。

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

1. (選用) 為 **bedrock-UUID-** 提供使用者代理程式字尾，用於在存取 Web 伺服器時識別編目程式或機器人。

1. 在**同步範圍**區段中設定下列項目：

   1. 選取用於網路爬取您來源 URL 的**網站網域範圍**：
      + 預設：將網路爬取限制在屬於相同主機且具有相同初始 URL 路徑的網頁。例如，如果種子 URL 為「https://aws.amazon.com/bedrock/」，則將僅網路爬取此路徑與從此路徑延伸的網頁，例如「https://aws.amazon.com/bedrock/agents/」。例如，不會網路爬取像是「https://aws.amazon.com/ec2/」的同級 URL。
      + 僅限主機：將網路爬取限制在屬於相同主機的網頁。例如，如果種子 URL 為「https://aws.amazon.com/bedrock/」，則也將網路爬取具有「https://aws.amazon.com」的網頁，例如「https://aws.amazon.com/ec2」。
      + 子網域：包含網路爬取與種子 URL 具有相同主要網域的任何網頁。例如，如果種子 URL 為「https://aws.amazon.com/bedrock/」，則也將網路爬取包含「amazon.com」(子網域) 的任何網頁，例如「https://www.amazon.com」。
**注意**  
請確定您未網路爬取過多的網頁。不建議在沒有篩選條件或範圍限制的情況下網路爬取大型網站，例如 wikipedia.org。網路爬取大型網站需花費很長的時間進行網路爬取。  
無論範圍為何，且如果該檔案類型沒有排除模式，都會網路爬取[支援的檔案類型](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)。

   1. 輸入**網路爬取速度最大限流**。每分鐘擷取每部主機 1 到 300 個之間的 URL。網路爬取速度越快，負載會增加，但花費的時間較少。

   1. 輸入 1 到 25000 之間的**資料來源同步的頁數上限**。限制從來源 URL 網路爬取的網頁數量上限。如果網頁超過此數字，則資料來源同步將會失敗，而且不會擷取任何網頁。

   1. 對於 **URL 規則運算式**模式 (選用)，您可以在方塊中輸入規則運算式模式來新增**包含模式**或**排除模式**。您可以選取**新增模式**來新增最多 25 個包含和 25 個排除篩選條件模式。其會根據您的範圍來網路爬取包含和排除模式。如有衝突，則以排除模式為優先。

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

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

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

若要使用 Web 編目程式將知識庫連接至資料來源，請使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 請求，在 [DataSourceConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DataSourceConfiguration.html) 的 `type` 欄位中指定 `WEB`，並包含 `webConfiguration` 欄位。以下是 Amazon Bedrock 知識庫的 Web 編目程式組態範例。

```
{
    "webConfiguration": {
        "sourceConfiguration": {
            "urlConfiguration": {
                "seedUrls": [{
                    "url": "https://www.examplesite.com"
                }]
            }
        },
        "crawlerConfiguration": {
            "crawlerLimits": {
                "rateLimit": 50,
                "maxPages": 100
            },
            "scope": "HOST_ONLY",
            "inclusionFilters": [
                "https://www\.examplesite\.com/.*\.html"
            ],
            "exclusionFilters": [
                "https://www\.examplesite\.com/contact-us\.html"
            ],
            "userAgent": "CustomUserAgent"
        }
    },
    "type": "WEB"
}
```

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

------

# 將知識庫連結到自訂資料來源
<a name="custom-data-source-connector"></a>

您可以連結到自訂資料來源以享有下列優點，而不是選擇支援的資料來源服務：
+ 對您希望知識庫能夠存取的資料類型的彈性和控制。
+ 能夠使用 `KnowledgeBaseDocuments` API 操作直接擷取或刪除文件，而無需同步變更。
+ 能夠直接透過 Amazon Bedrock 主控台或 API 檢視資料來源中的文件。
+ 能夠直接在 中將文件上傳至資料來源，AWS 管理主控台或內嵌新增文件。
+ 在資料來源中新增或更新文件時，可以直接將中繼資料新增至每個文件。如需從資料來源擷取資訊時如何使用中繼資料進行篩選的詳細資訊，請參閱[設定和自訂查詢和回應產生](kb-test-config.md)中的**中繼資料和篩選**索引標籤。

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

若要將知識庫連結到自訂資料來源，請使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 請求。指定要連結至其中的知識庫 `knowledgeBaseId`，將 `name` 提供給資料來源，並將 `dataSourceConfiguration` 中的 `type` 欄位指定為 `CUSTOM`。以下顯示建立此資料來源的最基本範例：

```
PUT /knowledgebases/KB12345678/datasources/ HTTP/1.1
Content-type: application/json

{
    "name": "MyCustomDataSource",
    "dataSourceConfiguration": {
        "type": "CUSTOM"
    }
}
```

您可以包含下列任何選用欄位來設定資料來源：


****  

| 欄位 | 使用案例 | 
| --- | --- | 
| description | 提供資料來源的描述。 | 
| clientToken | 為確保 API 請求，僅完成一次。如需詳細資訊，請參閱[確保冪等性](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)。 | 
| serverSideEncryptionConfiguration | 將資料轉換為嵌入時，為暫時性資料儲存指定自訂 KMS 金鑰。如需詳細資訊，請參閱[資料擷取期間的暫時性資料儲存加密](encryption-kb.md#encryption-kb-ingestion) | 
| dataDeletionPolicy | 如果您刪除資料來源，請為向量存放區中的資料來源設定向量嵌入的操作。指定 RETAIN 來保留向量存放區中的資料，或指定 DELETE 的預設選項來刪除這些資料。 | 
| vectorIngestionConfiguration | 設定資料來源的擷取選項。如需詳細資訊，請參閱下方。 | 

`vectorIngestionConfiguration` 欄位會對應至包含下列欄位的 [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html) 物件：
+ chunkingConfiguration：設定策略，此策略會用於將資料來源中的文件分塊。如需有關分塊策略的詳細資訊，請參閱[內容群集如何適用於知識庫](kb-chunking.md)。
+ parsingConfiguration：設定用於剖析資料來源的策略。如需剖析選項的詳細資訊，請參閱[剖析資料來源的選項](kb-advanced-parsing.md)。
+ customTransformationConfiguration：自訂資料轉換的方式，以及套用 Lambda 函數以實現更多的自訂。如需如何使用 Lambda 函數自訂資料分塊和處理中繼資料的詳細資訊，請參閱[使用自訂轉換 Lambda 函數來定義如何擷取您的資料](kb-custom-transformation.md)。

設定自訂資料來源之後，您可以將文件新增至其中，並直接將其擷取至知識庫。與其他資料來源不同，您不需要同步自訂資料來源。若要了解如何直接擷取文件，請參閱[將變更直接擷取到知識庫](kb-direct-ingestion.md)。

# 自訂資料來源的擷取
<a name="kb-data-source-customize-ingestion"></a>

您可以在 中連接資料來源時自訂向量擷取， AWS 管理主控台 或在傳送 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 請求時修改 `vectorIngestionConfiguration` 欄位的值。

選取主題，了解如何在連線至資料來源時包含用於自訂擷取的組態：

**Topics**
+ [選擇要用於剖析的工具](#kb-data-source-customize-parsing)
+ [選擇群集策略](#kb-data-source-customize-chunking)
+ [在擷取期間使用 Lambda 函式](#kb-data-source-customize-lambda)

## 選擇要用於剖析的工具
<a name="kb-data-source-customize-parsing"></a>

您可以自訂如何剖析資料中的文件。若要了解在 Amazon Bedrock 知識庫中剖析資料的選項，請參閱 [剖析資料來源的選項](kb-advanced-parsing.md)。

**警告**  
在連線至資料來源之後，便無法變更剖析策略。若要使用不同的剖析策略，您可以新增新的資料來源。  
建立知識庫之後，您就無法新增 S3 位置來存放多模態資料 (包括影像、圖形、圖表和資料表)。如果您想要包含多模態資料並使用支援它的剖析器，必須建立新的知識庫。

選擇剖析策略所涉及的步驟取決於您使用的是 AWS 管理主控台 或 Amazon Bedrock API，以及您選擇的剖析方法。如果您選擇支援多模態資料的剖析方法，則必須指定要在其中存放從文件中擷取之多模態資料的 S3 URI。可在知識庫查詢中傳回此資料。
+ 在 中 AWS 管理主控台，執行下列動作：

  1. 當您在設定知識庫時，或是將新的資料來源新增至現有的知識庫時，請選取剖析策略。

  1. (如果您選擇 Amazon Bedrock Data Automation 或基礎模型作為剖析策略) 當您選取嵌入模型並設定向量存放區時，指定要在**多模態儲存目的地**區段中存放從文件擷取之多模型資料的 S3 URI。在此步驟中，您也可以選擇性地使用客戶受管金鑰來加密 S3 資料。
+ 在 Amazon Bedrock API 中，執行下列操作：

  1. (如果您打算使用 Amazon Bedrock Data Automation 或基礎模型作為剖析策略) 在 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 請求的 [VectorKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorKnowledgeBaseConfiguration.html) 中包含 [SupplementalDataStorageLocation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SupplementalDataStorageLocation.html)。

  1. 在 [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 請求中 [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html) 的 `parsingConfiguration` 欄位中包含 [ParsingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ParsingConfiguration.html)。
**注意**  
如果您省略此組態，則 Amazon Bedrock 知識庫會使用 Amazon Bedrock 預設剖析器。

如需如何在 API 中指定剖析策略的詳細資訊，請展開對應至您所要使用剖析策略的區段：

### Amazon Bedrock 預設剖析器
<a name="w2aac28c10c23c15c17c11c13b1"></a>

若要使用預設剖析器，請勿在 `VectorIngestionConfiguration` 中包含 `parsingConfiguration` 欄位。

### Amazon Bedrock Data Automation 剖析器 (預覽)
<a name="w2aac28c10c23c15c17c11c13b3"></a>

若要使用 Amazon Bedrock Data Automation 剖析器，請在 `ParsingConfiguration` 的 `parsingStrategy` 欄位中指定 `BEDROCK_DATA_AUTOMATION`，並在 `bedrockDataAutomationConfiguration` 欄位中包含 [BedrockDataAutomationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_BedrockDataAutomationConfiguration.html)，格式如下：

```
{
    "parsingStrategy": "BEDROCK_DATA_AUTOMATION",
    "bedrockDataAutomationConfiguration": {
        "parsingModality": "string"
    }
}
```

### 基礎模型
<a name="w2aac28c10c23c15c17c11c13b5"></a>

若要使用基礎模型做為剖析器，請在 `ParsingConfiguration` 的 `parsingStrategy` 欄位中指定 `BEDROCK_FOUNDATION_MODEL`，並在 `bedrockFoundationModelConfiguration` 欄位中包含 [BedrockFoundationModelConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_BedrockFoundationModelConfiguration.html)，如下所示：

```
{
    "parsingStrategy": "BEDROCK_FOUNDATION_MODEL",
    "bedrockFoundationModelConfiguration": {
        "modelArn": "string",
        "parsingModality": "string",
        "parsingPrompt": {
            "parsingPromptText": "string"
        }
    }
}
```

## 選擇群集策略
<a name="kb-data-source-customize-chunking"></a>

您可以自訂資料中的文件在儲存與擷取時的分塊方式。若要了解在 Amazon Bedrock 知識庫中群集資料的選項，請參閱 [內容群集如何適用於知識庫](kb-chunking.md)。

**警告**  
在連線至資料來源之後，便無法變更分塊策略。

在 中， AWS 管理主控台 您在連線至資料來源時選擇區塊策略。使用 Amazon Bedrock API，您可以在 [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html) 的 `chunkingConfiguration` 欄位中包含 [ChunkingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ChunkingConfiguration.html)。

**注意**  
如果您省略此組態，Amazon Bedrock 會將您的內容分割成大約 300 個字符的區塊，同時保留句子邊界。

展開對應至您要使用之剖析策略的區段：

### 無群集
<a name="w2aac28c10c23c15c17c13c13b1"></a>

若要將資料來源中的每個文件視為單一來源區塊，請在 `ChunkingConfiguration` 的 `chunkingStrategy` 欄位中指定 `NONE`，如下列格式所示：

```
{
    "chunkingStrategy": "NONE"
}
```

### 固定大小群集
<a name="w2aac28c10c23c15c17c13c13b3"></a>

若要將資料來源中的每個文件分割為大約相同大小的區塊，請在 `ChunkingConfiguration` 的 `chunkingStrategy` 欄位中指定 `FIXED_SIZE`，並在 `fixedSizeChunkingConfiguration` 欄位中包含 [FixedSizeChunkingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_FixedSizeChunkingConfiguration.html)，如下列格式所示：

```
{
    "chunkingStrategy": "FIXED_SIZE",
    "fixedSizeChunkingConfiguration": {
        "maxTokens": number,
        "overlapPercentage": number
    }
}
```

### 階層群集
<a name="w2aac28c10c23c15c17c13c13b5"></a>

若要將資料來源中的每個文件分成兩個層級，其中第二層包含衍生自第一層的較小區塊，請在 `ChunkingConfiguration` 的 `chunkingStrategy` 欄位中指定 `HIERARCHICAL`，並包含 `hierarchicalChunkingConfiguration` 欄位，如下列格式所示：

```
{
    "chunkingStrategy": "HIERARCHICAL",
    "hierarchicalChunkingConfiguration": {
        "levelConfigurations": [{
            "maxTokens": number
        }],
        "overlapTokens": number
    }
}
```

### 語意群集
<a name="w2aac28c10c23c15c17c13c13b7"></a>

若要將資料來源中的每個文件分割為以語意意義優先於語法結構的區塊，請在 `ChunkingConfiguration` 的 `chunkingStrategy` 欄位中指定 `SEMANTIC`，並包含 `semanticChunkingConfiguration` 欄位，如下列格式所示：

```
{
    "chunkingStrategy": "SEMANTIC",
    "semanticChunkingConfiguration": {
        "breakpointPercentileThreshold": number,
        "bufferSize": number,
        "maxTokens": number
    }
}
```

## 在擷取期間使用 Lambda 函式
<a name="kb-data-source-customize-lambda"></a>

您可以透過下列方式，使用 Lambda 函式將資料中的來源區塊寫入向量存放區：
+ 包含群集邏輯以提供自訂群集策略。
+ 包含邏輯以指定區塊層級中繼資料。

若要了解如何撰寫用於擷取的自訂 Lambda 函式，請參閱 [使用自訂轉換 Lambda 函數來定義如何擷取您的資料](kb-custom-transformation.md)。在 中 AWS 管理主控台 ，您在連線至資料來源時選擇 Lambda 函數。使用 Amazon Bedrock API，您可以在 [VectorIngestionConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_VectorIngestionConfiguration.html) 的 `CustomTransformationConfiguration` 欄位中包含 [CustomTransformationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CustomTransformationConfiguration.html)，並指定 Lambda 的 ARN，如下列格式所示：

```
{
    "transformations": [{
        "transformationFunction": {
            "transformationLambdaConfiguration": {
                "lambdaArn": "string"
            }
        },
        "stepToApply": "POST_CHUNKING"
    }],
    "intermediateStorage": {
        "s3Location": {
            "uri": "string"
        }
    }
}
```

您也可以指定在套用 Lambda 函式後，存放輸出的 S3 位置。

您可以在套用 Amazon Bedrock 提供的其中一個群集選項之後，包含要套用 Lambda 函式的 `chunkingConfiguration` 欄位。

# 為知識庫設定安全組態
<a name="kb-create-security"></a>

建立知識庫之後，您可能需要設定下列安全組態：

**Topics**
+ [為您的知識庫設定資料存取政策](#kb-create-security-data)
+ [為您的 Amazon OpenSearch Serverless 知識庫設定網路存取政策](#kb-create-security-network)

## 為您的知識庫設定資料存取政策
<a name="kb-create-security-data"></a>

如果您使用[自訂角色](kb-permissions.md)，請為新建立的知識庫設定安全組態。如果您讓 Amazon Bedrock 為您建立服務角色，則可以略過此步驟。依照您設定之資料庫對應索引標籤中的步驟進行。

------
#### [ Amazon OpenSearch Serverless ]

若要將 Amazon OpenSearch Serverless 集合的存取權限制為知識庫服務角色，請建立資料存取政策。您可採用以下方式：
+ 請遵循《Amazon OpenSearch Service 開發人員指南》中的[建立資料存取政策 (主控台)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-console) 中的步驟，使用 Amazon OpenSearch Service 主控台。
+ 透過使用 [OpenSearch Serverless 端點](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)傳送 [CreateAccessPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_CreateAccessPolicy.html) 請求來使用 AWSAPI。如需AWS CLI範例，請參閱[建立資料存取政策 (AWS CLI)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-cli)。

使用以下資料存取政策，指定 Amazon OpenSearch Serverless 集合和服務角色：

```
[
    {
        "Description": "${data access policy description}",
        "Rules": [
          {
            "Resource": [
              "index/${collection_name}/*"
            ],
            "Permission": [
                "aoss:DescribeIndex",
                "aoss:ReadDocument",
                "aoss:WriteDocument"
            ],
            "ResourceType": "index"
          }
        ],
        "Principal": [
            "arn:aws:iam::${account-id}:role/${kb-service-role}"
        ]
    }
]
```

------
#### [ Pinecone, Redis Enterprise Cloud or MongoDB Atlas ]

若要整合 Pinecone、Redis Enterprise Cloud、MongoDB Atlas 向量索引，請將下列身分型政策連接至您的知識庫服務角色，以允許它存取向量索引的AWS Secrets Manager秘密。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Allow",
        "Action": [
            "bedrock:AssociateThirdPartyKnowledgeBase"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "bedrock:ThirdPartyKnowledgeBaseCredentialsSecretArn": "arn:aws:secretsmanager:us-east-1:123456789012:secret:${secret-id}"
            }
        }
    }]
}
```

------

------

## 為您的 Amazon OpenSearch Serverless 知識庫設定網路存取政策
<a name="kb-create-security-network"></a>

如果您針對知識庫使用私有 Amazon OpenSearch Serverless 集合，則只能透過 AWS PrivateLinkVPC 端點存取。您可以在[設定 Amazon OpenSearch Serverless 向量集合](knowledge-base-setup.md)時建立私有 Amazon OpenSearch Serverless 集合，也可以在設定其網路存取政策時，將現有的 Amazon OpenSearch Serverless 集合 (包括 Amazon Bedrock 主控台為您建立的集合) 設為私有。

《Amazon OpenSearch Service 開發人員指南》中的下列資源將協助您了解私有 Amazon OpenSearch Serverless 集合所需的設定：
+ 如需為私有 Amazon OpenSearch Serverless 集合設定 VPC 端點的詳細資訊，請參閱[使用介面端點存取 Amazon OpenSearch Serverless (AWS PrivateLink)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vpc.html)。
+ 如需 Amazon OpenSearch Serverless 中網路存取政策的詳細資訊，請參閱 [Amazon OpenSearch Serverless 的網路存取](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html)。

若要允許 Amazon Bedrock 知識庫存取私有 Amazon OpenSearch Serverless 集合，您必須編輯 Amazon OpenSearch Serverless 集合的網路存取政策，以允許 Amazon Bedrock 做為來源服務。選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

1. 開啟位於 https：//[https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/) 的 Amazon OpenSearch Service 主控台。

1. 從左側導覽窗格選取**集合**。然後選擇您的集合。

1. 在**網路**區段中，選取**關聯政策**。

1. 選擇**編輯**。

1. 對於**選取政策定義方法**，執行下列其中一項：
   + 將**選取政策定義方法**保留為**視覺化編輯器**，並在**規則 1** 區段中設定下列設定：

     1. (選用) 在**規則名稱**欄位中，輸入網路存取規則的名稱。

     1. 在**存取集合來源**下，選取**私有 (建議)**。

     1. 選取 **AWS 服務私有存取**。在文字方塊中輸入 **bedrock.amazonaws.com**。

     1. 取消選取**啟用對 OpenSearch Dashboards 的存取。**
   + 選擇 **JSON**，然後將下列政策貼到 **JSON 編輯器**中。

     ```
     [
         {                                        
             "AllowFromPublic": false,
             "Description":"${network access policy description}",
             "Rules":[
                 {
                     "ResourceType": "collection",
                     "Resource":[
                         "collection/${collection-id}"
                     ]
                 }
             ],
             "SourceServices":[
                 "bedrock.amazonaws.com"
             ]
         }
     ]
     ```

1. 選擇**更新**。

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

若要編輯 Amazon OpenSearch Serverless 集合的網路存取政策，請執行下列動作：

1. 使用 [OpenSearch Serverless 端點](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)傳送 [GetSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_GetSecurityPolicy.html) 請求。指定政策的 `name`，並將 `type` 指定為 `network`。記下回應中的 `policyVersion`。

1. 使用 [OpenSearch Serverless 端點](https://docs.aws.amazon.com/general/latest/gr/opensearch-service.html#opensearch-service-regions)傳送 [UpdateSecurityPolicy](https://docs.aws.amazon.com/opensearch-service/latest/ServerlessAPIReference/API_UpdateSecurityPolicy.html) 請求。至少指定下列欄位：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/kb-create-security.html)

   ```
   [
       {                                        
           "AllowFromPublic": false,
           "Description":"${network access policy description}",
           "Rules":[
               {
                   "ResourceType": "collection",
                   "Resource":[
                       "collection/${collection-id}"
                   ]
               }
           ],
           "SourceServices":[
               "bedrock.amazonaws.com"
           ]
       }
   ]
   ```

如需AWS CLI範例，請參閱[建立資料存取政策 (AWS CLI)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-data-access.html#serverless-data-access-cli)。

------
+ 遵循[建立網路政策 (主控台)](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-network.html#serverless-network-console) 中的步驟，使用 Amazon OpenSearch Service 主控台。請不要建立網路政策，而是在集合詳細資訊的**網路**子區段中記下**關聯的政策**。

# 將您的資料與您的 Amazon Bedrock 知識庫同步
<a name="kb-data-source-sync-ingest"></a>

建立知識庫之後，您可以擷取或同步資料，以便查詢資料。擷取會根據您指定的向量嵌入模型和組態，將資料來源中的原始資料轉換為向量嵌入。

開始擷取之前，請檢查您的資料來源是否符合下列條件：
+ 您已設定資料來源的連線資訊。若要設定資料來源連接器從資料來源儲存庫中擷取資料，請參閱[支援的資料來源連接器](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)。您可以將資料來源設定為建立知識庫的一部分。
+ 您已設定所選的向量內嵌模型和向量存放區。請參閱[支援的向量內嵌模型](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-supported.html)和[知識庫向量存放區](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-setup.html)。您可以將向量內嵌設定為建立知識庫的一部分。
+ 檔案採用支援的格式。如需詳細資訊，請參閱[支援文件格式](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits)。
+ 檔案不超過 AWS 一般參考 中 [Amazon Bedrock 端點和配額](https://docs.aws.amazon.com/general/latest/gr/bedrock.html)中指定的**擷取任務檔案大小**。
+ 如果您的資料來源包含中繼資料檔案，請檢查下列條件，以確保中繼資料檔案不會被忽略：
  + 每個 `.metadata.json` 檔案與其相關聯的來源檔案共用相同的檔案名稱和副檔名。
  + 如果知識庫的向量索引位於 Amazon OpenSearch Serverless 向量存放區中，請檢查向量索引是否已使用 `faiss` 引擎設定。如果向量索引是使用 `nmslib` 引擎設定，您必須執行下列其中一項操作：
    + 在主控台中[建立新的知識庫](knowledge-base-create.md)，讓 Amazon Bedrock 自動為您在 Amazon OpenSearch Serverless 中建立向量索引。
    + 在向量存放區中[建立另一個向量索引](knowledge-base-setup.md)，然後選取 `faiss` 作為**引擎**。然後[建立新的知識庫](knowledge-base-create.md)並指定新的向量索引。
  + 如果知識庫的向量索引位於 Amazon Aurora 資料庫叢集中，建議您使用自訂中繼資料欄位，將所有中繼資料存放在單一資料欄中，並在此資料欄上建立索引。如果您未提供自訂中繼資料欄位，則必須先檢查索引的資料表是否包含中繼資料檔案中每個中繼資料屬性的資料欄，然後才能開始擷取。如需詳細資訊，請參閱 [使用您為知識庫建立的向量存放區的先決條件](knowledge-base-setup.md)。

每次從資料來源新增、修改或移除檔案時，都必須同步資料來源，使其重新編製索引至知識庫。同步是增量的，因此 Amazon Bedrock 只會處理自上次同步以來新增、修改或刪除的文件。

若要了解如何將資料擷取至知識庫並與最新資料同步，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**將資料擷取到您的知識庫，並與最新的資料同步**

1. 開啟位於 [https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/) Amazon Bedrock 主控台。

1. 從左側導覽窗格選取**知識庫**，然後選擇您的知識庫。

1. 在**資料來源**區段中，選取**同步**以開始進行資料擷取或同步您最新的資料。若要停止目前正在同步的資料來源，請選取**停止**。資料來源必須目前正在進行同步，才能停止同步資料來源。您可以再次選取**同步**，以擷取剩餘的資料。

1. 資料擷取完成時若顯示成功，就會出現綠色的成功橫幅。
**注意**  
資料同步完成後，新同步資料的向量內嵌可能需要幾分鐘的時間，才能反映在您的知識庫中，如果您使用 Amazon Aurora (RDS) 以外的向量存放區，則可以進行查詢。

1. 您可以選擇資料來源以檢視其**同步歷史記錄**。選取**檢視警告**，查看資料擷取作業失敗的原因。

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

若要將資料擷取到您的知識庫並與最新資料同步，請使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 請求。指定 `knowledgeBaseId` 和 `dataSourceId`。您也可以傳送 [StopIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StopIngestionJob.html) 請求來停止目前正在執行的資料擷取任務。指定 `dataSourceId`、`ingestionJobId` 和 `knowledgeBaseId`。資料擷取任務必須目前正在執行，才能停止資料擷取。當您準備好時，可以再次傳送 `StartIngestionJob` 請求，以擷取您的其餘資料。

使用透過 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)的 [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) 請求中傳回的 `ingestionJobId`，以追蹤擷取任務的狀態。此外，指定 `knowledgeBaseId` 和 `dataSourceId`。
+ 擷取任務完成時，回應中的 `status` 為 `COMPLETE`。
**注意**  
資料擷取完成後，如果您使用 Amazon Aurora (RDS) 以外的向量存放區，則新擷取資料的向量內嵌可能需要幾分鐘的時間，才能在向量存放區中用於查詢。
+ 回應中的 `statistics` 物件會傳回資料來源中文件擷取是否成功的相關資訊。

您也可以使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 請求，來查看資料來源所有擷取任務的資訊。指定要擷取資料的目的地知識庫的 `dataSourceId` 和 `knowledgeBaseId`。
+ 透過指定在 `filters` 物件中搜尋狀態來篩選結果。
+ 透過指定 `sortBy` 物件，依任務開始時間或任務狀態排序。您可以依遞增或遞減順序排序。
+ 設定在 `maxResults` 欄位中在回應中傳回的結果數量上限。如果結果數目多於您設定的數目，回應會傳回您可以在另一個 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 請求中傳送的 `nextToken`，如此即可查看下一批任務。

------

# 將變更直接擷取到知識庫
<a name="kb-direct-ingestion"></a>

Amazon Bedrock 知識庫可讓您修改資料來源，並在一個步驟中同步變更。如果您的知識庫連接到以下其中一種資料來源類型，則可以利用此功能：
+ Amazon S3
+ 自訂

透過直接擷取，您可以在單一動作中直接新增、更新或刪除知識庫中的檔案，而且您的知識庫可以存取文件，而無需同步。直接擷取會使用 `KnowledgeBaseDocuments` API 操作，為您直接提交到為知識庫設定的向量存放區的文件編製索引。您也可以直接使用這些操作檢視知識庫中的文件，而不需要導覽至連線的資料來源即可檢視。

## 與同步資料來源的差異
<a name="kb-direct-ingestion-sync-diff"></a>

Amazon Bedrock 知識庫也提供一組與[同步資料來源](kb-data-source-sync-ingest.md)相關的 `IngestionJob` API 操作。當您使用 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 請求同步資料來源時，Amazon Bedrock 知識庫會掃描連線資料來源中的每個文件，並驗證它是否已編製索引到為知識庫設定的向量存放區中。如果尚未建立索引，則它會成為向量存放區的索引。

使用 [IngestKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_IngestKnowledgeBaseDocuments.html) 請求，您可以提交要直接編製索引到向量存放區的文件陣列。因此，您可以略過將文件新增至資料來源的步驟。請參閱以下段落，以了解這兩組 API 操作的使用案例：

**如果您使用自訂資料來源**  
您不需要同步或使用 `IngestionJob` 操作。您使用 `KnowledgeBaseDocuments` 操作或在 AWS 管理主控台 中新增、修改或刪除的文件，會成為自訂資料來源和知識庫的一部分。

**如果您使用 Amazon S3 資料來源**  
您可以在不同的使用案例中使用這兩組操作：
+ 第一次將知識庫連線至 S3 資料來源後，您必須在 AWS 管理主控台 中同步資料來源，或透過 Amazon Bedrock API 提交 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 請求。
+ 將文件索引至為您的知識庫設定的向量存放區，或以下列方式移除索引文件：

  1. 將文件新增至 S3 位置或從中刪除文件。然後，在 AWS 管理主控台 中同步您的資料來源，或在 API 中提交 `StartIngestionJob` 請求。如需同步和 `StartIngestionJob` 操作的詳細資訊，請參閱 [將您的資料與您的 Amazon Bedrock 知識庫同步](kb-data-source-sync-ingest.md)。

  1. 使用 `IngestKnowledgeBaseDocuments` 請求直接將 S3 文件擷取至知識庫。如需直接擷取文件的詳細資訊，請參閱 [將文件直接擷取至知識庫](kb-direct-ingestion-add.md)。
**警告**  
對於 S3 資料來源，您直接在 AWS 管理主控台 中或使用 `KnowledgeBaseDocuments` API 操作編製知識庫索引的任何變更都不會反映在 S3 位置中。您可以使用這些 API 操作，在單一步驟中立即變更知識庫。不過，您應該在 S3 位置進行相同的變更，以便下次在 AWS 管理主控台 中或使用 `StartIngestionJob` 同步資料來源時，不會覆寫這些變更。  
請勿同時提交 `IngestKnowledgeBaseDocuments` 和 `StartIngestionJob` 請求。

選取主題，以了解如何在資料來源中執行直接擷取文件：

**Topics**
+ [與同步資料來源的差異](#kb-direct-ingestion-sync-diff)
+ [直接擷取的先決條件](kb-direct-ingestion-prereq.md)
+ [將文件直接擷取至知識庫](kb-direct-ingestion-add.md)
+ [檢視資料來源中文件的相關資訊](kb-direct-ingestion-view.md)
+ [直接從知識庫刪除文件](kb-direct-ingestion-delete.md)

# 直接擷取的先決條件
<a name="kb-direct-ingestion-prereq"></a>

若要使用直接擷取，IAM 角色必須具有使用 `KnowledgeBaseDocs` API 操作的許可。如果您的 IAM 角色已連接 [AmazonBedrockFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonBedrockFullAccess)AWS 受管政策，您可以略過本節。

下列政策可以連線至 IAM 角色，以允許它對您在 `Resource` 欄位中指定的知識庫執行直接擷取。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DirectIngestion",
            "Effect": "Allow",
            "Action": [
                "bedrock:StartIngestionJob",
                "bedrock:IngestKnowledgeBaseDocuments",
                "bedrock:GetKnowledgeBaseDocuments",
                "bedrock:ListKnowledgeBaseDocuments",
                "bedrock:DeleteKnowledgeBaseDocuments"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/${KnowledgeBaseId}"
            ]
        }
    ]
}
```

------

若要進一步限制許可，您可以忽略動作，也可以指定要篩選許可的資源和條件索引鍵。如需動作、資源和條件索引鍵的詳細資訊，請參閱*服務授權參考*中的下列主題：
+ [Amazon Bedrock 定義的動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-actions-as-permissions) – 了解動作、您可以在 `Resource` 欄位中限制其範圍的資源類型，以及您可以在 `Condition` 欄位中篩選許可的條件索引鍵。
+ [Amazon Bedrock 定義的資源類型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies) – 了解 Amazon Bedrock 中的資源類型。
+ [Amazon Bedrock 的條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-policy-keys) – 了解 Amazon Bedrock 中的條件索引鍵。

# 將文件直接擷取至知識庫
<a name="kb-direct-ingestion-add"></a>

本主題說明如何將文件直接擷取至知識庫。限制適用於您可以直接擷取的文件類型，視資料來源而定。如需可用來指定要擷取之文件的方法限制，請參閱下表：


****  

| Data source type (資料來源類型) | 文件已定義內嵌 | Amazon S3 位置中的文件 | 
| --- | --- | --- | 
| Amazon S3 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-no.png)否 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 
| Custom | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 

展開對應您的使用案例的區段：

**注意**  
使用主控台時，您最多可以將 10 個文件直接擷取至您的知識庫。如果您改為使用 `IngestKnowledgeBaseDocuments` API，您最多可以將 25 個文件擷取至您的知識庫。如需此配額的詳細資訊，請參閱《AWS 一般參考指南》**中的 [Amazon Bedrock 服務配額](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#limits_bedrock)。

## 使用主控台
<a name="kb-direct-ingestion-add-console"></a>

若要直接在 中新增或修改文件 AWS 管理主控台，請執行下列動作：

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，選取要擷取文件的知識庫。

1. 在**資料來源**區段中，選取要新增、修改或刪除文件的資料來源。

1. 在**文件**區段中，選擇**新增文件**。然後執行下列其中一項：
   + 若要直接新增或修改文件，請選取**直接新增文件**。然後，執行下列動作：

     1. 在**文件識別碼**欄位中，指定文件的唯一名稱。如果您指定的名稱已存在於資料來源中，則會取代文件。

     1. 若要上傳文件，請選取**上傳**。若要定義文件內嵌，請選取**新增文件內嵌**、選擇格式，然後在方塊中輸入文件的文字。

     1. (選用) 若要將中繼資料與文件建立關聯，請選取**新增中繼資料**，然後輸入索引鍵、類型和值。
   + 若要透過指定文件的 S3 位置來新增或修改文件，請選取**新增 S3 文件**。然後，執行下列動作：

     1. 在**文件識別碼**欄位中，指定文件的唯一名稱。如果您指定的名稱已存在於資料來源中，則會取代文件。

     1. 指定文件的 **S3 位置**是位於您目前的帳戶還是不同的 AWS 帳戶中。然後指定文件的 S3 URI。

     1. (選用) 若要將中繼資料與文件建立關聯，請選擇**中繼資料來源**。指定中繼資料的 S3 URI，或選取**新增中繼資料**，然後輸入索引鍵、類型和值。

1. 若要擷取文件和任何相關聯的中繼資料，請選擇**新增**。

## 使用 API
<a name="kb-direct-ingestion-add-api"></a>

若要使用 Amazon Bedrock API 直接將文件擷取至知識庫，請使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [IngestKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_IngestKnowledgeBaseDocuments.html) 請求，並指定知識庫的 ID 及其連線的資料來源。

**注意**  
如果您指定已存在於知識庫中的文件識別碼或 S3 位置，則會以新內容覆寫該文件。

請求內文包含一個欄位 `documents`，對應至 [KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) 物件的陣列，每個欄位代表要新增至資料來源和擷取至知識庫的文件內容和選用中繼資料。[KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) 物件包含下列欄位：
+ 內容 – 對應至 [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 物件，其中包含要新增之文件內容的相關資訊。
+ 中繼資料 – (選用) 對應至 [DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html) 物件，其中包含要新增之文件中繼資料的相關資訊。如需如何在擷取期間使用中繼資料的詳細資訊，請參閱 [設定和自訂查詢和回應產生](kb-test-config.md) 中的**中繼資料和篩選**一節。

選取主題以了解如何擷取不同資料來源類型的文件，或查看範例：

**Topics**
+ [將文件擷取至連線至自訂資料來源的知識庫](#kb-direct-ingestion-add-custom)
+ [將文件擷取至連線至 Amazon S3 資料來源的知識庫](#kb-direct-ingestion-add-s3)
+ [範例請求內文](#w2aac28c10c23c19c17c11b3c19)

### 將文件擷取至連線至自訂資料來源的知識庫
<a name="kb-direct-ingestion-add-custom"></a>

如果您指定的 `dataSourceId` 屬於自訂資料來源，您可以為 `documents` 陣列中的每個 [KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) 物件新增內容和中繼資料。

新增至自訂資料來源的文件內容可以透過下列方式定義：

#### 定義文件內嵌
<a name="kb-direct-ingestion-add-custom-inline"></a>

您可以定義下列類型的文件內嵌：

------
#### [ Text ]

如果文件是文字，[DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 物件應該採用下列格式：

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

在 `id` 欄位中包含文件的 ID，並在 `data` 欄位中包含文件的文字。

------
#### [ Bytes ]

如果文件包含更多文字，請將其轉換為 Base64 字串。[DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 物件應該採用下列格式：

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

在 `id` 欄位中包含文件的 ID、在 `data` 欄位中包含 Base64 編碼的文件，以及在 `mimeType` 欄位中包含 MIME 類型。

------

#### 從 S3 擷取文件
<a name="w2aac28c10c23c19c17c11b3c15b7b3"></a>

如果您是從 S3 位置擷取文件，則 `content` 欄位中的 [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 物件應為下列格式：

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

在 `id` 欄位中包含文件的 ID、在 `bucketOwnerAccountId` 欄位中包含文件的 S3 儲存貯體擁有者，以及在 `uri` 欄位中包含文件的 S3 URI。

文件的中繼資料可以透過下列方式定義：

#### 定義中繼資料內嵌
<a name="w2aac28c10c23c19c17c11b3c15c11b1"></a>

如果您定義中繼資料內嵌，則 `metadata` 欄位中的 [DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html) 物件應採用下列格式：

```
{ 
    "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 擷取中繼資料
<a name="w2aac28c10c23c19c17c11b3c15c11b3"></a>

您也可以從 S3 位置中具有 `.metadata.json` 副檔名的檔案擷取中繼資料。如需中繼資料檔案格式的詳細資訊，請參閱 [連接至知識庫的 Amazon S3](s3-data-source-connector.md) 中的**文件中繼資料欄位**區段。

如果中繼資料來自 S3 檔案，`metadata` 欄位中的 [DocumentMetadata](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentMetadata.html) 物件應採用下列格式：

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

在 `bucketOwnerAccountId` 欄位中包含中繼資料檔案的 S3 儲存貯體擁有者，以及在 `uri` 欄位中包含中繼資料檔案的 S3 URI。

**警告**  
如果您定義內容內嵌，則必須定義中繼資料內嵌。

### 將文件擷取至連線至 Amazon S3 資料來源的知識庫
<a name="kb-direct-ingestion-add-s3"></a>

如果您指定的 `dataSourceId` 屬於 S3 資料來源，您可以為 `documents` 陣列中的每個 [KnowledgeBaseDocument](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_KnowledgeBaseDocument.html) 物件新增內容和中繼資料。

**注意**  
對於 S3 資料來源，您只能從 S3 位置新增內容和中繼資料。

要新增至 S3 的 S3 文件內容應以下列格式新增至 [DocumentContent](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentContent.html) 物件：

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

在 `bucketOwnerAccountId` 欄位中包含文件的 S3 儲存貯體擁有者，以及在 `uri` 欄位中包含文件的 S3 URI。

新增至自訂資料來源的文件中繼資料可以下列格式定義：

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

**警告**  
您直接擷取至連線至 S3 資料來源之知識庫的文件不會新增至 S3 儲存貯體本身。我們也建議您將這些文件新增至 S3 資料來源，以便在您同步資料來源時不會將其移除或覆寫。

### 範例請求內文
<a name="w2aac28c10c23c19c17c11b3c19"></a>

展開下列各節，查看使用 `IngestKnowledgeBaseDocuments` 時不同使用案例的請求內文：

#### 將自訂文字文件新增至自訂資料來源並將其擷取
<a name="w2aac28c10c23c19c17c11b3c19b5b1"></a>

下列範例顯示將一個文字文件新增至自訂資料來源：

```
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"
            }
         }
     }
   ]
}
```

#### 將 Base64 編碼的文件新增至自訂資料來源並將其擷取
<a name="w2aac28c10c23c19c17c11b3c19b5b3"></a>

下列範例顯示將 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 位置將文件新增至連線至自訂資料來源的知識庫並將其擷取
<a name="w2aac28c10c23c19c17c11b3c19b5b5"></a>

下列範例顯示從 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"
            }
         }
     }
   ]
}
```

#### 將內嵌文件新增至連線至自訂資料來源的知識庫，並包含中繼資料內嵌
<a name="w2aac28c10c23c19c17c11b3c19b5b7"></a>

下列範例顯示文件中自訂資料來源的內嵌新增，以及包含兩個屬性的中繼資料：

```
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 資料來源的知識庫，並包含其中繼資料
<a name="w2aac28c10c23c19c17c11b3c19b5b9"></a>

下列範例顯示將文件與中繼資料一起新增至 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"
            }
        }
    ]
}
```

# 檢視資料來源中文件的相關資訊
<a name="kb-direct-ingestion-view"></a>

下列主題說明如何在資料來源中檢視文件。如果您的知識庫已連線至 Amazon S3 資料來源，您可以檢視已連線 S3 儲存貯體中的文件。

**注意**  
如果您透過連線至 S3 資料來源建立新的知識庫，您必須先同步資料來源，才能在資料來源上使用這些 API 操作。

展開與您的使用案例對應的方法：

## 使用主控台
<a name="kb-direct-ingestion-view-console"></a>

若要在資料來源中檢視已在 AWS 管理主控台 中擷取的文件，請執行下列動作：

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，選取您要檢視其文件的知識庫。

1. 在**資料來源**區段中，選取您要檢視其文件的資料來源。

1. **文件**區段會列出資料來源中的文件。這些文件也已擷取至知識庫。

## 使用 API
<a name="kb-direct-ingestion-view-api"></a>

使用 Amazon Bedrock API，您可以檢視資料來源中已擷取至知識庫的一部分或全部文件。選取與您的使用案例相關的主題。

**Topics**
+ [檢視知識庫中一部分文件的相關資訊](#kb-direct-ingestion-get)
+ [檢視知識庫中所有文件的相關資訊](#kb-direct-ingestion-list)

### 檢視知識庫中一部分文件的相關資訊
<a name="kb-direct-ingestion-get"></a>

若要檢視資料來源中特定文件的相關資訊，請使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [GetKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBaseDocuments.html) 請求，並指定資料來源 ID 及其連線的知識庫。

對於您要取得資訊的每個文件，請在 `documentIdentifiers` 陣列中以下列其中一種格式新增 [DocumentIdentifier](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentIdentifier.html) 項目：
+ 如果資料來源是自訂來源，請在 `id` 欄位中指定文件的 ID：

  ```
  { 
      "custom": { 
          "id": "string"
      },
      "dataSourceType": "CUSTOM"
  }
  ```
+ 如果資料來源是 Amazon S3，請在 `uri` 欄位中指定文件的 S3 URI：

  ```
  {
      "dataSourceType": "S3",
      "s3": { 
          "uri": "string"
      }
  }
  ```

回應會傳回項目陣列，每個項目都包含您請求之文件的相關資訊。

### 檢視知識庫中所有文件的相關資訊
<a name="kb-direct-ingestion-list"></a>

若要檢視資料來源中所有文件的相關資訊，請使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [ListKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBaseDocuments.html) 請求，並指定資料來源的 ID 及其連線的知識庫。也您有下列選項：
+ 指定 `maxResults` 以限制要傳回的結果數量。
+ 如果結果不符合回應，則會在回應的 `nextToken` 欄位中傳回值。您可以在後續請求的 `nextToken` 欄位中使用此值，以取得下一批結果。

# 直接從知識庫刪除文件
<a name="kb-direct-ingestion-delete"></a>

如果您不再需要知識庫中的文件，可以直接將其刪除。若要了解如何從資料來源和知識庫中刪除文件，請展開與使用案例對應的區段：

## 使用主控台
<a name="kb-direct-ingestion-delete-console"></a>

若要使用 AWS 管理主控台 直接從資料來源和知識庫刪除文件，請執行下列動作：

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，選取要從中刪除文件的知識庫。

1. 在**資料來源**區段中，選取要從中刪除文件的資料來源。

1. 在**文件**區段中，選取要刪除的文件。然後選擇**刪除文件**。檢閱訊息然後確認。

## 使用 API
<a name="kb-direct-ingestion-delete-api"></a>

若要透過 Amazon Bedrock API 從您的資料來源刪除特定文件，請使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [DeleteKnowledgeBaseDocuments](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteKnowledgeBaseDocuments.html) 請求，並指定資料來源的 ID 及其連線的知識庫。

對於您要刪除的每個文件，請在 `documentIdentifiers` 陣列中以下列其中一種格式新增 [DocumentIdentifier](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DocumentIdentifier.html) 項目：
+ 如果資料來源是自訂來源，請在 `id` 欄位中指定文件的 ID：

  ```
  { 
      "custom": { 
          "id": "string"
      },
      "dataSourceType": "CUSTOM"
  }
  ```
+ 如果資料來源是 Amazon S3，請在 `uri` 欄位中指定文件的 S3 URI：

  ```
  {
      "dataSourceType": "S3",
      "s3": { 
          "uri": "string"
      }
  }
  ```

**警告**  
您直接從連線至 S3 資料來源之知識庫刪除的文件不會從 S3 儲存貯體本身刪除。建議您從 S3 儲存貯體刪除這些文件，以便在您同步資料來源時，不會重新導入這些文件。

# 檢視 Amazon Bedrock 知識庫的資料來源資訊
<a name="kb-ds-info"></a>

您可以檢視知識庫資料來源的相關資訊，例如設定和同步歷史記錄。

若要監控您的知識庫，包括知識庫的任何資料來源，請參閱[使用 Amazon CloudWatch 的知識庫記錄](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**檢視資料來源的相關資訊**

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**資料來源**區段中，選取要檢視其詳細資訊的資料來源。

1. **資料來源概觀**包含資料來源的詳細資訊。

1. **同步歷史記錄**包含資料來源同步時間的詳細資訊。若要查看同步事件失敗的原因，請選取同步事件，然後選擇**檢視警告**。

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

若要取得資料來源的相關資訊，請使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [GetDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetDataSource.html) 請求，並指定 `dataSourceId` 和其所屬知識庫的 `knowledgeBaseId`。

若要列出知識庫的資料來源的相關資訊，請使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [ListDataSources](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListDataSources.html) 請求，並指定知識庫的 ID。
+ 若要設定在回應中傳回的結果數量上限，請使用 `maxResults` 欄位。
+ 如果結果多於您設定的數字，回應會傳回 `nextToken`。您可以在另一個 `ListDataSources` 請求中使用此值，以查看下一批結果。

若要取得資料來源的同步事件資訊，請使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) 請求。指定 `dataSourceId`、`knowledgeBaseId` 和 `ingestionJobId`。

若要列出知識庫中資料來源的同步歷史記錄，請使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 請求。指定知識庫和資料來源的 ID。您可以指定下列規格。
+ 透過指定在 `filters` 物件中搜尋狀態來篩選結果。
+ 透過指定 `sortBy` 物件，依任務開始時間或任務狀態排序。您可以依遞增或遞減順序排序。
+ 設定在 `maxResults` 欄位中在回應中傳回的結果數量上限。如果結果數目多於您設定的數目，回應會傳回您可以在另一個 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 請求中傳送的 `nextToken`，如此即可查看下一批任務。

------

# 修改 Amazon Bedrock 知識庫的資料來源
<a name="kb-ds-update"></a>

您可以更新知識庫的資料來源，例如變更資料來源組態。

您可以透過下列方式更新資料來源：
+ 從資料來源新增、變更或移除檔案或內容。
+ 變更資料來源組態，或用於在資料擷取期間加密暫時性資料的 KMS 金鑰。如果您變更來源或端點組態詳細資訊，您應該使用必要的存取許可和 Secrets Manager 秘密 (如適用) 來更新或建立新的 IAM 角色。
+ 將資料來源刪除政策設定為「刪除」或「保留」。您可以在刪除知識庫或資料來源資源時，刪除資料來源中轉換為向量嵌入的所有資料。您可以在刪除知識庫或資料來源資源時，保留資料來源中轉換為向量嵌入的所有資料。請注意，如果您刪除知識庫或資料來源資源，則**不會刪除向量存放區本身**。

每次從資料來源新增、修改或移除檔案時，都必須同步資料來源，使其重新編製索引至知識庫。同步是增量的，因此 Amazon Bedrock 只會處理自上次同步以來新增、修改或刪除的文件。開始擷取之前，請檢查您的資料來源是否符合下列條件：
+ 檔案採用支援的格式。如需詳細資訊，請參閱[支援文件格式](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html#kb-ds-supported-doc-formats-limits)。
+ 檔案不超過 AWS 一般參考 中 [Amazon Bedrock 端點和配額](https://docs.aws.amazon.com/general/latest/gr/bedrock.html)中指定的**擷取任務檔案大小**。
+ 如果您的資料來源包含中繼資料檔案，請檢查下列條件，以確保中繼資料檔案不會被忽略：
  + 每個 `.metadata.json` 檔案與其相關聯的來源檔案共用相同的檔案名稱和副檔名。
  + 如果知識庫的向量索引位於 Amazon OpenSearch Serverless 向量存放區中，請檢查向量索引是否已使用 `faiss` 引擎設定。如果向量索引是使用 `nmslib` 引擎設定，您必須執行下列其中一項操作：
    + 在主控台中[建立新的知識庫](knowledge-base-create.md)，讓 Amazon Bedrock 自動為您在 Amazon OpenSearch Serverless 中建立向量索引。
    + 在向量存放區中[建立另一個向量索引](knowledge-base-setup.md)，然後選取 `faiss` 作為**引擎**。然後[建立新的知識庫](knowledge-base-create.md)並指定新的向量索引。
  + 如果知識庫的向量索引位於 Amazon Aurora 資料庫叢集中，建議您使用自訂中繼資料欄位，將所有中繼資料存放在單一資料欄中，並在此資料欄上建立索引。如果您未提供自訂中繼資料欄位，則必須先檢查索引的資料表是否包含中繼資料檔案中每個中繼資料屬性的資料欄，然後才能開始擷取。如需詳細資訊，請參閱 [使用您為知識庫建立的向量存放區的先決條件](knowledge-base-setup.md)。

若要了解如何更新資料來源，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**更新資料來源**

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 選取知識庫的名稱。

1. 在**資料來源**區段中，選取您要編輯和同步之資料來源旁的選項按鈕。

1. (選用) 選擇**編輯**、變更您的組態，然後選取**提交**。如果您變更來源或端點組態詳細資訊，您應該使用必要的存取許可和 Secrets Manager 秘密 (如適用) 來更新或建立新的 IAM 角色。此外，請注意，無法變更以原始擷取資料為基礎的分塊組態。您必須重新建立資料來源。
**注意**  
您無法變更分塊組態。您必須重新建立資料來源。

1. (選用) 選擇在進階設定中編輯資料來源資料刪除政策：

   針對資料刪除政策設定，您可以選擇下列其中一項：
   + 刪除：刪除知識庫或資料來源資源時，刪除資料來源中轉換為向量嵌入的所有資料。請注意，**向量存放區本身不會一併刪除**，僅會刪除資料。如果 AWS 帳戶已刪除，則會忽略此旗標。
   + 保留：刪除知識庫或資料來源資源時，保留資料來源中轉換為向量嵌入的所有資料。請注意，如果您刪除知識庫或資料來源資源，則**不會刪除向量存放區本身**。

1. 選擇**同步**。

1. 同步完成且**狀態**變為**就緒**時，會出現綠色橫幅。

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

**更新資料來源**

1. (選用) 使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [UpdateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateDataSource.html) 請求，變更任何組態，並指定您不想變更的相同組態。如果您變更來源或端點組態詳細資訊，您應該使用必要的存取許可和 Secrets Manager 秘密 (如適用) 來更新或建立新的 IAM 角色。
**注意**  
您無法變更 `chunkingConfiguration`。使用現有的 `chunkingConfiguration` 傳送請求，或重新建立資料來源。

1. (選用) 變更資料來源的 `dataDeletionPolicy`。您可以在刪除知識庫或資料來源資源時，`DELETE` 資料來源中轉換為向量嵌入的所有資料。如果 AWS 帳戶已刪除，則會忽略此旗標。您可以在刪除知識庫或資料來源資源時，`RETAIN` 資料來源中轉換為向量嵌入的所有資料。請注意，如果您刪除知識庫或資料來源資源，則**不會刪除向量存放區本身**。

1. 使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 請求，指定 `dataSourceId` 和 `knowledgeBaseId`。

------

# 從 Amazon Bedrock 知識庫刪除資料來源
<a name="kb-ds-delete"></a>

您可以刪除或移除不再需要的資料來源，或用於知識庫的資料來源。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**刪除資料來源**

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**資料來源**區段中，選取要刪除之資料來源旁的選項按鈕。

1. 選擇 **刪除**。

1. 成功刪除資料來源時，會出現綠色橫幅。
**注意**  
您資料來源的資料刪除政策設定為「刪除」(刪除資料來源時刪除所有資料，但**不刪除向量存放區本身**) 或「保留」(刪除資料來源時保留所有資料)。如果您刪除資料來源或知識庫，則**不會刪除向量存放區本身**。如果資料來源資料刪除政策設定為「Delete」，則資料來源可能會因為組態或向量存放區存取權的問題，而無法成功完成刪除程序。您可以檢查「DELETE\$1UNSUCCESSFUL」狀態，以查看資料來源無法成功刪除的原因。

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

若要從知識庫刪除資料來源，請傳送 [DeleteDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeletDataSource.html) 請求，指定 `dataSourceId` 和 `knowledgeBaseId`。

**注意**  
您資料來源的資料刪除政策設定為 `DELETE` (刪除資料來源時刪除所有資料，但**不刪除向量存放區本身**) 或 `RETAIN` (刪除資料來源時保留所有資料)。如果您刪除資料來源或知識庫，則**不會刪除向量存放區本身**。如果資料來源資料刪除政策設定為「`DELETE`」，則資料來源可能會因為組態或向量存放區存取權的問題，而無法成功完成刪除程序。如果資料來源狀態為 `DELETE_UNSUCCESSFUL`，您可以檢視 `failureReasons`，以查看資料來源無法成功刪除的原因。

------

# 建立多模態內容的知識庫
<a name="kb-multimodal"></a>

Amazon Bedrock 知識庫支援多模態內容，包括影像、音訊和影片檔案。您可以使用影像做為查詢進行搜尋、擷取視覺上類似的內容，以及搭配傳統文字文件處理多媒體檔案。此功能可讓您擷取各種資料類型的洞見：獨立映像、音訊錄製，以及整個組織中存放的影片檔案。

Amazon Bedrock 知識庫可讓您從文字、視覺效果和音訊內容建立索引和擷取資訊。組織現在可以使用映像搜尋產品目錄、在訓練影片中尋找特定時刻，以及從客戶支援通話錄音擷取相關客群。

**區域可用性**  
多模式處理方法有不同的區域可用性。如需詳細資訊，請參閱 [區域可用性](kb-multimodal-choose-approach.md#kb-multimodal-processing-regions)。

## 特性和功能
<a name="kb-multimodal-features"></a>

多模式知識庫提供下列關鍵功能：

**以映像為基礎的查詢**  
使用 Nova Multimodal Embeddings 時，將影像提交為搜尋查詢，以尋找視覺上相似的內容。支援產品比對、視覺相似度搜尋和影像擷取。

**音訊內容擷取**  
使用文字查詢搜尋音訊檔案。使用時間戳記參考從記錄擷取特定區段。音訊轉錄可跨語音內容進行文字型搜尋，包括會議、通話和播客。

**視訊區段擷取**  
使用文字查詢在影片檔案中尋找特定時刻。擷取具有精確時間戳記的視訊區段。

**跨模式搜尋**  
搜尋不同的資料類型，包括文字文件、影像、音訊和影片。無論原始格式為何，擷取相關內容。

**具有時間戳記的來源參考**  
擷取結果包括參考具有音訊和視訊時間中繼資料的原始檔案。可精確導覽至多媒體內容中的相關區段。

**靈活的處理選項**  
為視覺相似性選擇原生多模態內嵌，或為以語音為基礎的內容選擇文字轉換。根據內容特性和應用程式需求設定處理方法。

## 運作方式
<a name="kb-multimodal-how-it-works"></a>

多模式知識庫透過多階段管道處理和擷取內容，以適當處理不同的資料類型：

****擷取和處理****

1. **資料來源連線：**將您的知識庫連接至 Amazon S3 儲存貯體或包含文字文件、影像、音訊檔案和影片檔案的自訂資料來源。

1. **檔案類型偵測：**系統會依副檔名識別每個檔案類型，並將其路由至適當的處理管道。

1. **內容處理：**根據您的組態，使用兩種方法之一來處理檔案：
   + **Nova 多模態內嵌：**保留原生格式以進行視覺和音訊相似性比對。影像、音訊和視訊會直接內嵌，而不會轉換為文字。
   + **Bedrock Data Automation (BDA)：**將多媒體轉換為文字表示。使用自動語音辨識 (ASR) 轉錄音訊、處理影片以擷取場景摘要和文字記錄，以及擷取 OCR 和視覺內容的影像。

1. **內嵌產生：**已處理的內容會使用您選取的內嵌模型轉換為向量內嵌。這些內嵌會擷取語意意義，並啟用以相似性為基礎的擷取。

1. **向量儲存：**內嵌項目與中繼資料一起存放在您設定的向量資料庫中，包括檔案參考、時間戳記 （適用於音訊和視訊） 和內容類型資訊。

1. **多模態儲存 （選用）：**如果已設定，原始多媒體檔案會複製到專用多模態儲存目的地，以便可靠擷取，即使來源檔案遭到修改或刪除，也能確保可用性。

****查詢和擷取****

1. **查詢處理：**使用者查詢 （文字或影像） 會使用擷取期間使用的相同內嵌模型轉換為內嵌。

1. **相似性搜尋：**查詢內嵌會與向量資料庫中儲存的內嵌進行比較，以識別最相關的內容。

1. **結果擷取：**系統會傳回具有中繼資料的相符內容，包括：
   + 來源 URI （原始檔案位置）
   + 時間戳記中繼資料 （適用於音訊和視訊區段）
   + 內容類型和模態資訊

1. **回應產生 （選用）：**對於`RetrieveAndGenerate`請求，擷取的內容會傳遞至基礎模型，以產生內容相關的文字回應。使用 BDA 處理或知識庫包含文字內容時支援此功能。

**重要**  
系統會傳回參考，以使用音訊和視訊內容的時間戳記中繼資料完成檔案。您的應用程式必須根據提供的開始和結束時間戳記來擷取和播放特定客群。會自動 AWS 管理主控台 處理此操作。

**Topics**
+ [特性和功能](#kb-multimodal-features)
+ [運作方式](#kb-multimodal-how-it-works)
+ [選擇您的多模式處理方法](kb-multimodal-choose-approach.md)
+ [多模式知識庫的先決條件](kb-multimodal-prerequisites.md)
+ [建立多模態內容的知識庫](kb-multimodal-create.md)
+ [新增資料來源並開始擷取](kb-multimodal-add-data-source-and-ingest.md)
+ [測試和查詢多模式知識庫](kb-multimodal-test-and-query.md)
+ [對多模式知識庫進行故障診斷](kb-multimodal-troubleshooting.md)

# 選擇您的多模式處理方法
<a name="kb-multimodal-choose-approach"></a>

Amazon Bedrock 知識庫提供兩種處理多模態內容的方法：用於視覺相似性搜尋的 Nova 多模態內嵌，以及用於以文字為基礎的多媒體內容處理之 Bedrock Data Automation (BDA)。如果您的輸入模式是影像，但不適用於音訊或視訊，您也可以使用基礎模型做為剖析器。

本節說明使用 Nova Multimodal Embeddings 和 BDA 作為多模式內容的處理方法。每種方法都針對不同的使用案例和查詢模式進行最佳化。

**Topics**
+ [多模式處理方法](#kb-multimodal-processing-approach)
+ [區域可用性](#kb-multimodal-processing-regions)
+ [依內容類型選擇條件](#kb-multimodal-selection-guidance)
+ [支援的檔案類型和資料來源](#kb-multimodal-supported-files)
+ [功能和限制](#kb-multimodal-approach-details)

## 多模式處理方法
<a name="kb-multimodal-processing-approach"></a>

下表顯示 Nova Multimodal Embeddings 和 BDA 之間的比較，用於處理多模式內容。


**處理方法比較**  

| 特性 | Nova 多模態內嵌 | Bedrock 資料自動化 (BDA) | 
| --- | --- | --- | 
| 處理方法 | 在沒有中繼文字轉換的情況下產生內嵌 | 將多媒體轉換為文字，然後建立內嵌 | 
| 支援的查詢類型 | 文字查詢或映像查詢 | 僅限文字查詢 | 
| 主要使用案例 | 視覺相似性搜尋、產品比對、影像探索 | 語音轉錄、文字搜尋、內容分析 | 
| RAG 功能 | 僅限文字內容 | 完整RetrieveAndGenerate支援 | 
| 儲存需求 | 需要多模態儲存目的地 | 多模態儲存目的地是選用的，但如果未指定，則 BDA 只會處理文字資料。對於非文字輸入，您必須指定多模式儲存目的地。 | 

## 區域可用性
<a name="kb-multimodal-processing-regions"></a>


**區域可用性**  

| Nova 多模態內嵌 | Bedrock 資料自動化 (BDA) | 
| --- | --- | 
| 僅限美國東部 （維吉尼亞北部） |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/kb-multimodal-choose-approach.html)  | 

## 依內容類型選擇條件
<a name="kb-multimodal-selection-guidance"></a>

使用此決策矩陣，根據您的內容和使用案例需求選擇適當的處理方法：

**注意**  
如果您搭配 Amazon Nova Multimodal Embeddings 模型使用 BDA 剖析器，內嵌模型會像文字內嵌模型一樣運作。使用多模態內容時，請根據您的使用案例，使用其中一種處理方法來獲得最佳結果。


**依內容類型處理方法建議**  

| 內容類型 | Nova 多模態內嵌 | Bedrock 資料自動化 (BDA) | 
| --- | --- | --- | 
| 產品目錄和映像 | 建議 - 啟用視覺相似度比對和影像型查詢 | 有限 - 僅透過 OCR 擷取文字 | 
| 會議錄音和通話 | 無法有意義的處理語音內容 | 建議 - 提供完整的語音轉錄和可搜尋的文字 | 
| 訓練和教育影片 | 部分 - 處理視覺化內容，但錯過語音 | 建議 - 同時擷取語音文字記錄和視覺化描述 | 
| 客戶支援錄音 | 不建議 - 無法有效處理語音內容 | 建議 - 建立完整的可搜尋對話文字記錄 | 
| 技術圖表 | 建議 - 非常適合視覺相似性和模式比對 | 有限 - 擷取文字標籤，但錯過視覺關係 | 

## 支援的檔案類型和資料來源
<a name="kb-multimodal-supported-files"></a>

支援的檔案類型取決於您選擇的處理方法：


**透過處理方法支援的檔案類型**  

| 檔案類型 | Nova 多模態內嵌 | Bedrock 資料自動化 (BDA) | 
| --- | --- | --- | 
| 映像 | .png、.jpg、.jpeg、.gif、.webp | .png、.jpg、.jpeg | 
| 音訊 | .mp3、.ogg、.wav | .amr、.flac、.m4a、.mp3、.ogg、.wav | 
| 影片 | .mp4、.mov、.mkv、.webm、.flv、.mpeg、.mpg、.wmv、.3gp | .mp4、.mov | 
| 文件 | 以文字處理 | .pdf （加上影像中的文字擷取） | 

****支援的資料來源****  
下列資料來源支援多模態內容：
+ **Amazon S3：**對所有多模態檔案類型的完整支援
+ **自訂資料來源：**支援最多 10MB base64 編碼的內嵌內容

**重要**  
多模式擷取目前僅適用於 Amazon S3 資料來源。其他資料來源 (Confluence、SharePoint、Salesforce、Web Crawler) 不會在擷取期間處理多模式檔案。這些檔案會略過，且不適用於多模式查詢。

## 功能和限制
<a name="kb-multimodal-approach-details"></a>

**Nova 多模式內嵌**  
**主要功能：**  
+ 原生多模態處理會保留原始內容格式，以獲得最佳視覺相似性比對
+ 以映像為基礎的查詢可讓使用者上傳映像並尋找視覺上相似的內容
+ 產品目錄、視覺化搜尋和內容探索應用程式的卓越效能
**限制：**  
+ 無法有效地處理語音或音訊內容 - 無法搜尋口語資訊
+ `RetrieveAndGenerate` 和 重新排名功能僅限於文字內容
+ 需要專用多模態儲存目的地的組態

**Bedrock 資料自動化 (BDA)**  
**主要功能：**  
+ 使用自動語音辨識 (ASR) 技術的全面語音轉錄
+ 視覺化內容分析可產生影像和影片場景的描述性文字
+ 完整`RetrieveAndGenerate`支援可跨所有內容啟用完整的 RAG 功能
+ 文字型搜尋可在所有多媒體內容類型中一致運作
**限制：**  
+ 在沒有 Nova 多模式內嵌的情況下使用時，不支援以映像為基礎的查詢 - 所有搜尋都必須使用文字輸入
+ 無法執行視覺相似度比對或image-to-image搜尋
+ 由於內容轉換需求，擷取處理時間較長
+ 相較於 Nova 多模式內嵌，支援較少的多媒體檔案格式

**語音內容處理**  
Nova Multimodal Embeddings 無法有效地處理音訊或影片檔案中的語音內容。如果您的多媒體內容包含使用者搜尋所需的重要口語資訊，請選擇 BDA 方法，以確保完整轉錄和可搜尋性。

# 多模式知識庫的先決條件
<a name="kb-multimodal-prerequisites"></a>

Amazon Bedrock 多模式知識庫需要標準知識庫以外的額外設定，才能處理影像、音訊和影片內容。特定的先決條件取決於您選擇的處理方法和儲存組態。

您必須先滿足下列先決條件，才能建立多模式知識庫：

**Topics**
+ [先決條件](#kb-multimodal-prerequisites)
+ [多模態內容的許可](#kb-multimodal-prerequisites-permissions)

## 先決條件
<a name="kb-multimodal-prerequisites"></a>

1. 請確定您的資料位於[支援的資料來源連接器](data-source-connectors.md)中。只有 Amazon S3 和自訂資料來源支援多模態內容。

1. (選用) [設定您自己的支援向量存放區](knowledge-base-setup.md)。如果您打算使用 AWS 管理主控台 來自動為您建立向量存放區，則可以略過此步驟。

1. 建立具有適當多模態處理許可的 custom AWS Identity and Access Management (IAM) [服務角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-role)。如需詳細資訊，請參閱 [多模態內容的許可](#kb-multimodal-prerequisites-permissions)。
**注意**  
如果您使用的是 主控台，Amazon Bedrock 知識庫會自動為您設定許可。

1. (選用) 依照 [知識庫資源的加密](encryption-kb.md) 中的步驟設定額外的安全組態。

1. 如果您打算搭配 BDA 處理的內容使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 操作，請遵循 中的步驟，請求存取您將在其中使用模型的 區域中使用的模型[存取 Amazon Bedrock 基礎模型](model-access.md)。

## 多模態內容的許可
<a name="kb-multimodal-prerequisites-permissions"></a>

多模式知識庫需要超出標準知識庫許可的額外許可。特定許可取決於您選擇的處理方法和儲存組態。

您必須根據您的多模式處理方法設定下列許可：
+ **Nova Multimodal Embeddings 許可：**使用 Nova Multimodal Embeddings 進行直接視覺和音訊相似性搜尋時需要。包含非同步模型調用和多模式儲存存取的許可。
+ **Bedrock Data Automation (BDA) 許可：**使用 BDA 將多模態內容轉換為文字表示時需要。包括資料自動化調用和狀態監控的許可。
+ **客戶受管 KMS 金鑰許可：**在 BDA 處理中使用客戶受管加密金鑰時需要。包含金鑰操作和授予建立的許可。
+ **多模態儲存許可：**設定多模態儲存目的地時需要。包含儲存貯體的標準 S3 許可。

如需詳細的 IAM step-by-step許可組態，請參閱 [多模態內容的許可](kb-permissions.md#kb-permissions-multimodal)。

### 儲存需求
<a name="kb-multimodal-storage-requirements"></a>

**Nova 多模式內嵌**  
**必要：**您必須設定多模式儲存目的地。此目的地會存放多媒體檔案的副本以供擷取，並確保即使修改或刪除來源檔案的可用性。

**Bedrock 資料自動化 (BDA)**  
**選用：**您可以設定多模式儲存貯體以獲得額外的可靠性，也可以在執行時間擷取檔案。不過，這不是必要的，因為 BDA 會將內容轉換為文字。  
如果您在未設定多模式儲存貯體的情況下選取 BDA 剖析器，則只能使用文字剖析。若要利用多模態剖析功能搭配 BDA （處理影像、音訊和視訊），您必須設定多模態儲存目的地。

**多模式儲存目的地組態**  
設定多模式儲存目的地時，請考慮下列事項：
+ **使用不同的儲存貯體 （建議）：**為您的資料來源和多模式儲存目的地設定不同的 Amazon S3 儲存貯體。這可提供最簡單的設定，並避免潛在的衝突。
+ **如果使用相同的儲存貯體：**您必須為資料來源指定包含字首，以限制擷取的內容。這可防止重新擷取擷取的媒體檔案。
+ **避免 "aws/" 字首：**針對資料來源和多模態儲存目的地使用相同的儲存貯體時，請勿使用開頭為 "aws/" 的包含字首，因為此路徑會保留給擷取的媒體儲存。

# 建立多模態內容的知識庫
<a name="kb-multimodal-create"></a>

您可以使用 主控台或 API 建立多模式知識庫。根據您的多模式處理需求選擇您的方法。

**重要**  
多模式支援僅在建立具有非結構化資料來源的知識庫時可用。結構化資料來源不支援多模式內容處理。

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

**從主控台建立多模式知識庫**

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，選擇**建立**，然後選擇**具有向量存放區的知識庫**。

1. (選用) 在**知識庫詳細資訊**下，變更預設名稱並提供知識庫的描述。

1. 在 **IAM 許可**區段中，選擇提供 Amazon Bedrock 許可的 IAM 角色，以存取其他必要的 AWS 服務。您可以讓 Amazon Bedrock 為您建立服務角色，也可以選擇使用自己的自訂角色。如需多模式許可，請參閱 [多模態內容的許可](kb-permissions.md#kb-permissions-multimodal)。

1. 選擇 **Amazon S3** 做為資料來源，然後選擇**下一步**以設定資料來源。
**注意**  
在知識庫建立期間，您最多可以新增 5 個 Amazon S3 資料來源。建立知識庫後，可以新增其他資料來源。

1. 提供包含多模態內容之儲存貯體的 **S3 URI**，並視需要設定包含字首。包含字首是資料夾路徑，可用來限制要擷取的內容。

1. 在**區塊和剖析組態**下，選擇您的剖析策略：
   + **Bedrock 預設剖析器：**建議用於純文字內容處理。此剖析器會處理常見的文字格式，同時忽略多模式檔案。支援文字文件，包括 Word、Excel、HTML、Markdown、TXT 和 CSV 檔案。
   + **Bedrock Data Automation (BDA)：**將多模態內容轉換為可搜尋的文字表示。處理 PDFs、影像、音訊和影片檔案，以擷取文字、產生視覺內容的描述，以及建立音訊和影片內容的轉錄。
   + **基礎模型剖析器：**為複雜的文件結構提供進階剖析功能。處理 PDFs、影像、結構化文件、資料表和視覺效果豐富的內容，以擷取文字並產生視覺效果元素的描述。

1. 選擇**下一步**，然後選取內嵌模型和多模式處理方法。
   + **Amazon Nova 多模態內嵌 V1.0：**選擇 **Amazon Nova 內嵌 V1.0** 以進行直接視覺和音訊相似性搜尋。設定音訊和視訊區塊持續時間 (1-30 秒，預設 5 秒），以控制如何分割內容。
**注意**  
音訊和視訊區塊參數是在內嵌模型層級設定，而不是在資料來源層級設定。如果您為非多模態嵌入模型提供此組態，則會發生驗證例外狀況。設定音訊和視訊區塊持續時間 （預設值：5 秒，範圍：1-30 秒），以控制分段內容的方式。較短區塊可實現精確的內容擷取，而較長區塊則可保留更多語意內容。
**重要**  
Amazon Nova 內嵌 v1.0 對在音訊/影片資料中搜尋語音內容的支援有限。如果您需要支援語音，請使用 Bedrock Data Automation 做為剖析器。
   + **使用 BDA 的文字內嵌：**使用 BDA 處理時，請選擇文字內嵌模型 （例如 Titan Text Embeddings v2)。文字內嵌模型會將擷取限制為純文字內容，但您可以透過選取 Amazon Bedrock Data Automation 或 Foundation Model 做為剖析器來啟用多模式擷取。
**注意**  
如果您將 BDA 剖析器與 Nova Multimodal Embeddings 搭配使用，Amazon Bedrock 知識庫會先進行 BDA 剖析。在這種情況下，內嵌模型不會產生影像、音訊和視訊的原生多模式內嵌，因為 BDA 會將這些內嵌轉換為文字表示。

1. 如果使用 Nova 多模態內嵌，請指定 Amazon S3 儲存貯體來設定**多模態儲存目的地**，其中會存放處理的檔案以供擷取。知識庫會將剖析的映像存放在單一 Amazon S3 儲存貯體中，並建立資料夾 .bda 以方便存取。
**生命週期政策建議**  
使用 Nova 多模態內嵌時，Amazon Bedrock 會將暫時性資料存放在多模態儲存目的地，並在處理完成後嘗試將其刪除。我們建議在暫時性資料路徑上套用生命週期政策，以確保適當的清除。如需詳細說明，請參閱 [使用 Amazon S3 生命週期政策管理暫時性資料](kb-multimodal-troubleshooting.md#kb-multimodal-lifecycle-policy)。

1. 在**向量資料庫**區段中，選擇向量存放區方法，並根據您選擇的內嵌模型設定適當的維度。

1. 選擇**下一步**，檢閱知識庫組態的詳細資訊，然後選擇**建立知識庫**。

------
#### [ CLI ]

**使用 建立多模式知識庫 AWS CLI**
+ 使用 Nova Multimodal Embeddings 建立知識庫。傳送[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html)請求：

  ```
  aws bedrock-agent create-knowledge-base \
  --cli-input-json file://kb-nova-mme.json
  ```

  的內容 `kb-nova-mme.json`（將預留位置值取代為您的特定組態）：

  ```
  {
      "knowledgeBaseConfiguration": {
          "vectorKnowledgeBaseConfiguration": {
              "embeddingModelArn": "arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-multimodal-embeddings-v1:0",
              "supplementalDataStorageConfiguration": {
                  "storageLocations": [
                      {
                          "type": "S3",
                          "s3Location": {
                              "uri": "s3://<multimodal-storage-bucket>/"
                          }
                      }
                  ]
              }
          },
          "type": "VECTOR"
      },
      "storageConfiguration": {
          "opensearchServerlessConfiguration": {
              "collectionArn": "arn:aws:aoss:us-east-1:<account-id>:collection/<collection-id>",
              "vectorIndexName": "<index-name>",
              "fieldMapping": {
                  "vectorField": "<vector-field>",
                  "textField": "<text-field>",
                  "metadataField": "<metadata-field>"
              }
          },
          "type": "OPENSEARCH_SERVERLESS"
      },
      "name": "<knowledge-base-name>",
      "description": "Multimodal knowledge base with Nova Multimodal Embeddings"
  }
  ```

  取代下列預留位置：
  + `<multimodal-storage-bucket>` - 用於儲存多模式檔案的 S3 儲存貯體
  + `<account-id>` - 您的 AWS 帳戶 ID
  + `<collection-id>` - OpenSearch Serverless 集合 ID
  + `<index-name>` - OpenSearch 集合中的向量索引名稱 （為您選擇的內嵌模型設定適當的維度）
  + `<vector-field>` - 用於儲存內嵌的欄位名稱
  + `<text-field>` - 用於儲存文字內容的欄位名稱
  + `<metadata-field>` - 用於儲存中繼資料的欄位名稱

------

# 新增資料來源並開始擷取
<a name="kb-multimodal-add-data-source-and-ingest"></a>

建立知識庫之後，請新增包含多模式內容的資料來源，並開始擷取任務來處理內容並編製索引。

**資料來源刪除行為**  
當您刪除將刪除政策設定為 RETAIN 的資料來源時，擷取的內容會保留在向量資料庫中，並繼續用於擷取。只有在刪除資料來源後明確同步知識庫時，才會移除內容。具有預設 DELETE 政策的資料來源會在刪除期間自動從向量資料庫和補充儲存中移除內容。這可確保即使來源檔案遭到修改或刪除，您的知識庫仍會繼續運作，但您應該注意，使用 RETAIN 政策刪除的資料來源仍可能導致搜尋結果。

## 新增資料來源
<a name="kb-multimodal-add-data-source"></a>

將包含多模式內容的資料來源新增至知識庫。

**重要**  
對於 BDA 資料來源：只有啟動音訊/視訊支援後建立的資料來源才會處理音訊和視訊檔案。在此功能啟動之前建立的現有 BDA 資料來源將繼續略過音訊和視訊檔案。若要啟用現有知識庫的音訊/視訊處理，請建立新的資料來源。

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

**從主控台新增資料來源**

1. 在知識庫詳細資訊頁面中，選擇**新增資料來源**。

1. 選擇 **Amazon S3** 作為資料來源類型。

1. 為您的資料來源提供名稱和描述。

1. 提供儲存貯體 URI 和任何包含字首，以設定包含多模態檔案的 Amazon S3 位置。

1. 在**內容剖析和區塊下**，設定您的剖析和區塊化方法：
**注意**  
文字內嵌模型會將擷取限制為純文字內容，但您可以透過選取 Amazon Bedrock Data Automation （適用於音訊、影片和影像） 或 Foundation Model 作為剖析器 （適用於影像），透過文字啟用多模式擷取。

   從三種剖析策略中選擇：
   + **Bedrock 預設剖析器：**建議用於純文字剖析。此剖析器會忽略多模態內容，且通常與多模態內嵌模型搭配使用。
   + **Bedrock 資料自動化做為剖析器：**啟用以文字形式剖析和儲存多模態內容，並支援 PDFs、影像、音訊和影片檔案。
   + **基礎模型作為剖析器：**提供影像和結構化文件的進階剖析，支援 PDFs、影像、資料表和視覺效果豐富的文件。

1. 選擇**新增資料來源**以建立資料來源。

------
#### [ CLI ]

**使用 新增資料來源 AWS CLI**
+ 為您的多模態內容建立資料來源。傳送[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html)請求：

  ```
  aws bedrock-agent create-data-source \
  --knowledge-base-id <knowledge-base-id> \
  --cli-input-json file://ds-multimodal.json
  ```

  對於 Nova Multimodal Embeddings （不需要特殊剖析組態），請使用下列`ds-multimodal.json`內容：

  ```
  {
      "dataSourceConfiguration": {
          "type": "S3",
          "s3Configuration": {
              "bucketArn": "arn:aws:s3:::<data-source-bucket>",
              "inclusionPrefixes": ["<folder-path>"]
          }
      },
      "name": "multimodal_data_source",
      "description": "Data source with multimodal content",
      "dataDeletionPolicy": "RETAIN"
  }
  ```

  對於 BDA 剖析方法，請使用下列組態：

  ```
  {
      "dataSourceConfiguration": {
          "type": "S3",
          "s3Configuration": {
              "bucketArn": "arn:aws:s3:::<data-source-bucket>",
              "inclusionPrefixes": ["<folder-path>"]
          }
      },
      "name": "multimodal_data_source_bda",
      "description": "Data source with BDA multimodal parsing",
      "dataDeletionPolicy": "RETAIN",
      "vectorIngestionConfiguration": {
          "parsingConfiguration": {
              "bedrockDataAutomationConfiguration": {
                  "parsingModality": "MULTIMODAL"
              }
          }
      }
  }
  ```

------

## 開始擷取任務
<a name="kb-multimodal-start-ingestion"></a>

新增資料來源之後，請啟動擷取任務，以處理和索引您的多模式內容。

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

**從主控台開始擷取**

1. 在資料來源詳細資訊頁面中，選擇**同步**。

1. 在資料來源頁面上監控同步狀態。擷取可能需要幾分鐘的時間，取決於多模式檔案的大小和數量。

1. 一旦同步成功完成，您的多模態內容就可以進行查詢。

------
#### [ CLI ]

**使用 開始擷取 AWS CLI**

1. 啟動擷取任務。傳送[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html)請求：

   ```
   aws bedrock-agent start-ingestion-job \
   --knowledge-base-id <knowledge-base-id> \
   --data-source-id <data-source-id>
   ```

   將預留位置取代為：
   + `<knowledge-base-id>` - 知識庫建立的 ID
   + `<data-source-id>` - 資料來源建立的 ID

1. 使用 監控擷取任務狀態[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html)。

------

## 刪除資料來源後重新同步
<a name="kb-multimodal-resync-after-deletion"></a>

如果您刪除資料來源並想要從知識庫中移除其內容，則必須明確重新同步知識庫：

**移除已刪除的資料來源內容**

1. 使用主控台或 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteDataSource.html) API 刪除資料來源。

1. 在任何剩餘的資料來源上啟動新的擷取任務，以更新向量資料庫，並從已刪除的資料來源中移除內容。

1. 確認查詢不會再從已刪除的資料來源傳回結果。

**注意**  
如果沒有重新同步，即使資料來源不再存在，來自已刪除資料來源的內容仍會繼續出現在搜尋結果中。

# 測試和查詢多模式知識庫
<a name="kb-multimodal-test-and-query"></a>

擷取多模式內容之後，您可以使用主控台或 API 來測試和查詢您的知識庫。可用的查詢類型取決於您選擇的處理方法。

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

**從主控台測試您的知識庫**

1. 從您的知識庫詳細資訊頁面，捲動至**測試知識庫**區段。

1. 選擇您的查詢類型：
   + **僅限標準擷取：**從單一知識庫中的資料來源查詢和擷取資訊。
   + **擷取和回應產生：**使用基礎模型查詢單一知識庫，並根據擷取的結果產生回應。
**注意**  
如果您有多模態內容，則必須使用 BDA 剖析器來擷取和產生回應。

1. 視需要設定其他選項：
   + **來源區塊：**指定要傳回的來源區塊數量上限
   + **搜尋類型：**選取搜尋類型以自訂查詢策略
   + **中繼資料篩選條件：**套用篩選條件以縮小搜尋結果
   + **護欄：**選取現有的護欄或建立新的護欄

1. 輸入文字查詢或上傳映像 （僅限Nova 多模態內嵌） 以搜尋您的多模態內容。使用附件按鈕上傳影像以進行視覺相似性搜尋。

1. 檢閱結果，其中包括：
   + 擷取具有相關性分數的內容區塊
   + 來源檔案參考和時間戳記 （適用於音訊/視訊）
   + 中繼資料，包括檔案類型和處理資訊
   + 對於多媒體內容，播放控制項會根據擷取的時間戳記使用自動區段定位

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

下列範例示範如何使用 Amazon Bedrock Agent 執行期 API 以程式設計方式查詢您的多模式知識庫：

**文字查詢範例**  
使用文字輸入搜尋：

```
aws bedrock-agent-runtime retrieve \
--knowledge-base-id <knowledge-base-id> \
--retrieval-query text="robot automation in manufacturing"
```

**影像查詢範例 （僅限Nova 多模態內嵌）**  
使用上傳的映像進行搜尋：

```
{
    "knowledgeBaseId": "<knowledge-base-id>",
    "retrievalQuery": {
        "imageQuery": {
            "inlineContent": {
                "mimeType": "image/jpeg",
                "data": "<base64-encoded-image>"
            }
        }
    }
}
```

------

## 支援的查詢類型
<a name="kb-multimodal-query-types"></a>

**文字查詢**  
同時支援 Nova 多模式內嵌和 BDA 方法。使用自然語言文字搜尋，尋找所有媒體類型的相關內容。

**映像查詢**  
僅支援 Nova 多模式內嵌。上傳映像以在知識庫中尋找視覺上相似的內容。

## 了解回應中繼資料
<a name="kb-multimodal-response-metadata"></a>

多模式查詢回應包含多媒體內容的其他中繼資料：

**來源屬性**  
原始檔案位置 (sourceUri) 和多模態儲存位置 (supplementalUri)，以提供可靠的存取

**暫時中繼資料**  
音訊和視訊區段的開始和結束時間戳記，可精確導覽相關內容

**內容類型資訊**  
檔案格式、處理方法和模式指標，可協助應用程式適當處理不同的內容類型

**向量資料庫中繼資料結構**  
處理和儲存多模態內容時，向量資料庫中會使用下列中繼資料結構：
+ **文字欄位：**對於使用 Nova Multimodal Embeddings 處理的多媒體檔案，此欄位包含空字串，因為內容內嵌為原生多媒體而非文字
+ **中繼資料欄位：**包含結構化資訊，包括來源詳細資訊和相關內容參考：

  ```
  {
    "source": {
      "sourceType": "S3",
      "s3Location": {
        "uri": "s3://source-bucket/path/to/file.mp4"
      }
    },
    "relatedContent": [{
      "type": "S3",
      "s3Location": {
        "uri": "s3://multimodal-storage-bucket/processed/file.mp4"
      }
    }]
  }
  ```
+ **自動建立的欄位：**用於篩選和識別的其他欄位：
  + `x-amz-bedrock-kb-source-uri`：用於篩選操作的原始來源 URI
  + `x-amz-bedrock-kb-data-source-id`：用於追蹤內容原始伺服器的資料來源識別符
  + `x-amz-bedrock-kb-chunk-start-time-in-millis`：音訊和視訊區段的啟動時間戳記，以毫秒為單位
  + `x-amz-bedrock-kb-chunk-end-time-in-millis`：音訊和視訊區段的結束時間戳記，以毫秒為單位
  + `x-amz-bedrock-kb-source-file-mime-type`：來源檔案的 MIME 類型
  + `x-amz-bedrock-kb-source-file-modality`：來源檔案的模式 (TEXT、IMAGE、AUDIO、VIDEO)

**重要**  
應用程式必須使用提供的時間戳記，從音訊和視訊檔案擷取和播放特定區段。知識庫會傳回完整檔案的參考，而不是預先分段的剪輯。

# 對多模式知識庫進行故障診斷
<a name="kb-multimodal-troubleshooting"></a>

本節提供解決使用多模式知識庫時遇到的常見問題的指引。疑難排解資訊會依一般限制、常見錯誤案例及其原因和解決方案，以及效能最佳化建議進行組織。使用此資訊來診斷和解決設定、擷取或查詢多模式內容期間的問題。

## 一般限制
<a name="kb-multimodal-general-limitations"></a>

使用多模式知識庫時，請注意這些目前的限制：
+ **檔案大小限制：**每個影片檔案最多 1.5 GB、每個音訊檔案 1 GB (Nova 多模態內嵌） 或每個檔案 1.5 GB (BDA)
+ **每個擷取任務的檔案：**每個任務最多 15，000 個檔案 (Nova 多模式內嵌） 或每個任務 1，000 個檔案 (BDA)
+ **查詢限制：**每個查詢最多一個映像
+ **資料來源限制：**只有 Amazon S3 和自訂資料來源支援多模式內容
+ **BDA 區塊限制：**使用 Bedrock Data Automation 搭配固定大小區塊時，重疊百分比設定不會套用至音訊和視訊內容
+ **BDA 並行任務限制：**預設限制為 20 個並行 BDA 任務。對於大規模處理，請考慮請求提高服務配額
+ **重新排名器模型限制：**多模型內容不支援重新排名器模型
+ **摘要限制：**不支援包含非文字內容的擷取回應摘要
+ **查詢輸入限制：**目前不支援同時包含文字和影像的輸入。您可以使用文字或影像查詢，但不能同時使用兩者。
+ **護欄映像內容篩選條件：**將映像查詢與已設定映像內容篩選條件的護欄搭配使用時，系統會針對護欄評估輸入映像，如果輸入映像違反設定的篩選條件閾值，可能會遭到封鎖
+ **輸入和類型不符：**根據預設，未指定類型時，輸入會假設為文字。使用文字以外的模態時，您必須指定正確的類型

## 常見錯誤和解決方案
<a name="kb-multimodal-common-errors"></a>

如果您遇到多模式知識庫的問題，請檢閱這些常見案例：

**使用映像查詢時發生 4xx 錯誤**  
**原因：**嘗試搭配純文字內嵌模型或 BDA 處理知識庫使用映像查詢。  
**解決方案：**建立映像查詢支援的知識庫時，請選擇 Amazon Nova 多模式內嵌。

**RAG 傳回具有多模態內容的 4xx 錯誤**  
**原因：**`RetrieveAndGenerate`搭配僅包含多模態內容和 Amazon Nova 多模態內嵌模型的知識庫使用 。  
**解決方案：**將 BDA 剖析器用於 RAG 功能，或確保您的知識庫包含文字內容。

**多模態儲存目的地必要錯誤**  
**原因：**使用 Nova 多模態內嵌而不設定多模態儲存目的地。  
**解決方案：**使用 Nova Multimodal Embeddings 時指定多模式儲存目的地。

**資料來源和多模式儲存使用相同的 S3 儲存貯體**  
**原因：**將資料來源和多模態儲存目的地設定為使用相同的 Amazon S3 儲存貯體，而不使用適當的包含字首。  
**解決方案：**針對資料來源和多模式儲存使用不同的儲存貯體，或設定包含字首以防止重新擷取擷取的媒體檔案。

**包含字首不能以「aws/」開頭**  
**原因：**當您的資料來源和多模態儲存目的地共用相同的 Amazon S3 儲存貯體時，使用以 "aws/" 開頭的包含字首。  
**解決方案：**指定不同的包含字首。"aws/" 路徑保留給擷取的媒體儲存體，不能用作包含字首，以避免重新擷取處理的內容。

**BDA 擷取會略過多模態內容**  
**原因：**知識庫是在沒有多模態儲存目的地的情況下建立的，然後新增 BDA 資料來源與多模態內容。  
**解決方案：**重新建立知識庫，並將多模式儲存目的地設定為啟用音訊、影片和影像檔案的 BDA 處理。

**在沒有多模態內嵌模型的情況下建立的知識庫**  
**原因：**知識庫是使用純文字內嵌模型建立，限制多模式功能。  
**解決方案：**使用 Nova 多模態內嵌建立新的知識庫，以啟用原生多模態處理和影像型查詢。

## 使用 Amazon S3 生命週期政策管理暫時性資料
<a name="kb-multimodal-lifecycle-policy"></a>

使用 Nova 多模態內嵌時，Amazon Bedrock 會將暫時性資料存放在多模態儲存目的地，並在處理完成後嘗試將其刪除。我們建議在暫時性資料路徑上套用生命週期政策，以確保其正確過期。

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

**使用主控台建立生命週期規則**

1. 開啟 [Amazon S3 主控台](https://console.aws.amazon.com/s3)。

1. 導覽至您為知識庫設定的多模態儲存目的地。

1. 選擇**管理**索引標籤，然後選取**建立生命週期規則**。

1. 針對**生命週期規則名稱**，輸入 **Transient Data Deletion**。

1. 在**篩選條件類型**下，選擇**使用一或多個篩選條件限制此規則的範圍**。

1. 針對**字首**，輸入知識庫和資料來源的暫時性資料路徑。

   將下列字首中的預留位置值取代為您實際的識別符：

   ```
   aws/bedrock/knowledge_bases/knowledge-base-id/data-source-id/transient_data
   ```
**重要**  
請勿將生命週期政策套用至整個儲存貯體或「aws/」字首，因為這會刪除您的多模態內容並導致擷取失敗。僅使用上述顯示的特定暫時性資料路徑。

1. 在**生命週期規則動作**下，選取**物件的目前版本過期**。

1. 針對**物件建立後的天數**，輸入 **1**。

1. 選擇**建立規則**。

------
#### [ AWS CLI ]

**使用 建立生命週期規則 AWS CLI**

1. 使用下列內容建立名為 `lifecycle-policy.json`的 JSON 檔案。

   將預留位置值取代為您實際的識別符：
   + *knowledge-base-id* - 您的知識庫識別符
   + *data-source-id* - 您的資料來源識別符

   ```
   {
       "Rules": [
           {
               "ID": "TransientDataDeletion",
               "Status": "Enabled",
               "Filter": {
                   "Prefix": "aws/bedrock/knowledge_bases/knowledge-base-id/data-source-id/transient_data"
               },
               "Expiration": {
                   "Days": 1
               }
           }
       ]
   }
   ```

1. 將生命週期政策套用至您的儲存貯體。以實際儲存貯體名稱取代 *your-multimodal-storage-bucket*：

   ```
   aws s3api put-bucket-lifecycle-configuration \
       --bucket your-multimodal-storage-bucket \
       --lifecycle-configuration file://lifecycle-policy.json
   ```

1. 確認已套用生命週期政策：

   ```
   aws s3api get-bucket-lifecycle-configuration \
       --bucket your-multimodal-storage-bucket
   ```

------

如需 Amazon S3 生命週期政策的詳細資訊，請參閱《*Amazon S3 使用者指南*》中的[管理物件的生命週期](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)。

## 效能考量
<a name="kb-multimodal-performance-considerations"></a>

若要使用多模式知識庫獲得最佳效能，請考慮下列因素：
+ **處理時間：**由於內容轉換，BDA 處理需要更長的時間
+ **查詢延遲：**影像查詢的延遲可能高於文字查詢
+ **區塊持續時間：**音訊/視訊區塊持續時間較長會增加處理時間，但可能會提高準確性

# 透過連線至結構化資料存放區來建立知識庫
<a name="knowledge-base-build-structured"></a>

Amazon Bedrock 知識庫可讓您連線至結構化資料存放區，其中包含符合預先定義結構描述的資料。結構化資料的範例包括資料表和資料庫。Amazon Bedrock 知識庫可以將使用者查詢轉換為適合從支援的結構化資料存放區擷取資料的語言。然後，它可以使用轉換後的查詢來擷取與查詢相關的資料，並產生適當的回應。這可讓您直接使用現有的結構化資料，而無需將其轉換為不同的格式或產生您自己的 SQL 查詢。

設定知識庫之後，您可以透過 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 操作提交查詢以從中擷取資料，或透過 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 操作從擷取的資料產生回應。這些操作基本上會將使用者查詢轉換為適用於連線至知識庫的結構化資料存放區。

您也可以選擇使用 [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) API 操作，在獨立於擷取資料的情況下轉換查詢。此操作會將自然語言查詢轉換為適合所查詢資料來源的 SQL 查詢。您可以獨立使用此操作，並將其插入您的工作流程。

選取主題，以了解將知識庫連線至結構化資料存放區的先決條件和程序。

**Topics**
+ [設定查詢引擎和建立具有結構化資料存放區之知識庫的許可](knowledge-base-prereq-structured.md)
+ [建立連線至結構化資料存放區的知識庫](knowledge-base-structured-create.md)
+ [將結構化資料存放區與您的 Amazon Bedrock 知識庫同步](kb-data-source-structured-sync-ingest.md)

# 設定查詢引擎和建立具有結構化資料存放區之知識庫的許可
<a name="knowledge-base-prereq-structured"></a>

本主題說明將知識庫連線至結構化資料存放區時所需的許可。如果您計劃將 Amazon Bedrock 知識庫連線至結構化資料存放區，則需要滿足先決條件。如需要滿足的一般許可要求，請參閱 [設定使用者或角色的許可，以建立和管理知識庫](knowledge-base-prereq-permissions-general.md)。

**重要**  
執行任意 SQL 查詢可能是任何文字轉 SQL 應用程式的安全風險。我們建議您視需要採取預防措施，例如使用受限的角色、唯讀資料庫和沙盒。

Amazon Bedrock 知識庫支援使用 Amazon Redshift 作為查詢引擎來查詢您的資料存放區。查詢引擎會從結構化資料存放區存取中繼資料，並使用中繼資料協助產生 SQL 查詢。Amazon Redshift 是一項資料倉儲服務，使用 SQL 來分析跨資料倉儲、資料庫和資料湖的結構化資料。

## 建立 Amazon Redshift 查詢引擎
<a name="kb-query-engine-setup-create"></a>

您可以根據您的使用案例使用 Amazon Redshift Serverless 或 Amazon Redshift 佈建，並連線至資料倉儲的工作群組或叢集。Amazon Redshift 引擎可以查詢的基礎資料可以原生存放在 Amazon Redshift 叢集中的資料，或位於預設值下的資料 AWS Glue Data Catalog （例如 Amazon S3 等）。

如果您已建立查詢引擎，則可以略過此先決條件。否則，請執行下列步驟來設定 Amazon Redshift 佈建或 Amazon Redshift Serverless 查詢引擎：

**在佈建的 Amazon Redshift 中設定查詢引擎**

1. 遵循《Amazon Redshift 入門指南》中[步驟 1：建立範例 Amazon Redshift 叢集](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html#rs-gsg-launch-sample-cluster)中的程序。

1. 請記下叢集 ID。

1. (選用) 如需 Amazon Redshift 佈建叢集的詳細資訊，請參閱《Amazon Redshift 管理指南》中的 [Amazon Redshift 佈建叢集](https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)。

**在 Amazon Redshift Serverless 中設定查詢引擎**

1. 僅遵循《Amazon Redshift 入門指南》中的[使用 Amazon Redshift Serverless 建立資料倉儲](https://docs.aws.amazon.com/redshift/latest/gsg/new-user-serverless.html#serverless-console-resource-creation)中的設定程序，並使用預設設定進行設定。

1. 請注意工作群組 ARN。

1. (選用) 如需 Amazon Redshift Serverless 工作群組的詳細資訊，請參閱《Amazon Redshift 管理指南》中的[工作群組和命名空間](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-workgroup-namespace.html)。

## 設定 Amazon Redshift 查詢引擎許可
<a name="kb-query-engine-setup-redshift-permissions"></a>

根據您選擇的 Amazon Redshift 查詢引擎，您可以設定特定許可。您設定的許可取決於身分驗證方法。下表顯示可用於不同查詢引擎的身分驗證方法：


****  

| 身分驗證方法 | Amazon Redshift 佈建 | Amazon Redshift Serverless | 
| --- | --- | --- | 
| IAM | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 
| 資料庫使用者名稱 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-no.png)否 | 
| AWS Secrets Manager | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 

Amazon Bedrock 知識庫會使用[服務角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)將知識庫連線至結構化資料存放區、從這些資料存放區擷取資料，並根據使用者查詢和資料存放區的結構產生 SQL 查詢。

**注意**  
如果您打算使用 AWS 管理主控台 來建立知識庫，您可以略過此先決條件。主控台將建立具有適當許可的 Amazon Bedrock 知識庫服務角色。

若要建立具有適當許可的自訂 IAM 服務角色，請遵循[建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)中的步驟，並連接 [信任關係](kb-permissions.md#kb-permissions-trust) 中定義的信任關係。

然後，為您的知識庫新增存取 Amazon Redshift 查詢引擎和資料庫的許可。展開適用於您的使用案例的區段：

### 您的查詢引擎已佈建 Amazon Redshift
<a name="w2aac28c10c27c13c11c15b1"></a>

將下列政策連接至您的自訂服務角色，以允許其存取您的資料並使用其產生查詢：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RedshiftDataAPIStatementPermissions",
            "Effect": "Allow",
            "Action": [
                "redshift-data:GetStatementResult",
                "redshift-data:DescribeStatement",
                "redshift-data:CancelStatement"
            ],
            "Resource": [
                "*"
            ],
            "Condition": {
                "StringEquals": {
                    "redshift-data:statement-owner-iam-userid": "${aws:userid}"
                }
            }
        },
        {
            "Sid": "RedshiftDataAPIExecutePermissions",
            "Effect": "Allow",
            "Action": [
                "redshift-data:ExecuteStatement"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:cluster:${Cluster}"
            ]
        },
        {
            "Sid": "SqlWorkbenchAccess",
            "Effect": "Allow",
            "Action": [
                "sqlworkbench:GetSqlRecommendations",
                "sqlworkbench:PutSqlGenerationContext",
                "sqlworkbench:GetSqlGenerationContext",
                "sqlworkbench:DeleteSqlGenerationContext"
            ],
            "Resource": "*"
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery"
            ],
            "Resource": "*"
        }
    ]
}
```

------

您也需要新增許可，以允許您的服務角色向查詢引擎進行身分驗證。展開區段以查看該方法的許可。

------
#### [ IAM ]

若要讓您的服務角色使用 IAM 驗證您的 Amazon Redshift 佈建查詢引擎，請將下列政策連接至您的自訂服務角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithFederatedIAMCredentials",
            "Effect": "Allow",
            "Action": "redshift:GetClusterCredentialsWithIAM",
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbname:Cluster/database"
            ]
        }
    ]
}
```

------

------
#### [ Database user ]

若要驗證 Amazon Redshift 資料庫使用者身分，請將下列政策連接至服務角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetCredentialsWithClusterCredentials",
            "Effect": "Allow",
            "Action": [
                "redshift:GetClusterCredentials"
            ],
            "Resource": [
                "arn:aws:redshift:us-east-1:123456789012:dbuser:${cluster}/${dbuser}",
                "arn:aws:redshift:us-east-1:123456789012:dbname:${cluster}/${database}"
            ]
        }
    ]
}
```

------

------
#### [ AWS Secrets Manager ]

若要讓您的服務角色使用 AWS Secrets Manager 秘密向 Amazon Redshift 佈建查詢引擎進行身分驗證，請執行下列動作：
+ 將下列政策連接至該角色：

  ```
  {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "GetSecretPermissions",
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}"
              ]
          }
      ]
  }
  ```

------

### 您的查詢引擎是 Amazon Redshift Serverless
<a name="w2aac28c10c27c13c11c15b3"></a>

連接的許可取決於您的身分驗證方法。展開區段以查看方法的許可。

------
#### [ IAM ]

若要讓您的服務角色使用 IAM 驗證您的 Amazon Redshift Serverless 查詢引擎，請將下列政策連接至您的自訂服務角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RedshiftServerlessGetCredentials",
            "Effect": "Allow",
            "Action": "redshift-serverless:GetCredentials",
            "Resource": [
                "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup/WorkgroupId"
            ]
        }
    ]
}
```

------

------
#### [ AWS Secrets Manager ]

若要讓您的服務角色使用 AWS Secrets Manager 秘密向 Amazon Redshift 佈建查詢引擎進行身分驗證，請執行下列動作：
+ 將下列政策連接至該角色：

  ```
  {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "GetSecretPermissions",
              "Effect": "Allow",
              "Action": [
                  "secretsmanager:GetSecretValue"
              ],
              "Resource": [
                  "arn:aws:secretsmanager:${region}:${account}:secret:${secretName}"
              ]
          }
      ]
  }
  ```

------

## 允許知識庫服務角色存取您的資料存放區
<a name="knowledge-base-prereq-structured-db-access"></a>

請確定您的資料存放在下列其中一個[支援的結構化資料存放區](knowledge-base-structured-create.md)中：
+ Amazon Redshift
+ AWS Glue Data Catalog (AWS Lake Formation)

下表摘要說明查詢引擎可用的身分驗證方法，視您的資料存放區而定：


****  

| 身分驗證方法 | Amazon Redshift | AWS Glue Data Catalog (AWS Lake Formation) | 
| --- | --- | --- | 
| IAM | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | 
| 資料庫使用者名稱 | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-no.png)否 | 
| AWS Secrets Manager | ![\[Green circular icon with a white checkmark symbol inside.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-yes.png)是 | ![\[Red circular icon with an X symbol, indicating cancellation or denial.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/icon-no.png)否 | 

若要了解如何設定 Amazon Bedrock 知識庫服務角色的許可，以存取資料存放區並根據其產生查詢，請展開對應至資料存放區所在服務的區段：

### Amazon Redshift
<a name="w2aac28c10c27c13c13c13b1"></a>

若要授予 Amazon Bedrock 知識庫服務角色存取 Amazon Redshift 資料庫的權限，請使用 [Amazon Redshift 查詢編輯器 v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html) 並執行下列 SQL 命令：

1. (如果您使用 IAM 進行身分驗證，且尚未為資料庫建立使用者) 執行下列命令，該命令使用 [CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html) 來建立資料庫使用者，並允許它透過 IAM 進行身分驗證，以您建立的自訂 Amazon Bedrock 知識庫服務角色名稱取代 *\$1\$1service-role\$1*：

   ```
   CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
   ```
**重要**  
如果您使用在主控台中為您建立的 Amazon Bedrock 知識庫服務角色，然後在執行此步驟之前[同步資料存放區](kb-data-source-structured-sync-ingest.md)，則會為您建立使用者，但同步會失敗，因為使用者尚未獲得存取資料存放區的許可。您必須在同步之前執行下列步驟。

1. 執行 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) 命令，授予身分許可以從資料庫擷取資訊。

------
#### [ IAM ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${dbUser}";
   ```

------
#### [ AWS Secrets Manager username ]

   ```
   GRANT SELECT ON ALL TABLES IN SCHEMA ${schemaName} TO "${secretsUsername}";
   ```

------
**重要**  
請勿授予 `CREATE`、`UPDATE` 或 `DELETE` 存取權。授予這些動作可能會導致資料的意外修改。

   若要更精細地控制可存取的資料表，您可以使用下列表示法取代 `ALL TABLES` 特定資料表名稱：*\$1\$1schemaName\$1**\$1\$1tableName\$1*。如需此表示法的詳細資訊，請參閱[跨資料庫查詢](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)中的**查詢物件**區段。

------
#### [ IAM ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "IAMR:${serviceRole}";
   ```

------
#### [ Database user ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${dbUser}";
   ```

------
#### [ AWS Secrets Manager username ]

   ```
   GRANT SELECT ON ${schemaName}.${tableName} TO "${secretsUsername}";
   ```

------

1. 如果您在 Redshift 資料庫中建立了新的結構描述，請執行下列命令來授予對新結構描述的身分許可。

   ```
   GRANT USAGE ON SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
   ```

### AWS Glue Data Catalog
<a name="w2aac28c10c27c13c13c13b3"></a>

若要授予 Amazon Bedrock Knowledge Bases 服務角色存取 AWS Glue Data Catalog 資料存放區的權限，請使用 [Amazon Redshift 查詢編輯器 v2](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2.html) 並執行下列 SQL 命令：

1. 執行下列命令，該命令使用 [CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html) 來建立資料庫使用者，並允許它透過 IAM 進行身分驗證，以您建立的自訂 Amazon Bedrock 知識庫服務角色名稱取代 *\$1\$1service-role\$1*：

   ```
   CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
   ```
**重要**  
如果您使用在主控台中為您建立的 Amazon Bedrock 知識庫服務角色，然後在執行此步驟之前[同步資料存放區](kb-data-source-structured-sync-ingest.md)，則會為您建立使用者，但同步會失敗，因為使用者尚未獲得存取資料存放區的許可。您必須在同步之前執行下列步驟。

1. 執行下列 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) 命令，授予服務角色從資料庫擷取資訊的許可：

   ```
   GRANT USAGE ON DATABASE awsdatacatalog TO "IAMR:${serviceRole}";
   ```
**重要**  
請勿授予 `CREATE`、`UPDATE` 或 `DELETE` 存取權。授予這些動作可能會導致資料的意外修改。

1. 若要允許存取您的 AWS Glue Data Catalog 資料庫，請將下列許可連接至 服務角色：

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "VisualEditor0",
               "Effect": "Allow",
               "Action": [
                   "glue:GetDatabases",
                   "glue:GetDatabase",
                   "glue:GetTables",
                   "glue:GetTable",
                   "glue:GetPartitions",
                   "glue:GetPartition",
                   "glue:SearchTables"
               ],
               "Resource": [
                   "arn:aws:glue:us-east-1:123456789012:table/${DatabaseName}/${TableName}",
                   "arn:aws:glue:us-east-1:123456789012:database/${DatabaseName}",
                   "arn:aws:glue:us-east-1:123456789012:catalog"
               ]
           }
       ]
   }
   ```

------

1. 透過 將許可授予您的服務角色 AWS Lake Formation （若要進一步了解 Lake Formation 及其與 Amazon Redshift 的關係，請參閱 [Redshift 的資料來源](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-source.html))，請執行下列動作：

   1. 登入 AWS 管理主控台，並在 https：//[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) 開啟 Lake Formation 主控台。

   1. 從左側導覽窗格中選取**資料許可**。

   1. 將許可授予您用於 Amazon Bedrock 知識庫的服務角色。

   1. 授予**描述**和**選取**資料庫和資料表的許可。

1. 根據您在 中使用的資料來源 AWS Glue Data Catalog，您可能需要新增存取該資料來源的許可 （如需詳細資訊，請參閱[AWS Glue 其他 的相依性 AWS 服務](https://docs.aws.amazon.com/glue/latest/dg/dependency-on-other-services.html))。例如，如果您的資料來源位於 Amazon S3 位置，則需要將下列陳述式新增至上述政策。

   ```
   {
       "Sid": "Statement1",
       "Effect": "Allow",
       "Action": [
           "s3:ListBucket",
           "s3:GetObject"
       ],
       "Resource": [
           "arn:aws:s3:::${BucketName}",
           "arn:aws:s3:::${BucketName}/*"
       ]
   }
   ```

1. （選用） 如果您使用 AWS KMS 來加密 Amazon S3 或 中的資料 AWS Glue Data Catalog，則需要將許可新增至角色，以解密 KMS 金鑰上的資料。

   ```
   {
       "Action": [
           "kms:Decrypt"
       ],
       "Resource": [
           "arn:aws:kms:${Region}:${Account}:key/{KmsId}",
           "arn:aws:kms:${Region}:${Account}:key/{KmsId}"
       ],
       "Effect": "Allow"
   }
   ```

# 建立連線至結構化資料存放區的知識庫
<a name="knowledge-base-structured-create"></a>

若要將知識庫連線至結構化資料存放區，請指定下列元件：
+ 

**查詢引擎組態**  
將執行所產生 SQL 查詢之運算服務的組態。查詢引擎用於將自然語言使用者查詢轉換為 SQL 查詢，可用於從資料存放區擷取資料。您可以選擇 Amazon Redshift 作為查詢引擎。選擇此組態時，您必須指定：
  + 運算連線中繼資料，例如叢集 ID 或工作群組 ARN，視選擇的查詢引擎而定。
  + 使用查詢引擎的身分驗證方法，可使用具有適當許可的 IAM 服務角色、查詢引擎資料庫使用者或連結至資料庫憑證的 AWS Secrets Manager 秘密。
+ 

**儲存組態**  
包含您資料的資料存放區的組態。您可以連線至 Amazon Redshift Provisioned 或 Amazon Redshift Serverless，並使用 Amazon Redshift 或 AWS Glue Data Catalog 做為您的資料存放區。
+ 

**(選用) 查詢組態**  
您可以使用選用的查詢組態來提高 SQL 生成的準確性：
  + **查詢時間上限** – 經過這段時間後，查詢就會逾時。
  + **說明** – 提供有關表格或欄的中繼資料或補充資訊。您可以包括表格或資料欄的說明、使用情形附註，或任何其他屬性。您新增的說明可透過提供有關表格或資料欄結構的額外內容和資訊，來改善 SQL 查詢生成。
  + **包含項目和排除項目** – 指定要針對 SQL 生成包含或排除的一組表格或資料欄。如果您想要將 SQL 查詢的範圍限於一組定義的可用表格或資料欄的子集，則此欄位會非常重要。此選項可透過減少不必要的表格或資料欄參考，協助最佳化生成過程。

    如果您指定包含項目，則會忽略所有其他表格和資料欄。如果您指定排除項目，則會忽略您指定的表格和資料欄。
**注意**  
包含項目和排除項目無法替代防護機制，僅用於提高模型準確性。
  + **策劃的查詢** – 一組預先定義的問題和答案範例。問題會編寫成自然語言查詢 (NLQ)，答案則是對應的 SQL 查詢。這些範例透過提供應生成的查詢類型範例，來協助 SQL 生成過程。這些範例可作為參考點來提高生成式 SQL 輸出的準確性和相關性。

展開與使用案例對應的區段：

## 使用主控台
<a name="knowledge-base-structured-create-console"></a>

若要使用 連線至結構化資料存放區 AWS 管理主控台，請執行下列動作：

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，選擇**建立**，然後選取**具有結構化資料存放區的知識庫**。

1. 設定知識庫的下列詳細資訊：

   1. (選用) 變更預設名稱並提供知識庫的描述。

   1. 選取要用於從資料存放區擷取資料的查詢引擎。

   1. 選擇具有適當許可的 IAM 服務角色，以建立和管理此知識庫。您可以讓 Amazon Bedrock 建立服務角色，或選擇已建立的自訂角色。如需建立自訂角色的詳細資訊，請參閱 [設定查詢引擎和建立具有結構化資料存放區之知識庫的許可](knowledge-base-prereq-structured.md)。

   1. (選用) 新增標籤以與您的知識庫建立關聯。如需詳細資訊，請參閱[標記 Amazon Bedrock 資源](tagging.md)。

   1. 選擇**下一步**。

1. 設定您的查詢引擎：

   1. 選取您在其中建立叢集或工作群組的服務。然後選擇要使用的叢集或工作群組。

   1. 選取身分驗證方法，並提供必要的欄位。

   1. 選取要存放中繼資料的資料存放區。然後，選擇或輸入資料庫的名稱。

   1. (選用) 視需要修改查詢組態。如需不同組態的詳細資訊，請參閱本主題的開頭。

   1. 選擇**下一步**。

1. 檢閱您的知識庫組態，並視需要編輯任何區段。確認以建立您的知識庫。

## 使用 API
<a name="knowledge-base-structured-create-api"></a>

若要使用 Amazon Bedrock API 連線至結構化資料存放區，請使用 [Amazon Bedrock 代理人建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)搭配下列一般請求內文來傳送 [CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 請求：

```
{
    "name": "string",
    "roleArn": "string",
    "knowledgeBaseConfiguration": {
        "type": "SQL",
        "sqlKnowledgeBaseConfiguration": [SqlKnowledgeBaseConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_SqlKnowledgeBaseConfiguration.html)
    },
    "description": "string",
    "clientToken": "string",
    "tags": {
        "string": "string"
    }
}
```

下列是必要欄位。


****  

| 欄位 | 基本描述 | 
| --- | --- | 
| 名稱 | 知識庫的名稱 | 
| roleArn | 具有適當許可的[知識庫服務角色](kb-permissions.md)。您可以使用主控台自動建立具有適當許可的服務角色。 | 
| knowledgeBaseConfiguration | 包含知識庫的組態。對於結構化資料庫，指定 SQL 為 type 並包含 sqlKnowledgeBaseConfiguration 欄位。 | 

以下是選填欄位。


****  

| 欄位 | 使用 | 
| --- | --- | 
| description | 包含知識庫的描述。 | 
| clientToken | 為確保 API 請求，僅完成一次。如需詳細資訊，請參閱[確保冪等性](https://docs.aws.amazon.com/ec2/latest/devguide/ec2-api-idempotency.html)。 | 
| 標籤 | 將標籤與流程建立關聯。如需詳細資訊，請參閱[標記 Amazon Bedrock 資源](tagging.md)。 | 

`SQLKnowledgeBaseConfiguration` 取決於您使用的查詢引擎。對於 Amazon Redshift，將 `type` 欄位指定為 `REDSHIFT`，並包含 `redshiftConfiguration` 欄位，該欄位會對應至 [RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html)。對於 [RedshiftConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftConfiguration.html)，您可以設定下列欄位：

### queryEngineConfiguration
<a name="w2aac28c10c27c15b9b3c17b1"></a>

您可以設定下列類型的查詢引擎：

#### Amazon Redshift 佈建
<a name="w2aac28c10c27c15b9b3c17b1b5b1"></a>

如果您的 Amazon Redshift 資料庫佈建在專用運算節點上，`queryEngineConfiguration` 欄位的值應為 [RedshiftQueryEngineConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineConfiguration.html)，格式如下：

```
{
    "type": "PROVISIONED",
    "provisionedConfiguration": {
        "clusterIdentifier": "string",
        "authConfiguration": [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html)
    },
}
```

在 `clusterIdentifier` 欄位中指定叢集的 ID。[RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html) 取決於您使用的授權類型。選取符合您授權方法的標籤：

------
#### [ IAM role ]

如果您使用 IAM 角色授權，則只需要在 [RedshiftProvisionedAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftProvisionedAuthConfiguration.html) 中指定 `IAM` 類型，而不需要其他欄位。

```
{
    "type": "IAM"
}
```

------
#### [ Temporary credentials user name ]

如果您使用資料庫使用者名稱授權，請將 `type` 指定為 `USERNAME`，並在 `RedshiftProvisionedAuthConfig` 中的 `databaseUser` 欄位中指定使用者名稱：

```
{
    "type": "USERNAME",
    "databaseUser": "string"
}
```

------
#### [ AWS Secrets Manager ]

如果您使用 授權 AWS Secrets Manager，請將 指定`type`為 ，`USERNAME_PASSWORD`並在 的 `usernamePasswordSecretArn` 欄位中指定秘密的 ARN`RedshiftProvisionedAuthConfig`：

```
{
    "type": "USERNAME_PASSWORD",
    "usernamePasswordSecretArn": "string"
}
```

------

#### Amazon Redshift Serverless
<a name="w2aac28c10c27c15b9b3c17b1b5b3"></a>

如果您使用的是 Amazon Redshift Serverless，`queryConfiguration` 欄位的值應為 [RedshiftQueryEngineConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineConfiguration.html)，格式如下：

```
{
    "type": "SERVERLESS",
    "serverlessConfiguration": {
        "workgroupArn": "string",
        "authConfiguration": 
    }
}
```

在 `workgroupArn` 欄位中指定工作群組的 ARN。[RedshiftServerlessAuthConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftServerlessAuthConfiguration.html) 取決於您使用的授權類型。選取符合您授權方法的標籤：

------
#### [ IAM role ]

如果您使用 IAM 角色授權，則只需要在 `RedshiftServerlessAuthConfiguration` 中指定 `IAM` 類型，而不需要其他欄位。

```
{
    "type": "IAM"
}
```

------
#### [ AWS Secrets Manager ]

如果您使用 授權 AWS Secrets Manager，請將 指定`type`為 ，`USERNAME_PASSWORD`並在 的 `usernamePasswordSecretArn` 欄位中指定秘密的 ARN`RedshiftServerlessAuthConfiguration`：

```
{
    "type": "USERNAME_PASSWORD",
    "usernamePasswordSecretArn": "string"
}
```

------

### storageConfigurations
<a name="w2aac28c10c27c15b9b3c17b3"></a>

此欄位會對應至包含單一 [RedshiftQueryEngineStorageConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_RedshiftQueryEngineStorageConfiguration.html) 的陣列，其格式取決於資料的存放位置。

#### AWS Glue Data Catalog
<a name="w2aac28c10c27c15b9b3c17b3b5b1"></a>

如果您的資料存放在 中 AWS Glue Data Catalog， `RedshiftQueryEngineStorageConfiguration`應該採用下列格式：

```
{
    "type": "AWS_DATA_CATALOG",
    "awsDataCatalogConfiguration": {
        "tableNames": ["string"]
    }
}
```

在 `tableNames` 要對應到的陣列中，新增您要將知識庫連線至的每個資料表的名稱。

**注意**  
以[跨資料庫查詢](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html) (`${databaseName}.${tableName}`) 中所述的模式輸入資料表名稱。您可以透過指定 `${databaseName.*}` 來包含所有資料表。

#### Amazon Redshift 資料庫
<a name="w2aac28c10c27c15b9b3c17b3b5b3"></a>

如果您的資料存放在 Amazon Redshift 資料庫中，`RedshiftQueryEngineStorageConfiguration` 應該採用下列格式：

```
{
    "type": "string",
    "redshiftConfiguration": {
        "databaseName": "string"
    }
}
```

在 `databaseName` 欄位中指定 Amazon Redshift 資料庫的名稱。

**注意**  
以[跨資料庫查詢](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html) (`${databaseName}.${tableName}`) 中所述的模式輸入資料表名稱。您可以透過指定 `${databaseName.*}` 來包含所有資料表。

如果您的資料庫是透過 Amazon SageMaker AI 資料湖倉掛載，則資料庫名稱的格式為 *\$1\$1db\$1@\$1\$1schema\$1*。

### queryGenerationConfiguration
<a name="w2aac28c10c27c15b9b3c17b5"></a>

此欄位會對應至下列 [QueryGenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationConfiguration.html)，您可以用來設定查詢資料的方式：

```
{
    "executionTimeoutSeconds": number,
    "generationContext": {
        "tables": [
            {
                "name": "string",
                "description": "string",
                "inclusion": "string",
                "columns": [
                    {
                        "name": "string",
                        "description": "string",
                        "inclusion": "string"
                    },
                    ...
                ]
            },
            ...
        ],
        "curatedQueries": [
            {
                "naturalLanguage": "string",
                "sql": "string"
            },
            ...
        ]
    }
}
```

如果您希望查詢逾時，請在 `executionTimeoutSeconds` 欄位中以秒為單位指定逾時持續時間。

`generationContext` 欄位會對應至 [QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html) 物件，您可以在其中視需要設定下列任意數量的選項。

**重要**  
如果您包含產生內容，查詢引擎會盡可能在產生 SQL 時嘗試套用內容。產生內容是非確定性的，僅用於改善模型準確性。為了確保準確性，請驗證產生的 SQL 查詢。

如需有關您可以包含的產生內容的資訊，請展開下列區段：

#### 新增資料庫中資料表或資料欄的描述
<a name="w2aac28c10c27c15b9b3c17b5c15b1"></a>

若要改善查詢資料庫的 SQL 產生準確性，您可以提供資料表或資料欄的描述，以提供比簡短資料表或資料欄名稱更多的內容。您可以執行下列動作：
+ 若要新增資料表的描述，請在 `tables` 陣列中包含 [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 物件。在該物件中，指定 `name` 欄位中的資料表名稱和 `description` 欄位中的描述，如下列範例所示：

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A"
  }
  ```
+ 若要新增資料欄的描述，請在 `tables` 陣列中包含 [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 物件。在該物件中，在 `name` 欄位中指定資料表的名稱，並包含 `columns` 欄位，該欄位會對應至 [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html) 的陣列。在 `QueryGenerationColumn` 物件中，在 `name` 欄位中包含資料欄的名稱，並在 `description` 欄位中包含描述，如下列範例所示：

  ```
  {
      "name": "database.schema.tableA",
      "columns": [
          {
              "name": "Column A",
              "description": "Description for Column A"
          }
      ]
  }
  ```
+ 您可以新增資料表和其中資料欄的描述，如下列範例所示：

  ```
  {
      "name": "database.schema.tableA",
      "description": "Description for Table A",
      "columns": [
          {
              "name": "columnA",
              "description": "Description for Column A"
          }
      ]
  }
  ```
**注意**  
以[跨資料庫查詢](https://docs.aws.amazon.com/redshift/latest/dg/cross-database-overview.html)中所述的模式輸入資料表和資料欄名稱。如果您的資料庫位於 AWS Glue Data Catalog，則格式為 `awsdatacatalog.gluedatabase.table`。

#### 在資料庫中包含或排除資料表或資料欄
<a name="w2aac28c10c27c15b9b3c17b5c15b3"></a>

您可以使用 [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 和 [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html) 物件中的 `inclusion` 欄位，建議在產生 SQL 時包含或排除的資料表或資料欄。您可以在 `inclusion` 欄位中指定下列其中一個值：
+ INCLUDE – 產生 SQL 時，只會包含您指定的資料表或資料欄作為內容。
+ EXCLUDE – 產生 SQL 時，會將您指定的資料表或資料欄排除為內容。

您可以透過以下方式指定是否包含或排除資料表或資料欄：
+ 若要包含或排除資料表，請在 `tables` 陣列中包含 [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 物件。在該物件中，指定 `name` 欄位中資料表的名稱，以及是否要在 `inclusion` 欄位中包含或排除，如下列範例所示：

  ```
  {
      "name": "database.schema.tableA",
      "inclusion": "EXCLUDE"
  }
  ```

  查詢引擎不會在用於產生 SQL 的其他內容中新增 `Table A`。
+ 若要包含或排除資料欄，請在 `tables` 陣列中包含 [QueryGenerationTable](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationTable.html) 物件。在該物件中，在 `name` 欄位中指定資料表的名稱，並包含 `columns` 欄位，該欄位會對應至 [QueryGenerationColumn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationColumn.html) 的陣列。在 `QueryGenerationColumn` 物件中，在 `name` 欄位中包含資料欄的名稱，以及是否要在 `inclusion` 欄位中包含或排除，如下列範例所示：

  ```
  {
      "name": "database.schema.tableA",
      "columns": [
          {
              "name": "database.schema.tableA.columnA",
              "inclusion": "EXCLUDE"
          }
      ]
  }
  ```

  產生 SQL 時，SQL 產生會在內容的 `Table A` 中忽略 `Column A`。
+ 您可以在指定包含或排除項目時合併資料表和資料欄，如下列範例所示：

  ```
  {
      "name": "database.schema.tableA",
      "inclusion": "INCLUDE",
      "columns": [
          {
              "name": "database.schema.tableA.columnA",
              "inclusion": "EXCLUDE"
          }
      ]
  }
  ```

  SQL 產生包含 `Table A`，但在新增產生 SQL 的內容時會在其中排除 `Column A`。

**重要**  
資料表和資料欄排除無法取代防護機制。這些資料表和資料欄包含和排除會用作模型在產生 SQL 時要考慮的其他內容。

#### 將自然語言的查詢引擎範例對應提供給 SQL 查詢
<a name="w2aac28c10c27c15b9b3c17b5c15b5"></a>

若要改善查詢引擎將使用者查詢轉換為 SQL 查詢的準確性，您可以在 [QueryGenerationContext](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_QueryGenerationContext.html) 物件的 `curatedQueries` 欄位中提供範例，其會對應至 [CuratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CuratedQuery.html) 物件的陣列。每個物件皆包含下列欄位：
+ naturalLanguage – 自然語言查詢的範例。
+ sql – 對應至自然語言查詢的 SQL 查詢。

# 將結構化資料存放區與您的 Amazon Bedrock 知識庫同步
<a name="kb-data-source-structured-sync-ingest"></a>

將知識庫連接到結構化資料存放區之後，您可以執行同步以啟動中繼資料擷取程序，以便擷取資料。中繼資料可讓 Amazon Bedrock 知識庫將使用者提示轉譯為已連線資料庫的查詢。

每當您修改資料庫結構描述時，都需要同步變更。

若要了解如何將中繼資料擷取至知識庫並與最新資料同步，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**將資料擷取到您的知識庫，並與最新的資料同步**

1. 開啟位於 [https://console.aws.amazon.com/bedrock/](https://console.aws.amazon.com/bedrock/) Amazon Bedrock 主控台。

1. 從左側導覽窗格選取**知識庫**，然後選擇您的知識庫。

1. 在**資料來源**區段中，選取**同步**以開始進行中繼資料擷取程序。若要停止目前正在同步的資料來源，請選取**停止**。資料來源必須目前正在進行同步，才能停止同步資料來源。您可以再次選取**同步**，以擷取剩餘的資料。

1. 資料擷取完成時若顯示成功，就會出現綠色的成功橫幅。

1. 您可以選擇資料來源以檢視其**同步歷史記錄**。選取**檢視警告**，查看資料擷取作業失敗的原因。

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

若要將資料擷取到您的知識庫並與最新資料同步，請使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)來傳送 [StartIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StartIngestionJob.html) 請求。

使用透過 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)的 [GetIngestionJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetIngestionJob.html) 請求中傳回的 `ingestionJobId`，以追蹤擷取任務的狀態。

您也可以使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [ListIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListIngestionJobs.html) 請求，來查看資料來源所有擷取任務的資訊。

若要停止目前正在執行的資料擷取任務，請使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [StopIngestionJobs](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_StopIngestionJob.html) 請求。當您準備好時，可以再次傳送 `StartIngestionJob` 請求，以擷取您的其餘資料。

------

**重要**  
如果您使用在主控台中為您建立的 Amazon Bedrock 知識庫服務角色，然後在向身分驗證角色授予資料庫存取權之前同步資料存放區，則同步會失敗，因為使用者尚未獲得存取資料存放區的許可。如需授予角色存取資料存放區許可的相關資訊，請參閱 [允許知識庫服務角色存取您的資料存放區](knowledge-base-prereq-structured.md#knowledge-base-prereq-structured-db-access)。

# 使用 Amazon Kendra GenAI 指數建置 Amazon Bedrock 知識庫
<a name="knowledge-base-build-kendra-genai-index"></a>

使用 Amazon Bedrock 知識庫，您可以從 Amazon Kendra GenAI 指數建立知識庫，以建立更複雜且準確的檢索增強生成 (RAG) 支援的數位助理。透過結合 Amazon Kendra GenAI 指數與 Amazon Bedrock 知識庫，您可以：
+ 在多個 Amazon Bedrock 應用程式中重複使用您的索引內容，而無需重建索引或重新擷取資料。
+ 利用 Amazon Bedrock 的進階 GenAI 功能，同時受益於 Amazon Kendra 的高準確性資訊擷取。
+ 使用 Amazon Bedrock 的工具自訂數位助理的行為，同時維持 Amazon Kendra GenAI 指數的語義準確性。

如需使用 Amazon Kendra 索引的詳細資訊，請參閱《Amazon Kendra 開發人員指南》**中的 [Amazon Kendra GenAI 指數](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html#kendra-gen-ai-index)。

**Topics**
+ [使用 Amazon Kendra GenAI 指數建立 Amazon Bedrock 知識庫](knowledge-base-kendra-genai-index-create.md)

# 使用 Amazon Kendra GenAI 指數建立 Amazon Bedrock 知識庫
<a name="knowledge-base-kendra-genai-index-create"></a>

 如需使用 Amazon Kendra 索引的詳細資訊，請參閱《Amazon Kendra 開發人員指南》**中的 [Amazon Kendra GenAI 指數](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html#kendra-gen-ai-index)。

您可以使用 Amazon Bedrock 主控台或 Amazon Bedrock API，建立具有 Amazon Kendra GenAI 指數的 Amazon Bedrock 知識庫。選擇您偏好方法的索引標籤，然後遵循下列步驟：

**注意**  
您無法使用根使用者建立知識庫。開始之前，請先使用 AWS Identity and Access Management (IAM) 使用者登入。

**重要**  
若要使用 API 建立具有 Amazon Kendra GenAI 指數的知識庫，您必須擁有現有的索引。使用 API 時，您無法在建立知識庫時建立索引。如果您想要在建立知識庫時建立索引，則必須使用主控台。

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

**使用 Amazon Kendra GenAI 指數建立知識庫**

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，選擇**建立**。

1. 選擇**具有 Kendra GenAI 指數的知識庫**。

1. (選用) 在**知識庫詳細資訊**下，變更預設名稱並提供知識庫的描述。

1. 在 **IAM 許可**區段中，選擇提供 Amazon Bedrock 許可的 IAM 角色，以存取其他必要的 AWS 服務。您可以讓 Amazon Bedrock 為您建立服務角色，或者您可以選擇[已建立的自訂角色](kb-permissions.md)。

1. 選擇以**建立並使用新的服務角色**，或是**使用現有的服務角色**。

1. 選擇以**建立新的 Amazon Kendra GenAI 指數**或使用**現有的一個 Amazon Kendra GenAI 指數**。

1. (選用) 在**其他組態**下，執行下列操作：
   + 設定 AWS Key Management Service (AWS KMS) 客戶受管金鑰來加密您的知識庫。
   + 將標籤新增至您的知識庫。如需詳細資訊，請參閱[標記 Amazon Bedrock 資源](tagging.md)。

   

   

1. 選擇**建立知識庫**。當 Amazon Bedrock 正在建立知識庫時，您應該會看到**進行中**的狀態。您必須等待建立完成，才能新增和同步資料來源。

1. Amazon Bedrock 完成建立知識庫後，若要設定資料來源，請遵循 [將資料來源連結至知識庫](data-source-connectors.md) 中的指示。

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

**使用 Amazon Kendra GenAI 指數建立知識庫**

若要建立知識庫，請使用 [Amazon Bedrock 代理人建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [ CreateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 請求 (請參閱請求和回應格式以及欄位詳細資訊的連結)。
+ 在 `roleArn` 欄位中，提供 IAM 角色的 Amazon Resource Name (ARN)，該角色具有建立 Amazon Bedrock 知識庫的許可。
+ 若要使用知識庫支援的模型，您必須[啟用模型存取](model-access.md)。請注意模型的 ARN，這是將資料轉換為向量嵌入時的必要項目。複製所選模型的模型 (資源) ID 以用於知識庫。然後，遵循*服務授權參考*中 [Amazon Bedrock 定義的資源類型](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrock.html#amazonbedrock-resources-for-iam-policies)中提供的 ARN 範例，使用模型 ID 建構模型 ARN。請參閱模型資源類型的範例。

  在 `embeddingModelArn` 欄位的 `knowledgeBaseConfiguration` 物件中，提供您要使用的向量嵌入模型 ARN。如需詳細資訊，請參閱[Amazon Bedrock 知識庫支援的模型和區域](knowledge-base-supported.md)。
+ 若要使用 Amazon Kendra GenAI 指數建立知識庫，請提供 Amazon Kendra GenAI 指數的 ARN 
+ 建立知識庫之後，請建立包含知識庫文件或內容的資料來源。請注意，您無法使用 Amazon Bedrock API 操作建立資料來源。您必須使用 Amazon Bedrock 主控台或 Amazon Kendra [ CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html) API 操作來執行此操作。如需選擇資料來源的詳細資訊，以及 API 連線組態範例，請參閱 [將資料來源連結至知識庫](data-source-connectors.md)。

------

# 使用 Amazon Neptune Analytics 的圖形建立知識庫
<a name="knowledge-base-build-graphs"></a>

Amazon Bedrock 知識庫透過 Amazon Neptune 提供全受管 GraphRAG 功能。GraphRAG 是隨附於 Amazon Bedrock 知識庫的功能，結合了圖形建模與生成式 AI，可增強檢索增強生成 (RAG)。此功能結合了向量搜尋，以及快速分析 RAG 應用程式中 Amazon Neptune 中大量圖形資料的能力。

GraphRAG 會自動識別並利用擷取至知識庫之文件中的實體和結構元素之間的關係。這可讓基礎模型做出更全面且內容相關的回應，特別是需要透過多個邏輯步驟連線資訊時。這表示如果需要跨多個文件區塊連線資料和推理，生成式 AI 應用程式可以提供更相關的回應。當需要從多個文件來源衍生的相關事實、實體和關係來回答問題時，這可讓聊天機器人等應用程式從基礎模型 (FM) 提供更相關的回應

## GraphRAG 區域可用性
<a name="knowledge-base-build-graphs-regions"></a>

GraphRAG 在下列 AWS 區域中提供：
+ 歐洲 (法蘭克福)
+ 歐洲 (倫敦)
+ 歐洲 (愛爾蘭)
+ 美國西部 (奧勒岡)
+ 美國東部 (維吉尼亞北部)
+ 亞太地區 (東京)
+ 亞太區域 (新加坡)

## 使用 GraphRAG 的優點
<a name="knowledge-base-build-graphs-benefits"></a>

Amazon Bedrock 知識庫搭配 GraphRAG 提供下列優點：
+ 透過自動識別和利用擷取至 Amazon Bedrock 知識庫之多個文件來源的實體和結構元素 (例如區段標題) 之間的關係，提供更相關且全面的回應。
+ 增強執行詳盡搜尋的能力，透過多個邏輯步驟連接不同的內容片段，從而改善傳統的 RAG 技術。
+ 更好的跨文件推理功能，透過連接各種來源的資訊來提供更精確且內容準確的回答，這有助於進一步提高準確性並將幻覺降至最低。

## GraphRAG 的運作方式
<a name="knowledge-base-build-graphs-works"></a>

對相關節點執行初始向量搜尋後，Amazon Bedrock 知識庫 GraphRAG 會執行下列步驟，以產生更好的回應：

1. 擷取連結至所擷取文件區塊的相關圖形節點或區塊識別符。

1. 透過周遊圖形並從圖形資料庫中擷取其詳細資訊，在這些相關區塊上展開。

1. 透過了解相關實體，並專注於使用此豐富內容的關鍵連接，提供更有意義的回應。

## GraphRAG 考量和限制
<a name="knowledge-base-build-graphs-considerations"></a>

以下是搭配 GraphRAG 使用 Amazon Bedrock 知識庫時的一些限制
+ 不支援自訂圖形建置的組態選項。
+ Amazon Neptune Analytics 圖形不支援自動擴展。
+ GraphRAG 僅支援 Amazon S3 作為資料來源。
+ Claude 3 Haiku 被選為基礎模型，可為您的知識庫自動建置圖形。這會自動啟用內容擴充。
+ 每個資料來源最多可有 1000 個檔案。您可以請求將此限制提高到每個資料來源最多 10000 個檔案。或者，您可以將 Amazon S3 儲存貯體分割為多個資料夾，其中每個資料夾最多可包含 1000 個檔案。
+ 如果您使用階層式分塊作為區塊策略，GraphRAG 只會在搜尋操作期間擷取子區塊。它不會將子區塊取代為其對應的父區塊。這表示您的搜尋結果包含來自子區塊的特定詳細內容，而不是來自父區塊的更廣泛內容。

**注意**  
刪除使用 Amazon Neptune Analytics 的知識庫時，請先刪除知識庫，然後刪除 Amazon Neptune Analytics 圖形。刪除知識庫不會自動刪除基礎圖形。在您明確刪除圖形之前，可能會產生額外費用。或者，將您的資料來源刪除政策設定為保留模式以先刪除圖形，而不會造成失敗。如需詳細資訊，請參閱[從 Amazon Bedrock 知識庫刪除資料來源](kb-ds-delete.md)。

# 使用 Amazon Neptune Analytics 圖形建立 Amazon Bedrock 知識庫
<a name="knowledge-base-build-graphs-build"></a>

GraphRAG 已完全整合至 Amazon Bedrock 知識庫，並使用 Amazon Neptune Analytics 進行圖形和向量儲存。您可以在知識庫中透過 AWS 管理主控台、 AWS CLI或 AWS SDK 開始使用 GraphRAG。

您不需要任何現有的圖形基礎設施即可開始使用 GraphRAG。Amazon Bedrock 知識庫會自動管理從 Amazon Neptune 建立和維護圖形。系統會從您上傳到 Amazon S3 儲存貯體的文件擷取實體、事實和關係，以自動建立和更新圖形。因此，您可以提供相關的回應給最終使用者，而不需要事先知道圖形建模。圖形將存放在 Amazon Neptune Analytics 中。

當您建立知識庫時，您可以設定或指定下列項目：
+ 定義和識別知識庫的一般資訊。
+ 具有知識庫許可的服務角色。
+ 知識庫的組態，包括從資料來源轉換資料時使用的嵌入模型，以及存放嵌入之服務的儲存組態。

**注意**  
您無法使用根使用者建立知識庫。請先使用 IAM 使用者登入，再開始這些步驟。

以下說明如何從主控台和使用 CLI 建立知識庫以使用 Neptune GraphRAG。

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

**從主控台建立 Neptune Analytics 的知識庫**

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，選擇**建立**，然後選擇**具有向量存放區的知識庫**。

1. (選用) 在**知識庫詳細資訊**下，變更預設名稱並提供知識庫的描述。

1. 在 **IAM 許可**區段中，選擇提供 Amazon Bedrock 許可的 IAM 角色，以存取其他必要的 AWS 服務。您可以讓 Amazon Bedrock 為您建立服務角色，也可以選擇使用您為 Neptune Analytics 建立的自訂角色。如需範例，請參閱 [在 Amazon Neptune Analytics 中存取向量資料庫的許可](kb-permissions.md#kb-permissions-neptune)。

1. 請務必選擇 **Amazon S3** 作為資料來源，然後選擇**下一步**來設定資料來源。

1. 提供將用作資料來源之檔案的 **S3 URI**，以連線知識庫，並與 Amazon Neptune Analytics 整合。如需您可以提供的其他步驟和選用資訊，請參閱 [將資料來源連結至知識庫](data-source-connectors.md)。

1. 在**嵌入模型**區段中，選擇嵌入模型，將資料轉換為向量嵌入。或者，您可以使用**其他組態**區段來指定向量維度。對於嵌入類型，我們建議您使用浮點向量嵌入。
**注意**  
嵌入模型的向量維度必須符合您在建立 Neptune Analytics 圖形時指定的向量維度。

1. 在**向量資料庫**區段中，選擇建立向量存放區的方法，然後選擇 **Amazon Neptune Analytics (GraphRAG)** 作為向量存放區，以存放將用於查詢的嵌入。若要建立向量存放區，您可以使用下列其中一種方法：
   + 我們建議您使用**快速建立新的向量存放區**方法，以快速開始建立向量存放區。選擇 **Amazon Neptune Analytics (GraphRAG)** 作為向量存放區。此選項不需要您擁有任何現有的 Neptune Analytics 資源。知識庫會自動在 Amazon Neptune 中產生和存放文件嵌入，以及衍生自文件語料庫的實體及其關係的圖形表示。
   + 或者，如果您已建立 Neptune Analytics 圖形和向量索引，您可以使用**選擇已建立的向量存放區**選項。選擇 **Amazon Neptune Analytics (GraphRAG)** 作為向量存放區，並在向量索引中識別圖形 ARN、向量欄位名稱和中繼資料欄位名稱。如需詳細資訊，請參閱[使用您為知識庫建立的向量存放區的先決條件](knowledge-base-setup.md)。

1. 選擇**下一步**並檢閱知識庫的詳細資訊。您可以在繼續和建立知識庫之前編輯任何區段。
**注意**  
建立知識庫所需的時間取決於您的特定組態。建立知識庫完成後，知識庫的狀態會變更為就緒或可用。  
一旦您的知識庫準備就緒且可用，請於首次以及每當您想要將內容保持在最新狀態時同步您的資料來源。在主控台中選取您的知識庫，然後在資料來源概觀區段中選取**同步**。

1. 選擇**建立知識庫**。當 Amazon Bedrock 正在建立知識庫時，您應該會看到**進行中**的狀態。您必須等待建立完成，才能同步資料來源。

1. Amazon Bedrock 完成建立知識庫後，若要設定資料來源，請遵循 [將資料來源連結至知識庫](data-source-connectors.md) 中的指示。

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

**使用 建立 Neptune Analytics 的知識庫 AWS CLI**

1. 首先使用內容擴充組態建立資料來源。若要執行此操作，請使用 [Amazon Bedrock 代理人建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) 請求。下列顯示範例 CLI 命令。

   ```
   aws bedrock-agent create-data-source \
       --name graph_rag_source \
       --description data_source_for_graph_rag \
       --knowledge-base-id LDBBY2K5AG \
       --cli-input-json "file://input.json"
   ```

   下列程式碼顯示 `input.json` 檔案的內容：

   ```
   {
       "dataSourceConfiguration": { 
           "s3Configuration": { 
               "bucketArn": "arn:aws:s3:::<example-graphrag-datasets>",
               "bucketOwnerAccountId": "<ABCDEFGHIJ>",
               "inclusionPrefixes": [ <"example-dataset"> ]
           },
           "type": "S3",
       },
       "VectorIngestionConfiguration": {
           "contextEnrichmentConfiguration":
               "type": "BEDROCK_FOUNDATION_MODEL",
               "bedrockFoundationModelConfiguration": {
                   "modelArn": "arn:aws:bedrock:<region>::foundation-model/anthropic.claude-3-haiku-20240307-v1:0",
                   "enrichmentStrategyConfiguration": {
                       "method": "CHUNK_ENTITY_EXTRACTION"
               }
           }
       }
   }
   ```

   對於`modelArn`用於從文件中建置圖形的 ，您可以使用 Claude 3 Haiku （如上述範例所示）、Claude Haiku 4.5 和 Amazon Nova 系列 （包括具有文字輸入模式的 Nova 2 和 Nova 模型）。若要查看您區域中可用的基礎模型，請參閱 [Amazon Bedrock 中支援的基礎模型](https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html)。
**注意**  
某些模型僅透過跨區域推論描述檔支援。當您在 Amazon Bedrock 中調用跨區域推論設定檔時，要擷取的請求和資料來自來源區域，並自動路由到該設定檔中定義的其中一個目的地區域，以最佳化效能。全域跨區域推論設定檔的目的地區域包含所有商業區域。例如，您可以使用 格式`modelArn`，從 us-west-2 區域為以美國為基礎的跨區域呼叫指定 `arn:aws:bedrock:us-west-2:account-id:inference-profile/us.anthropic.claude-haiku-4-5-20251001-v1:0`。

   若要查看角色使用推論描述檔的政策需求，請參閱[跨區域推論描述檔的先決條件](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-prereq.html)。如需如何使用推論描述檔選取來源和目的地區域的指引，請參閱[推論描述檔的支援區域和模型](https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html)。您的資料只會存放在與 Amazon Bedrock 知識庫和 Amazon Neptune Analytics 執行個體對應的來源區域中。目的地區域僅用於推論。

1. 若要建立知識庫，請使用 [Amazon Bedrock 代理人建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateKnowledgeBase.html) 請求。下列顯示範例 CLI 命令。

   ```
   aws bi create-knowledge-base \
   --name <"knowledge-base-graphrag"> \
   --role-arn arn:aws:iam::<accountId>:role/<BedrockExecutionRoleForKnowledgeBase> \
   --cli-input-json "file://input.json"
   ```

   下列顯示 `input.json` 檔案的內容。

   ```
   {
       "storageConfiguration": {
           "type": "NEPTUNE_ANALYTICS"
           "neptuneAnalyticsConfiguration": {
               "graphArn": "arn:aws:neptune-graph:<region>:<>:graph/<graphID>",
               "fieldMapping": {
                   "metadataField": "metadata",
                   "textField": "text"
               },
           }
       },
       "knowledgeBaseConfiguration": {
           "type": "VECTOR",
           "vectorKnowledgeBaseConfiguration": {
               "embeddingModelArn": "arn:aws:bedrock:<region>::foundation-model/cohere.embed-english-v3"
           }
       }
   }
   ```

1. 當您以 GraphRAG 為基礎的應用程式執行時，您可以繼續使用知識庫 API 操作，為最終使用者提供更全面、相關且可解釋的回應。下列各節說明如何使用 CLI 命令開始擷取和執行擷取查詢。

------

## 同步您的資料來源
<a name="knowledge-base-build-graphs-sync"></a>

建立知識庫之後，您可以擷取或同步資料，以便查詢資料。擷取會擷取圖形結構，並根據您指定的向量嵌入模型和組態，將資料來源中的原始資料轉換為向量嵌入。

下列命令顯示使用 CLI 開始擷取任務的範例。

```
aws bedrock-agent start-ingestion-job \
--data-source-id <"ABCDEFGHIJ"> \
--knowledge-base-id <"EFGHIJKLMN">
```

如需詳細資訊以及如何使用主控台和 API 同步資料來源，請參閱 [將您的資料與您的 Amazon Bedrock 知識庫同步](kb-data-source-sync-ingest.md)。

## 將變更擷取至您的知識庫
<a name="knowledge-base-build-graphs-ingest"></a>

使用 Amazon S3 作為資料來源時，您可以修改資料來源，並在一個步驟中同步變更。透過直接擷取，您可以在單一動作中直接新增、更新或刪除知識庫中的檔案，而且您的知識庫可以存取文件，而無需同步。直接擷取會使用 `KnowledgeBaseDocuments` API 操作，為您直接提交到為知識庫設定的向量存放區的文件編製索引。您也可以直接使用這些操作檢視知識庫中的文件，而不需要導覽至連線的資料來源即可檢視。如需詳細資訊，請參閱[將變更直接擷取到知識庫](kb-direct-ingestion.md)。

## 測試知識庫
<a name="knowledge-base-build-graphs-test"></a>

現在您已設定知識庫，您可以傳送佇列並產生回應來進行測試。

下列程式碼顯示範例 CLI 命令。

```
aws bedrock-agent-runtime retrieve \
--knowledge-base-id <"ABCDEFGHIJ"> \
--retrieval-query="{\"text\": \"What are the top three video games available now?\"}"
```

如需詳細資訊，請參閱[查詢連線至 Amazon Neptune Analytics 圖形的知識庫](kb-test-neptune.md)。

# 使用查詢和回應測試您的知識庫
<a name="knowledge-base-test"></a>

設定知識庫之後，您可以透過下列方式測試其行為：
+ 使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 操作，從您的資料來源傳送查詢和擷取相關資訊。
+ 使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 操作，根據從資料來源擷取的資訊傳送查詢並產生對查詢的回應。
+ 使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 或 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 時，使用重新排名模型而非預設的 Amazon Bedrock 知識庫重新排名模型來擷取更相關的來源。
+ 搭配 `Retrieve` 或 `RetrieveAndGenerate` API 使用選用的中繼資料篩選條件，以指定可在資料來源中使用哪些文件。

當您對知識庫的行為感到滿意時，您可以設定應用程式來查詢知識庫，或繼續前往 [部署 AI 應用程式的知識庫](knowledge-base-deploy.md) 將知識庫連接至代理程式。

選取主題以進一步了解。

**Topics**
+ [查詢知識庫並擷取資料](kb-test-retrieve.md)
+ [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md)
+ [產生結構化資料的查詢](knowledge-base-generate-query.md)
+ [查詢連線至 Amazon Kendra GenAI 指數的知識庫](kb-test-kendra.md)
+ [查詢連線至 Amazon Neptune Analytics 圖形的知識庫](kb-test-neptune.md)
+ [設定和自訂查詢和回應產生](kb-test-config.md)
+ [使用知識庫設定推理模型的回應產生](kb-test-configure-reasoning.md)

# 查詢知識庫並擷取資料
<a name="kb-test-retrieve"></a>

**重要**  
防護機制只會套用至輸入和從 LLM 產生的回應。它們不會套用至執行時期從知識庫擷取的參考。

設定知識庫之後，您可以查詢知識庫，以及使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) API 操作，從與查詢相關的來源資料中查詢和擷取區塊。您也可以[使用重新排名模型](rerank.md)，而不是預設的 Amazon Bedrock 知識庫排名器，在擷取期間對來源區塊進行相關性排名。

若要了解如何查詢知識庫，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**若要測試您的知識庫**

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，執行下列其中一個動作：
   + 選擇您要測試的知識庫旁的選項按鈕，然後選取**測試知識庫**。測試視窗從右側展開。
   + 選擇您要測試的知識庫。測試視窗從右側展開。

1. 在測試視窗中，清除**產生查詢的回應**，以傳回直接從您的知識庫擷取的資訊。

1. (選用) 選取組態圖示 (![\[Three horizontal sliders with adjustable circular controls for settings or parameters.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/configurations.png)) 以開啟**組態**。如需組態的詳細資訊，請參閱 [設定和自訂查詢和回應產生](kb-test-config.md)。

1. 在聊天視窗的文字方塊中輸入查詢，然後選取**執行**以傳回知識庫的回應。

1. 來源區塊會依相關性順序直接傳回。從資料來源擷取的影像也可以傳回為來源區塊。

1. 若要查看傳回區塊的詳細資訊，請選取**顯示來源詳細資訊**。
   + 若要查看您為查詢設定的組態，請展開**查詢組態**。
   + 若要檢視來源區塊的詳細資訊，請選擇其旁邊的向右箭頭 (![\[Play button icon with a triangular shape pointing to the right.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/caret-right-filled.png)) 來展開它。您可以看到下列資訊：
     + 來源區塊的原始文字。若要複製此文字，請選擇複製圖示 (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/copy.png))。如果您使用 Amazon S3 存放資料，請選擇外部連結圖示 (![\[Icon of a square with an arrow pointing outward from its top-right corner.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/external.png)) 以導覽至包含該檔案的 S3 物件。
     + 如果您使用 Amazon S3 存放資料，則為與來源區塊相關聯的中繼資料。屬性/欄位索引鍵和值是在與來源文件相關聯的 `.metadata.json` 檔案中定義。如需詳細資訊，請參閱 [設定和自訂查詢和回應產生](kb-test-config.md) 中的**中繼資料和篩選**區段。

**聊天選項**
+ 切換以透過開啟**產生回應**，以根據擷取的來源區塊來產生回應。如果您變更設定，聊天視窗中的文字將全部清除。
+ 若要清除聊天視窗，請選取掃帚圖示 (![\[Magnifying glass icon with a checkmark inside, symbolizing search or inspection.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/broom.png))。
+ 要複製聊天視窗中的所有輸出，請選取複製圖示 (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/copy.png))。

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

若要查詢知識庫並僅從資料來源傳回相關文字，請使用 [Amazon Bedrock 代理人執行時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)傳送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 請求。

下列是必要欄位：


****  

| 欄位 | 基本描述 | 
| --- | --- | 
| knowledgeBaseId | 指定要查詢的知識庫。 | 
| retrievalQuery | 包含指定查詢的 text 欄位。 | 
| guardrailsConfiguration | 包含 guardrailsConfiguration 欄位，例如 guardrailsId 和 guardrailsVersion，以搭配請求使用您的防護機制 | 

以下是選填欄位:


****  

| 欄位 | 使用案例 | 
| --- | --- | 
| nextToken | 若要傳回下一批次的回應 (請參閱下方的回應欄位)。 | 
| retrievalConfiguration | 包含用於自訂向量搜尋的[查詢組態](kb-test-config.md)。如需詳細資訊，請參閱 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html)。 | 

您可以透過在 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html) 中包含 `rerankingConfiguration` 欄位，在預設 Amazon Bedrock 知識庫排名模型上使用重新排名模型。`rerankingConfiguration` 欄位會對應至 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html) 物件，您可以在其中指定要使用的重新排名模型、要包含的任何其他請求欄位、在重新排名期間篩選掉文件的中繼資料屬性，以及重新排名後要傳回的結果數目。如需詳細資訊，請參閱 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)。

**注意**  
如果您指定的 `numberOfRerankedResults` 值大於 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html) 中的 `numberOfResults` 值，傳回的結果數目上限將會是 `numberOfResults` 的值。例外情況是，如果您使用查詢分解 (如需詳細資訊，請參閱 [設定和自訂查詢和回應產生](kb-test-config.md) 中的**查詢修改**一節。如果您使用查詢分解，則 `numberOfRerankedResults` 最多可達 `numberOfResults` 的五倍。

回應會傳回來自資料來源的來源區塊，作為 `retrievalResults` 欄位中 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) 物件的陣列。每個 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) 都包含下列欄位：


****  

| 欄位 | Description | 
| --- | --- | 
| 內容 | 在 text 中包含文字來源區塊，或在 byteContent 欄位中包含影像來源區塊。如果內容是影像，則會以下列格式傳回 Base64 編碼內容的資料 URI：data:image/jpeg;base64,\$1\$1base64-encoded string\$1。 | 
| 中繼資料 | 包含每個中繼資料屬性作為索引鍵，而中繼資料值作為索引鍵對應的 JSON 值。 | 
| location | 包含來源區塊所屬文件的 URI 或 URL。 | 
| 分數 | 文件的關聯性分數。您可以使用此分數來分析結果的排名。 | 

如果來源區塊的數量超過回應中可以容納的數量，則會在 `nextToken` 欄位中傳回值。在另一個請求中使用該值來傳回下一批結果。

如果擷取的資料包含影像，回應也會傳回下列回應標頭，其中包含回應中傳回的來源區塊中繼資料：
+ `x-amz-bedrock-kb-byte-content-source` – 包含影像的 Amazon S3 URI。
+ `x-amz-bedrock-kb-description` – 包含影像的 Base64 編碼字串。

**注意**  
您無法在[設定中繼資料篩選條件](kb-test-config.md)時篩選這些中繼資料回應標頭。

**多模式查詢**  
對於使用多模式內嵌模型的知識庫，您可以使用文字或影像進行查詢。`retrievalQuery` 欄位支援影像查詢`multimodalInputList`的欄位：

**注意**  
如需設定和使用多模式知識庫的完整指引，包括在 Nova 和 BDA 方法之間進行選擇，請參閱 [建立多模態內容的知識庫](kb-multimodal.md)。

您可以使用 `multimodalInputList` 欄位查詢映像：

```
{
    "knowledgeBaseId": "EXAMPLE123", 
    "retrievalQuery": {
        "multimodalInputList": [
            {
                "content": {
                    "byteContent": "base64-encoded-image-data"
                },
                "modality": "IMAGE"
            }
        ]
    }
}
```

或者，您只能使用 `text` 欄位來查詢文字：

```
{
    "knowledgeBaseId": "EXAMPLE123",
    "retrievalQuery": {
        "text": "Find similar shoes"
    }
}
```

**常見的多模式查詢模式**  
以下是一些常見的查詢模式：

Image-to-image搜尋  
上傳映像以尋找視覺效果相似的映像。範例：上傳紅色 Nike 鞋子的相片，在您的產品目錄中尋找類似的鞋子。

文字型搜尋  
使用文字查詢來尋找相關內容。範例：「尋找類似的鞋子」以使用文字描述搜尋您的產品目錄。

視覺化文件搜尋  
搜尋文件中的圖表、圖表或視覺元素。範例：上傳圖表影像以在文件集合中尋找類似的圖表。

**在 Nova 和 BDA 之間選擇多模態內容**  
使用多模態內容時，請根據您的內容類型和查詢模式選擇您的方法：


**Nova 與 BDA 決策矩陣**  

| 內容類型 | 使用 Nova 多模態內嵌 | 使用 Bedrock 資料自動化 (BDA) 剖析器 | 
| --- | --- | --- | 
| 影片內容 | 視覺說故事焦點 （運動、廣告、示範）、視覺元素的查詢、最小語音內容 | 重要的語音/敘述 （簡報、會議、教學課程）、對口語內容的查詢、需要文字記錄 | 
| 音訊內容 | 音樂或音效識別、非語音音訊分析 | 播客、採訪、會議、任何需要轉錄的語音內容 | 
| 影像內容 | 視覺相似性搜尋、image-to-image擷取、視覺內容分析 | 從影像擷取文字、文件處理、OCR 要求 | 

**注意**  
Nova 多模式內嵌無法直接處理語音內容。如果您的音訊或影片檔案包含重要的口語資訊，請使用 BDA 剖析器先將語音轉換為文字，或改為選擇文字內嵌模型。

**多模式查詢限制**  
以下是多模式查詢的一些限制：
+ 目前版本中的每個查詢最多一個映像
+ 映像查詢僅支援多模式內嵌模型 (Titan G1 或 Cohere Embed v3)
+ 具有多模式內嵌模型和 S3 內容儲存貯體的知識庫不支援 RetrieveAndGenerate API
+ 如果您使用純文字內嵌模型將映像查詢提供給知識庫，則會傳回 4xx 錯誤

**多模式 API 回應結構**  
擷取多模態內容的回應包含其他中繼資料：
+ **來源 URI：**指向原始 S3 儲存貯體位置
+ **補充 URI：**指向多模式儲存貯體中的複本
+ **時間戳記中繼資料：**包含於視訊和音訊區塊，以啟用精確的播放位置

**注意**  
使用 API 或 SDK 時，您需要在應用程式中處理檔案擷取和時間戳記導覽。主控台會透過增強型影片播放和自動時間戳記導覽來自動處理此問題。

------

**注意**  
如果您在產生回應時收到提示超過字元限制的錯誤，您可以使用下列方式縮短提示：  
減少擷取結果的數目上限 (這會縮短 [知識庫提示範本：協調和產生](kb-test-config.md#kb-test-config-prompt-template) 中 \$1search\$1results\$1 預留位置的填入內容)。
以使用較小區塊的分塊策略重新建立資料來源 (這會縮短 [知識庫提示範本：協調和產生](kb-test-config.md#kb-test-config-prompt-template) 中 \$1search\$1results\$1 預留位置的填入內容)。
縮短提示範本。
縮短使用者查詢 (這會縮短 [知識庫提示範本：協調和產生](kb-test-config.md#kb-test-config-prompt-template) 中 \$1query\$1 預留位置的填入內容)。

# 查詢知識庫並根據擷取的資料產生回應
<a name="kb-test-retrieve-generate"></a>

**重要**  
防護機制只會套用至輸入和從 LLM 產生的回應。它們不會套用至執行時期從知識庫擷取的參考。

設定知識庫之後，您可以查詢知識庫，以及使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 操作，根據從來源資料擷取的區塊產生回應。傳回的回應包含原始來源資料的引文。您也可以[使用重新排名模型](rerank.md)，而不是預設的 Amazon Bedrock 知識庫排名器，在擷取期間對來源區塊進行相關性排名。

**多模態內容限制**  
`RetrieveAndGenerate` 對多模態內容的支援有限。使用 Nova Multimodal Embeddings 時，RAG 功能僅限於文字內容。如需包括音訊和視訊處理的完整多模式支援，請使用 BDA 搭配文字內嵌模型。如需詳細資訊，請參閱[建立多模態內容的知識庫](kb-multimodal.md)。

**注意**  
在 `RetrieveAndGenerate` 流程期間從 `Retrieve` 回應傳回的影像會包含在回應產生的提示中。`RetrieveAndGenerate` 回應不能包含影像，但可以引用包含影像的來源。

若要了解如何查詢知識庫，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**若要測試您的知識庫**

1. AWS 管理主控台使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 在**知識庫**區段中，執行下列其中一個動作：
   + 選擇您要測試的知識庫旁的選項按鈕，然後選取**測試知識庫**。測試視窗從右側展開。
   + 選擇您要測試的知識庫。測試視窗從右側展開。

1. 若要根據從您的知識庫擷取的資訊產生回應，請開啟**產生查詢的回應**。Amazon Bedrock 將會根據您的資料來源產生回應，並以註腳引用其提供的資訊。

1. 若要選擇要用於產生回應的模型，請選擇**選取模型**。然後選取**套用**。

1. (選用) 選取組態圖示 (![\[Three horizontal sliders with adjustable circular controls for settings or parameters.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/configurations.png)) 以開啟**組態**。如需組態的詳細資訊，請參閱 [設定和自訂查詢和回應產生](kb-test-config.md)。

1. 在聊天視窗的文字方塊中輸入查詢，然後選取**執行**以傳回知識庫的回應。

1. 選取註腳以查看該回應部分引用來源的摘錄。選擇連結以導覽至包含該檔案的 S3 物件。

1. 若要查看傳回區塊的詳細資訊，請選取**顯示來源詳細資訊**。
   + 若要查看您為查詢設定的組態，請展開**查詢組態**。
   + 若要檢視來源區塊的詳細資訊，請選擇其旁邊的向右箭頭 (![\[Play button icon with a triangular shape pointing to the right.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/caret-right-filled.png)) 來展開它。您可以看到下列資訊：
     + 來源區塊的原始文字。若要複製此文字，請選擇複製圖示 (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/copy.png))。如果您使用 Amazon S3 存放資料，請選擇外部連結圖示 (![\[Icon of a square with an arrow pointing outward from its top-right corner.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/external.png)) 以導覽至包含該檔案的 S3 物件。
     + 如果您使用 Amazon S3 存放資料，則為與來源區塊相關聯的中繼資料。屬性/欄位索引鍵和值是在與來源文件相關聯的 `.metadata.json` 檔案中定義。如需詳細資訊，請參閱 [設定和自訂查詢和回應產生](kb-test-config.md) 中的**中繼資料和篩選**區段。

**聊天選項**
+ 若要使用不同的模型產生回應，請選取**變更模型**。如果您變更模型，聊天視窗中的文字將全部清除。
+ 透過清除**產生回應**，切換到直接擷取來源區塊。如果您變更設定，聊天視窗中的文字將全部清除。
+ 若要清除聊天視窗，請選取掃帚圖示 (![\[Magnifying glass icon with a checkmark inside, symbolizing search or inspection.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/broom.png))。
+ 要複製聊天視窗中的所有輸出，請選取複製圖示 (![\[Icon representing a crop or resize function, with two overlapping rectangles.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/copy.png))。

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

若要查詢知識庫，並使用基礎模型來根據資料來源的結果產生回應，請使用 [Amazon Bedrock 代理人執行時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)傳送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求。

[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API 會以串流格式傳回資料，並可讓您存取區塊中產生的回應，而無需等待整個結果。

下列是必要欄位：

**注意**  
API 回應包含引用事件。`citation` 成員已棄用。建議您改為使用 `generatedResponse` 和 `retrievedReferences` 欄位。如需參考資訊，請參閱[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_CitationEvent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_CitationEvent.html)。


****  

| 欄位 | 基本描述 | 
| --- | --- | 
| input | 包含指定查詢的 text 欄位。 | 
| retrieveAndGenerateConfiguration | 包含 [RetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateConfiguration.html)，這會指定擷取和產生的組態。如需詳細資訊，請參閱下述。 | 

以下是選填欄位：


****  

| 欄位 | 使用案例 | 
| --- | --- | 
| sessionId | 使用與上一個工作階段相同的值來繼續該工作階段，並針對模型維護其內容。 | 
| sessionConfiguration | 包含用於加密工作階段的自訂 KMS 金鑰。 | 

在 [RetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateConfiguration.html) 中包含 `knowledgeBaseConfiguration` 欄位。此欄位會對應至 [KnowledgeBaseRetrieveAndGenerateConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrieveAndGenerateConfiguration.html) 物件，其中包含下列欄位：
+ 下列是必要欄位：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/kb-test-retrieve-generate.html)
+ 以下是選填欄位：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/kb-test-retrieve-generate.html)

您可以透過在 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 內的 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html) 中包含 `rerankingConfiguration` 欄位，在預設 Amazon Bedrock 知識庫排名模型上使用重新排名模型。`rerankingConfiguration` 欄位會對應至 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html) 物件，您可以在其中指定要使用的重新排名模型、要包含的任何其他請求欄位、在重新排名期間篩選掉文件的中繼資料屬性，以及重新排名後要傳回的結果數目。如需詳細資訊，請參閱 [VectorSearchRerankingConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_VectorSearchRerankingConfiguration.html)。

**注意**  
如果您指定的 `numberOfRerankedResults` 值大於 [KnowledgeBaseVectorSearchConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseVectorSearchConfiguration.html) 中的 `numberOfResults` 值，傳回的結果數目上限將會是 `numberOfResults` 的值。例外情況是，如果您使用查詢分解 (如需詳細資訊，請參閱 [設定和自訂查詢和回應產生](kb-test-config.md) 中的**查詢修改**一節。如果您使用查詢分解，則 `numberOfRerankedResults` 最多可達 `numberOfResults` 的五倍。

回應會在 `output` 欄位中傳回產生的回應，並在 `citations` 欄位中將引用的來源區塊傳回為陣列。每個[引用](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Citation.html)物件包含下列欄位。


****  

| 欄位 | 基本描述 | 
| --- | --- | 
| generatedResponsePart | 在 textResponsePart 欄位中，包含引用相關的 text。span 欄位提供具有引號之輸出部分的開頭和結尾索引。 | 
| retrievedReferences | [RetrievedReference](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievedReference.html) 物件的陣列，每個物件都包含與文件相關聯的來源區塊的 content、與文件相關聯的 metadata，以及資料來源中文件的 URI 或 URL location。如果內容是影像，則會以下列格式傳回 Base64 編碼內容的資料 URI：data:image/jpeg;base64,\$1\$1base64-encoded string\$1。 | 

回應也會傳回 `sessionId` 值，您可以在另一個請求中重複使用該值，以維持相同的對話。

如果您在請求中包含 `guardrailConfiguration`，`guardrailAction` 欄位會通知您內容是否遭到封鎖。

如果擷取的資料包含影像，回應也會傳回下列回應標頭，其中包含回應中傳回的來源區塊中繼資料：
+ `x-amz-bedrock-kb-byte-content-source` – 包含影像的 Amazon S3 URI。
+ `x-amz-bedrock-kb-description` – 包含影像的 Base64 編碼字串。

**注意**  
您無法在[設定中繼資料篩選條件](kb-test-config.md)時篩選這些中繼資料回應標頭。

------

**注意**  
如果您在產生回應時收到提示超過字元限制的錯誤，您可以使用下列方式縮短提示：  
減少擷取結果的數目上限 (這會縮短 [知識庫提示範本：協調和產生](kb-test-config.md#kb-test-config-prompt-template) 中 \$1search\$1results\$1 預留位置的填入內容)。
以使用較小區塊的分塊策略重新建立資料來源 (這會縮短 [知識庫提示範本：協調和產生](kb-test-config.md#kb-test-config-prompt-template) 中 \$1search\$1results\$1 預留位置的填入內容)。
縮短提示範本。
縮短使用者查詢 (這會縮短 [知識庫提示範本：協調和產生](kb-test-config.md#kb-test-config-prompt-template) 中 \$1query\$1 預留位置的填入內容)。

# 產生結構化資料的查詢
<a name="knowledge-base-generate-query"></a>

當您將結構化資料存放區連線至知識庫時，您的知識庫可以根據要查詢的資料來源結構，將使用者提供的自然語言查詢轉換為 SQL 查詢來查詢它。如果使用：
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html)：回應會傳回 SQL 查詢執行的結果。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)：產生的回應是根據 SQL 查詢執行的結果。
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html)：Amazon Bedrock 知識庫會將查詢的轉換與擷取程序分離。您可以使用此 API 操作，將查詢轉換為 SQL。

## 使用 `GenerateQuery` API
<a name="knowledge-base-generate-query-api"></a>

您可以使用來自 `GenerateQuery` API 操作的回應搭配後續 `Retrieve` 或 `RetrieveAndGenerate` 動作，或將其插入其他工作流程。`GenerateQuery` 可讓您考慮知識庫資料來源的結構，有效率地將查詢轉換為 SQL 查詢。

若要將自然語言查詢轉換為 SQL 查詢，請使用 [Amazon Bedrock 代理程式執行時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)提交 [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) 請求。`GenerateQuery` 資源包含下列欄位：
+ queryGenerationInput – 指定 `TEXT` 作為 `type`，並在 `text` 欄位中包含查詢。
**注意**  
查詢必須以英文撰寫。
+ transformationConfiguration – 指定 `TEXT_TO_SQL` 作為 `mode`。在 `textToSqlConfiguration` 欄位中，指定 `KNOWLEDGE_BASE` 作為 `type`。然後，指定知識庫的 ARN。

回應會傳回 `queries` 欄位中包含 [GeneratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GeneratedQuery.html) 物件的陣列。物件包含 `sql` 欄位中查詢的 SQL 查詢。

## 關鍵考量
<a name="knowledge-base-generate-query-considerations"></a>

以下是使用結構化資料產生查詢時的一些重要考量。
+ 

**跨區域推論和結構化資料擷取**  
結構化資料擷取使用跨區域推論，在您的地理位置AWS 區域中選取最佳 ，以處理您的推論請求。這不會產生任何額外費用，並透過最大化可用資源和模型可用性來改善客戶體驗。

  跨推論請求會保留在 內AWS 區域，而該 是資料最初所在地理位置的一部分。您的資料會保留在來源區域內，但輸入提示和輸出結果可能會移動到此區域之外。所有資料都會透過 Amazon 的安全網路進行加密傳輸。

  如需詳細資訊，請參閱[透過跨區域推論增加輸送量](cross-region-inference.md)。
+ 

**產生的 SQL 查詢的準確性**  
產生的 SQL 查詢的準確性可能會因內容、資料表結構描述和使用者查詢的意圖而有所不同。評估產生的查詢，以確保它們符合您的使用案例，然後再在您的工作負載中使用它們。
+ 

**擷取結果的數量**  
產生回應時，適用下列限制。
  + 使用 `InvokeAgent`、`RetrieveAndGenerate` 和 `RetrieveAndGenerateStream` API 操作時，產生回應時只會使用 10 個擷取的結果。
  + 使用 `InvokeAgent` API 時，如果擷取結果的資料列超過 10 個，則不會將擷取的資料列總數傳遞給代理程式來產生回應。如果您改用 `RetrieveAndGenerate` API，則產生最終回應的提示中會包含資料列總數。
+ 

**`GenerateQuery` API 配額**  
`GenerateQuery` API 的配額為每秒 2 個請求。

## 授予角色許可以存取產生的查詢
<a name="knowledge-base-structured-permissions"></a>

對於轉換為結構化資料來源的知識庫，如果您想要對產生的查詢執行一些額外的操作，則必須授予執行 `GenerateQuery` API 動作的許可。若要允許 IAM 角色查詢連線至結構化資料存放區的知識庫，請將下列政策連接至角色：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery",
                "sqlworkbench:GetSqlRecommendations"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Retrieve",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "RetrieveAndGenerate",
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

您可以移除不需要的陳述式，視您的使用案例而定：
+ 需要 `GetKB` 和 `GenerateQuery` 陳述式來呼叫 [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html)，以產生 SQL 查詢，並將使用者查詢和連線的資料來源納入考量。
+ 呼叫 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 需要 `Retrieve` 陳述式，才能從結構化資料存放區擷取資料。
+ 呼叫 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 需要 `RetrieveAndGenerate` 陳述式，才能從結構化資料存放區擷取資料，並根據資料產生回應。

# 查詢連線至 Amazon Kendra GenAI 指數的知識庫
<a name="kb-test-kendra"></a>

您可以查詢使用 Amazon Kendra GenAI 指數的知識庫，並僅傳回資料來源的相關文字。在此查詢中，使用 [Amazon Bedrock 代理人執行時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)傳送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 請求，例如使用標準知識庫。

從具有 Amazon Kendra GenAI 指數的知識庫傳回的回應結構與標準 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) 相同。不過，回應也包含來自 Amazon Kendra 的幾個額外欄位。

下表說明您在傳回的回應中可能看到的 Amazon Kendra 欄位。Amazon Bedrock 會從 Amazon Kendra 回應中取得這些欄位。如果該回應不包含這些欄位，則從 Amazon Bedrock 傳回的查詢結果也不會包含這些欄位。


| 欄位 | 說明 | 
| --- | --- | 
|  x-amz-kendra-document-title  |  傳回文件的標題。  | 
|  x-amz-kendra-score-confidence  |  回應與查詢相關性的相對排名。可能的值為 VERY\$1HIGH、HIGH、MEDIUM、LOW 和 NOT\$1AVAILABLE。  | 
|  x-amz-kendra-passage-id  |  傳回段落的 ID。  | 
|  x-amz-kendra-document-id  |  傳回文件的 ID。  | 
|  DocumentAttributes  |  Amazon Kendra 的文件屬性或中繼資料欄位。知識庫傳回的查詢結果會將這些結果存放為中繼資料鍵值對。您可以使用來自 Amazon Bedrock 的中繼資料篩選來篩選結果。如需詳細資訊，請參閱 [DocumentAttribute](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DocumentAttribute.html)。  | 

# 查詢連線至 Amazon Neptune Analytics 圖形的知識庫
<a name="kb-test-neptune"></a>

您可以查詢使用 Amazon Neptune Analytics 圖形的知識庫，並僅傳回資料來源的相關文字。在此查詢中，使用 [Amazon Bedrock 代理人執行時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)傳送 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 請求，例如使用標準知識庫。如需有關查詢知識庫、擷取資料和產生回應的資訊，請參閱：
+  [查詢知識庫並擷取資料](kb-test-retrieve.md) 
+  [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 

使用 Amazon Neptune Analytics 圖形從知識庫傳回的回應結構與標準 [KnowledgeBaseRetrievalResult](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalResult.html) 相同。不過，回應也包含來自 Amazon Neptune 的幾個額外欄位。

下表說明您在傳回的回應中可能看到的 Neptune Analytics 欄位。Amazon Bedrock 會從 Neptune Analytics 回應中取得這些欄位。如果該回應不包含這些欄位，則從 Amazon Bedrock 傳回的查詢結果也不會包含這些欄位。


| 欄位 | 說明 | 
| --- | --- | 
|  x-amz-bedrock-kb-source-uri  |  傳回文件的 Amazon S3 URL。  | 
|  分數  |  表示回應與所提供查詢相符程度的差距，其中較低的值表示較相符。  | 
|  x-amz-bedrock-kb-data-source-id  |  用於知識庫的資料來源 ID。  | 
|  x-amz-bedrock-kb-chunk-id  |  用來擷取查詢資訊並產生回應的區塊 ID。  | 
|  DocumentAttributes  |  Amazon Kendra 的文件屬性或中繼資料欄位。知識庫傳回的查詢結果會將這些結果存放為中繼資料鍵值對。您可以使用來自 Amazon Bedrock 的中繼資料篩選來篩選結果。  | 

## 使用中繼資料和篩選
<a name="kb-test-neptune-metadata"></a>

當您查詢知識庫並產生回應時，您可以篩選中繼資料以尋找更相關的文件。例如，您可以根據文件的發佈日期進行篩選。您可以使用 Amazon Bedrock 主控台或執行時期 API [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html) 來達成此目的，這可以指定一些一般篩選條件。

以下是針對 Neptune Analytics 圖形使用 `RetrievalFilter` API 的一些考量。
+ 不支援 `startsWith` 和 `listContains` 篩選條件。
+ 不支援 `stringContains` 篩選條件的清單變體。

如下列範例所示：

```
"vectorSearchConfiguration": {
        "numberOfResults": 5,
        "filter": {
            "orAll": [
                {
                    "andAll": [
                        {
                            "equals": {
                                "key": "genre",
                                "value": "entertainment"
                            }
                        },
                        {
                            "greaterThan": {
                                "key": "year",
                                "value": 2018
                            }
                        }
                    ]
                },
                {
                    "andAll": [                        
                        {
                            "startsWith": {
                                "key": "author",
                                "value": "C"
                            }
                        }
                    ]
                }
            ]
        }
    }
}
```

# 設定和自訂查詢和回應產生
<a name="kb-test-config"></a>

您可以設定和自訂擷取和回應產生，進一步改善回應的相關性。例如，您可以套用篩選條件來記錄中繼資料欄位/屬性，以使用最近更新的文件或具有最近修改時間的文件。

**注意**  
除了**協調和產生**之外，下列所有組態僅適用於非結構化資料來源。

若要在主控台或 API 中進一步了解這些組態，請從下列主題中選取：

## 來源區塊的數量
<a name="kb-test-config-number"></a>

當您查詢知識庫時，Amazon Bedrock 預設會在回應中傳回最多五個結果。每個結果對應至來源區塊。

**注意**  
回應中的實際結果數目可能小於指定的 `numberOfResults` 值，因為此參數會設定要傳回的結果數目上限。如果您已為分塊策略設定階層式分塊，`numberOfResults` 參數會對應至知識庫將擷取的子區塊數量。由於共用相同父區塊的子區塊會取代為最終回應中的父區塊，因此傳回的結果數目可能會小於請求的數量。

若要修改要傳回的結果數量上限，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

請遵循 [查詢知識庫並擷取資料](kb-test-retrieve.md) 或 [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 的主控台步驟。在**組態**窗格中，展開**來源區塊**區段，然後輸入要傳回的來源區塊數目上限。

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

當您提出 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 或 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求時，請包含對應至 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 物件的 `retrievalConfiguration` 欄位。若要查看此欄位的位置，請參閱 API 參考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 和 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求內文。

下列 JSON 物件顯示設定要傳回的結果數目上限時，[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 物件中所需的最少欄位：

```
"retrievalConfiguration": {
    "vectorSearchConfiguration": {
        "numberOfResults": number
    }
}
```

指定要在 `numberOfResults` 欄位中傳回的擷取結果數目上限 (請參閱 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 中的 `numberOfResults` 欄位，以取得接受值的範圍)。

------

## 搜尋類型
<a name="kb-test-config-search"></a>

搜尋類型會定義如何查詢知識庫中的資料來源。可能的搜尋類型如下：

**注意**  
只有包含可篩選文字欄位的 Amazon RDS、Amazon OpenSearch Serverless 和 MongoDB 向量存放區才支援混合搜尋。如果您使用不同的向量存放區，或您的向量存放區不包含可篩選的文字欄位，則查詢會使用語義搜尋。
+ **預設** – Amazon Bedrock 會為您決定搜尋策略。
+ **混合** – 結合搜尋向量嵌入 (語義搜尋) 與搜尋原始文字。
+ **語義** – 僅搜尋向量嵌入。

若要了解如何定義搜尋類型，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

請遵循 [查詢知識庫並擷取資料](kb-test-retrieve.md) 或 [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 的主控台步驟。當您開啟**組態**窗格時，請展開**搜尋類型**區段、開啟**覆寫預設搜尋**，然後選取選項。

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

當您提出 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 或 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求時，請包含對應至 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 物件的 `retrievalConfiguration` 欄位。若要查看此欄位的位置，請參閱 API 參考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 和 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求內文。

下列 JSON 物件顯示設定搜尋類型組態時，[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 物件中所需的最少欄位：

```
"retrievalConfiguration": {
    "vectorSearchConfiguration": {
        "overrideSearchType": "HYBRID | SEMANTIC"
    }
}
```

在 `overrideSearchType` 欄位中指定搜尋類型。您有下列選項：
+ 如果您未指定值，Amazon Bedrock 會決定哪種搜尋策略最適合您的向量存放區組態。
+ **混合** – Amazon Bedrock 會使用向量嵌入和原始文字來查詢知識庫。
+ **語義** – Amazon Bedrock 會使用其向量嵌入來查詢知識庫。

------

## 串流
<a name="kb-test-config-stream"></a>

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

請遵循 [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 的主控台步驟。當您開啟**組態**窗格時，請展開**串流偏好設定**區段，並開啟**串流回應**。

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

若要串流回應，請使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API。如需填寫欄位的詳細資訊，請參閱位於 [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 的 **API** 索引標籤。

------

## 手動中繼資料篩選
<a name="kb-test-config-filters"></a>

您可以將篩選條件套用至文件欄位/屬性，以協助您進一步改善回應的相關性。您的資料來源可以包含要篩選的文件中繼資料屬性/欄位，並可以指定要包含在嵌入中的欄位。

例如，"epoch\$1modification\$1time" 代表文件上次更新時，自 1970 年 1 月 1 日 (UTC) 以來的秒數。您可以篩選最近的資料，其中「epoch\$1modification\$1time」*大於*特定數字。這些最新的文件可用於查詢。

若要在查詢知識庫時使用篩選條件，請檢查您的知識庫是否符合下列要求：
+ 設定資料來源連接器時，大多數連接器會網路爬取文件的主要中繼資料欄位。如果您使用 Amazon S3 儲存貯體作為資料來源，則儲存貯體必須至少包含一個 `fileName.extension.metadata.json` 以用於與其相關聯的檔案或文件。如需設定中繼資料檔案的詳細資訊，請參閱 [連線組態](s3-data-source-connector.md#configuration-s3-connector) 中的**文件中繼資料欄位**。
+ 如果您知識庫的向量索引位於 Amazon OpenSearch Serverless 向量存放區中，請檢查向量索引是否已使用 `faiss` 引擎設定。如果向量索引是使用 `nmslib` 引擎設定，您必須執行下列其中一項操作：
  + 在主控台中[建立新的知識庫](knowledge-base-create.md)，讓 Amazon Bedrock 自動為您在 Amazon OpenSearch Serverless 中建立向量索引。
  + 在向量存放區中[建立另一個向量索引](knowledge-base-setup.md)，然後選取 `faiss` 作為**引擎**。然後[建立新的知識庫](knowledge-base-create.md)並指定新的向量索引。
+ 如果您的知識庫在 S3 向量儲存貯體中使用向量索引，則無法使用 `startsWith` 和 `stringContains` 篩選條件。
+ 如果您要將中繼資料新增至 Amazon Aurora 資料庫叢集中的現有向量索引，建議您提供自訂中繼資料資料欄的欄位名稱，以將所有中繼資料存放在單一資料欄中。在[資料擷取](kb-data-source-sync-ingest.md)期間，此欄將用於從資料來源填入中繼資料檔案中的所有資訊。如果您選擇提供此欄位，則必須在此資料欄上建立索引。
  + 當您在主控台中[建立新的知識庫](knowledge-base-create.md)，並讓 Amazon Bedrock 設定您的 Amazon Aurora 資料庫時，它會自動為您建立單一資料欄，並填入中繼資料檔案中的資訊。
  + 當您選擇在向量存放區中[建立另一個向量索引](knowledge-base-setup.md)時，必須提供自訂中繼資料欄位名稱，以存放中繼資料檔案中的資訊。如果您未提供此欄位名稱，則必須為檔案中的每個中繼資料屬性建立資料欄，並指定資料類型 (文字、數字或布林值)。例如，如果您的資料來源中存在屬性 `genre`，您可以新增名為 `genre` 的資料欄，並將 `text` 指定為資料類型。在擷取期間，這些個別的資料欄會填入對應的屬性值。

如果您的資料來源中有 PDF 文件，並將 Amazon OpenSearch Serverless 用於向量存放區：Amazon Bedrock 知識庫將產生文件頁碼，並將其存放在名為 *x-amz-bedrock-kb-document-page-number* 的中繼資料欄位/屬性中。請注意，如果您沒有為文件選擇分塊，則不支援存放在中繼資料欄位中的頁碼。

您可以在查詢時使用下列篩選運算子來篩選結果：


**篩選運算子**  

| 運算子 | 主控台 | API 篩選條件名稱 | 支援的屬性資料類型 | 篩選結果 | 
| --- | --- | --- | --- | --- | 
| Equals | = | [等於](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-equals) | 字串、數字、布林值 | 屬性符合您提供的值 | 
| 不等於 | \$1= | [notEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notEquals) | 字串、數字、布林值 | 屬性不符合您提供的值 | 
| Greater than | > | [greaterThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThan) | number | 屬性大於您提供的值 | 
| 大於或等於 | >= | [greaterThanOrEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-greaterThanOrEquals) | number | 屬性大於或等於您提供的值 | 
| Less than | < | [lessThan](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThan) | number | 屬性小於您提供的值 | 
| 小於或等於 | <= | [lessThanOrEquals](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-lessThanOrEquals) | number | 屬性小於或等於您提供的值 | 
| In (入) | : | [在 中](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-in) | 字串清單 | 屬性位於您提供的清單中 (Amazon OpenSearch Serverless 和 Neptune Analytics GraphRAG 向量存放區目前最受支援) | 
| 不在 | \$1: | [notIn](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-notIn) | 字串清單 | 屬性不在您提供的清單中 (Amazon OpenSearch Serverless 和 Neptune Analytics GraphRAG 向量存放區目前最受支援) | 
| 字串包含 | 不適用 | [stringContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-stringContains) | string | 屬性必須是字串。屬性名稱符合索引鍵，且其值為包含您以子字串提供之值的字串，或包含您以子字串提供之值的成員清單 (目前 Amazon OpenSearch Serverless 向量存放區最受支援。Neptune Analytics GraphRAG 向量存放區支援字串變體，但不支援此篩選條件的清單變體)。 | 
| 清單包含 | 不適用 | [listContains](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-listContains) | string | 屬性必須是字串清單。屬性名稱符合金鑰，且其值是包含您作為其成員之一所提供值的清單 (目前 Amazon OpenSearch Serverless 向量存放區最受支援)。 | 

若要結合篩選運算子，您可以使用下列邏輯運算子：


**邏輯運算子**  

| 運算子 | 主控台 | API 篩選條件欄位名稱 | 篩選結果 | 
| --- | --- | --- | --- | 
| 及 | 及 | [andAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-andAll) | 結果滿足群組中的所有篩選表達式 | 
| 或 | 或 | [orAll](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrievalFilter.html#bedrock-Type-agent-runtime_RetrievalFilter-orAll) | 結果至少滿足群組中其中一個篩選表達式 | 

若要了解如何使用中繼資料篩選結果，請選擇您偏好方法的標籤，然後遵循下列步驟：

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

請遵循 [查詢知識庫並擷取資料](kb-test-retrieve.md) 或 [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 的主控台步驟。當您開啟**組態**窗格時，您會看到**篩選條件區段**。下列程序說明不同的使用案例：
+ 若要新增篩選條件，請在方塊中輸入中繼資料屬性、篩選運算子和值來建立篩選表達式。使用空格來分隔表達式的每個部分。按 **Enter** 以新增篩選條件。

  如需可接受的篩選運算子清單，請參閱上方的**篩選運算子**資料表。您也可以在中繼資料屬性之後新增空格時，查看篩選運算子的清單。
**注意**  
您必須使用引號括住字串。

  例如，您可以新增下列篩選條件，從包含其值為 `"entertainment"` 之 `genre` 中繼資料屬性的來源文件中篩選結果：**genre = "entertainment"**。  
![\[新增一個篩選條件。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/filter-one.png)
+ 若要新增另一個篩選條件，請在方塊中輸入另一個篩選表達式，然後按 **Enter**。您最多可以在群組中新增 5 個篩選條件。  
![\[新增另一個篩選條件。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/filter-more.png)
+ 根據預設，查詢會傳回滿足您提供的所有篩選表達式的結果。若要傳回至少滿足其中一個篩選表達式的結果，請在任兩個篩選操作之間選擇**和**下拉式功能表，然後選取**或**。  
![\[變更篩選條件之間的邏輯操作。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/filter-logical.png)
+ 若要結合不同的邏輯運算子，請選取 **\$1 新增群組**以新增篩選條件群組。在新群組中輸入篩選表達式。您最多可以新增 5 個篩選條件群組。  
![\[新增篩選條件群組以結合不同的邏輯運算子。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/filter-group.png)
+ 若要變更所有篩選群組之間使用的邏輯運算子，請在任兩個篩選群組之間選擇**和**下拉式功能表，然後選取**或**。  
![\[變更篩選條件群組之間的邏輯操作。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/filter-group-logical.png)
+ 若要編輯篩選條件、選取篩選條件、修改篩選操作，然後選擇**套用**。  
![\[編輯篩選條件。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/filter-edit.png)
+ 若要移除篩選條件群組，請選擇群組旁的垃圾桶圖示 (![\[Trapezoid-shaped diagram showing data flow from source to destination through AWS Transfer Family.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/trash.png))。若要移除篩選條件，請選擇篩選條件旁的刪除圖示 (![\[Close or cancel icon represented by an "X" symbol.\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/icons/close.png))。  
![\[刪除篩選條件或篩選條件群組。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/filter-delete.png)

下圖顯示範例篩選條件組態，除了類型為 **"cooking"** 或 **"sports"** 且作者以 **"C"** 開頭的文件之外，還傳回在 **2018** 後寫入且類型為 **"entertainment"** 的所有文件。

![\[範例篩選條件組態。\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/images/kb/filter-example.png)


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

當您提出 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 或 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求時，請包含對應至 [KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 物件的 `retrievalConfiguration` 欄位。若要查看此欄位的位置，請參閱 API 參考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 和 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求內文。

下列 JSON 物件顯示設定不同使用案例的篩選條件時，[KnowledgeBaseRetrievalConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_KnowledgeBaseRetrievalConfiguration.html) 物件中所需的最少欄位：

1. 使用一個篩選運算子 (請參閱上方的**篩選運算子**資料表)。

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "<filter-type>": {
                   "key": "string",
                   "value": "string" | number | boolean | ["string", "string", ...]
               }
           }
       }
   }
   ```

1. 使用邏輯運算子 (請參閱上方的**邏輯運算子**資料表) 來結合最多 5 個運算子。

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "andAll | orAll": [
                   "<filter-type>": {
                       "key": "string",
                       "value": "string" | number | boolean | ["string", "string", ...]
                   },
                   "<filter-type>": {
                       "key": "string",
                       "value": "string" | number | boolean | ["string", "string", ...]
                   },
                   ...
               ]
           }
       }
   }
   ```

1. 使用邏輯運算子以將最多 5 個篩選運算子合併為篩選條件群組，並使用第二個邏輯運算子將該篩選條件群組與其他篩選運算子合併。

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "andAll | orAll": [
                   "andAll | orAll": [
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       ...
                   ],
                   "<filter-type>": {
                       "key": "string",
                       "value": "string" | number | boolean | ["string", "string", ...]
                   }
               ]
           }
       }
   }
   ```

1. 將最多 5 個篩選條件群組嵌入在另一個邏輯運算子中，以結合這些群組。您可以建立一個嵌入層級。

   ```
   "retrievalConfiguration": {
       "vectorSearchConfiguration": {
           "filter": {
               "andAll | orAll": [
                   "andAll | orAll": [
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       ...
                   ],
                   "andAll | orAll": [
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       "<filter-type>": {
                           "key": "string",
                           "value": "string" | number | boolean | ["string", "string", ...]
                       },
                       ...
                   ]
               ]
           }
       }
   }
   ```

下表說明您可以使用的篩選條件類型：


****  

| 欄位 | 支援的值資料類型 | 篩選結果 | 
| --- | --- | --- | 
| equals | 字串、數字、布林值 | 屬性符合您提供的值 | 
| notEquals | 字串、數字、布林值 | 屬性不符合您提供的值  | 
| greaterThan | number | 屬性大於您提供的值 | 
| greaterThanOrEquals | number | 屬性大於或等於您提供的值 | 
| lessThan | number | 屬性小於您提供的值  | 
| lessThanOrEquals | number | 屬性小於或等於您提供的值 | 
| in | 字串清單 | 屬性位於您提供的清單中 | 
| notIn | 字串清單 | 屬性不在您提供的清單中 | 
| startsWith | string | 屬性開頭為您提供的字串 (僅 Amazon OpenSearch Serverless 向量存放區可支援) | 

若要合併篩選條件類型，您可以使用下列其中一個邏輯運算子：


****  

| 欄位 | 對應至 | 篩選結果 | 
| --- | --- | --- | 
| andAll | 最多 5 個篩選條件類型的清單 | 結果滿足群組中的所有篩選表達式 | 
| orAll | 最多 5 個篩選條件類型的清單 | 結果至少滿足群組中其中一個篩選表達式 | 

如需範例，請參閱[傳送查詢並包含篩選條件 (擷取)](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html#API_agent-runtime_Retrieve_Example_2) 和[傳送查詢並包含篩選條件 RetrieveAndGenerate)](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html#API_agent-runtime_RetrieveAndGenerate_Example_2)。

------

## 隱含中繼資料篩選
<a name="kb-test-config-implicit"></a>

Amazon Bedrock 知識庫會根據使用者查詢和中繼資料結構描述產生並套用擷取篩選條件。

**注意**  
此功能目前僅適用於 Anthropic Claude 3.5 Sonnet。

`implicitFilterConfiguration` 會在 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 請求內文的 `vectorSearchConfiguration` 中指定。包含下列欄位：
+ `metadataAttributes` – 在此陣列中，提供描述模型將產生篩選條件之中繼資料屬性的結構描述。
+ `modelArn` – 要使用的模型 ARN。

以下顯示您可以在 `metadataAttributes` 中新增至陣列的中繼資料結構描述範例。

```
[
    {
        "key": "company",
        "type": "STRING",
        "description": "The full name of the company. E.g. `Amazon.com, Inc.`, `Alphabet Inc.`, etc"
    },
    {
        "key": "ticker",
        "type": "STRING",
        "description": "The ticker name of a company in the stock market, e.g. AMZN, AAPL"
    },
    {
        "key": "pe_ratio",
        "type": "NUMBER",
        "description": "The price to earning ratio of the company. This is a measure of valuation of a company. The lower the pe ratio, the company stock is considered chearper."
    },
    {
        "key": "is_us_company",
        "type": "BOOLEAN",
        "description": "Indicates whether the company is a US company."
    },
    {
        "key": "tags",
        "type": "STRING_LIST",
        "description": "Tags of the company, indicating its main business. E.g. `E-commerce`, `Search engine`, `Artificial intelligence`, `Cloud computing`, etc"
    }
]
```

## 防護機制
<a name="kb-test-config-guardrails"></a>

您可以針對使用案例和負責任的 AI 原則的知識庫實作保護措施。您可以針對不同的使用案例量身制訂多項防護機制，並將其套用至多種請求與回應條件，藉此提供一致的使用者體驗，並對您的知識庫實施標準化的安全管控。您可以設定拒絕的主題，以禁止不適當的主題，並且設定內容篩選器來封鎖模型輸入和回應中的有害內容。如需詳細資訊，請參閱[使用 Amazon Bedrock 防護機制偵測和篩選有害內容](guardrails.md)。

**注意**  
Claude 3 Sonnet 和 Haiku 目前不支援將防護機制與知識庫的內容關聯依據搭配使用。

如需一般提示工程指導方針，請參閱 [提示工程概念](prompt-engineering-guidelines.md)。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

請遵循 [查詢知識庫並擷取資料](kb-test-retrieve.md) 或 [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 的主控台步驟。在測試視窗中，開啟**產生回應**。然後，在**組態**窗格中，展開**防護機制**區段。

1. 在**防護機制**區段中，選擇防護機制的**名稱**和**版本**。如果您想要查看所選防護機制和版本的詳細資訊，請選擇**檢視**。

   或者，您可以選擇**防護機制**連結來建立新的防護機制。

1. 完成編輯後，請選擇 **Save changes** (儲存變更)。若要退出而不儲存，請選擇**捨棄變更**。

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

當您提出 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求時，請在 `generationConfiguration` 中包含 `guardrailConfiguration` 欄位，以搭配請求使用您的防護機制。若要查看此欄位的位置，請參閱 API 參考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求內文。

下列 JSON 物件顯示設定 `guardrailConfiguration` 時，[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) 中所需的最少欄位：

```
"generationConfiguration": {
    "guardrailConfiguration": {
        "guardrailId": "string",
        "guardrailVersion": "string"
    }
}
```

指定所選防護機制的 `guardrailId` 和 `guardrailVersion`。

------

## 重新排名
<a name="kb-test-config-rerank"></a>

您可以使用重新排名器模型來重新排名知識庫查詢的結果。請遵循 [查詢知識庫並擷取資料](kb-test-retrieve.md) 或 [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 的主控台步驟。當您開啟**組態**窗格時，請展開**重新排名**區段。選取重新排名器模型、視需要更新許可，並修改任何其他選項。輸入提示，然後選取**執行**以在重新排名後測試結果。

## 查詢分解
<a name="kb-test-query-modifications"></a>

查詢分解是一種技術，用於將複雜的查詢分解為更小、更易於管理的子查詢。這種方法有助於擷取更準確和相關的資訊，特別是當初始查詢具有多面向或過於廣泛時。啟用此選項可能會導致針對您的知識庫執行多個查詢，這可能有助於提供更準確的最終回應。

例如，對於*「在 2022 年 FIFA 世界盃中，阿根廷或法國誰獲得更高的分數？」*之類的問題，Amazon Bedrock 知識庫可能會先產生下列子查詢，然後再產生最終回答：

1. *阿根廷在 2022 FIFA 世界盃決賽中獲得了幾分？*

1. *法國在 2022 FIFA 世界盃決賽中獲得了幾分？*

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

1. 建立和同步資料來源或使用現有的知識庫。

1. 前往測試視窗並開啟組態面板。

1. 啟用查詢分解。

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

```
POST /retrieveAndGenerate HTTP/1.1
Content-type: application/json
{
   "input": {
      "text": "string"
   },
   "retrieveAndGenerateConfiguration": {
      "knowledgeBaseConfiguration": {
         "orchestrationConfiguration": { // Query decomposition
           "queryTransformationConfiguration": {
                "type": "string" // enum of QUERY_DECOMPOSITION
           }
         },
...}
}
```

------

## 推論參數
<a name="kb-test-model-params"></a>

根據擷取資訊產生回應時，您可以使用[推論參數](inference-parameters.md)，在推論期間進一步控制模型的行為，並影響模型的輸出。

若要了解如何修改推論參數，請選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**若要在查詢知識庫時修改推論參數** – 請遵循 [查詢知識庫並擷取資料](kb-test-retrieve.md) 或 [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 的主控台步驟。當您開啟**組態**窗格時，您會看到**推論參數**區段。視需要修改參數。

**若要在與文件聊天時修改推論參數** – 請遵循 [與未設定知識庫的文件聊天](knowledge-base-chatdoc.md) 中的步驟。在**組態**窗格中，展開**推論參數**區段，並視需要修改參數。

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

您可以在對 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 的呼叫中提供模型參數。您可以在 `knowledgeBaseConfiguration` (如果您查詢知識庫) 或 `externalSourcesConfiguration` (如果您[與文件聊天](knowledge-base-chatdoc.md)) 的 `inferenceConfig` 欄位中提供推論參數，以自訂模型。

`inferenceConfig` 欄位中有一個 `textInferenceConfig` 欄位，其中包含您可以執行的下列參數：
+ 溫度
+ topP
+ maxTokenCount
+ stopSequences

您可以在 `externalSourcesConfiguration` 和 `knowledgeBaseConfiguration` 的 `inferenceConfig` 欄位中使用下列參數來自訂模型：
+ 溫度
+ topP
+ maxTokenCount
+ stopSequences

如需這些參數之函數的詳細說明，請參閱 [使用推論參數影響回應生成](inference-parameters.md)。

此外，您可以透過 `additionalModelRequestFields` 對應提供 `textInferenceConfig` 不支援的自訂參數。您可以使用此引數為特定模型提供唯一的參數，如需唯一的參數，請參閱 [基礎模型的推論請求參數和回應欄位](model-parameters.md)。

如果參數從 `textInferenceConfig` 忽略，則會使用預設值。任何在 `textInferneceConfig` 中無法辨識的參數都會遭到忽略，而在 `AdditionalModelRequestFields` 中無法辨識的參數則會導致例外狀況。

如果 `additionalModelRequestFields` 和 `TextInferenceConfig` 中有相同的參數，則會擲回驗證例外狀況。

**在 RetrieveAndGenerate 中使用模型參數**

 以下是 `RetrieveAndGenerate` 請求內文中的 `generationConfiguration` 下，`inferenceConfig` 和 `additionalModelRequestFields` 的結構範例：

```
"inferenceConfig": {
    "textInferenceConfig": {
        "temperature": 0.5,  
        "topP": 0.5,
        "maxTokens": 2048,
        "stopSequences": ["\nObservation"]
    }
},
"additionalModelRequestFields": {
    "top_k": 50
}
```

 程序範例將 `temperature` 設定為 0.5、將 `top_p` 設定為 0.5、將 `maxTokens` 設定為 2048，如果在產生的回應中遇到字串 "\$1nObservation"，則會停止產生，並傳遞自訂 `top_k` 值 50。

------

## 知識庫提示範本：協調和產生
<a name="kb-test-config-prompt-template"></a>

當您查詢知識庫和請求回應產生時，Amazon Bedrock 會使用提示範本，將指示和情境與使用者查詢結合，以建構傳送至模型的產生提示來產生回應。您也可以自訂協調提示，將使用者的提示轉換為搜尋查詢。您可以使用下列工具來設計提示範本：
+ **提示預留位置** – Amazon Bedrock 知識庫中的預先定義變數，會在知識庫查詢期間於執行時期動態填入。在系統提示中，您會看到這些預留位置由 `$` 符號包圍。下列清單說明您可以使用的預留位置：
**注意**  
`$output_format_instructions$` 預留位置是要在回應中顯示的引文的必要欄位。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/bedrock/latest/userguide/kb-test-config.html)
+ **XML 標籤** – Anthropic 模型支援使用 XML 標籤來建構和描述您的提示。使用描述性標籤名稱以獲得最佳結果。例如，在預設系統提示中，您會看到用來描述先前所詢問問題的資料庫的 `<database>` 標籤)。如需詳細資訊，請參閱《[Anthropic 使用者指南](https://docs.anthropic.com/en/docs/welcome)》中的[使用 XML 標籤](https://docs.anthropic.com/claude/docs/use-xml-tags)。

如需一般提示工程指導方針，請參閱 [提示工程概念](prompt-engineering-guidelines.md)。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

請遵循 [查詢知識庫並擷取資料](kb-test-retrieve.md) 或 [查詢知識庫並根據擷取的資料產生回應](kb-test-retrieve-generate.md) 的主控台步驟。在測試視窗中，開啟**產生回應**。然後，在**組態**窗格中，展開**知識庫提示範本**區段。

1. 選擇**編輯**。

1. 在文字編輯器中編輯系統提示，包括提示預留位置和視需要的 XML 標籤。若要還原為預設提示範本，請選擇**重設為預設值**。

1. 完成編輯後，請選擇 **Save changes** (儲存變更)。若要退出而不儲存系統提示，請選擇**捨棄變更**。

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

當您提出 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求時，請包含對應至 [GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) 物件的 `generationConfiguration` 欄位。若要查看此欄位的位置，請參閱 API 參考中的 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求內文。

下列 JSON 物件會顯示設定要傳回的擷取結果數目上限時，[GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) 物件中所需的最少欄位：

```
"generationConfiguration": {
    "promptTemplate": {
        "textPromptTemplate": "string"
    }
}
```

在 `textPromptTemplate` 欄位中輸入您的自訂提示範本，包括提示預留位置和視需要的 XML 標籤。如需系統提示中允許的字元數上限，請參閱 [GenerationConfiguration](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerationConfiguration.html) 中的 `textPromptTemplate` 欄位。

------

# 使用知識庫設定推理模型的回應產生
<a name="kb-test-configure-reasoning"></a>

某些基礎模型可以執行模型推理，其中它們會採用更大、複雜的任務，並將其分解為更小、更簡單的步驟。此程序通常稱為思維鏈 (CoT) 推理，可透過讓模型有機會在回應之前進行思考來提高模型準確性。模型推理對於多步驟分析、數學問題和複雜推理任務等任務最為實用。如需詳細資訊，請參閱 [使用模型推理來增強模型回應](inference-reasoning.md)。

**注意**  
此頁面說明如何使用專門針對 Amazon Bedrock 知識庫的推理組態。如需使用 `InvokeModel` API 設定直接模型調用推理的資訊，請參閱 [使用模型推理來增強模型回應](inference-reasoning.md)。

啟用模型推理時，它可以提高準確性和更好的引用結果，但可能會導致延遲增加。以下是使用推理模型搭配 Amazon Bedrock 知識庫查詢資料來源和產生回應時的一些考量。

**Topics**
+ [推理模型](#kb-test-reasoning-models)
+ [使用 Claude 3.7 Sonnet 的模型推理](#kb-test-reasoning-using)
+ [一般考量](#kb-test-reasoning-general-considerations)
+ [擷取和產生 API 考量](#kb-test-reasoning-api-considerations)

## 推理模型
<a name="kb-test-reasoning-models"></a>

模型推理適用於下列模型。


| 基礎模型 | 模型 ID | 字符數目 | 推理組態 | 
| --- | --- | --- | --- | 
| Anthropic Claude Opus 4 | anthropic.claude-opus-4-20250514-v1:0 | 此模型會有 32,768 個字符，其中包括輸出和推理字符。 | 您可以使用可設定的字符預算來啟用或停用此模型的推理。預設會停用推理。 | 
| Anthropic Claude Sonnet 4 | anthropic.claude-sonnet-4-20250514-v1:0 | 此模型會有 65,536 個字符，其中包括輸出和推理字符。 | 您可以使用可設定的字符預算來啟用或停用此模型的推理。預設會停用推理。 | 
| Anthropic Claude 3.7 Sonnet | anthropic.claude-3-7-sonnet-20250219-v1:0 | 此模型會有 65,536 個字符，其中包括輸出和推理字符。 | 您可以使用可設定的字符預算來啟用或停用此模型的推理。預設會停用推理。 | 
| DeepSeek DeepSeek-R1 | deepseek.r1-v1:0 | 此模型會有 8192 個字符，其中包括輸出和推理字符。無法設定思維字符的數量，且輸出字符的數量上限不得大於 8192。 | 此模型一律會啟用推理。此模型不支援開啟和關閉推理功能。 | 

## 使用 Claude 3.7 Sonnet 的模型推理
<a name="kb-test-reasoning-using"></a>

**注意**  
DeepSeek-R1 模型一律會啟用模型推理。此模型不支援開啟和關閉推理功能。

使用 Claude 3.7 Sonnet 模型時，可以使用 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 的 `additionalModelRequestFields` 參數啟用或停用模型推理。此參數接受任何鍵值對。例如，您可以新增 `reasoningConfig` 欄位並使用 `type` 金鑰來啟用或停用推理，如下所示。

```
{
   "input": { 
      "text": "string",
      "retrieveAndGenerateConfiguration": { 
      "knowledgeBaseConfiguration": { 
         "generationConfiguration": { 
            "additionalModelRequestFields": {
                "reasoningConfig" : {
                    "type": "enabled",
                    "budget_tokens": INT_VAL, #required when enabled
                }
            }
         },
         "knowledgeBaseId": "string",
      },
      "type": "string"
   },
   "sessionId": "string"
}
```

## 一般考量
<a name="kb-test-reasoning-general-considerations"></a>

以下是使用知識庫推理模型的一些一般考量。
+ 推理模型最多會有五分鐘的時間來回應查詢。如果模型需要超過五分鐘的時間來回應查詢，則會導致逾時。
+ 為了避免超過五分鐘逾時，只有在設定查詢和回應產生時，才會在產生步驟啟用模型推理。協調步驟不能有模型推理。
+ 推理模型最多可以使用 8192 個字符來回應查詢，其中包含輸出和思維字符。若任何請求的輸出字符數目上限超過此限制，將導致錯誤。

## 擷取和產生 API 考量
<a name="kb-test-reasoning-api-considerations"></a>

以下是將 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) API 用於推理模型時的一些考量。
+ 根據預設，當停用包括 Claude 3.7 Sonnet 在內的所有模型推理時，溫度會設為零。啟用推理時，溫度必須設定為 1。

  ```
  "inferenceConfig": {
      "textInferenceConfig": {
          "maxTokens": 8192,
          "temperature": 1
      }
  }
  ```
+ 為 Claude 3.7 Sonnet 模型啟用推理時，必須停用參數 Top P。Top P 是額外的模型請求欄位，可決定產生期間要選取的可能字符百分位數。根據預設，其他 Anthropic Claude 模型的 Top P 值為 1。對於 Claude 3.7 Sonnet 模型，預設會停用此值。
+ 使用模型推理時，它可能會導致延遲增加。使用此 API 操作和 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerateStream.html) API 操作時，您可能會注意到從 API 接收回應時發生延遲。

# 部署 AI 應用程式的知識庫
<a name="knowledge-base-deploy"></a>

若要部署應用程式的知識庫，請將其設定為向知識庫提出 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) 或 [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) 請求。若要了解如何使用這些 API 操作來查詢和產生回應，請參閱 [使用查詢和回應測試您的知識庫](knowledge-base-test.md)。

您也可以將知識庫與代理程式建立關聯，而代理程式將在協同運作期間在必要時調用它。如需詳細資訊，請參閱 [使用 AI 代理程式自動執行應用程式中的任務](agents.md)。

您必須先設定資料來源/來源並與您的知識庫同步，才能部署您的知識庫。請參閱[支援的資料來源](https://docs.aws.amazon.com/bedrock/latest/userguide/data-source-connectors.html)。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**將知識庫與代理程式建立關聯**

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 從左側導覽窗格選取**代理程式**。

1. 選擇您要新增知識庫的代理程式。

1. 在**工作草稿**區段中，選擇**工作草稿**。

1. 在**知識庫**區段中，選取**新增**。

1. 從**選取知識庫**下方的下拉式清單中選擇知識庫，並指定代理程式應如何與知識庫互動並傳回結果的相關指示。

**取消知識庫與代理程式的關聯**

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 從左側導覽窗格選取**代理程式**。

1. 選擇您要新增知識庫的代理程式。

1. 在**工作草稿**區段中，選擇**工作草稿**。

1. 在**知識庫**區段中，選擇知識庫。

1. 選取**刪除**。

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

若要為知識庫與代理程式建立關聯，請傳送 [AssociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_AssociateAgentKnowledgeBase.html) 請求。
+ 包含詳細的 `description`，提供代理程式應如何與知識庫互動並傳回結果的指示。
+ 將 `knowledgeBaseState` 設定為 `ENABLED`，以允許代理程式查詢知識庫。

您可以傳送 [UpdateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateAgentKnowledgeBase.html) 請求來更新與代理程式相關聯的知識庫。例如，您可能想要將 `knowledgeBaseState` 設定為 `ENABLED`，以對問題進行疑難排解。由於所有欄位都將遭覆寫，因此請同時包括您要更新的欄位以及要保持不變的欄位。

若要取消知識庫與代理程式的關聯，請傳送 [DisassociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DisassociateAgentKnowledgeBase.html) 請求。

------

# 檢視 Amazon Bedrock 知識庫的相關資訊
<a name="kb-info"></a>

您可以檢視知識庫的相關資訊，例如設定和狀態。

若要使用 Amazon CloudWatch logs 監控您的知識庫，請參閱[知識庫記錄](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-bases-logging.html)。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**檢視知識庫的相關資訊**

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 若要檢視知識庫的詳細資訊，請選取來源的**名稱**，或選擇來源旁邊的選項按鈕，然後選取**編輯**。

1. 在詳細資訊頁面上，您可以執行下列動作：
   + 若要變更知識庫的詳細資料，請選取**知識庫概觀**區段中的**編輯**。
   + 若要更新連接至知識庫的標籤，請選取**標籤**區段中的**管理標籤**。
   + 如果您更新從中建立知識庫的資料來源，並且需要同步變更，請在**資料來源**區段中選取**同步**。
   + 若要檢視資料來源的詳細資訊，請選取**資料來源名稱**。在詳細資料中，您可以在**同步歷史記錄**區段中選擇同步事件旁的選項按鈕，然後選取**檢視警告**，查看資料擷取工作中的檔案無法同步處理的原因。
   + 若要管理用於知識庫的向量嵌入模型，請選取**編輯佈建的輸送量**。
   + 完成編輯後，選取**儲存變更**。

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

若要取得知識庫的相關資訊，請使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [GetKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_GetKnowledgeBase.html) 請求，並指定 `knowledgeBaseId`。

若要列出知識庫的相關資訊，請使用 [Amazon Bedrock 代理人建置時間端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [ListKnowledgeBases](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBases.html) 請求。指定回應中傳回結果的數量上限。如果結果多於您設定的數字，回應會傳回 `nextToken`。您可以在另一個 [ListKnowledgeBases](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_ListKnowledgeBases.html) 請求的 `nextToken` 欄位中使用此值，以查看下一批結果。

------

# 修改 Amazon Bedrock 知識庫
<a name="kb-update"></a>

您可以更新知識庫，例如變更知識庫組態。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**更新知識庫**

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 選取知識庫以檢視其詳細資訊，或選擇知識庫旁的選項按鈕，然後選取**編輯**。

1. 您可以透過下列方式修改知識庫。
   + 在**知識庫概觀**區段中選擇**編輯**，以變更知識庫的組態。
   + 在**標籤**區段中選擇**管理標籤**，以變更和管理連接至知識庫的標籤
   + 在**資料來源**區段中變更和管理知識庫的資料來源。

1. 完成編輯後，選取**儲存變更**。

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

若要更新知識庫，請使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [UpdateKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_UpdateKnowledgeBase.html) 請求。由於所有欄位都將遭覆寫，因此請同時包括您要更新的欄位以及要保持不變的欄位。

------

# 刪除 Amazon Bedrock 知識庫
<a name="kb-delete"></a>

您可以刪除或移除不再使用或需要的知識庫。刪除知識庫時，您也應該執行下列動作，以完全刪除與知識庫相關聯的所有資源。
+ 取消知識庫與其關聯之任何代理程式的關聯。
+ 刪除知識庫的向量存放區本身。

**注意**  
除非在資料來源建立期間另有指定，否則新建立資料來源上的 `dataDeletionPolicy` 預設為「刪除」。當您刪除知識庫或資料來源資源時，適用此政策。您可以將政策更新為從轉換為向量內嵌的資料來源中「保留」資料。請注意，如果您刪除知識庫或資料來源資源，則**不會刪除向量存放區本身**。

選擇您偏好方法的索引標籤，然後遵循下列步驟：

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

**刪除知識庫**

1. 執行下列步驟之前，請務必從與其相關聯的任何代理程式中刪除知識庫。對此，請執行下列步驟：

   1. 從左側導覽窗格選取**代理程式**。

   1. 選擇您要從中刪除知識庫的代理程式的**名稱**。

   1. 出現一個紅色橫幅，警告您要從代理程式中刪除知識庫的參照 (不復存在)。

   1. 在您要移除的知識庫旁邊，選取選項按鈕。選取**更多**，然後選擇**刪除**。

1. 使用具有 Amazon Bedrock 主控台使用許可的 IAM 身分登入AWS 管理主控台。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon Bedrock 主控台。

1. 在左側導覽窗格中選擇**知識庫**。

1. 選擇知識庫，或選取知識庫旁的選項按鈕。然後選擇**刪除**。

1. 檢閱刪除知識庫的警告。如果您接受這些條件，請在輸入方塊中輸入 **delete**，並選取**刪除**予以確認。
**注意**  
**向量存放區本身不會一併刪除**，僅會刪除資料。您可以使用向量存放區的主控台或 SDK 來刪除向量存放區。也請務必檢查與知識庫搭配使用的任何 Amazon Bedrock 代理程式。

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

若要刪除知識庫，請使用 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)傳送 [DeleteKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DeleteKnowledgeBase.html) 請求。

您還必須透過向 [Amazon Bedrock 代理程式建置時期端點](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-bt)的代理程式提出 [DisassociateAgentKnowledgeBase](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_DisassociateAgentKnowledgeBase.html) 請求，將知識庫與其關聯的任何代理程式取消關聯。

您還必須使用向量存放區的主控台或 SDK 刪除向量存放區本身。

------