

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 인덱스에 자주 묻는 질문(FAQ) 추가
<a name="in-creating-faq"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

콘솔 또는 [CreateFaq](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateFaq.html) API를 사용하여 자주 묻는 질문(FAQ)을 인덱스에 직접 추가할 수 있습니다. FAQ를 인덱스에 추가하는 것은 비동기식 작업입니다. Amazon Simple Storage Service 버킷에 저장하는 파일에 FAQ의 데이터를 넣습니다. CSV 또는 JSON 파일을 FAQ 입력으로 사용할 수 있습니다.
+ 기본 CSV - 각 행에 질문, 답변 및 선택적 소스 URI가 포함된 CSV 파일입니다.
+ 사용자 지정 CSV - FAQ 응답을 패싯, 표시 또는 정렬하는 데 사용할 수 있는 사용자 지정 필드/속성에 대한 질문, 답변 및 헤더가 포함된 CSV 파일입니다. 액세스 제어 필드를 정의하여 FAQ 응답을 볼 수 있는 특정 사용자 및 그룹으로 FAQ 응답을 제한할 수도 있습니다.
+ JSON - 질문, 답변, 사용자 지정 필드/속성을 포함하는 JSON 파일로, FAQ 응답을 패싯, 표시 또는 정렬하는 데 사용할 수 있습니다. 액세스 제어 필드를 정의하여 FAQ 응답을 볼 수 있는 특정 사용자 및 그룹으로 FAQ 응답을 제한할 수도 있습니다.

예를 들어, 다음은 미국 워싱턴주 스포캔과 미국 미주리주 마운틴뷰에 있는 무료 진료소에 대한 질문에 대한 답변을 제공하는 기본 CSV 파일입니다.

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

**참고**  
FAQ 파일은 UTF-8 인코딩 파일이어야 합니다.

