將常見問答集 (FAQs) 新增至索引 - Amazon Kendra

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

將常見問答集 (FAQs) 新增至索引

注意

功能支援會因索引類型和正在使用的搜尋 API 而有所不同。若要查看索引類型是否支援此功能,並搜尋您正在使用的 API,請參閱索引類型

您可以使用主控台或 FAQs 直接將常見問答集 CreateFaq(Word) 新增至您的索引。 API將 FAQs 新增至索引是非同步操作。您可以將 FAQ 的資料放入存放在 Amazon Simple Storage Service 儲存貯體的檔案中。您可以使用 CSV 或 JSON 檔案做為 FAQ 的輸入:

  • 基本CSV - 每列都包含問題、答案和選用來源URI的字詞CSV檔案。

  • 自訂 CSV - 包含自訂欄位/屬性的問題、答案和標頭的 CSV 檔案,可用於面向、顯示或排序 FAQ 回應。您也可以定義存取控制欄位,將 FAQ 回應限制為允許查看 FAQ 回應的特定使用者和群組。

  • JSON - 包含問題、答案和自訂欄位/屬性的 JSON 檔案,可用於面向、顯示或排序 FAQ 回應。您也可以定義存取控制欄位,將 FAQ 回應限制為允許查看 FAQ 回應的特定使用者和群組。

例如,以下是基本的 CSV 檔案,提供對 Spokane、Washington USA 和 Mountain View、Missouri、USA 中免費診所問題的解答。

How many free clinics are in Spokane WA?, 13 How many free clinics are there in Mountain View Missouri?, 7
注意

FAQ 檔案必須是 UTF-8 編碼的檔案。

建立 FAQ 檔案的索引欄位

注意

功能支援會因索引類型和正在使用的搜尋 API 而有所不同。若要查看索引類型是否支援此功能並搜尋您正在使用的 API,請參閱索引類型

當您使用自訂 CSVJSON 檔案進行輸入時,您可以為 FAQ 問題宣告自訂欄位。例如,您可以建立自訂欄位,將每個 FAQ 問題指派給業務單位。當回應中傳回 FAQ 時,您可以使用 部門做為構面,將搜尋縮小為僅「HR」或「財務」。

自訂欄位必須對應至索引欄位。在 主控台中,您可以使用面向定義頁面來建立索引欄位。使用 API 時,您必須先使用 UpdateIndex 建立索引欄位API。

FAQ 檔案中的欄位/屬性類型必須符合相關聯的索引欄位類型。例如,「部門」欄位是STRING_LIST類型欄位。因此,您必須提供部門欄位的值作為 FAQ 檔案中的字串清單。您可以使用主控台中的面向定義頁面或使用 DescribeIndex API檢查索引欄位的類型。

當您建立映射到自訂屬性的索引欄位時,您可以標記它可顯示、面向或可排序。您無法將自訂屬性設為可搜尋。

除了自訂屬性之外,您也可以使用自訂 Amazon Kendra CSV 或 JSON 檔案中的預留或常用欄位。如需詳細資訊,請參閱文件屬性或欄位

基本 CSV 檔案

當您想要為 CSV 使用簡單的結構時,請使用基本的 FAQs 檔案。在基本 CSV 檔案中,每一列都有兩個或三個欄位:問題、答案和選用來源 URI,指向具有更多資訊的文件。

檔案的內容必須遵循逗號分隔值 (Word) 檔案的 RFC 4180 通用格式和 MIMECSV 類型

以下是基本 FAQ 格式的 CSV 檔案。

How many free clinics are in Spokane WA?, 13, https://s3.region.company.com/bucket-name/directory/faq.csv How many free clinics are there in Mountain View Missouri?, 7, https://s3.region.company.com/bucket-name/directory/faq.csv

自訂 CSV 檔案

當您想要將自訂欄位/屬性新增至 CSV 問題時,請使用自訂 FAQ 檔案。對於自訂 CSV 檔案,您可以使用 CSV 檔案中的標頭列來定義其他屬性。

CSV 檔案必須包含下列兩個必要欄位:

  • _question- 常見問題

  • _answer- 常見問題的答案

