View a markdown version of this page

設定和自訂受管知識庫的查詢 - Amazon Bedrock

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

設定和自訂受管知識庫的查詢

您可以設定和自訂擷取,進一步改善結果的相關性。例如,您可以套用篩選條件來記錄中繼資料欄位/屬性,以使用最近更新的文件或具有最近修改時間的文件。

注意

下列所有組態僅適用於非結構化資料來源。

若要在主控台或 API 中進一步了解這些組態,請從下列主題中選取:

當您查詢知識庫時,Amazon Bedrock 預設會在回應中傳回最多五個結果。每個結果對應至來源區塊。

注意

回應中的實際結果數目可能小於指定的 numberOfResults 值,因為此參數會設定要傳回的結果數目上限。如果您已為分塊策略設定階層式分塊,numberOfResults 參數會對應至知識庫將擷取的子區塊數量。由於共用相同父區塊的子區塊會取代為最終回應中的父區塊,因此傳回的結果數目可能會小於請求的數量。

若要修改要傳回的結果數量上限,請選擇您偏好方法的索引標籤,然後遵循下列步驟:

Console

請遵循 查詢知識庫並擷取資料 的主控台步驟。在組態窗格中,展開來源區塊區段,然後輸入要傳回的來源區塊數目上限。

API

當您提出 RetrieveRetrieveAndGenerate 請求時,請包含對應至 KnowledgeBaseRetrievalConfiguration 物件的 retrievalConfiguration 欄位。若要查看此欄位的位置,請參閱 API 參考中的 RetrieveRetrieveAndGenerate 請求內文。

下列 JSON 物件顯示設定要傳回的結果數目上限時,KnowledgeBaseRetrievalConfiguration 物件中所需的最少欄位:

"retrievalConfiguration": { "vectorSearchConfiguration": { "numberOfResults": number } }

指定要在 numberOfResults 欄位中傳回的擷取結果數目上限 (請參閱 KnowledgeBaseRetrievalConfiguration 中的 numberOfResults 欄位,以取得接受值的範圍)。

您可以將篩選條件套用至文件欄位/屬性,以協助您進一步改善回應的相關性。您的資料來源可以包含要篩選的文件中繼資料屬性/欄位,並可以指定要包含在嵌入中的欄位。

受管知識庫考量

搭配受管知識庫使用中繼資料篩選時:

  • 不支援 startsWithstringContains中繼資料篩選條件。請改用 equalsgreaterThaninlessThannotIn運算子。

  • 範圍運算子 (greaterThanlessThangreaterThanOrEqualslessThanOrEquals) 接受數字或日期時間值。若要篩選日期時間,請以 ISO-8601 偏移日期時間格式的字串提供值。使用完整的偏移形式,例如 2026-03-02T19:02:18Z。範圍運算子僅支援受管知識庫的日期時間字串值。

  • 對於自訂知識庫, 服務x-amz-bedrock會保留字首為 的中繼資料欄位。對於全受管知識庫,預留中繼資料欄位使用底線字首 (例如,、_source_uri_data_source_id)。您無法覆寫任一知識庫類型的預留中繼資料欄位。

例如,"epoch_modification_time" 代表文件上次更新時,自 1970 年 1 月 1 日 (UTC) 以來的秒數。您可以篩選最近的資料,其中「epoch_modification_time」大於特定數字。這些最新的文件可用於查詢。

若要在查詢知識庫時使用篩選條件,請檢查您的知識庫是否符合下列要求:

  • 設定資料來源連接器時,大多數連接器會網路爬取文件的主要中繼資料欄位。如果您使用 Amazon S3 儲存貯體作為資料來源,則儲存貯體必須至少包含一個 fileName.extension.metadata.json 以用於與其相關聯的檔案或文件。如需設定中繼資料檔案的詳細資訊,請參閱 連線組態 中的文件中繼資料欄位

  • 如果您知識庫的向量索引位於 Amazon OpenSearch Serverless 向量存放區中,請檢查向量索引是否已使用 faiss 引擎設定。如果向量索引是使用 nmslib 引擎設定,您必須執行下列其中一項操作:

  • 如果您的知識庫在 S3 向量儲存貯體中使用向量索引,則無法使用 startsWithstringContains 篩選條件。

  • 如果您要將中繼資料新增至 Amazon Aurora 資料庫叢集中的現有向量索引,建議您提供自訂中繼資料資料欄的欄位名稱,以將所有中繼資料存放在單一資料欄中。在資料擷取期間,此欄將用於從資料來源填入中繼資料檔案中的所有資訊。如果您選擇提供此欄位,則必須在此資料欄上建立索引。

    • 當您在主控台中建立新的知識庫,並讓 Amazon Bedrock 設定您的 Amazon Aurora 資料庫時,它會自動為您建立單一資料欄,並填入中繼資料檔案中的資訊。

    • 當您選擇在向量存放區中建立另一個向量索引時,必須提供自訂中繼資料欄位名稱,以存放中繼資料檔案中的資訊。如果您未提供此欄位名稱,則必須為檔案中的每個中繼資料屬性建立資料欄,並指定資料類型 (文字、數字或布林值)。例如,如果您的資料來源中存在屬性 genre,您可以新增名為 genre 的資料欄,並將 text 指定為資料類型。在擷取期間,這些個別的資料欄會填入對應的屬性值。