**Topics**
+ [FAQ 파일의 인덱스 필드 생성](#in-custom-fields-faq)
+ [기본 CSV 파일](#faq-basic-csv)
+ [사용자 지정 CSV 파일](#faq-custom-csv)
+ [JSON 파일](#faq-custom-json)
+ [FAQ 파일 사용](#using-faq-file)
+ [영어 이외의 언어로 된 FAQ 파일](#faq-languages)

## FAQ 파일의 인덱스 필드 생성
<a name="in-custom-fields-faq"></a>

**참고**  
기능 지원은 인덱스 유형 및 사용 중인 검색 API에 따라 다릅니다. 사용 중인 인덱스 유형 및 검색 API에 대해 이 기능이 지원되는지 확인하려면 [인덱스 유형](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html)을 참조하세요.

[사용자 지정 CSV](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html#faq-custom-csv) 또는 [JSON](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html#faq-custom-json) 파일을 입력에 사용하는 경우 FAQ 질문에 대한 사용자 지정 필드를 선언할 수 있습니다. 예를 들어 각 FAQ 질문에 비즈니스 부서를 할당하는 사용자 지정 필드를 만들 수 있습니다. 예를 들어 FAQ가 응답으로 반환되면 부서를 패싯으로 사용하여 검색 범위를 “HR” 또는 “재무”로만 좁힐 수 있습니다.

사용자 지정 필드는 인덱스 필드에 매핑되어야 합니다. 콘솔에서 **패싯 정의** 페이지를 사용하여 인덱스 필드를 만들 수 있습니다. API를 사용하는 경우 먼저 [UpdateIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateIndex.html) API를 사용하여 인덱스 필드를 생성해야 합니다.

FAQ 파일의 필드/속성 유형은 관련 인덱스 필드의 유형과 일치해야 합니다. 예를 들어, “부서” 필드는 `STRING_LIST` 유형 필드입니다. 따라서 FAQ 파일에 부서 필드 값을 문자열 목록으로 제공해야 합니다. 콘솔의 **패싯 정의** 페이지를 사용하거나 [DescribeIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeIndex.html) API를 사용하여 인덱스 필드의 유형을 확인할 수 있습니다.

사용자 지정 속성에 매핑되는 인덱스 필드를 만들 때 해당 필드를 표시 가능, 패싯 가능 또는 정렬 가능으로 표시할 수 있습니다. 사용자 지정 속성을 검색 가능하게 만들 수는 없습니다.

사용자 지정 속성 외에도 사용자 지정 CSV 또는 JSON 파일에서 Amazon Kendra 예약된 필드 또는 공통 필드를 사용할 수 있습니다. 자세한 내용은 [문서 속성 또는 필드](https://docs.aws.amazon.com/kendra/latest/dg/hiw-document-attributes.html)를 참조하세요.

## 기본 CSV 파일
<a name="faq-basic-csv"></a>

FAQ에 간단한 구조를 사용하려는 경우 기본 CSV 파일을 사용하세요. 기본 CSV 파일의 각 행에는 질문, 답변, 추가 정보가 포함된 문서를 가리키는 선택적 소스 URI 등 2개 또는 3개의 필드가 있습니다.

파일의 내용은 [RFC 4180 CSV(쉼표로 구분된 값) 파일의 공통 형식 및 MIME 유형](https://tools.ietf.org/html/rfc4180)을 따라야 합니다.

다음은 기본 CSV 형식의 FAQ 파일입니다.

```
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 파일
<a name="faq-custom-csv"></a>

FAQ 질문에 사용자 지정 필드/속성을 추가하려면 사용자 지정 CSV 파일을 사용하세요. 사용자 지정 CSV 파일의 경우 CSV 파일의 헤더 행을 사용하여 추가 속성을 정의합니다.

CSV 파일에는 다음 두 개의 필수 필드가 포함되어야 합니다.
+ `_question` - 자주 묻는 질문
+ `_answer` - 자주 묻는 질문에 대한 답변

사용자 지정 CSV 파일에는 Amazon Kendra 예약 필드(`_faq_id`, `_data_source_id`, 및 제외`_document_title``_file_type`)와 사용자 지정 필드가 모두 포함될 수 있습니다.

 다음은 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
```

사용자 지정 파일의 내용은 [RFC 4180 CSV(쉼표로 구분된 값) 파일의 공통 형식 및 MIME 유형](https://tools.ietf.org/html/rfc4180)을 따라야 합니다.

다음은 사용자 지정 필드 유형 목록입니다.
+ 날짜 - ISO 8601로 인코딩된 날짜와 시간 값입니다.

  예를 들어, 2012-03-25T12:30:10\$101:00은 중부 유럽 시간대로 2012년 3월 25일 오후 12시 30분 10초에 대한 ISO 8601 날짜/시간 형식입니다.
+ Long - 숫자(예: `1234`).
+ 문자열 - 문자열 값. 문자열에 쉼표가 포함된 경우 전체 값을 큰따옴표 (“) 로 묶으세요(예: `"custom attribute, and more"`).
+ 문자열 목록 - 문자열 값의 목록입니다. 따옴표(“)로 묶인 쉼표로 구분된 목록으로 값을 나열합니다(예: `"item1, item2, item3"`). 목록에 항목이 하나뿐인 경우 따옴표를 생략할 수 있습니다(예: `item1`).

사용자 지정 CSV 파일에는 사용자 액세스 제어 필드가 포함될 수 있습니다. 이 필드를 사용하여 FAQ에 대한 액세스를 특정 사용자 및 그룹으로 제한할 수 있습니다. 사용자 컨텍스트를 기준으로 필터링하려면 사용자가 쿼리에 사용자 및 그룹 정보를 제공해야 합니다. 그렇지 않으면 모든 관련 FAQ가 반환됩니다. 자세한 내용은 [사용자 컨텍스트 필터링](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html)을 참조하세요.

다음은 FAQ의 사용자 컨텍스트 필터 목록입니다.
+ `_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 파일
<a name="faq-custom-json"></a>

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"
               }
            ]
        }
    ]
}
```

다음은 사용자 지정 필드 유형 목록입니다.
+ 날짜 - ISO 8601로 인코딩된 날짜와 시간 값이 있는 JSON 문자열 값입니다. 예를 들어, 2012-03-25T12:30:10\$101:00은 중부 유럽 시간대로 2012년 3월 25일 오후 12시 30분 10초에 대한 ISO 8601 날짜/시간 형식입니다.
+ Long - JSON 숫자 값(예: `1234`)입니다.
+ 문자열 - JSON 문자열 값(예: `"custom attribute"`)입니다.
+ 문자열 목록 - 문자열 값의 JSON 배열(예: `["item1,item2,item3"]`)입니다.

JSON 파일에는 사용자 액세스 제어 필드가 포함될 수 있습니다. 이 필드를 사용하여 FAQ에 대한 액세스를 특정 사용자 및 그룹으로 제한할 수 있습니다. 사용자 컨텍스트를 기준으로 필터링하려면 사용자가 쿼리에 사용자 및 그룹 정보를 제공해야 합니다. 그렇지 않으면 모든 관련 FAQ가 반환됩니다. 자세한 내용은 [사용자 컨텍스트 필터링](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html)을 참조하세요.

사용자나 그룹을 허용 목록 또는 거부 목록에 포함할 수 있지만, 동일한 사용자를 둘 모두에 포함할 수는 없습니다(개인은 허용되지만 그룹은 거부되는 경우). 둘 모두에 사용자나 그룹을 포함하면 오류가 발생합니다.

다음은 JSON FAQ에 대한 사용자 액세스 제어를 포함하는 예입니다.

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

## FAQ 파일 사용
<a name="using-faq-file"></a>

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 파일
<a name="faq-languages"></a>

지원되는 언어로 FAQ를 인덱싱할 수 있습니다. 언어를 지정하지 않으면 기본적으로 영어로 FAQs를 Amazon Kendra 인덱싱합니다. [CreateFaq](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateFaq.html) 작업을 호출할 때 언어 코드를 지정하거나 FAQ 메타데이터에 FAQ의 언어 코드를 필드로 포함할 수 있습니다. 메타데이터 필드에 지정된 FAQ의 메타데이터에 언어 코드가 없는 경우 `CreateFAQ` 작업을 호출할 때 지정된 언어 코드를 사용하여 FAQ를 인덱싱합니다. 콘솔에서 지원되는 언어로 FAQ 문서를 인덱싱하려면 **FAQ**로 이동하여 **FAQ** 추가를 선택합니다. **언어** 드롭다운에서 언어를 선택합니다.