Katecheo is a modular system for topical question answering built on Kubernetes. It is portable to any Kubernetes cluster (in the cloud or on-prem), and it allows developers to integrate state-of-the-art questions answering into their applications via its REST API.
Check out this screencast to see Katecheo in action!
Katecheo runs on Kubernetes to serve predictions. Our tests were done on the OpenShift platform. To run Katecheo, you will need:
- A Kubernetes cluster (see here for more information)
To match topical questions with appropriate knowledge base articles, Katecheo relies on one or more sets of knowledge base articles (one per topic of interest, e.g., one for sports or one for health). For each topic you want to enable in Katecheo, you will need a JSON file containing Knowledge base articles (structure as shown here)
-
Clone this repo.
-
Ensure that
kubectlconnects to your cluster -
Apply configuration information to the cluster
$ kubectl apply -f ./deploy/katecheo-config-map.yaml -
Create the resources for the deployment
$ kubectl apply -f ./deploy/katecheo-deployment.yaml -
Allow access to the deployment
$ kubectl apply -f ./deploy/katecheo-svc.yaml
Example request (Question):
$ curl -X POST -H 'Content-Type: application/json' -d '{"params": "Can acupuncture help me loose weight?"}' https://katecheo-route-katecheo.apps.ice-staging.cfdf.p2.openshiftapps.com/questiondetector
Example response (Answer):
{
"meta": {
"tags": {
"article_id": "http://answers.webmd.com/answers/5074670/does-acupuncture-aid-weight-loss",
"comprehension_error": "",
"comprehension_model": "BERT",
"kb_search_error": "",
"on_topic": true,
"question": true,
"question_detector_error": "",
"topic": "health"
}
},
"strData": "acupuncture works by targeting pressure points linked to appetite and hunger"
}
We've also created an example Streamlit app to demonstrate Katecheo. Details on running the application are included here.
In the future we intend to:
- Extend our knowledge base search methodology (e.g., to use bigrams and/or more sophisticated language models)
- Enable usage of a wider variety of pre-trained models (BERT, XLNet, etc.)
- Allow users to dynamically switch similarity thresholds and/or comprehension models
If you use Katecheo in your research, please cite Katecheo: A Portable and Modular System for Multi-Topic Question Answering:
@inproceedings{CV2019Katecheo,
title={Katecheo: A Portable and Modular System for Multi-Topic Question Answering},
author={Shirish Hirekodi and Seban Sunny and Leonard Topno and Alwin Daniel and Reuben Skewes and Stuart Cranney and Daniel Whitenack},
year={2019},
Eprint = {arXiv:1907.00854},
}
All material is licensed under the Apache License Version 2.0, January 2004.