如果您的資料來源中有 PDF 文件,並將 Amazon OpenSearch Serverless 或 Amazon Aurora 用於向量存放區:Amazon Bedrock 知識庫會產生文件頁碼,並將其存放在名為 x-amz-bedrock-kb-document-page-number 的中繼資料欄位/屬性中。請注意,如果您沒有為文件選擇分塊,則不支援存放在中繼資料欄位中的頁碼。

您可以在查詢時使用下列篩選運算子來篩選結果:

篩選運算子
運算子 主控台 API 篩選條件名稱 支援的屬性資料類型 篩選結果
Equals = 等於 字串、數字、布林值 屬性符合您提供的值
不等於 != notEquals 字串、數字、布林值 屬性不符合您提供的值
Greater than > greaterThan number 屬性大於您提供的值
大於或等於 >= greaterThanOrEquals number 屬性大於或等於您提供的值
Less than < lessThan number 屬性小於您提供的值
小於或等於 <= lessThanOrEquals number 屬性小於或等於您提供的值
In (入) : 在 中 字串清單 屬性位於您提供的清單中 (Amazon OpenSearch Serverless 和 Neptune Analytics GraphRAG 向量存放區目前最受支援)
不在 !: notIn 字串清單 屬性不在您提供的清單中 (Amazon OpenSearch Serverless 和 Neptune Analytics GraphRAG 向量存放區目前最受支援)
字串包含 不適用 stringContains string 屬性必須是字串。屬性名稱符合索引鍵,且其值為包含您以子字串提供之值的字串,或包含您以子字串提供之值的成員清單 (目前 Amazon OpenSearch Serverless 向量存放區最受支援。Neptune Analytics GraphRAG 向量存放區支援字串變體,但不支援此篩選條件的清單變體)。
清單包含 不適用 listContains string 屬性必須是字串清單。屬性名稱符合金鑰,且其值是包含您作為其成員之一所提供值的清單 (目前 Amazon OpenSearch Serverless 向量存放區最受支援)。

若要結合篩選運算子,您可以使用下列邏輯運算子:

邏輯運算子
運算子 主控台 API 篩選條件欄位名稱 篩選結果
andAll 結果滿足群組中的所有篩選表達式
orAll 結果至少滿足群組中其中一個篩選表達式

若要了解如何使用中繼資料篩選結果,請選擇您偏好方法的標籤,然後遵循下列步驟:

Console

請遵循 查詢知識庫並擷取資料 的主控台步驟。當您開啟組態窗格時,您會看到篩選條件區段。下列程序說明不同的使用案例:

  • 若要新增篩選條件,請在方塊中輸入中繼資料屬性、篩選運算子和值來建立篩選表達式。使用空格來分隔表達式的每個部分。按 Enter 以新增篩選條件。

    如需可接受的篩選運算子清單,請參閱上方的篩選運算子資料表。您也可以在中繼資料屬性之後新增空格時,查看篩選運算子的清單。

    注意

    您必須使用引號括住字串。

    例如,您可以新增下列篩選條件,從包含其值為 "entertainment"genre 中繼資料屬性的來源文件中篩選結果:genre = "entertainment"

    新增一個篩選條件。
  • 若要新增另一個篩選條件,請在方塊中輸入另一個篩選表達式,然後按 Enter。您最多可以在群組中新增 5 個篩選條件。

    新增另一個篩選條件。
  • 根據預設,查詢會傳回滿足您提供的所有篩選表達式的結果。若要傳回至少滿足其中一個篩選表達式的結果,請在任兩個篩選操作之間選擇下拉式功能表,然後選取

    變更篩選條件之間的邏輯操作。
  • 若要結合不同的邏輯運算子,請選取 + 新增群組以新增篩選條件群組。在新群組中輸入篩選表達式。您最多可以新增 5 個篩選條件群組。

    新增篩選條件群組以結合不同的邏輯運算子。
  • 若要變更所有篩選群組之間使用的邏輯運算子,請在任兩個篩選群組之間選擇下拉式功能表,然後選取

    變更篩選條件群組之間的邏輯操作。
  • 若要編輯篩選條件、選取篩選條件、修改篩選操作,然後選擇套用

    編輯篩選條件。
  • 若要移除篩選條件群組,請選擇群組旁的垃圾桶圖示 ( Trash can icon representing a delete action. )。若要移除篩選條件,請選擇篩選條件旁的刪除圖示 ( Close or cancel icon represented by an "X" symbol. )。

    刪除篩選條件或篩選條件群組。

