New in 3.7The Enterprise Search Policy is part of Rasa’s new
Conversational AI with Language Models (CALM) approach and available starting
with version
3.7.0.action_trigger_search,
which can be used anywhere within a flow to trigger Enterprise Search Policy.
How to Use Enterprise Search in Your Assistant
Note for Rasa Pro version 3.13.0 and aboveMake sure to use the
SearchReadyLLMCommandGenerator
in your pipeline if you rely on one of the LLM-based command generators to trigger RAG via EnterpriseSearchPolicy.
The SearchReadyLLMCommandGenerator is available starting with Rasa Pro version 3.13.0.Add the policy to config.yml
To use Enterprise Search, add the following lines to your config.yml file:
- Rasa Pro <=3.7.x
- Rasa Pro >=3.8.x
config.yml
Overwrite pattern_search
Rasa directs all knowledge based questions to the default flow pattern_search. By default, it responds
with utter_no_knowledge_base response which denies the request.
This pattern can be overridden to trigger an action which in turn triggers the document search and
prompts the LLM with the relevant information.
flows.yml
action_trigger_search is a Rasa default action
that can be used anywhere in flows.
Default Behavior
By default,EnterpriseSearchPolicy will automatically index all files with
a .txt extension in /docs directory (recursively) at the root of your project during training time and store that
index on disk.
The default embedding model used during indexing is text-embedding-3-large.
When the assistant loads, this document index is loaded in-memory and used for document search.
The LLM gpt-5-mini-2025-08-07 is used by default to generate responses, which are then forwarded to the user.
Customization
Enterprise Search Policy offers two main modes:- Generative Search (RAG): Uses a Large Language Model to generate a context-aware answer, based on retrieved document snippets and the conversation context. This is the default mode.
- Extractive Search: Returns the most relevant, pre-authored answer directly from your dataset (QnA pairs), with no LLM generation.
DateTime Configuration
New in 3.15DateTime configuration for Enterprise Search Policy is available starting from Rasa 3.15.
include_date_time(optional, default:true): Enable or disable datetime information in prompts.timezone(optional, default:"UTC"): IANA timezone name (e.g.,"America/New_York","Europe/London","Asia/Tokyo").
include_date_time is enabled, prompts automatically include a “Date & Time Context” section showing:
- Current date (formatted as “DD Month, YYYY”)
- Current time (formatted as “HH:MM:SS” with timezone)
- Current day of the week
config.yml
config.yml
Timezone FormatThe
timezone parameter must be a valid IANA timezone name. Common examples include:"UTC""America/New_York""America/Los_Angeles""Europe/London""Asia/Tokyo""Australia/Sydney"
ValidationError during policy initialization.Embeddings
The embeddings are used to embed the user query, which is then used to search for relevant documents in the vector store.The embeddings model used to embed the documents in the vector store should match the one used for the user query.
The default embedding model used is
text-embedding-3-large.config.yml and endpoints.yml files:
config.yml
endpoints.yml
Vector Store
The policy supports connecting to a vector stores like Faiss, Milvus and Qdrant. Available parameters depend on the type of vector store. When the assistant loads, Rasa connects to the vector store and performs document search whenever the policy is invoked. The relevant documents (or more precisely, document chunks) are used in the prompt as context for LLM to answer the user query.New in 3.9Rasa now supports Custom Information Retrievers to be used with the
Enterprise Search Policy. This feature allows you to integrate your own custom search systems or vector stores with Rasa.
Faiss
Faiss stands for Facebook AI Similarity Search. It is an open source
library that enables efficient similarity search. Rasa uses an in-memory Faiss as default vector store.
With this vector store, the document embeddings are created and stored on-disk during
rasa train. When
the assistant loads the vector store is loaded in-memory and used for retrieval of relevant documents for
the LLM prompt.
The property configuration defaults to
- Rasa Pro <=3.7.x
- Rasa Pro >=3.8.x
config.yml
source parameter specifies the path of directory containing your
documentation.
Milvus
Embedding ModelMake sure to use the same embedding model which was used to embed the
documents in the vector store. The configuration for embeddings can be found here.
- Rasa Pro <=3.7.x
- Rasa Pro >=3.8.x
config.yml
threshold can be used to specify a minimum similarity score threshold for the retrieved
documents. This property accepts values between 0 to 1 where 0 implies no minimum threshold.
The connection parameters should be added to the endpoints.yml file as follows:
endpoints.yml
MilvusClient or required for document search.
More details about them can also be found in Milvus Documentation.
Here’s a list of all available parameters that can be used with Rasa.
Qdrant
Embedding ModelMake sure to use the same embedding model which was used to embed the documents
in the vector store. The settings for embeddings can be found here.
- Rasa Pro <=3.7.x
- Rasa Pro >=3.8.x
config.yml
threshold can be used to specify a minimum similarity score threshold for the retrieved
documents. This property accepts values between 0 to 1 where 0 implies no minimum threshold.
To connect to Qdrant, Rasa requires connection parameters which can be added to endpoints.yml
endpoints.yml
Only the parameter
collection is mandatory. Other connection parameters depend on the deployment option
for Qdrant. For example, when connecting to the self-hosted instance with default configuration
only url and port are mandatory.
From Qdrant, Rasa expects to read a langchain Document structure
comprising two fields:
- content of the document is defined by the key
content_payload_key. Default valuetext - metadata of the document is defined by the key
metadata_payload_key. Default value ismetadata
Vector Store Configuration
-
vector_store.type(Optional): This parameter specifies the type of vector store you want to use for storing and retrieving document embeddings. Supported options include:- “faiss” (default): Facebook AI Similarity Search library.
- “milvus”: Milvus Vector Database.
- “qdrant”: Qdrant Vector Database.
-
vector_store.source(Optional): This parameter defines the path to the directory containing document vectors, used only with the “faiss” vector store type (default: ”./docs”). -
vector_store.threshold(Optional): This parameter sets the minimum similarity score required for a document to be considered relevant. Used only with “Milvus” and “Qdrant” vector store types (default: 0.0).
Error Handling
If no relevant documents are retrieved then Pattern Cannot Handle is triggered. In case of internal errors, this policy triggers the Internal Error Pattern. These errors are,- If Vector Store fails to connect.
- If document retrieval returns an error.
- If LLM returns an empty answer or the API endpoint raises an error (including connection timeouts).
Troubleshooting
These tips should help you debug issues with Enterprise Search Policy. To isolate the issue, please follow these debugging diagrams,

Enable Debug Logs
You can control which level of logs you would like to see with--verbose (same as -v) or --debug (same as -vv)
as optional command line arguments. From Rasa Pro 3.8, you can set the following environment variables to
have a more fine-grained control over LLM prompt logging,
LOG_LEVEL_LLM: Set log level for all LLM componentsLOG_LEVEL_LLM_COMMAND_GENERATOR: Log level for Command Generator promptLOG_LEVEL_LLM_ENTERPRISE_SEARCH: Log level for Enterprise Search promptLOG_LEVEL_LLM_INTENTLESS_POLICY: Log level for Intentless Policy promptLOG_LEVEL_LLM_REPHRASER: Log level for Rephraser prompt