QnA Maker


QnA Maker

우선 QnA Maker에 대한 설명이 나와있는 Microsoft 공식 문서이다.

https://docs.microsoft.com/ko-kr/azure/cognitive-services/QnAMaker/

QnA Maker 서비스란?

  • QnA Maker는 데이터를 통해 자연스러운 대화형 계층을 쉽게 만드는 클라우드 기반 NLP(자연어 처리) 서비스이다. 사용자 지정 KB(기술 자료) 정보에서 지정된 자연어 입력에 가장 적합한 대답을 찾는 데 사용할 수 있다.
  • QnA Maker용 클라이언트 애플리케이션은 사용자와 자연어로 통신하여 질문에 대답하는 대화형 애플리케이션. 클라이언트 애플리케이션의 예로는 소셜 미디어 앱, 챗봇 및 음성 지원 데스크톱 애플리케이션이 있다.

QnA Maker는 언제 사용하는가?

  1. 정적 정보가 있는 경우 : 정적 정보가 대답의 KB에 있는 경우. KB는 사용자의 요구에 맞게 사용자 지정되며, PDF, URL 과 같은 문서를 사용하여 작성된다. 기술자료에 추가할 수 있는 문서 내용 유형이다. url, pdf/doc, excel, txt/tsv 형식을 QnA Maker에서 지원한다.
  2. 요청, 질문, 명령에 동일한 대답을 제공하려는 경우 : 사용자와 상관없이 같은 질문에 같은 대답을 한다.
  3. 메타 정보에 따라 정적 정보를 필터링 하려는 경우 : 메타데이터 태그를 추가해서 사용자 및 정보와 관련된 추가 필터링 옵션을 제공한다. 일반 메타 데이터 정보에는 잡담(기술 자료에 잡담 추가), 콘텐츠 형식, 등이 포함된다. GenerateAnswer API 및 메타 데이터를 사용하여 답변하기 이 GenerateAnswer API는 사용자의 질문에 대한 예측 답변을 얻기 위해 사용한다.
  4. 정적 정보가 포함된 봇 대화를 관리하려는 경우 : KB에서 사용자의 대화형 텍스트 또는 명령을 사용해서 대답한다. 추가 작업 프롬프트를 사용하여 여러 대화 설정 만들기

채팅 봇에서 QnA Maker 기술 자료 사용

QnA Maker KB가 게시되면 클라이언트 애플리케이션에서 질문을 KB endpoint에 보내고, 결과를 JSON 응답으로 받는다.

bot-chat-with-qnamaker

위와 같이 Chatbot에서 request를 보내면 json 응답을 받게 된다. 사용자가 “question”을 했고, 대응되는 “answer”를 전달하는 것으로 보인다.

사이트에서는 작업 순서를 다음과 같이 설명하고 있다.

  1. 클라이언트 애플리케이션에서 사용자 고유 단어의 텍스트인 사용자의 질문(“내 기술 자료를 프로그래밍 방식으로 업데이트하려면 어떻게 해야 하나요?”)을 기술 자료 엔드포인트에 보냅니다.
  2. QnA Maker에서 학습된 기술 자료를 사용하여 정확한 대답과 최상의 대답 검색을 구체화하는 데 사용할 수 있는 추가 작업 프롬프트를 제공합니다. QnA Maker에서 JSON 형식의 응답을 반환합니다.
  3. 클라이언트 애플리케이션에서 JSON 응답을 사용하여 대화를 계속하는 방법을 결정합니다. 이러한 결정에는 최상의 대답을 표시하고 최상의 대답 검색을 구체화하기 위한 더 많은 선택 항목을 제시하는 것이 포함될 수 있습니다.

기술 자료란?

QnA Maker는 질문-대답 쌍의 기술 자료로 콘텐츠를 가져온다. 데이터 원본에서 가져오기

기술자료는 공용 Url 및 파일에서 가져온 질문과 대답 쌍으로 구성된다.

여기에는

  • Question (질문)
  • Answer (대답)
  • Metadata tags(검색 중에 답변 선택을 필터링 하는데 사용되는 메타데이터 태그)

기술 자료가 게시되면 클라이언트 애플리케이션에서 사용자의 질문을 엔드포인트에 보낸다. 이를 QnA Maker 서비스가 처리하여 대답하는 것이다.

검색 품질 및 순위 지정을 통해 최상의 대답 제공

QnA Maker 시스템은 계층화된 순위 지정 방법이다. 데이터는 첫 번째 순위 지정 계층으로도 사용되는 Azure Search에 저장된다. 다음, 이 Azure Search의 상위 결과는 QnA Maker의 NLP 순위 다시 지정 모델을 통과하여 최종 결과와 신뢰도 점수를 생성한다.

라고 되어있는데 무슨 말인지 이해가 잘 가지 않는다.

시작하는 방법

  1. Azure Portal에서 QnA Maker 리소스를 만든다.
  2. QnA Maker 포털에서 기술 자료를 만든다. 파일, Url을 추가하여 기술 자료를 만든다.
  3. cURL 이나 Postman을 이용해서 기술자료를 게시하고 사용자 지정 엔드포인트에서 테스트한다.
  4. 클라이언트 애플리케이션에서 기술 자료의 엔드포인트를 프로그래밍 방식으로 호출한다. 이러면 위에 있던 그림처럼 클라이언트 애플리케이션이 JSON 응답을 처리해서 적절한 답변을 표시한다.

정리해서, QnA Maker는 KB를 이용해서 사용자에게 가장 적절한 대답을 찾아 대답해주기 위해 사용하는 기술인 것 같다.