Persistence in RASA

I am pretty new to Rasa and I am are looking into persistence.

My chatbot will be collecting a lot information from different sources for each user in the first action (in the action server). The information will be stored and reused by that user several times during the interaction. It is all stored in an object of a quite large class I have defined (maybe a couple of 1000 kb). I can see a number of different opportunities for doing this:

  1. Store the information in the action server, not in the actions, but in the general part of the action server as a list of object. Pre allocate the entire list in advance or dynamically create new entries in it when needed and remove them when done (how do you detect this?). Index it by session id. This will make the action server process quite large and could be expensive in the cloud

  2. Store object in a slot. Not sure how advanced a slot can be, but hopefully it can be of any type. The slots can then be used to retrieve parts of the slot, instead of having to call the actions server. This will make the core server process quite large and could be expensive in the cloud

  3. Store the objects in a database of some kind, relational, object oriented or other. Each action then need to access the database and there might be a lot of db transactions. And it could slow down the response time for the user. Using a cloud database also cost money, but maybe we could have a more local database.

  4. I was thinking about using the Knowledge base actions, but they seem to be just about a providing a single database to the user, not adapted versions for each user.

What do you think? Which would be the best of these? Or do you have any other even better suggestions.

Thanks in advance Mats

Not sure why my topic is greyed out?