These docs are for version 1.x of Rasa Open Source.

## User Guide

- [Installation](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/installation/)
- [Tutorial: Rasa Basics](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/rasa-tutorial/)
- [Tutorial: Building Assistants](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/building-assistants/)
- [Command Line Interface](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/command-line-interface/)
- [Architecture](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/architecture/)
- [Messaging and Voice Channels](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/messaging-and-voice-channels/)
- [Testing Your Assistant](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/testing-your-assistant/)
- [Setting up CI/CD](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/setting-up-ci-cd/)
- [Validate Data](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/validate-files/)
- [Configuring the HTTP API](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/configuring-http-api/)
- [Deploying Your Rasa Assistant](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/how-to-deploy/)
- [Cloud Storage](https://legacy-docs-v1.rasa.com/1.10.3/user-guide/cloud-storage/)

## NLU

- [About](https://legacy-docs-v1.rasa.com/1.10.3/nlu/about/)
- [Using NLU Only](https://legacy-docs-v1.rasa.com/1.10.3/nlu/using-nlu-only/)
- [Training Data Format](https://legacy-docs-v1.rasa.com/1.10.3/nlu/training-data-format/)
- [Language Support](https://legacy-docs-v1.rasa.com/1.10.3/nlu/language-support/)
- [Choosing a Pipeline](https://legacy-docs-v1.rasa.com/1.10.3/nlu/choosing-a-pipeline/)
- [Components](https://legacy-docs-v1.rasa.com/1.10.3/nlu/components/)
- [Entity Extraction](https://legacy-docs-v1.rasa.com/1.10.3/nlu/entity-extraction/)

## Core

- [About](https://legacy-docs-v1.rasa.com/1.10.3/core/about/)
- [Stories](https://legacy-docs-v1.rasa.com/1.10.3/core/stories/)
- [Domains](https://legacy-docs-v1.rasa.com/1.10.3/core/domains/)
- [Responses](https://legacy-docs-v1.rasa.com/1.10.3/core/responses/)
- [Actions](https://legacy-docs-v1.rasa.com/1.10.3/core/actions/)
- [Reminders and External Events](https://legacy-docs-v1.rasa.com/1.10.3/core/reminders-and-external-events/)
- [Policies](https://legacy-docs-v1.rasa.com/1.10.3/core/policies/)
- [Slots](https://legacy-docs-v1.rasa.com/1.10.3/core/slots/)
- [Forms](https://legacy-docs-v1.rasa.com/1.10.3/core/forms/)
- [Retrieval Actions](https://legacy-docs-v1.rasa.com/1.10.3/core/retrieval-actions/)
- [Interactive Learning](https://legacy-docs-v1.rasa.com/1.10.3/core/interactive-learning/)
- [Fallback Actions](https://legacy-docs-v1.rasa.com/1.10.3/core/fallback-actions/)
- [Knowledge Base Actions](https://legacy-docs-v1.rasa.com/1.10.3/core/knowledge-bases/#)

## Conversation Design

- [Dialogue Elements](https://legacy-docs-v1.rasa.com/1.10.3/dialogue-elements/dialogue-elements/)
- [Small Talk](https://legacy-docs-v1.rasa.com/1.10.3/dialogue-elements/small-talk/)
- [Completing Tasks](https://legacy-docs-v1.rasa.com/1.10.3/dialogue-elements/completing-tasks/)
- [Guiding Users](https://legacy-docs-v1.rasa.com/1.10.3/dialogue-elements/guiding-users/)

## API Reference

- [Action Server](https://legacy-docs-v1.rasa.com/1.10.3/api/action-server/)
- [HTTP API](https://legacy-docs-v1.rasa.com/1.10.3/api/http-api/)
- [Jupyter Notebooks](https://legacy-docs-v1.rasa.com/1.10.3/api/jupyter-notebooks/)
- [Agent](https://legacy-docs-v1.rasa.com/1.10.3/api/agent/)
- [Custom NLU Components](https://legacy-docs-v1.rasa.com/1.10.3/api/custom-nlu-components/)
- [Rasa SDK](https://legacy-docs-v1.rasa.com/1.10.3/api/rasa-sdk/)
- [Events](https://legacy-docs-v1.rasa.com/1.10.3/api/events/)
- [Tracker](https://legacy-docs-v1.rasa.com/1.10.3/api/tracker/)
- [Tracker Stores](https://legacy-docs-v1.rasa.com/1.10.3/api/tracker-stores/)
- [Event Brokers](https://legacy-docs-v1.rasa.com/1.10.3/api/event-brokers/)
- [Lock Stores](https://legacy-docs-v1.rasa.com/1.10.3/api/lock-stores/)
- [Training Data Importers](https://legacy-docs-v1.rasa.com/1.10.3/api/training-data-importers/)
- [Featurization of Conversations](https://legacy-docs-v1.rasa.com/1.10.3/api/core-featurization/)
- [TensorFlow Configuration](https://legacy-docs-v1.rasa.com/1.10.3/api/tensorflow_usage/)
- [Migration Guide](https://legacy-docs-v1.rasa.com/1.10.3/migration-guide/)
- [Rasa Open Source Change Log](https://legacy-docs-v1.rasa.com/1.10.3/changelog/)

## Migrate from (beta)

- [Dialogflow](https://legacy-docs-v1.rasa.com/1.10.3/migrate-from/google-dialogflow-to-rasa/)
- [Wit.ai](https://legacy-docs-v1.rasa.com/1.10.3/migrate-from/facebook-wit-ai-to-rasa/)
- [LUIS](https://legacy-docs-v1.rasa.com/1.10.3/migrate-from/microsoft-luis-to-rasa/)
- [IBM Watson](https://legacy-docs-v1.rasa.com/1.10.3/migrate-from/ibm-watson-to-rasa/)

## Reference

- [Glossary](https://legacy-docs-v1.rasa.com/1.10.3/glossary/)

## Versions

- Current Version: 1.10.3

### 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](https://forum.rasa.com/).

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

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.

The data used to answer the user’s requests will be stored in a knowledge base. A knowledge base can be used to store complex data structures. We suggest you get started by using the `InMemoryKnowledgeBase`. Once you want to start working with a large amount of data, you can switch to a custom knowledge base.

### Example JSON structure
```
{
    "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
        }
    ]
}
```

### Domain File Updates

To create your own knowledge base action, you need to inherit `ActionQueryKnowledgeBase` and pass the knowledge base to the constructor of `ActionQueryKnowledgeBase`.

## Typical Use Case:
```
from rasa_sdk.knowledge_base.storage import InMemoryKnowledgeBase
from rasa_sdk.knowledge_base.actions import ActionQueryKnowledgeBase

class MyKnowledgeBaseAction(ActionQueryKnowledgeBase):
    def __init__(self):
        knowledge_base = InMemoryKnowledgeBase("data.json")
        super().__init__(knowledge_base)
```
To summarize, knowledge base actions allow you to handle user queries dynamically using stored data attributes.
