Announcing General Availability of QnAMaker

QnAMaker is announcing general availability at //build/ 2018. QnAMaker is a Microsoft Cognitive Service that makes it easy to power a question-answer application or chatbot from semi-structured content like FAQs and product manuals. QnAMaker GA stack was built with scalability and data privacy in mind while keeping it still easy-to-use. In this post, we will break down the major differences in the GA stack of QnAMaker and the free preview version of QnAMaker.


  1. New architecture. The data and runtime components of the QnAMaker stack will be hosted in the user’s Azure subscription. Learn more here.
  2. No more throttling. Pay for services hosted, instead of transactions. See pricing information.
  3. Data privacy and compliance. The QnA data will be hosted within your Azure compliance boundary.
  4. Brand new portal experience to create and manage your knowledge base. Check out the new portal here.
  5. Scale as you go: Scale different part of the stack as per your needs. See upgrading your QnAMaker service.

Migration from preview to the GA stack

The preview stack will be sustained until 7th November 2018. All users of the preview stack are encouraged to migrate and test the new GA stack early, to avoid last minute surprises.

Detailed instruction for migration is here.

Feature updates

Full metadata support

Now manage your QnAs and metadata right from the portal. See more details here.

Chatlogs and analytics

You can get full access to your chatlogs since the data is stored in Azure Application Insights in your Azure subscription. To enable collection of telemetry and analytics, you need to enable Application Insights when you create the QnAMaker service. Learn how to create a QnAMaker service.

Once you enable App insights, all the chatlog data is logged in it and you can then run queries on it to access traffic, latency and chatlog data.

Learn more about QnAMaker analytics here.

Sharing a knowledge base

To share a particular knowledge base in the new stack, simply share the Azure resource group with users using Azure’s RBAC. Currently, all roles are administrative in QnAMaker.

Learn more about sharing here.

Confidence scores

The GA stack has a new and improved ranking algorithm, so it’s likely that you will see some variations in the confidence score of the response compared to the preview stack.

Learn more about confidence score in the new stack here.

Language support

QnAMaker GA will have extended language support, taking advantage of Azure Search language analyzers. For a full list of supported languages, read here.

Knowledgebase endpoint

After publishing your knowledge base, there are minor differences in the endpoint created, since the endpoint is now hosted in the customer’s azure subscription. This will require a code change in your Bot service code, where you are using this endpoint.

Management APIs

There is a new API release for the GA stack. The API 4.0 is to handle management of the GA QnAMaker service

The preview API version continues to be 2.0.


To accommodate the changes in the GA stack (primarily the introduction of the endpoint hostname), the QnAMakerDialog has been updated to accept an additional parameter. There is no change for the users of the preview stack.


Microsoft.Bot.Builder.CognitiveServices v1.1.3

Use the below code example to initialize a QnAMakerDialog for the GA QnAMaker service.

public class BasicQnAMakerDialog : QnAMakerDialog
    public BasicQnAMakerDialog() : base(new QnAMakerService(new QnAMakerAttribute("<endpoint authkey>", "<knowledge base id>", "<Default message>", <confidence threshold>, <number of results>, "<endpoint hostname>")))
        { }


botbuilder-cognitiveservices v1.2.0

Use the below code example to initialize a QnAMakerDialog for the GA QnAMaker service.

var recognizer = new cognitiveservices.QnAMakerRecognizer({
    knowledgeBaseId: 'set your kbid here',
    authKey: 'set your authorization key here',
    endpointHostName: 'set your endpoint host name'});

var basicQnAMakerDialog = new cognitiveservices.QnAMakerDialog({
    recognizers: [recognizer],
    defaultMessage: 'No match! Try changing the query terms!',
    qnaThreshold: 0.3