다음을 통해 공유


FAQ 봇에 여러 범주 추가

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • 프로젝트를 만들고 질문 답변 쌍을 메타데이터가 있는 고유한 범주로 태그 지정
  • 각 도메인에 대해 별도의 프로젝트 만들기
  • 각 도메인에 대해 별도의 언어 리소스 만들기

FAQ 봇을 빌드하는 경우 여러 도메인에서 쿼리를 처리해야 하는 사용 사례가 발생할 수 있습니다. Microsoft의 마케팅 팀이 여러 Surface 제품에 대한 일반적인 사용자 쿼리에 답변하는 고객 지원 봇을 빌드한다고 가정합니다. 여기서는 간단하게 하기 위해 두 개의 FAQ URL인 Surface 펜Surface Earbuds를 사용하여 프로젝트를 만듭니다.

도메인별 메타데이터로 프로젝트 만들기

콘텐츠 작성자는 문서를 사용하여 질문 답변 쌍을 추출하거나 프로젝트에 사용자 지정 질문 답변 쌍을 추가할 수 있습니다. 이러한 질문과 답변을 특정 도메인 또는 범주로 그룹화하기 위해 메타데이터를 추가할 수 있습니다.

Surface 제품의 경우 다음 단계를 수행하여 두 제품 유형에 대한 쿼리에 답변하는 봇을 만들 수 있습니다.

  1. 아래의 각 URL을 추가했으면 원본 추가>URL> 모두 추가를 차례로 선택하여 다음 FAQ URL을 원본으로 추가합니다.

    Surface 펜 FAQ
    Surface 이어버드 FAQ

    URL 추가 UI 스크린샷.

  2. 이 프로젝트에는 두 제품에 대한 질문 답변 쌍이 있으며 주어진 제품에 대한 질문과 답변 중에서 응답을 검색할 수 있도록 두 제품을 구별하려고 합니다. 이를 위해 질문 답변 쌍에 대한 메타데이터 필드를 업데이트할 수 있습니다.

    아래 예에서 볼 수 있듯이 키는 product이고, 값은 각각 surface_pen 또는 surface_earbuds인 메타데이터를 추가했습니다. 이 예제를 확장하여 여러 제품에 대한 데이터를 추출하고 각 제품에 대한 다른 값을 추가할 수 있습니다.

    메타데이터 예시 스크린샷.

  3. 이제 시스템이 특정 제품에서 응답을 검색하도록 제한하려면 사용자 지정 질문 답변 REST API에서 해당 제품을 필터로 전달해야 합니다.

    REST API 예측 URL은 프로젝트 배포 창에서 검색할 수 있습니다.

    예측 URL이 표시된 프로젝트 배포 페이지의 스크린샷.

    API 호출의 JSON 본문에서 메타데이터 product에 대한 값으로 surface_pen을 전달했습니다. 그러면 시스템은 QnA 쌍 중에서 동일한 메타데이터가 있는 답변만 찾습니다.

        {
          "question": "What is the price?",
          "top": 3
        },
        "answerSpanRequest": {
          "enable": true,
          "confidenceScoreThreshold": 0.3,
          "topAnswersWithSpan": 1
        },
        "filters": {
          "metadataFilter": {
            "metadata": [
              {
                "key": "product",
                "value": "surface_pen"
              }
            ]
          }
        }
    

    사용자 입력을 기반으로 메타데이터 값을 확보할 수 있는 방법은 다음과 같습니다.

    • 봇 클라이언트를 통해 사용자로부터 도메인을 입력으로 명시적으로 받습니다. 예를 들어 아래와 같이 대화가 시작되면 사용자로부터 제품 범주를 입력으로 받을 수 있습니다.

      메타데이터 입력 받기

    • 봇 컨텍스트를 기반으로 도메인을 암시적으로 식별합니다. 예를 들어 이전 질문이 특정 Surface 제품에 관한 것이면 클라이언트에 의해 컨텍스트로 저장될 수 있습니다. 사용자가 다음 쿼리에서 제품을 명시하지 않으면 봇 컨텍스트를 메타데이터로 GenerateAnswer API에 전달할 수 있습니다.

      컨텍스트 전달

    • 사용자 쿼리에서 엔터티를 추출하여 메타데이터 필터에 사용할 도메인을 식별합니다. 엔터티 추출을 위해 NER(명명된 엔터티 인식)대화형 Language Understanding과 같은 다른 Azure AI 서비스를 사용할 수 있습니다.

      쿼리에서 메타데이터 추출

프로젝트는 얼마나 커질 수 있나요?

단일 프로젝트에 최대 50000개의 질문 답변 쌍을 추가할 수 있습니다. 데이터가 50,000개의 질문 답변 쌍을 초과하는 경우 프로젝트 분할을 고려해야 합니다.

각 도메인에 대해 별도의 프로젝트 만들기

또한 각 도메인에 대해 별도의 프로젝트를 만들고 프로젝트를 별도로 유지할 수 있습니다. 모든 API는 사용자가 프로젝트를 업데이트하거나 사용자 질문에 대한 답변을 가져오기 위해 프로젝트 이름을 전달해야 합니다.

서비스에서 사용자 질문을 받으면 관련 프로젝트에서 응답을 가져오기 위해 표시된 REST API 엔드포인트에서 projectName을 전달해야 합니다. 예측 URL 가져오기 아래의 프로젝트 배포 페이지에서 URL을 찾을 수 있습니다.

https://southcentralus.api.cognitive.microsoft.com/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production

각 도메인에 대해 별도의 언어 리소스 만들기

Microsoft의 마케팅 팀이 Surface 및 Xbox 제품에 대한 사용자 쿼리에 답변하는 고객 지원 봇을 빌드한다고 가정합니다. Surface 및 Xbox의 프로젝트에 액세스하는 별개의 팀을 할당하려고 합니다. 이런 경우 하나는 Surface용, 다른 하나는 Xbox용으로 두 개의 사용자 지정 질문 답변 리소스를 만드는 것이 좋습니다. 하지만 동일한 리소스에 액세스하는 사용자에 대해 별개의 역할을 정의할 수 있습니다.