다음을 통해 공유


FAQ 봇에 여러 범주 추가

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

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

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

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

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

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

  1. 원본 URL 추가를 선택하여 다음 FAQ URL을 원본>>으로 추가한 다음, 각 URL을 추가하면 모두 추가합니다.

    Surface 펜 FAQ
    Surface 이어버드 FAQ

  2. 이 프로젝트에는 서로 다른 두 제품에 대한 질문과 대답 쌍 집합이 있습니다. Microsoft의 목표는 사용자가 특정 제품에 대한 질문 및 답변 집합 내에서 관련 응답을 검색할 수 있도록 이러한 제품을 명확하게 구분하는 것입니다.

이 예제에서는 product를 키로 하고, surface_pen 또는 surface_earbuds 을(를) 값으로 하여 해당하는 곳에 메타데이터를 추가했습니다. 이 예제를 확장하여 여러 제품에 대한 데이터를 추출하고 각 제품에 대한 다른 값을 추가할 수 있습니다.

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

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

    API 호출에 대한 JSON 본문에서 메타데이터 제품의 값으로 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.cognitiveservices.azure.com/language/:query-knowledgebases?projectName=Test-Project-English&api-version=2021-10-01&deploymentName=production

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

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