Quickstart
Build a first grounded FAQ workflow with Hexabot's built-in full-text RAG helper.
This guide creates a simple support workflow that retrieves an FAQ from Hexabot Content and gives the result to an AI model. It uses the built-in fulltext-search helper, so no embedding model, vector extension, or embedding credential is required.
Prerequisites
Hexabot 3.4.x or later
Permission to manage Content, Settings, and Workflows
An AI model/provider already available to the generation action you plan to use
1. Create an FAQ content type
Open Content → Content Types.
Create a content type named FAQ Article.
Add these fields:
question
Text
Yes
A common user question or search phrase.
answer
Text Area
Yes
The authoritative answer.
category
Text
No
An optional keyword or grouping label.
Hexabot automatically includes the entry title and string-valued fields in its canonical search text. Use Text or Text Area fields for facts that should be retrievable.
2. Add active content entries
Open the FAQ Article content type and create several entries. For example:
Reset a password
How do I reset my password?
Open the sign-in page, select Forgot password, and follow the link sent by email.
Active
Update billing details
Where can I change my billing information?
Open Account → Billing, then select Payment details.
Active
Only active content is returned by default.
3. Verify the default RAG helper
Open Administration → Settings.
Open Global settings.
Set Default RAG helper to
fulltext-search.Save the settings.
fulltext-search is the default in Hexabot 3.4.x, but explicitly checking it makes the workflow configuration easier to diagnose later.
4. Add retrieval to a workflow
Open Workflows → Workflow Builder.
Create or open the workflow that receives the user's question.
Add the Retrieve RAG Content action. Its internal name is
retrieve_rag_content.Configure it as follows:
Query
Select the incoming user message or workflow question through the variable/expression picker.
Limit
Start with 3.
Content Type
Select FAQ Article to prevent unrelated content types from being retrieved.
Include inactive
Keep disabled.
The action returns both structured hits and a text value containing the retrieved texts joined together.
5. Choose how retrieval feeds the AI Agent
The following examples use a conversational workflow, so the incoming question is available as $input.text. Replace YOUR_MODEL_CREDENTIAL_ID, YOUR_MODEL_ID, and YOUR_FAQ_CONTENT_TYPE_ID by selecting your configured resources in the Workflow Builder.
Example A: Classic RAG
Use this pattern when retrieval should always run before the agent. The retrieval output is inserted into the agent's system prompt, while the user's message remains the prompt.
Example B: Agentic RAG
Use this pattern when the agent should decide when and how to search. The tools definition exposes retrieve_rag_content to the agent as faq_search; its required query input is supplied by the model when it calls the tool.
Retrieve-then-generate RAG gives you a deterministic retrieval step whose output is easy to inspect. Agentic RAG supports multi-step behavior and records calls in the agent's tool_calls and tool_results outputs.
6. Handle retrieval failures and empty results
Before calling the model, add workflow conditions for these outcomes:
warninghas a value: the selected helper is unavailable or misconfigured. Log the warning and use a controlled fallback or human handoff.hitsis empty: retrieval ran but found no matching content. Return a “not found” answer or route to another support path.hitscontains results: generate the grounded answer.
This distinction prevents a configuration problem from looking like a valid search with no matches.
7. Test the workflow
Test at least these cases:
An exact or keyword-rich question, such as “How do I reset my password?”
A question that should be excluded by the Content Type filter.
A question that is not covered by any content entry.
An inactive entry, which should not be returned while Include inactive is disabled.
Inspect the action output during testing. A successful hit includes contentId, title, text, an optional score, and source: "fulltext-search".
Next step: semantic retrieval
Full-text search is a strong default for exact terms, product names, identifiers, policies, and well-written FAQs. When users frequently paraphrase the source content and keyword matching is insufficient, choose a vector helper:
hexabot-helper-sqlite-vector: SQLite vector search (extension page)hexabot-helper-pgvector: PostgreSQL vector search (extension page)
Last updated
Was this helpful?