Choose a RAG helper
Compare the built-in and installable RAG retrieval strategies available in Hexabot 3.4.x.
A RAG helper decides how Hexabot indexes, searches, filters, and ranks CMS content. Hexabot can discover several installed helpers, but global_settings.default_rag_helper selects the one used by retrieve_rag_content and the RAG search API.
Helper comparison
Helper or npm package
Database
Retrieval
Embedding provider
Indexing model
Best for
fulltext-search (built in)
SQLite or PostgreSQL
Lexical/full-text
No
Database-native; Content remains the source of truth
Exact terms, names, codes, policies, FAQs, low-operational-overhead deployments
SQLite
Semantic vector similarity
Yes
Vector data stored in SQLite; content changes are indexed directly
Local or small deployments that need semantic retrieval without PostgreSQL
PostgreSQL
Semantic vector similarity
Yes
Durable, trigger-backed indexing queue in PostgreSQL
Production PostgreSQL deployments and larger semantic corpora
Custom hexabot-helper-* package
Depends on implementation
Lexical, semantic, graph, hybrid, reranked, or external
Optional
Defined by the helper
Pinecone, Weaviate, Elasticsearch, GraphRAG, custom ranking, regulated architectures
Use the npm package name when installing or referring to an extension. Use the shorter runtime name only when configuring Default RAG helper or reading the source field of a result.
Decision guide
Choose fulltext-search when
your users and content share important keywords;
queries include product names, error codes, plan names, policy terms, or identifiers;
you do not want content sent to an embedding provider;
you want the lowest setup and maintenance overhead;
you need a reliable baseline before adding semantic complexity.
Read Full-text search.
Choose hexabot-helper-sqlite-vector when
the Hexabot database is SQLite;
users often paraphrase the source content;
semantic similarity is more important than exact keyword matching;
the corpus and deployment size are appropriate for an in-process SQLite setup.
Read hexabot-helper-sqlite-vector: SQLite vector search, or view the package in the Hexabot Extension Library.
Choose hexabot-helper-pgvector when
the Hexabot database is PostgreSQL;
you need semantic retrieval with durable asynchronous indexing;
your PostgreSQL environment can provide the
vectorextension;you want vector storage and content records to remain in the same database platform.
Read hexabot-helper-pgvector: PostgreSQL vector search, or view the package in the Hexabot Extension Library.
Build a custom helper when
vectors must live in Pinecone, Weaviate, Qdrant, Milvus, or another external store;
you need GraphRAG, document-level access control, custom metadata filters, reranking, or multilingual retrieval logic;
you want hybrid ranking that combines lexical and semantic signals;
your organization already has a search or knowledge platform that should remain authoritative.
Read Develop a custom RAG helper.
Lexical, semantic, and hybrid retrieval
Lexical retrieval matches words and language-specific text-search forms. It is predictable, inexpensive, and strong when terminology is shared between the query and source.
Semantic retrieval embeds the query and content chunks into vectors. It can match meaning across different wording, but adds provider cost, indexing time, privacy considerations, and operational dependencies.
Only one helper answers each retrieval call
Installing multiple helpers gives administrators a choice; it does not make every query search all helpers. The configured default helper handles a retrieval call.
Database-specific helpers advertise their availability. hexabot-helper-pgvector is not offered on SQLite, and hexabot-helper-sqlite-vector is not offered on PostgreSQL.
Before enabling vector retrieval, confirm:
which content fields will be embedded;
whether the embedding endpoint is external or self-hosted;
where vectors and metadata are stored;
whether inactive content may be transmitted;
the provider's retention and regional-processing terms;
whether your access-control model requires per-user filtering that a custom helper must enforce.
The official vector helpers default to indexing only active content. Retrieved content should still be treated as untrusted data when it is supplied to an LLM.
Last updated
Was this helpful?