How to manage multiple domains in RASA?

Hello, for domain I do not mean the domain.yml file, but the general concept of a group of intents that belong to the same semantic domain/topic.

Following the above premise, suppose your conversational application has to manage 10 different domains, each one with a variable set of intents (say 20 intents for each domain).

How can I manage this with RASA?

As far as I know I can not manage multiple domain in RASA.
A possible solution is to “flatten” all intents as a unique long list of intents. But this maybe not optimal because I could have similar intent that belong to different domain, and the intent wrong classification could raise wrong consequences (intent mismatch involves domain mismatch).

A typical approach, could be to put in front of different single-domain apps, a domain classifier that forward to the correct app, but how to do that with in a RASA multi-domain architecture?

Any Idea? Thanks

Hi, I face a similar problem and (so-far) could only solve it using a digital assistant framework (like Mycroft) and its skill management system. A skill forwards user utterances to one Rasa server (one model) with the domain-related intents. The issue is that this requires multiple Rasa servers (but not necessarily multiple action servers) and context/slot management between skills - otherwise the bot would forget the context when transitioning between skills.

Any other solutions will likely require custom pipeline components and/or complex structures with rules/stories, slots (that capture the domain?), and naming patterns for intents. I am not even sure there are science-level concepts for modular domains but its not really my area. Deep learning everything is not really an option either because it has poor explainability.

1 Like