For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

  1. Open Content → Content Types.

  2. Create a content type named FAQ Article.

  3. Add these fields:

Field
Suggested type
Required
Purpose

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:

Title
Question
Answer
Status

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

  1. Open Administration → Settings.

  2. Open Global settings.

  3. Set Default RAG helper to fulltext-search.

  4. 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

  1. Open Workflows → Workflow Builder.

  2. Create or open the workflow that receives the user's question.

  3. Add the Retrieve RAG Content action. Its internal name is retrieve_rag_content.

  4. Configure it as follows:

Field
Value

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:

  • warning has a value: the selected helper is unavailable or misconfigured. Log the warning and use a controlled fallback or human handoff.

  • hits is empty: retrieval ran but found no matching content. Return a “not found” answer or route to another support path.

  • hits contains 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:

  1. An exact or keyword-rich question, such as “How do I reset my password?”

  2. A question that should be excluded by the Content Type filter.

  3. A question that is not covered by any content entry.

  4. 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:

Last updated

Was this helpful?