Knowledge Base Actions

Knowledge Base Actions

This feature is experimental. We introduce experimental features to get feedback from our community, so we encourage you to try it out! However, the functionality might be changed or removed in the future. If you have feedback (positive or negative) please share it with us on the forum.

Using ActionQueryKnowledgeBase

Knowledge base actions enable you to handle the following kind of conversations:

A common problem in conversational AI is that users do not only refer to certain objects by their names, but also use reference terms such as “the first one” or “it”. We need to keep track of the information that was presented to resolve these mentions to the correct object.

To handle the above challenges, Rasa can be integrated with knowledge bases. To use this integration, you can create a custom action that inherits from ActionQueryKnowledgeBase, a pre-written custom action that contains the logic to query a knowledge base for objects and their attributes.

Creating Your Own Knowledge Base Actions

ActionQueryKnowledgeBase should allow you to easily get started with integrating knowledge bases into your actions. However, the action can only handle two kinds of user requests:

Customizing the InMemoryKnowledgeBase

The class InMemoryKnowledgeBase inherits KnowledgeBase. You can customize your InMemoryKnowledgeBase by overwriting the following functions:

Example JSON structure for a Knowledge Base

{
    "restaurant": [
        {"id": 0, "name": "Donath", "cuisine": "Italian", "outside-seating": true, "price-range": "mid-range"},
        {"id": 1, "name": "Berlin Burrito Company", "cuisine": "Mexican", "outside-seating": false, "price-range": "cheap"},
        {"id": 2, "name": "I due forni", "cuisine": "Italian", "outside-seating": true, "price-range": "mid-range"}
    ],
    "hotel": [
        {"id": 0, "name": "Hilton", "price-range": "expensive", "breakfast-included": true, "city": "Berlin", "free-wifi": true, "star-rating": 5, "swimming-pool": true},
        {"id": 1, "name": "Hilton", "price-range": "expensive", "breakfast-included": true, "city": "Frankfurt am Main", "free-wifi": true, "star-rating": 4, "swimming-pool": false},
        {"id": 2, "name": "B&B", "price-range": "mid-range", "breakfast-included": false, "city": "Berlin", "free-wifi": false, "star-rating": 1, "swimming-pool": false}
    ]
}

This structure allows the bot to pull data relevant to user queries regarding restaurants and hotels, enabling it to answer questions effectively during a conversation.

Conclusion

For your knowledge base action to function properly, ensure that the required components are included and correctly defined in your domain and NLU training data.