

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

# 使用查詢和回應測試您的知識庫
<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 接收回應時發生延遲。