下圖顯示範例篩選條件組態,除了類型為 "cooking""sports" 且作者以 "C" 開頭的文件之外,還傳回在 2018 後寫入且類型為 "entertainment" 的所有文件。

範例篩選條件組態。
API

當您提出 RetrieveRetrieveAndGenerate 請求時,請包含對應至 KnowledgeBaseRetrievalConfiguration 物件的 retrievalConfiguration 欄位。若要查看此欄位的位置,請參閱 API 參考中的 RetrieveRetrieveAndGenerate 請求內文。

下列 JSON 物件顯示設定不同使用案例的篩選條件時,KnowledgeBaseRetrievalConfiguration 物件中所需的最少欄位:

  1. 使用一個篩選運算子 (請參閱上方的篩選運算子資料表)。

    "retrievalConfiguration": { "vectorSearchConfiguration": { "filter": { "<filter-type>": { "key": "string", "value": "string" | number | boolean | ["string", "string", ...] } } } }
  2. 使用邏輯運算子 (請參閱上方的邏輯運算子資料表) 來結合最多 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", ...] }, ... ] } } }
  3. 使用邏輯運算子以將最多 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", ...] } ] } } }
  4. 將最多 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 個篩選條件類型的清單 結果至少滿足群組中其中一個篩選表達式

如需範例,請參閱傳送查詢並包含篩選條件 (擷取)傳送查詢並包含篩選條件 RetrieveAndGenerate)

您可以針對使用案例和負責任的 AI 原則的知識庫實作保護措施。您可以針對不同的使用案例量身制訂多項防護機制,並將其套用至多種請求與回應條件,藉此提供一致的使用者體驗,並對您的知識庫實施標準化的安全管控。您可以設定拒絕的主題,以禁止不適當的主題,並且設定內容篩選器來封鎖模型輸入和回應中的有害內容。如需詳細資訊,請參閱使用 Amazon Bedrock 防護機制偵測和篩選有害內容

注意

Claude 3 Sonnet 和 Haiku 目前不支援將防護機制與知識庫的內容關聯依據搭配使用。

如需一般提示工程指導方針,請參閱 提示工程概念

選擇您偏好方法的索引標籤,然後遵循下列步驟:

Console

請遵循 查詢知識庫並擷取資料 的主控台步驟。在測試視窗中,開啟產生回應。然後,在組態窗格中,展開防護機制區段。

  1. 防護機制區段中,選擇防護機制的名稱版本。如果您想要查看所選防護機制和版本的詳細資訊,請選擇檢視

    或者,您可以選擇防護機制連結來建立新的防護機制。

  2. 完成編輯後,請選擇 Save changes (儲存變更)。若要退出而不儲存,請選擇捨棄變更

API

當您提出 RetrieveAndGenerate 請求時,請在 generationConfiguration 中包含 guardrailConfiguration 欄位,以搭配請求使用您的防護機制。若要查看此欄位的位置,請參閱 API 參考中的 RetrieveAndGenerate 請求內文。

下列 JSON 物件顯示設定 guardrailConfiguration 時,GenerationConfiguration 中所需的最少欄位:

"generationConfiguration": { "guardrailConfiguration": { "guardrailId": "string", "guardrailVersion": "string" } }

指定所選防護機制的 guardrailIdguardrailVersion

您可以使用重新排名器模型來重新排名知識庫查詢的結果。請遵循 查詢知識庫並擷取資料 的主控台步驟。當您開啟組態窗格時,請展開重新排名區段。選取重新排名器模型、視需要更新許可,並修改任何其他選項。輸入提示,然後選取執行以在重新排名後測試結果。