您的 檔案可以同時包含 Amazon Kendra 預留欄位和自訂欄位。以下是自訂 CSV 檔案的範例。

_question,_answer,_last_updated_at,custom_string How many free clinics are in Spokane WA?, 13, 2012-03-25T12:30:10+01:00, Note: Some free clinics require you to meet certain criteria in order to use their services How many free clinics are there in Mountain View Missouri?, 7, 2012-03-25T12:30:10+01:00, Note: Some free clinics require you to meet certain criteria in order to use their services

自訂檔案的內容必須遵循逗號分隔值 (Word) 檔案的 RFC 4180 常用格式和 MIMECSV 類型

下列列出自訂欄位的類型:

  • 日期 - ISO 8601 編碼的日期和時間值。

    例如,2012-03-25T12 日下午 12:30 (加上 10 秒),歐洲中部時區的 2012 年 3 月 25 日 ISO 8601 日期時間格式為 2012 年 3 月 25 日。

  • 長 - 數字,例如 1234

  • 字串 - 字串值。如果您的字串包含逗號,請以雙引號 (") 括住整個值 (例如 "custom attribute, and more")。

  • 字串清單 - 字串值的清單。列出逗號分隔清單中以引號 (") 括住的值 (例如 "item1, item2, item3")。如果清單只包含單一項目,您可以省略引號 (例如 item1)。

自訂 CSV 檔案可以包含使用者存取控制欄位。您可以使用這些欄位,將 FAQ 的存取限制為特定使用者和群組。若要篩選使用者內容,使用者必須在查詢中提供使用者和群組資訊。否則,會傳回所有相關 FAQs。如需詳細資訊,請參閱使用者內容篩選

以下列出 FAQs 的使用者內容篩選條件:

  • _acl_user_allow—允許清單中的使用者可以在查詢回應中看到 FAQ。FAQ 不會傳回給其他使用者。

  • _acl_user_deny- 拒絕清單中的使用者無法在查詢回應中看到 FAQ。當 FAQ 與查詢相關時,會傳回給所有其他使用者。

  • _acl_group_allow- 作為允許群組成員的使用者可以在查詢回應中看到 FAQ。此 FAQ 不會傳回給屬於另一個群組的使用者。

  • _acl_group_deny- 拒絕群組成員的使用者在查詢回應中看不到 FAQ。當 FAQ 與查詢相關時,會傳回給其他群組。

在以引號括住的逗號分隔清單中提供允許和拒絕清單的值 (例如,"user1,user2,user3")。您可以在允許清單或拒絕清單中包含使用者或群組,但不能同時包含個別允許相同使用者,但也拒絕群組的使用者。如果您在兩者中都包含使用者或群組,則會收到錯誤。

以下是具有使用者內容資訊的自訂 CSV 檔案範例。

_question, _answer, _acl_user_allow, _acl_user_deny, _acl_group_allow, _acl_group_deny How many free clinics are in Spokane WA?, 13, "userID6201,userID7552", "userID1001,userID2020", groupBasicPlusRate, groupPremiumRate

JSON 檔案

您可以使用 JSON 檔案來提供索引的問題、答案和欄位。您可以將任何 Amazon Kendra 預留欄位或自訂欄位新增至 FAQ。

以下是 JSON 檔案的結構描述。

{ "SchemaVersion": 1, "FaqDocuments": [ { "Question": string, "Answer": string, "Attributes": { string: object additional attributes }, "AccessControlList": [ { "Name": string, "Type": enum( "GROUP" | "USER" ), "Access": enum( "ALLOW" | "DENY" ) }, additional user context ] }, additional FAQ documents ] }

下列範例 JSON 檔案顯示兩個 FAQ 文件。其中一個文件只有必要的問題和答案。其他文件也包含其他欄位和使用者內容或存取控制資訊。

{ "SchemaVersion": 1, "FaqDocuments": [ { "Question": "How many free clinics are in Spokane WA?", "Answer": "13" }, { "Question": "How many free clinics are there in Mountain View Missouri?", "Answer": "7", "Attributes": { "_source_uri": "https://s3.region.company.com/bucket-name/directory/faq.csv", "_category": "Charitable Clinics" }, "AccessControlList": [ { "Name": "user@amazon.com", "Type": "USER", "Access": "ALLOW" }, { "Name": "Admin", "Type": "GROUP", "Access": "ALLOW" } ] } ] }

下列列出自訂欄位的類型:

  • Date - 具有 JSON 8601 編碼日期和時間值的 ISO 字串值。例如,2012-03-25T12 日下午 12:30 (加上 10 秒),歐洲中部時區的 2012 年 3 月 25 日 ISO 8601 日期時間格式為 2012 年 3 月 25 日。

  • 長 - JSON數字值,例如 1234

  • String—JSON 字串值 (例如 "custom attribute")。

  • 字串清單 - 字串值的 JSON 陣列 (例如,["item1,item2,item3"])。

JSON 檔案可以包含使用者存取控制欄位。您可以使用這些欄位,將 FAQ 的存取限制為特定使用者和群組。若要篩選使用者內容,使用者必須在查詢中提供使用者和群組資訊。否則,會傳回所有相關 FAQs。如需詳細資訊,請參閱使用者內容篩選

您可以在允許清單或拒絕清單中包含使用者或群組,但不能同時包含個別允許相同使用者,但也拒絕群組的使用者。如果您在兩者中都包含使用者或群組,則會收到錯誤。

以下是包含 JSON 使用者存取控制的範例FAQ。

"AccessControlList": [ { "Name": "group or user name", "Type": "GROUP | USER", "Access": "ALLOW | DENY" }, additional user context ]

使用您的 FAQ 檔案

將 FAQ 輸入檔案存放在 S3 儲存貯體之後,您可以使用 主控台或 CreateFaq API 將問題和答案放入您的索引。如果您想要更新 FAQ,請刪除該 FAQ 並再次建立。您可以使用 DeleteFaq API 刪除 FAQ。

您必須提供可存取包含來源檔案之 S3 儲存貯體 IAM 的角色。您可以在 主控台或 RoleArn 參數中指定角色。以下是將 FAQ 檔案新增至索引的範例。

Python
import boto3 kendra = boto3.client("kendra") # Provide the index ID index_id = "index-id" # Provide the IAM role ARN required to index documents in an S3 bucket role_arn = "arn:aws:iam::${accountId}:role/${roleName}" # Provide the S3 bucket path information to the FAQ file faq_path = { "Bucket": "bucket-name", "Key": "FreeClinicsUSA.csv" } response = kendra.create_faq( S3Path = faq_path, Name = "FreeClinicsUSA", IndexId = index_id, RoleArn = role_arn ) print(response)
Java
package com.amazonaws.kendra; import software.amazon.awssdk.services.kendra.KendraClient; import software.amazon.awssdk.services.kendra.model.CreateFaqRequest; import software.amazon.awssdk.services.kendra.model.CreateFaqResponse; import software.amazon.awssdk.services.kendra.model.S3Path; public class AddFaqExample { public static void main(String[] args) { KendraClient kendra = KendraClient.builder().build(); String indexId = "yourIndexId"; String roleArn = "your role for accessing S3 files"; CreateFaqRequest createFaqRequest = CreateFaqRequest .builder() .indexId(indexId) .name("FreeClinicsUSA") .roleArn(roleArn) .s3Path( S3Path .builder() .bucket("amzn-s3-demo-bucket") .key("FreeClinicsUSA.csv") .build()) .build(); CreateFaqResponse response = kendra.createFaq(createFaqRequest); System.out.println(String.format("The result of creating FAQ: %s", response)); } }

英文以外語言的 FAQ 檔案

您可以為支援語言的 FAQ 編製索引。如果您未指定語言,則預設會以英文為 FAQs 編製 Amazon Kendra 索引。您可以在呼叫 CreateFaq 操作時指定語言代碼,也可以在 FAQ 中繼資料中包含 FAQ 的語言代碼做為 欄位。如果 FAQ 在中繼資料欄位中指定的中繼資料中沒有語言代碼,則該 FAQ 會使用您呼叫 CreateFAQ操作時指定的語言代碼編製索引。若要在 主控台中以支援的語言編製 FAQ 文件索引,請前往 FAQs 並選取新增 FAQ。您可以從下拉式清單中選擇語言