What is custom question answering?
Note
Azure OpenAI On Your Data utilizes large language models (LLMs) to produce similar results to Custom Question Answering. If you wish to connect an existing Custom Question Answering project to Azure OpenAI On Your Data, please check out our guide.
Custom question answering provides cloud-based Natural Language Processing (NLP) that allows you to create a natural conversational layer over your data. It is used to find appropriate answers from customer input or from a project.
Custom question answering is commonly used to build conversational client applications, which include social media applications, chat bots, and speech-enabled desktop applications. This offering includes features like enhanced relevance using a deep learning ranker, precise answers, and end-to-end region support.
Custom question answering comprises two capabilities:
- Custom question answering: Using this capability users can customize different aspects like edit question and answer pairs extracted from the content source, define synonyms and metadata, accept question suggestions etc.
- QnA Maker: This capability allows users to get a response by querying a text passage without having the need to manage knowledge bases.
This documentation contains the following article types:
- The quickstarts are step-by-step instructions that let you make calls to the service and get results in a short period of time.
- The how-to guides contain instructions for using the service in more specific or customized ways.
- The conceptual articles provide in-depth explanations of the service's functionality and features.
- Tutorials are longer guides that show you how to use the service as a component in broader business solutions.
When to use custom question answering
- When you have static information - Use custom question answering when you have static information in your project. This project is custom to your needs, which you've built with documents such as PDFs and URLs.
- When you want to provide the same answer to a request, question, or command - when different users submit the same question, the same answer is returned.
- When you want to filter static information based on meta-information - add metadata tags to provide additional filtering options relevant to your client application's users and the information. Common metadata information includes chit-chat, content type or format, content purpose, and content freshness.
- When you want to manage a bot conversation that includes static information - your project takes a user's conversational text or command and answers it. If the answer is part of a pre-determined conversation flow, represented in your project with multi-turn context, the bot can easily provide this flow.
What is a project?
Custom question answering imports your content into a project full of question and answer pairs. The import process extracts information about the relationship between the parts of your structured and semi-structured content to imply relationships between the question and answer pairs. You can edit these question and answer pairs or add new pairs.
The content of the question and answer pair includes:
- All the alternate forms of the question
- Metadata tags used to filter answer choices during the search
- Follow-up prompts to continue the search refinement
After you publish your project, a client application sends a user's question to your endpoint. Your custom question answering service processes the question and responds with the best answer.
Create a chat bot programmatically
Once a custom question answering project is published, a client application sends a question to your project endpoint and receives the results as a JSON response. A common client application for custom question answering is a chat bot.
Step | Action |
---|---|
1 | The client application sends the user's question (text in their own words), "How do I programmatically update my project?" to your project endpoint. |
2 | Custom question answering uses the trained project to provide the correct answer and any follow-up prompts that can be used to refine the search for the best answer. Custom question answering returns a JSON-formatted response. |
3 | The client application uses the JSON response to make decisions about how to continue the conversation. These decisions can include showing the top answer and presenting more choices to refine the search for the best answer. |
Build low code chat bots
The Language Studio portal provides the complete project authoring experience. You can import documents, in their current form, to your project. These documents (such as an FAQ, product manual, spreadsheet, or web page) are converted into question and answer pairs. Each pair is analyzed for follow-up prompts and connected to other pairs. The final markdown format supports rich presentation including images and links.
Once your project is edited, publish the project to a working Azure Web App bot without writing any code. Test your bot in the Azure portal or download it and continue development.
High quality responses with layered ranking
The custom question answering system uses a layered ranking approach. The data is stored in Azure search, which also serves as the first ranking layer. The top results from Azure search are then passed through custom question answering's NLP re-ranking model to produce the final results and confidence score.
Multi-turn conversations
Custom question answering provides multi-turn prompts and active learning to help you improve your basic question and answer pairs.
Multi-turn prompts give you the opportunity to connect question and answer pairs. This connection allows the client application to provide a top answer and provides more questions to refine the search for a final answer.
After the project receives questions from users at the published endpoint, custom question answering applies active learning to these real-world questions to suggest changes to your project to improve the quality.
Development lifecycle
Custom question answering provides authoring, training, and publishing along with collaboration permissions to integrate into the full development life cycle.
Complete a quickstart
We offer quickstarts in most popular programming languages, each designed to teach you basic design patterns, and have you running code in less than 10 minutes.
Next steps
Custom question answering provides everything you need to build, manage, and deploy your custom project.